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.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a708e004f8efa07164be97d5a97568246d163e037b92f469a0183467d5943ea |
|
MD5 | a636cedb51d98454a9369f2892578574 |
|
BLAKE2b-256 | 73047bef4c5d6d3adf01f32fc8f2e38cf345cc6091673c82707e22e3a2f842f3 |