summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-15 04:15:09 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-15 04:15:09 +0000
commita3ba8c34c42de9040dfa8931093591e18aa422da (patch)
treebefd750e9be54f5940e7f20db9edee7a8816a72d
parenta8d3f738e8d5df155de81857e534178a970432a9 (diff)
automatic import of python-pyparam
-rw-r--r--.gitignore1
-rw-r--r--python-pyparam.spec495
-rw-r--r--sources1
3 files changed, 497 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..7110f1d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/pyparam-0.5.4.tar.gz
diff --git a/python-pyparam.spec b/python-pyparam.spec
new file mode 100644
index 0000000..8bdb16b
--- /dev/null
+++ b/python-pyparam.spec
@@ -0,0 +1,495 @@
+%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
+* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 0.5.4-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..8c4316d
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+e369513bd12b3546ce5cbf60247929fb pyparam-0.5.4.tar.gz