%global _empty_manifest_terminate_build 0 Name: python-pyparam Version: 0.5.4 Release: 1 Summary: Powerful parameter processing. License: MIT URL: https://github.com/pwwang/pyparam Source0: https://mirrors.nju.edu.cn/pypi/web/packages/46/c8/4d326f8a256ac668e69f21caa53c56bb54905603f8af8f067c6237164ae2/pyparam-0.5.4.tar.gz BuildArch: noarch Requires: python3-simpleconf Requires: python3-rich Requires: python3-diot %description # pyparam [![pypi][1]][2] [![pypi][10]][11] [![codacy quality][4]][6] [![codacy quality][7]][6] [![docs][12]][5] ![github action][3] ![pyver][8] 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 ```shell pip install -U pyparam ``` ## Documentation [https://pwwang.github.io/pyparam/][5] ## Basic usage `example.py` ```python from rich import print from pyparam import Params # program name, otherwise sys.argv[0] params = Params(prog='pyparam', desc="An example for %(prog)s") # 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: ```sh python example.py ``` ![help](./pyparam-help.png) ```sh $ 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 ``` ```python { '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: ```sh python -m pyparam ``` ## Shell completions Here is how the command completion in `fish` works: ![pyparam-completions](./pyparam-completions.gif) Check the [documentation][13], as well as the `__main__.py` to see how the completion works. [1]: https://img.shields.io/pypi/v/pyparam.svg?style=flat-square [2]: https://pypi.org/project/pyparam/ [3]: https://img.shields.io/github/actions/workflow/status/pwwang/pyparam/build.yml?style=flat-square [4]: https://img.shields.io/codacy/grade/370aa0074595445188b01dc8dba47fe5.svg?style=flat-square [5]: https://pwwang.github.io/pyparam/ [6]: https://app.codacy.com/gh/pwwang/pyparam/dashboard [7]: https://img.shields.io/codacy/coverage/370aa0074595445188b01dc8dba47fe5.svg?style=flat-square [8]: https://img.shields.io/pypi/pyversions/pyparam.svg?style=flat-square [9]: https://raw.githubusercontent.com/pwwang/pyparam/master/docs/static/help.png [10]: https://img.shields.io/github/tag/pwwang/pyparam.svg?style=flat-square [11]: https://github.com/pwwang/pyparam [12]: https://img.shields.io/github/actions/workflow/status/pwwang/pyparam/docs.yml?label=docs&style=flat-square [13]: https://pwwang.github.io/pyparam/shellCompletion/ %package -n python3-pyparam Summary: Powerful parameter processing. Provides: python-pyparam BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-pyparam # pyparam [![pypi][1]][2] [![pypi][10]][11] [![codacy quality][4]][6] [![codacy quality][7]][6] [![docs][12]][5] ![github action][3] ![pyver][8] 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 ```shell pip install -U pyparam ``` ## Documentation [https://pwwang.github.io/pyparam/][5] ## Basic usage `example.py` ```python from rich import print from pyparam import Params # program name, otherwise sys.argv[0] params = Params(prog='pyparam', desc="An example for %(prog)s") # 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: ```sh python example.py ``` ![help](./pyparam-help.png) ```sh $ 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 ``` ```python { '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: ```sh python -m pyparam ``` ## Shell completions Here is how the command completion in `fish` works: ![pyparam-completions](./pyparam-completions.gif) Check the [documentation][13], as well as the `__main__.py` to see how the completion works. [1]: https://img.shields.io/pypi/v/pyparam.svg?style=flat-square [2]: https://pypi.org/project/pyparam/ [3]: https://img.shields.io/github/actions/workflow/status/pwwang/pyparam/build.yml?style=flat-square [4]: https://img.shields.io/codacy/grade/370aa0074595445188b01dc8dba47fe5.svg?style=flat-square [5]: https://pwwang.github.io/pyparam/ [6]: https://app.codacy.com/gh/pwwang/pyparam/dashboard [7]: https://img.shields.io/codacy/coverage/370aa0074595445188b01dc8dba47fe5.svg?style=flat-square [8]: https://img.shields.io/pypi/pyversions/pyparam.svg?style=flat-square [9]: https://raw.githubusercontent.com/pwwang/pyparam/master/docs/static/help.png [10]: https://img.shields.io/github/tag/pwwang/pyparam.svg?style=flat-square [11]: https://github.com/pwwang/pyparam [12]: https://img.shields.io/github/actions/workflow/status/pwwang/pyparam/docs.yml?label=docs&style=flat-square [13]: https://pwwang.github.io/pyparam/shellCompletion/ %package help Summary: Development documents and examples for pyparam Provides: python3-pyparam-doc %description help # pyparam [![pypi][1]][2] [![pypi][10]][11] [![codacy quality][4]][6] [![codacy quality][7]][6] [![docs][12]][5] ![github action][3] ![pyver][8] 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 ```shell pip install -U pyparam ``` ## Documentation [https://pwwang.github.io/pyparam/][5] ## Basic usage `example.py` ```python from rich import print from pyparam import Params # program name, otherwise sys.argv[0] params = Params(prog='pyparam', desc="An example for %(prog)s") # 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: ```sh python example.py ``` ![help](./pyparam-help.png) ```sh $ 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 ``` ```python { '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: ```sh python -m pyparam ``` ## Shell completions Here is how the command completion in `fish` works: ![pyparam-completions](./pyparam-completions.gif) Check the [documentation][13], as well as the `__main__.py` to see how the completion works. [1]: https://img.shields.io/pypi/v/pyparam.svg?style=flat-square [2]: https://pypi.org/project/pyparam/ [3]: https://img.shields.io/github/actions/workflow/status/pwwang/pyparam/build.yml?style=flat-square [4]: https://img.shields.io/codacy/grade/370aa0074595445188b01dc8dba47fe5.svg?style=flat-square [5]: https://pwwang.github.io/pyparam/ [6]: https://app.codacy.com/gh/pwwang/pyparam/dashboard [7]: https://img.shields.io/codacy/coverage/370aa0074595445188b01dc8dba47fe5.svg?style=flat-square [8]: https://img.shields.io/pypi/pyversions/pyparam.svg?style=flat-square [9]: https://raw.githubusercontent.com/pwwang/pyparam/master/docs/static/help.png [10]: https://img.shields.io/github/tag/pwwang/pyparam.svg?style=flat-square [11]: https://github.com/pwwang/pyparam [12]: https://img.shields.io/github/actions/workflow/status/pwwang/pyparam/docs.yml?label=docs&style=flat-square [13]: https://pwwang.github.io/pyparam/shellCompletion/ %prep %autosetup -n pyparam-0.5.4 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-pyparam -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue May 30 2023 Python_Bot - 0.5.4-1 - Package Spec generated