Package: argparse-graph
agrparseGraphSummaryDescriptionInstallUse itTestsDocumentationDescriptionAdd logic in argpars object with argparsGraph.This package helps you to avoid the if/else forestswhen usingargparseInstallInstall package:pipinstallargparse-graphUninstall package:pipuninstallargparse-graphmanually :Install the package:makeinstallUninstall the package:makeuninstallUse itThe parameter defined with argparse must be named (dest="argsName")if not, it willbe impossible to find some link between the variable name and the name in the yaml file.example of argparse object:python scriptfromargparseGraph.argparseGraphimportargparseGraphasaggdefparsarg():parser=argparse.ArgumentParser(description="random options for differents cenarios")parser.add_argument("-q",dest="argv1",help="test",type=int)parser.add_argument("-w",dest="argv2",help="test",type=int,action='append')parser.add_argument("-e",dest="argv3",help="test",type=str,default="test3")parser.add_argument("-t",dest="argv4",help="test",type=str,default=False)parser.add_argument("-a",dest="argv5",help="test",type=str)parser.add_argument("-s",dest="argv6",help="test",type=bool)parser.add_argument("-d",dest="argv7",help="test",type=str,action='append')args=parser.parse_args()returnargsres=parsarg()agg=agg("scenarios.yml",res_args,verbose=False)scenario.yml# if all parameters are not None# cmd: ./main.py -q 1 -w 1 -w 2 -e t -t o -a o -s t -d "Hello"  -d "World"scenario_1:options:"all"# if argv3, argv4 are not None and other are None# format list [v1, v2]# cmd: ./main.py -e toto -t okscenario_2:options:[argv3,argv4]# if argv3, argv4, argv5, argv6, argv7 are not None and other are None# format list#    - argv3#    - argv4#    - argv5#    - argv6#    - argv7# cmd: ./main.py -e toto -t ok -a ok -s True -d "Hello"  -d "World"scenario_3:options:-argv3-argv4-argv5-argv6-argv7# if argv3, argv4, argv6, argv7 are not None and other are None# format str argv3, argv4, argv6, argv7# cmd: ./main.py -s False -t True -d "Test"scenario_4:options:argv3, argv4, argv6, argv7With theargparseGraphobject you can get 3 differents results formats,
with those methods:# Return the name of the strategie in the yaml file.agg.get_one()# example:# 'scenario_test'# Return a dictagg.get_dict()# { 'scenario': 'scenario_test', 'options': ['argv3', 'argv4', 'argv5', 'argv6', 'argv7'], 'status': None}agg.get_all()# {#  'scenario_1': {'options': 'all', 'name': 'scenario_1', 'status': 'Fail'},#  'scenario_2': {'options': ['argv3', 'argv4'], 'name': 'scenario_2', 'status': 'Fail'},#  'scenario_3': {'options': ['argv3', 'argv4'], 'name': 'scenario_3', 'status': 'Fail'},#  'scenario_4': {'options': ['argv3', 'argv4', 'argv6', 'argv7'], 'name': 'scenario_4', 'status': 'Fail'},#  'scenario_test': {'options': ['argv3', 'argv4', 'argv5', 'argv6', 'argv7'], 'name': 'scenario_test', 'status': None},#  'scenario_5': {'options': '', 'name': 'scenario_5', 'status': 'Fail'}# }TestsTwo types of tests are available, the first one is running on the sources in the project directory,
the second one is running on the package install on your system.run test on the package not installed:make testrun test on the package installed:make test_installDocumentationMakefile commands available:Commands nameDescriptionmake installinstallargparseGraphmake uninstalluninstallargparseGraphmake testrun test on sources not installedmake test_installrun test on the package installedmake runrun examplemake run scenarios=[1 , 2, 3, 4, 5]run example with a specifique scenariosyou can specify makefile options:Define nameDefaultDescriptionEXEC_DEFAULT_TESTpytestTools to run testsPYTHON_DEFAULT_EXECpython3Use Python to run tests and install packageCredit Idea Gael RottierMediumLinkedinReference:Python3.5 Documentationargparse (python3)pipsetuptools