Skip to main content

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 inapp/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

mapping_shortcuts-0.9.9.tar.gz (4.0 kB view hashes)

Uploaded Source

Built Distribution

mapping_shortcuts-0.9.9-py3-none-any.whl (5.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page