Generic Parser
The package provides an all-around parser for arguments and config-files. The creation of the arguments is similar to the ones from argparse, but the input can then be either from command line, a config file or directly from python.
See the API documentation for details.
Installing
Installation is easily done via pip. The package is then used as generic_parser.
python -m pip install generic-parser
One can also install in a conda environment via the conda-forge channel with:
conda install -c conda-forge generic_parser
Example
Content of myscript.py
from generic_parser import entrypoint, EntryPointParameters
def get_arguments():
args = EntryPointParameters()
args.add_parameter(name="first",
flags=["-f", "--first"],
help="First Parameter, an int",
choices=[1, 2, 3],
type=int,
required=True,
)
args.add_parameter(name="second",
flags=["-s", "--second"],
help="Second Parameter, a string",
type=str,
default="default",
required=False,
)
return args
@entrypoint(get_arguments())
def main(opt, unknown):
print(opt.first == 1)
print(opt.second == "default")
if __name__ == '__main__':
main()
Commandline
Calling that script with python myscript.py -f 1 -s "test" will result in:
True
False
It is assumed, that this is the standard mode of operation for your functions.
Config File
Further, one can also use a config file config.ini containing:
[Section]
first = 2
second = "Hello"
and run the script with python myscript.py --entry_cfg config.ini leading to
False
False
Config files are very useful if you want to rerun your code with the same or similar parameters.
Especially the declaration of a [DEFAULT] section can be helpful.
For further information about config files, check the python Config Parser.
Python
Or call the function directly from python code:
if __name__ == '__main__':
main(first=1, second="World")
True
False
This is incredibly helpful if one wants to write python-wrappers around entrypoint-functions, and does not want to resort to commandline calls from python.
Note that also in this case all variables are validated, courtesy of the dict_parser.
dict_parser provides even multi-level dictionary checking functionality,
which is not used in the Entrypoint, but can be handy in other use-cases.
License
This project is licensed under the MIT License - see the LICENSE.md file for details.
Metadata
Release files for generic_parser 1.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| generic_parser-1.1.2.tar.gz | 20.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| generic_parser-1.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.0 kB
Release files / generic_parser-1.1.2.tar.gz
| Download URL | generic_parser-1.1.2.tar.gz |
|---|---|
| Size | 20.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7fd698f70a0c90a1aac4dd597b1f160d8c7b2e732323cf49b1dea51dced222f0
|
|
BLAKE2b-256 checksum How to use checksums |
4334a66bac9300932363dc17fab2a21ca7a7ae6d6ae13f145f3451aacd9d3e5a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / generic_parser-1.1.2-py3-none-any.whl
| Download URL | generic_parser-1.1.2-py3-none-any.whl |
|---|---|
| Size | 19.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
143bbfe88c43985829b64b69399ca4e23a96c4b13e6df33eecae8c3986afd545
|
|
BLAKE2b-256 checksum How to use checksums |
c3c19220362762ed253939af08aafd958813e31586ffb4817dba7de2bc299a24
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|