Advanced descriptors for special cases.
Project description
Advanced descriptors
This package includes helpers for special cases:
SeparateClassMethod - allow to have classmethod and normal method both with the same name.
AdvancedProperty - property with possibility to set class wide getter.
SeparateClassMethod
This descriptor can be set using standard decorator syntax. Create instance with arguments:
def imeth(instance):
return instance.value
def cmeth(owner):
return owner.value
class Target(object):
value = 1
def __init__(self):
self.value = 2
getval = advanced_descriptors.SeparateClassMethod(
imeth, cmeth
)
Create instance wrapping as decorator:
class Target(object):
value = 1
def __init__(self):
self.value = 2
@advanced_descriptors.SeparateClassMethod
def getval(self):
return self.value
@getval.class_method
def getval(cls):
return cls.value
Cases with method only and classmethod only is useless: method as-is and @classmethod should be used in corresponding cases.
AdvancedProperty
This descriptor should be used in cases, when in addition to normal property API, class getter is required. If class-wide setter and deleter also required - you should use standard propery in metaclass.
Usage examples:
In addition to normal property API:
class Target(object): _value = 777 def __init__(self): self._value = 42 @advanced_descriptors.AdvancedProperty def val(self): return self._value @val.setter def val(self, value): self._value = value @val.deleter def val(self): self._value = 0 @val.cgetter def val(cls): return cls._value
Use class-wide getter for instance too:
class Target(object): _value = 1 val = advanced_descriptors.AdvancedProperty() @val.cgetter def val(cls): return cls._value
Testing
The main test mechanism for the package advanced-descriptors is using tox. Available environments can be collected via tox -l
CI systems
For code checking several CI systems is used in parallel:
Travis CI: is used for checking: PEP8, pylint, bandit, installation possibility and unit tests. Also it’s publishes coverage on coveralls.
coveralls: is used for coverage display.
CD system
Travis CI: is used for package delivery on PyPI.
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
Hashes for Advanced-Descriptors-1.0.7.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04a7d0471eefdc8f22dc240f280ec4e7900527267864563f6ad93dd67d47d91a |
|
MD5 | 1d925dbd4ad363135f2eca94da40177c |
|
BLAKE2b-256 | 1fa4c9719b6d9dda4ddd276cf6c7bd2e4594200a8b0335b9401fae10be9e8a49 |
Hashes for Advanced_Descriptors-1.0.7-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e301e9a75919ec4922035dfb339dac62f85b6ba26a575333355758b336383a6 |
|
MD5 | 87052e34f897325105c79a976cfea2e9 |
|
BLAKE2b-256 | b6a7357ee3e64dae8222373cee2e956a1bcec9832a0c5a5654e3ab37878d6a7c |