Skip to content

A Python library to determine what exactly the user ran at the command line, along with default values, and any transformations that happened after parsing arguments.

License

Notifications You must be signed in to change notification settings

sandialabs/reverse_argparse

Folders and files

NameName
Last commit message
Last commit date
Apr 15, 2024
Jun 13, 2023
Apr 18, 2024
Mar 4, 2024
Mar 4, 2024
Oct 24, 2023
Mar 4, 2024
Jun 29, 2023
Jun 12, 2023
Apr 22, 2024
Jul 17, 2023
Jan 15, 2024
Dec 19, 2022
Apr 18, 2024
Feb 13, 2024
Apr 18, 2024
Oct 24, 2023
Jan 15, 2024
Dec 19, 2022
Mar 4, 2024

Repository files navigation

Code Style: black codecov CodeFactor CodeQL Conda Version Conda Downloads Continuous Integration Contributor Covenant GitHub contributors Documentation Status Anaconda-Server Badge Linting: Pylint Merged PRs OpenSSF Best Practices OpenSSF Scorecard Anaconda-Server Badge pre-commit pre-commit.ci Status PyPI - Version PyPI - Downloads Python Version Security: Bandit

reverse_argparse

Whereas argparse is concerned with taking a bunch of command line arguments and parsing them, this package is intended to do the opposite; that is, it'll take the parsed arguments and create the effective command line invocation of the script that generated them. The motivation is to be able to tell users exactly what was used for all of the options, taking into consideration any defaults and other transformations that might've been applied in the midst of parsing, such that users are able to reproduce a prior run of a script exactly.

Installation

To get up and running with reverse_argparse, simply:

python3 -m pip install reverse-argparse

Usage

Once the package is installed, you can simply

from argparse import ArgumentParser

from reverse_argparse import ReverseArgumentParser

# Parse the command line arguments.
parser = ArgumentParser()
# Build out the parser however you like.
args = parser.parse_args()
# Optionally post-process any `args`, as needed.

# Do whatever you need to in the script.

# Wrap things up.
print("This script executed the following:")
unparser = ReverseArgumentParser(parser, args)
print(unparser.get_pretty_command_line_invocation())

For more detailed usage and API information, please see our documentation.

Where to Get Help

If you're having trouble with reverse_argparse, or just want to ask a question, head on over to our issue board. If a quick search doesn't yield what you're looking for, feel free to file an issue.

Contributing

If you're interested in contributing to the development of reverse_argparse, we'd love to have your help 😀 Check out our contributing guidelines for how to get started. Past contributors include:

License

See LICENSE.md.

Credits

Special thanks to @mjsumpter for contributing to a prior iteration of this concept, and to the GMS project for investing in the development of this package.