Pre-release
This release is a pre-release and may not be stable for production use.
fancy-descriptors
This package adds a callable descriptor called method descriptor which can apply to methods.
Usage
a simplest example:
import fancy.descriptor as fd
class MyDescriptor(fd.MethodDescriptor):
pass
class MyClass:
@MyDescriptor
def method_a(self):
pass
# or
@MyDescriptor.bind()
def method_b(self):
pass
# after a MyClass object is created.
my_obj = MyClass()
assert isinstance(my_obj.method_a, MyDescriptor)
# returned {"method_a": <MyDescriptor object>, "method_b": <MyDescriptor object>}
MyDescriptor.get_marked_method(my_obj)
the statement MyDescriptor.get_marked_method(my_obj) will get all marked methods' descriptors
with metadata
import fancy.descriptor as fd
class MyDescriptor(fd.MethodDescriptor):
def __init__(self,method, value: int, factory = None):
"""
method must at first place of argument
factory is a method descriptor factory for underlying descriptor
"""
super().__init__(method, factory)
self._value = value
def get_value(self):
return self._value
class MyClass:
# you cannot directly use MyDescriptor as decorator
# if the constructor of the descriptor has over one required argument
# you must use .bind() to instead.
@MyDescriptor.bind(value=1)
def method_annotated(self):
pass
my_obj = MyClass()
my_obj.method_annotated.get_value() # returned 1
Inheritance
import fancy.descriptor as fd
class MyBaseDescriptor(fd.MethodDescriptor):
pass
class MyDescriptor(MyBaseDescriptor):
pass
class MyClass:
@MyBaseDescriptor
def method_base(self):
pass
@MyDescriptor
def method_sub(self):
pass
my_obj = MyClass()
MyBaseDescriptor.get_marked_method(my_obj) # returned both method_base and method_sub
MyDescriptor.get_marked_method(my_obj) # returned only method_sub
Metadata
Release files for fancy-descriptor 1.2.0a2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fancy-descriptor-1.2.0a2.tar.gz | 6.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fancy_descriptor-1.2.0a2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.9 kB
Release files / fancy-descriptor-1.2.0a2.tar.gz
| Download URL | fancy-descriptor-1.2.0a2.tar.gz |
|---|---|
| Size | 6.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
41f6f4bfa0e68f7fbb5652447ed445b9130f3230c1c415bbbdddd7d31a1f4a1c
|
|
BLAKE2b-256 checksum How to use checksums |
b184e650d244e8f8a121d1cfc88b3c3393597d3ea27b90bdb9422188872ce289
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.7
|
Release files / fancy_descriptor-1.2.0a2-py3-none-any.whl
| Download URL | fancy_descriptor-1.2.0a2-py3-none-any.whl |
|---|---|
| Size | 11.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d11a9f6b3a7ae17ec93d689048bba5db9bb724785bed88da38926b9f11daeb7b
|
|
BLAKE2b-256 checksum How to use checksums |
38819b56f9e3c2eb4f8ca468bcf3f172450995bc2d4f027297ec3fca57fc3767
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.7
|