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
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
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
Algorithm | Hash digest | |
---|---|---|
SHA256 |
112304fa5b8a189492b762b17ec42a4f22bffe47209dc6b3fce51101314491fd
|
|
MD5 |
0d0c8a774efb98b0e3442fd55c8dac0a
|
|
BLAKE2b-256 |
f665d5ec339e68cbbbf5443a59d3e9ade6c262a0dc1185a30a963783e3c770e2
|
File details
Details for the file pydarg-0.1-py3-none-any.whl
.
File metadata
- Download URL: pydarg-0.1-py3-none-any.whl
- Upload date:
- Size: 4.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
984a951f5cd0590805d63d5233b7c54b72ab86febc3966542a3957e36d08cf10
|
|
MD5 |
35babcf75a7ff442562fdfbecea1077a
|
|
BLAKE2b-256 |
485640338449fd4f6486b050e7b5b05beec9fa526511046455f5527fb976ac05
|