Useful shortcuts for create mappings
Project description
Mapping Shortcuts
python package with useful mapping shortcuts
Contains
- Decorator for mapping factory
- Metaclass for mapping factory
- Function for import all subpackages in package
Decorator factory for mapping
from mapping_shortcuts.decors import create_collector
decorator, collection = create_collector(
raise_on_duplicate=True, # default: True
)
@decorator('key1')
def func1():
...
@decorator('key2')
def func2():
...
print(collection)
'''
output: {
'key1': <function func1 at 0x104adc430>,
'key2': <function func2 at 0x104adc4c0>,
}
'''
Metaclass factory for mapping
import abc
from mapping_shortcuts.meta import create_collection_meta
MetaClass, collections = create_collection_meta(
base=abc.ABCMeta, # default: type
getter=lambda x: x.__name__, # default: lambda x: str(x)
raise_on_duplicate = True, # default: True
)
class A(metaclass=MetaClass):
...
class B(metaclass=MetaClass):
...
print(collections)
'''
oputput: {
'A': <class '__main__.A'>,
'B': <class '__main__.B'>,
}
'''
Function for import all subpackages in package
For exmaple with have five files:
- python code
app/tools.py
- empty file
app/providers/a/__init__.py
- empty file
app/providers/b/__init__.py
- python code in
app/providers/a/module.py
- python code in
app/providers/b/module.py
app/tools.py
be like:
from mapping_shortcuts.decors import create_collector
decorator, collection = create_collector()
app/providers/a/module.py
is:
from app.tools import decorator
@decorator('A-func')
def function_a():
...
app/providers/b/module.py
is:
from app.tools import decorator
@decorator('B-func')
def function_b():
...
execute load_package()
:
from mapping_shortcuts.dirtools import load_package
from app.tools import collection
load_package('app.providers')
print(collection)
'''
output: {
'A-func': <function function_a at 0x104cfa0e0>,
'B-func': <function function_b at 0x104cfa290>,
}
'''
Project details
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
Close
Hashes for mapping_shortcuts-0.9.9-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 89909c46854df41b20a439317831d7feba3edf0fe12ae04ecf1e58c2a306f9d4 |
|
MD5 | 1d3e11c74fc61691756bd87f2b29ff41 |
|
BLAKE2b-256 | dcb3105aaec90181ec38347d2df48bcf609b057aadb8e7cd362186ee8e606b54 |