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.
Release files for class-namespaces 0.6.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| class_namespaces-0.6.3.tar.gz | 15.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| class_namespaces-0.6.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 31.2 kB
Release files / class_namespaces-0.6.3.tar.gz
| Download URL | class_namespaces-0.6.3.tar.gz |
|---|---|
| Size | 15.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
de91ac2d9395d244fe866b5445e0fa210ba75d174680d8ede29e6b796ec78436
|
|
BLAKE2b-256 checksum How to use checksums |
4f8b548d57ae90cf93290d0e331c3bb252cd7365c071bfb436549b85ba699cb2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / class_namespaces-0.6.3-py3-none-any.whl
| Download URL | class_namespaces-0.6.3-py3-none-any.whl |
|---|---|
| Size | 15.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d1e98b5a51df544fedc46bbe91f383c619a6e2edf0a83c4296f2f68a57870dc7
|
|
BLAKE2b-256 checksum How to use checksums |
ed20b7889fe681e1f21288cb241db8a4d3c068258221b3806dd5d9cc2dcfc8e2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |