Skip to main content

agrparseGraph

Summary

Description

Add logic in argpars object with argparsGraph.
This package helps you to avoid the if/else forestswhen using argparse

Install

Install package:

pip install argparse-graph

Uninstall package:

pip uninstall argparse-graph

manually :

Install the package:

make install

Uninstall the package:

make uninstall

Use it

The parameter defined with argparse must be named (dest="argsName")if not, it will
be impossible to find some link between the variable name and the name in the yaml file.

example of argparse object:

python script

from argparseGraph.argparseGraph import argparseGraph as agg

def parsarg():
    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()

    return args

res = 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 ok
scenario_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, argv7

With the argparseGraph object 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 dict
agg.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'}
# }

Tests

Two 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 test

run test on the package installed:

make test_install

Documentation

Makefile commands available:

Commands name Description
make install install argparseGraph
make uninstall uninstall argparseGraph
make test run test on sources not installed
make test_install run test on the package installed
make run run example
make run scenarios=[1 , 2, 3, 4, 5] run example with a specifique scenarios

you can specify makefile options:

Define name Default Description
EXEC_DEFAULT_TEST pytest Tools to run tests
PYTHON_DEFAULT_EXEC python3 Use Python to run tests and install package

Credit Idea Gael Rottier

Reference:

Metadata

Release files for argparse-graph 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for argparse-graph 0.1.1
File Size Uploaded Provenance
argparse-graph-0.1.1.tar.gz 4.8 kB Without provenance Details

Release files / argparse-graph-0.1.1.tar.gz

Download URL argparse-graph-0.1.1.tar.gz
Size 4.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9cde707342211134a9b0d182518b771f64d9c587f8dcd04c1cd7f3f84ea740f5
BLAKE2b-256 checksum
How to use checksums
dcb2ebbb3d3960a29d332606ddd8062abeeb6bbcc6e0429b6a49fcd3cf83cb57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.5

Security for argparse-graph 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.1 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page