Powerful parameter processing.
Project description
pyparam
Powerful parameter processing
Features
- Command line argument parser (with subcommand support)
- Rich type support, including
py
,json
,namespace
, etc. - Type overwriting for parameters from command line
- Arbitrary parsing arguments from command line
- Automatic help page assembling
- Help page customization
- Callbacks for option values
- Parameter loading from configuration files
Installation
pip install -U pyparam
Documentation
https://pwwang.github.io/pyparam/
Basic usage
example.py
from rich import print
from pyparam import Params
# program name, otherwise sys.argv[0]
params = Params(prog='pyparam', desc="An example for {prog}")
# adding parameters
params.add_param('i, int', type=int,
desc="An integer argument.")
params.add_param('float', default=0.1, # type float implied
desc="A float argument.")
params.add_param('str', type=str,
desc="A str argument.")
params.add_param('flag', type=bool,
desc="A flag argument.")
params.add_param('c,count', type='count',
desc="A count argument.")
params.add_param('a', type='auto', type_frozen=False,
desc="Value will be automatically casted.")
params.add_param('py', type='py',
desc="Value will be evaluated by `ast.literal_eval`.")
params.add_param('json', type='json',
desc="Value will be converted using `json.loads`.")
params.add_param('list', type='list',
desc="Values will be accumulated.")
params.add_param('path', type='path', required=True,
desc="Value will be casted into `pathlib.Path`.",
callback=( # check if path exists
lambda path: ValueError('File does not exist.')
if not path.exists() else path
))
params.add_param('choice', type='choice', default='medium',
choices=['small', 'medium', 'large'],
desc="One of {choices}.")
params.add_param('config.ncores', default=1, # namespace config implied
argname_shorten=False,
desc='Number of cores to use.')
print(vars(params.parse()))
Try it out:
$ python example.py
$ python example.py \
-i2 \
--float 0.5 \
--str abc \
-ccc \
-a:int 1 \
--py "{1,2,3}" \
--json "{\"a\": 1}" \
--list 1 2 3 \
--choice large \
--path . \
--config.ncores 4
{
'i': 2,
'int': 2,
'float': 0.5,
'str': 'abc',
'flag': False,
'c': 3,
'count': 3,
'a': 1,
'py': {1, 2, 3},
'json': {'a': 1},
'list': [1, 2, 3],
'path': PosixPath('.'),
'choice': 'large',
'config': Namespace(ncores=4)
}
Try more features with:
$ python -m pyparam
Shell completions
Here is how the command completion in fish
works:
Check the documentation, as well as the __main__.py
to see how the completion works.
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
pyparam-0.4.2.tar.gz
(38.3 kB
view details)
Built Distribution
pyparam-0.4.2-py3-none-any.whl
(40.0 kB
view details)
File details
Details for the file pyparam-0.4.2.tar.gz
.
File metadata
- Download URL: pyparam-0.4.2.tar.gz
- Upload date:
- Size: 38.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.10 CPython/3.8.5 Linux/5.4.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 75de88eb41e9025c4ad4b9cbba16d376b08540c2d3cb255e8223eed0cf471fd8 |
|
MD5 | fab09233e63850818d8ef9e903a253da |
|
BLAKE2b-256 | aa256a2ffc320d8f666fe6d3f3a0aef65ca56e1fc2cac1cea568a8b2b5ce2a74 |
File details
Details for the file pyparam-0.4.2-py3-none-any.whl
.
File metadata
- Download URL: pyparam-0.4.2-py3-none-any.whl
- Upload date:
- Size: 40.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.10 CPython/3.8.5 Linux/5.4.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73a0a30ad1bb4a369d1a5534cee37d6a081cd2d5e4bd9e1345c0d75f10a9e707 |
|
MD5 | 6a791ab2fc67c4e9abc2d9bbb908c6c4 |
|
BLAKE2b-256 | ecd3b6946a695124c83be199bcff3f2273533136818d62c669b45f64ff11f6e7 |