Context managers. Initially just stackattrs.
Latest release 20200517:
- Add
nullcontextlike 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
nullcontextlike 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.
Release files for cs-context 20200517
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cs.context-20200517.tar.gz | 3.0 kB | Details |
Release files / cs.context-20200517.tar.gz
| Download URL | cs.context-20200517.tar.gz |
|---|---|
| Size | 3.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0307b1f7386394a4fc27d28c7ba9e6d30eaafb8768d8119f494e6d7ece94d1bc
|
|
BLAKE2b-256 checksum How to use checksums |
26033a61303cb90a5c57fc0c9164311d6d37984c08a3306ae05e2f92aaa16bfd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|