Class Namespaces
Project description
Well-behaved class namespacing in Python. Inspired by https://erezsh.wordpress.com/2008/06/27/namespaces-lets-do-more-of-those-python-hackery/
Basic Usage
Example code:
import class_namespaces as cn class MyCls(cn.Namespaceable): var = 1 with cn.Namespace() as my_ns: var = 2 assert MyCls.var == 1 assert MyCls.my_ns.var == 2
Other things that work:
Descriptors (methods, classmethods, staticmethods, properties, custom descriptors)
super()
Prepopulating Namespaces. The constructor takes the same arguments as a dict.
abstractmethods. See the compat module.
Things that don’t work:
Various ways of putting a Namespace in a Namespace that I didn’t see an obvious way to handle. In particular…
There is no way to put an established namespace directly into another namespace.
Some pytest constructs behave weirdly inside the class definitions. Hopefully, this doesn’t matter to anyone not writing tests for the package.
No way to have instance Namespaces on non-hashable types, or subclasses of some built-in types, particularly tuple. Try using data descriptors instead.
Things that might work:
New namespace features in Python 3.6. Current testing is spotty.
Combining with other metaclasses. Unfortunately, the current setup is somewhat brittle. It may be necessary to experiment with the ordering of bases.
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
Built Distribution
File details
Details for the file class_namespaces-0.6.3.tar.gz
.
File metadata
- Download URL: class_namespaces-0.6.3.tar.gz
- Upload date:
- Size: 15.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | de91ac2d9395d244fe866b5445e0fa210ba75d174680d8ede29e6b796ec78436 |
|
MD5 | 01e8cd3606f5b7f63c4838f0f52927df |
|
BLAKE2b-256 | 4f8b548d57ae90cf93290d0e331c3bb252cd7365c071bfb436549b85ba699cb2 |
File details
Details for the file class_namespaces-0.6.3-py3-none-any.whl
.
File metadata
- Download URL: class_namespaces-0.6.3-py3-none-any.whl
- Upload date:
- Size: 15.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1e98b5a51df544fedc46bbe91f383c619a6e2edf0a83c4296f2f68a57870dc7 |
|
MD5 | 8fd6a3606fe8c228cfab055c62025fc8 |
|
BLAKE2b-256 | ed20b7889fe681e1f21288cb241db8a4d3c068258221b3806dd5d9cc2dcfc8e2 |