Skip to main content

Pure Python decorator for more complex dictionary handling

Project description

pydarg

Pydarg is a python simple utility package providing a way to handle more deeply dictionary parameters of implemented function

REQUIREMENT

Require python 3.6+

INSTALLATION

Run this command line to fetch the package on Pypi

$ pip install pydarg

USAGE

This package provide a method "dct_arg" used as a decorator

Basic Usage

without any parameter, dct_arg unpacks the dictionary argument of function signature

@dct_arg
def example(foo,bar):
    print(foo,bar)

param = {'foo':'1,'bar':'2','other':3}
example(param)

the main advantage of using dct_arg instead of **param is that it avoid binding extra argument, making it really useful for handling configuration dictionary having multiple of parameter.

those functions call would also be valid

example(foo='foo',bar='bar')
example({'foo':'foo_1'},bar='bar)
example({},'foo','bar')

It is also possible to override dct_arg's name by using keyword argument. making this line printing "foo_2" and "bar_2"

example({'foo':'foo_1','bar:'bar_1},'foo_2,bar='bar_2)

parameters

dct_arg(
    _fct=None, *,
    is_positional=True,
    is_keyword=True,
    name='dct_arg',
    path="",
    fetch_args=None
    ):

Where :

  • arg_type:

    define what is the type of the dct_arg

    • ArgType.POSITIONAL
    • ArgType.KEY_WORD
    • ArgType.BOTH,
  • name

    represent the keyword name of the dct_arg

  • path

    if the desired dct_arg is nested you you can specify the path with "/"

  • fetch_args

    dictionary composed of key representing keyword parameter, and the path with "/" to fetch them in the dct_arg

Examples

fetch the nested dictionary argument named config

@dct_arg(name='config,path='child/subchild')
def example(e0, e1):
    print(e1, e0)


example(config={'child': {'subchild': {'e1': 1, 'e0': 0}}})
example({'child': {'subchild': {'e1': 1}}}, e0=0)

since by default a dct_arg is a positional keyword both function call works

fetch the dct_arg itself as an argument

@dct_arg(fetch_args={'config': ""})
def example(config, e0):
    pass

example(configuration={'e0': 0})

Project details


Release history Release notifications

This version

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pydarg, version 0.1
Filename, size File type Python version Upload date Hashes
Filename, size pydarg-0.1-py3-none-any.whl (4.5 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size pydarg-0.1.tar.gz (4.0 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page