Uploaded Test files
This commit is contained in:
parent
f584ad9d97
commit
2e81cb7d99
16627 changed files with 2065359 additions and 102444 deletions
74
venv/Lib/site-packages/IPython/utils/contexts.py
Normal file
74
venv/Lib/site-packages/IPython/utils/contexts.py
Normal file
|
@ -0,0 +1,74 @@
|
|||
# encoding: utf-8
|
||||
"""Miscellaneous context managers.
|
||||
"""
|
||||
|
||||
import warnings
|
||||
|
||||
# Copyright (c) IPython Development Team.
|
||||
# Distributed under the terms of the Modified BSD License.
|
||||
|
||||
class preserve_keys(object):
|
||||
"""Preserve a set of keys in a dictionary.
|
||||
|
||||
Upon entering the context manager the current values of the keys
|
||||
will be saved. Upon exiting, the dictionary will be updated to
|
||||
restore the original value of the preserved keys. Preserved keys
|
||||
which did not exist when entering the context manager will be
|
||||
deleted.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
>>> d = {'a': 1, 'b': 2, 'c': 3}
|
||||
>>> with preserve_keys(d, 'b', 'c', 'd'):
|
||||
... del d['a']
|
||||
... del d['b'] # will be reset to 2
|
||||
... d['c'] = None # will be reset to 3
|
||||
... d['d'] = 4 # will be deleted
|
||||
... d['e'] = 5
|
||||
... print(sorted(d.items()))
|
||||
...
|
||||
[('c', None), ('d', 4), ('e', 5)]
|
||||
>>> print(sorted(d.items()))
|
||||
[('b', 2), ('c', 3), ('e', 5)]
|
||||
"""
|
||||
|
||||
def __init__(self, dictionary, *keys):
|
||||
self.dictionary = dictionary
|
||||
self.keys = keys
|
||||
|
||||
def __enter__(self):
|
||||
# Actions to perform upon exiting.
|
||||
to_delete = []
|
||||
to_update = {}
|
||||
|
||||
d = self.dictionary
|
||||
for k in self.keys:
|
||||
if k in d:
|
||||
to_update[k] = d[k]
|
||||
else:
|
||||
to_delete.append(k)
|
||||
|
||||
self.to_delete = to_delete
|
||||
self.to_update = to_update
|
||||
|
||||
def __exit__(self, *exc_info):
|
||||
d = self.dictionary
|
||||
|
||||
for k in self.to_delete:
|
||||
d.pop(k, None)
|
||||
d.update(self.to_update)
|
||||
|
||||
|
||||
class NoOpContext(object):
|
||||
"""
|
||||
Deprecated
|
||||
|
||||
Context manager that does nothing."""
|
||||
|
||||
def __init__(self):
|
||||
warnings.warn("""NoOpContext is deprecated since IPython 5.0 """,
|
||||
DeprecationWarning, stacklevel=2)
|
||||
|
||||
def __enter__(self): pass
|
||||
def __exit__(self, type, value, traceback): pass
|
Loading…
Add table
Add a link
Reference in a new issue