A python utility to store argparse arguments to ini file and vice versa
$ pip install git+https://github.com/ukyouz/py-argini
import sys
import argparse
from pathlib import Path
parser = argparse.ArgumentParser()
parser.add_argument("--test") # basic input
parser.add_argument("--fields", nargs="*") # multiline input
if len(sys.argv) == 1:
import argini
ini = Path(__file__).with_suffix(".ini")
argini.import_from_ini(parser, ini)
args = argini.get_user_inputs(parser, only_asks=['test'])
argini.save_to_ini(parser, ini, args)
else:
args = parser.parse_args()
# use args as usual.
print(args.test)
If you don't want to see the help text by default, turn off by setting show_help
keyword argument to False
:
# ...
args = argini.get_user_inputs(parser, show_help=False)
# ...
Validate user input by subclass argini.Validator
class. For example,
class ValidFile(argini.Validator):
@staticmethod
def validate_input(input: str) -> bool:
return Path(input).exists()
then pass to get_user_inputs
method,
args = argini.get_uesr_inputs(parser, user_validators={
"test": ValidFile,
}
- ValidatePath
- ValidateFile
- ValidateFolder
usage is like:
args = argini.get_uesr_inputs(parser, user_validators={
"test": argini.ValidateFile,
}
- pip install survey
args = argini.get_user_inputs_with_survey(parser)
You need to install these packages for testing:
> pip install pytest pytest-mock