Context managers. Initially just `stackattrs`.
Project description
Context managers. Initially just stackattrs
.
Latest release 20200517:
- Add
nullcontext
like the one from recent contextlib. - stackattrs: expose the push and pop parts as pushattrs() and popattrs().
Function popattrs(o, attr_names, old_values)
The "pop" part of stackattrs.
Restore previous attributes of o
named by attr_names
with previous state in old_values
.
Function pushattrs(o, **attr_values)
The "push" part of stackattrs.
Push attr_values
onto o
as attributes,
return the previous attribute values in a dict.
Function stackattrs(o, **attr_values)
Context manager to push new values for the attributes of o
and to restore them afterward.
Returns a dict
containing a mapping of the previous attribute values.
Attributes not present are not present in the mapping.
Restoration includes deleting attributes which were not present initially.
Example of fiddling a programme's "verbose" mode:
>>> class RunModes:
... def __init__(self, verbose=False):
... self.verbose = verbose
...
>>> runmode = RunModes()
>>> if runmode.verbose:
... print("suppressed message")
...
>>> with stackattrs(runmode, verbose=True):
... if runmode.verbose:
... print("revealed message")
...
revealed message
>>> if runmode.verbose:
... print("another suppressed message")
...
Example exhibiting restoration of absent attributes:
>>> class O:
... def __init__(self):
... self.a = 1
...
>>> o = O()
>>> print(o.a)
1
>>> print(o.b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'O' object has no attribute 'b'
>>> with stackattrs(o, a=3, b=4):
... print(o.a)
... print(o.b)
... o.b = 5
... print(o.b)
... delattr(o, 'a')
...
3
4
5
>>> print(o.a)
1
>>> print(o.b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'O' object has no attribute 'b'
Release Log
Release 20200517:
- Add
nullcontext
like the one from recent contextlib. - stackattrs: expose the push and pop parts as pushattrs() and popattrs().
Release 20200228.1: Initial release with stackattrs context manager.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file cs.context-20200517.tar.gz
.
File metadata
- Download URL: cs.context-20200517.tar.gz
- Upload date:
- Size: 3.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0307b1f7386394a4fc27d28c7ba9e6d30eaafb8768d8119f494e6d7ece94d1bc |
|
MD5 | 42dfdd1a4c66387a1a92a489ebba93bf |
|
BLAKE2b-256 | 26033a61303cb90a5c57fc0c9164311d6d37984c08a3306ae05e2f92aaa16bfd |