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.
LogOnAccess - property with logging on successful get/set/delete or failure.
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
LogOnAccess
This special case of property is useful in cases, where a lot of properties should be logged by similar way without writing a lot of code.
Basic API is conform with property, but in addition it is possible to customize logger, log levels and log conditions.
Usage examples:
Simple usage. All by default. logger is re-used from instance if available with names logger or log else used internal advanced_descriptors.log_on_access logger:
import logging class Target(object): def init(self, val='ok') self.val = val self.logger = logging.get_logger(self.__class__.__name__) # Single for class, follow subclassing def __repr__(self): return "{cls}(val={self.val})".format(cls=self.__class__.__name__, self=self) @advanced_descriptors.LogOnAccess def ok(self): return self.val @ok.setter def ok(self, val): self.val = val @ok.deleter def ok(self): self.val = ""
Use with global logger for class:
class Target(object): def init(self, val='ok') self.val = val def __repr__(self): return "{cls}(val={self.val})".format(cls=self.__class__.__name__, self=self) @advanced_descriptors.LogOnAccess def ok(self): return self.val @ok.setter def ok(self, val): self.val = val @ok.deleter def ok(self): self.val = "" ok.logger = 'test_logger' ok.log_level = logging.INFO ok.exc_level = logging.ERROR ok.log_object_repr = True # As by default ok.log_success = True # As by default ok.log_failure = True # As by default ok.log_traceback = True # As by default ok.override_name = None # As by default: use original name
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.
Azure CI: is used for functional tests on Windows.
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 Distributions
Hashes for advanced-descriptors-3.0.8.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f92b13537ef3612dc81dc3bba2867ae7084babd05b6047406279e39a80540e9 |
|
MD5 | ced4d1770da2c60ce4f55312ea6ae40a |
|
BLAKE2b-256 | 35d3a7c9373698cf8b22f09700b58c3d22322dc74b0ef947bb7a945e8bc3d7a9 |
Hashes for advanced_descriptors-3.0.8-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9163ccbd542d396370e0f1f22f65b0784dec2055c829aed8ae20c1d257c1418 |
|
MD5 | dc18f204a4647c6b663d4683b941b720 |
|
BLAKE2b-256 | 95f7ea0583429b1e4e34db888248e1a058d549e9501f9b809da2d33fd3bfbb77 |
Hashes for advanced_descriptors-3.0.8-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 25e6ddccc9887982d8571df80b4070fc4aa7cf3136cf411cf575b4b0c9c92fd9 |
|
MD5 | 6612ee7c8a376228c737a9867468f379 |
|
BLAKE2b-256 | e174e06d5f7a63dcd1a7b6c8ddabcebce10325dab0de8fb13ef848240bbb4cac |
Hashes for advanced_descriptors-3.0.8-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 778b3a81dcfbd7b6f1d2df6991b1fcf4b0059f4573aba0434d36df77b8874613 |
|
MD5 | f5c7a8a61ef1c20bb115e7264206c28e |
|
BLAKE2b-256 | 99355276dd5baa1ed27ad8ded90f6876420a1666490e66e647712cf2698e42d9 |
Hashes for advanced_descriptors-3.0.8-cp38-cp38-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99a6202203b8a7df9a00268ae49df22de4800053141f3c8d4aa402075f244844 |
|
MD5 | d55bb47f8f0af8baea27acea1ab3504f |
|
BLAKE2b-256 | 95c762369eeeaeca7bfa2a720e7f688544e49a43d4708653c81c090d49e645d9 |
Hashes for advanced_descriptors-3.0.8-cp38-cp38-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f9c2d2f755857fdacd30d5719660604a73ba6f21e1d3d408e54eacf2d02841ab |
|
MD5 | b39ed0f6436e18fa2c526b9f0b85493f |
|
BLAKE2b-256 | 50cc04bb011490e0d45f1a7c454ed6c9e4af9ef9e38a866e90cf233dfba404bb |
Hashes for advanced_descriptors-3.0.8-cp38-cp38-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 45bc4dd2ff5ce4dab4786e51b954a0c00d4d47431cf8c891001e158b129823c6 |
|
MD5 | c1d8ab945109e6ea248afec9bec33b60 |
|
BLAKE2b-256 | 6c99c4e6880c739c7aa4c72836946933928018038a29b97a98a0c1b2f7556c4a |
Hashes for advanced_descriptors-3.0.8-cp38-cp38-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee9f0f7124f3b3a501b91bd208fb730d930b5f755cc62567835f91eee7c049d3 |
|
MD5 | f8a592e08ee70cbe03f4bb6550fa8b26 |
|
BLAKE2b-256 | 6ed04d29fa2fcf2be2bac5f5782e3f5a930c1453da0a784b90b2f8194f3acf3b |
Hashes for advanced_descriptors-3.0.8-cp38-cp38-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d698faa7003012dcab9dfef6d8b539098f5fd18ffd67e267ec43eb85dbcede0a |
|
MD5 | 5c682491b432ffacb9cd38efc7dfb45d |
|
BLAKE2b-256 | 0519317190646e21e35e5ff2c48eccc88dc91b574f82029bde3a3414667b0d83 |
Hashes for advanced_descriptors-3.0.8-cp38-cp38-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94ad4ce2b2dea38c132493c42b79eed95947e3ce12b8089105f0cd786c59d9f2 |
|
MD5 | c23c0324de161d5cfdbe7b0da99b2e37 |
|
BLAKE2b-256 | 969e703d24377d7aa1d285ca87f1c75b15492022f694b2c90be49964e1a1651b |
Hashes for advanced_descriptors-3.0.8-cp38-cp38-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5885dcadfb77f23a3ec6afcf2ecc804a202b21195b52e91cd06a1ed9e2fe30c |
|
MD5 | 1bbdc9dce0b2748b77aa2c0e9a12f126 |
|
BLAKE2b-256 | 6a7eec65959d8473b0e39886a7dff53e5d1ebb2a9cbfc37c8b54d033c87ec98e |
Hashes for advanced_descriptors-3.0.8-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ff3015ac4cd10253e051e4dad500265b3bb30fe56660c8eba1d6d4eb87c1eb0 |
|
MD5 | b20c76b78a1822a875331f17ad372b8b |
|
BLAKE2b-256 | b60717d0e8844c08cbb6ca0a92217439cfce01f873d566c7918cee94cbeb3865 |
Hashes for advanced_descriptors-3.0.8-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4c0f1401c9d0cf508c147b170d9ab8ce8660ba9592dfed3b2388a3862dbe8b1 |
|
MD5 | b1529eedc0f176a42615eb1cf67b5589 |
|
BLAKE2b-256 | d6864f329f5a6fcbec23ad99929b601ade6b11058f396bb5795c27e2db682054 |
Hashes for advanced_descriptors-3.0.8-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 857f09bf35da93d4c32abb90c7e887dc0b372870c5966086d18963d7091396ca |
|
MD5 | 5096b1e55445a0461bb3985135c31c7d |
|
BLAKE2b-256 | 2f5865a77842de3da62286a9e864a51f545446ee9b3bfebd20a026d75abb805d |
Hashes for advanced_descriptors-3.0.8-cp37-cp37m-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4e18ebba4608f89774688076343c329ab0fed0361c78e1093b86d4caaedbbfa3 |
|
MD5 | 022cb240323d74fc3d07460fa7295dfc |
|
BLAKE2b-256 | 11d987a6c00fd5b12cfceb147b750b2036e5c8c3d910bb5c1b5f281ca9a214b9 |
Hashes for advanced_descriptors-3.0.8-cp37-cp37m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 226c217315e43368f51aec7d601756f6a93eb3382380e2db77f7ba0d6b3aa37a |
|
MD5 | dd2759192e7ed1e37f99dd21ce9eb079 |
|
BLAKE2b-256 | ff3f341a15de4d4a0066b7e10e5e78246cd32060ea96f157717e6bc319041392 |
Hashes for advanced_descriptors-3.0.8-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4307f03ba2ad189bcaabee1d64f410286d52ecb76cdb48a159229344d801d435 |
|
MD5 | 1e1c1a02e3e91b7a376adf62074461b6 |
|
BLAKE2b-256 | 4a3b0287636a88788666d369b0b1aa64fce65aeebaf05576d68c5403e31ddcfc |
Hashes for advanced_descriptors-3.0.8-cp37-cp37m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5991b866c45eb09690f5784b30a7a6bab1df51f8a540a9c064dcbc101b023e24 |
|
MD5 | 091dfe417701c61731320497ec33f726 |
|
BLAKE2b-256 | 2a1c9b6035c5be8b52868d62212bd55b7f369c975d8696fb3dd6788054d07e23 |
Hashes for advanced_descriptors-3.0.8-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96bf4a3e1894b0a0ab8de9667c31e9feeb9e9a9562d20e5f584cff3198a1570b |
|
MD5 | c5d19fa7d5675b44d37756b347586bf9 |
|
BLAKE2b-256 | f84fc9587d7daa1eb4fbd7b9dc5937f23a3278dbc9ffaedfe3c2e1d795f44fcb |
Hashes for advanced_descriptors-3.0.8-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 124d0220f581d94fc040b491d18cb40eaf37d69372ed938764d55d4c67448151 |
|
MD5 | 90438356a892956f15f10608df2e4249 |
|
BLAKE2b-256 | eb68b021a379fadb22cf3c628254501cd118b207ebec14e3fdb299fc619fd140 |
Hashes for advanced_descriptors-3.0.8-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2615e6f8aacf7545011f7d8e7d073ee3e946bd6535f2a0e9419419ede0a82a51 |
|
MD5 | a7904fadf98682a69451bbc9c15f009d |
|
BLAKE2b-256 | f8f33cc2a5410cd64a16f91acaa60329d300da3a014c9230d95057c17c50287c |
Hashes for advanced_descriptors-3.0.8-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c307b5f6f3041618f1e6d10acfa8f39e16e2c728a0573241cfcbd91636a1168 |
|
MD5 | d3cd257cff2797f7112a28f19fe79e9b |
|
BLAKE2b-256 | 6953dbac435a3bda6c11952ed95f7c6db906cf050ad93503f4b3702168814839 |
Hashes for advanced_descriptors-3.0.8-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d98cf013050770f88e31a513c39254118ba3ef859b6de606c710754ca07da821 |
|
MD5 | 472901ce2f2b7c5c526569bd0753aa04 |
|
BLAKE2b-256 | 752f4a883e9421b4f4e72eaf565e3e799b5335a46766a776337055822a4dc407 |
Hashes for advanced_descriptors-3.0.8-cp36-cp36m-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d51c82f0f83d251067b151f0af129197aedfe781ccffbf9c6d9f16343053b03 |
|
MD5 | 9d87a32730ba20f0172196912cb876a2 |
|
BLAKE2b-256 | 6dba089755d200dcadeb67c53c2c34f30794796710d355f1cab557006ed5e518 |
Hashes for advanced_descriptors-3.0.8-cp36-cp36m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e462aca2eb69b771c4f803c2a9c448fbaa31446ef55884109bab86c91cca4cd3 |
|
MD5 | 18d5f1580eee8d06bb9a61caa2b539b7 |
|
BLAKE2b-256 | 769dc8384b28444cc0b828d1f3f56acd071bf73c3b451d66a361e8cca6085b20 |
Hashes for advanced_descriptors-3.0.8-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b86bdbdd23d08c04fe2f0852223bd3abcf9608cb44f57b82ddf60042daf45fa |
|
MD5 | 67d151612c6d05e63484519e9cb306d5 |
|
BLAKE2b-256 | b22c4900efab5b4e3532fb5afb56797171dd6be67fe11649d5c6dc9fd492ef76 |
Hashes for advanced_descriptors-3.0.8-cp36-cp36m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d959de138ac27603c5b43e978aa6e4bea81bbd8b8107dbebdd57da0bb9be6860 |
|
MD5 | 64a6136e5f952863b34cb75bf60ebf9b |
|
BLAKE2b-256 | 3fe64705e086b55a83bf1b70c1cad910ccd42a6fc9663ba5bd6314fc4e272ef8 |
Hashes for advanced_descriptors-3.0.8-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c78e14c6989f5edda49e57174ee1ca9a398e64bbe58a5196032372e567e61b6 |
|
MD5 | cbca59b33b19e1c69e8cc53f918e3a37 |
|
BLAKE2b-256 | 2405dec76e4b2cdbedb264cfcdc9808ad30d2d754fb5298d532942babce2af54 |
Hashes for advanced_descriptors-3.0.8-cp36-cp36m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 435d5dff0a76e1115699e1c5143e312d98b2de04187d95871f6e4b47e976196f |
|
MD5 | 8a9da99e25eddd8e30623d0e47991483 |
|
BLAKE2b-256 | 5d6cfa6848dcb5e5964b806c1d11a37a7a769c6fef5a265a771c6dee06860ffb |