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 | RSS feed

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.

Source Distribution

pydarg-0.1.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

pydarg-0.1-py3-none-any.whl (4.5 kB view details)

Uploaded Python 3

File details

Details for the file pydarg-0.1.tar.gz.

File metadata

  • Download URL: pydarg-0.1.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pydarg-0.1.tar.gz
Algorithm Hash digest
SHA256 112304fa5b8a189492b762b17ec42a4f22bffe47209dc6b3fce51101314491fd
MD5 0d0c8a774efb98b0e3442fd55c8dac0a
BLAKE2b-256 f665d5ec339e68cbbbf5443a59d3e9ade6c262a0dc1185a30a963783e3c770e2

See more details on using hashes here.

File details

Details for the file pydarg-0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pydarg-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 984a951f5cd0590805d63d5233b7c54b72ab86febc3966542a3957e36d08cf10
MD5 35babcf75a7ff442562fdfbecea1077a
BLAKE2b-256 485640338449fd4f6486b050e7b5b05beec9fa526511046455f5527fb976ac05

See more details on using hashes here.

Supported by

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