A parser for arguments and config-files that also allows direct python input.
Project description
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 Usage:
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
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
Hashes for generic_parser-1.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d50cc664a332a71d46e9ee3945635b8fe09b019cbd6c456731ef5ac8d2fb0c0f |
|
MD5 | e231593619013b14fc8bf53348edbab8 |
|
BLAKE2b-256 | 1ccd076b36a032191404a262c9f56f9b541df98e1f14d9859c9633b2090aeaf8 |