The opposite of Argparse
Project description
Esrapgra
The opposite of argparse. Converts function arguments to command-line arguments.
Installation
pip install esrapgra
From source
pip install git+https://github.com/audy/esrapgra
Overview
So you want to call wget from Python, mapping Python variables to
command-line arguments:
wget \
http://example.com/file.zip \
--directory-prefix=/path/to/directory \
--retry-connrefused \
--waitretry=5 \
--tries=3
This often gets messy if you need to interpolate values into the arguments or map Python logic into command logic:
args = [
"http://example.com/file.zip",
"--directory-prefix",
directory_prefix,
f"--tries={tries}"
]
if retry_connrefused:
args.append("--retry-connrefused")
subprocess.check_output(["wget"] + args)
With Esrapgra (if you can remember how to spell it), this becomes a nice function invocation:
es = Esrapgra(kwargs_last=True)
args = es.lex_arguments(
"http://example.com/file.zip",
directory_prefix="/path/to/directory",
retry_connrefused=True,
waitretry=5,
tries=3
)
subprocess.check_output(["wget"] + args)
The following things are happening:
- String arguments are automatically escaped and quote to protect against shell-escape attacks
- Boolean arguments are automatically turned into boolean flags (e.g.,
retry_connrefused=Trueturns into--retry-connrefusedandretry_connrefused=Falseturns into nothing) - Numeric flags are automatically converted into strings
Examples
Basic Initialization
You can initialize the Esrapgra object with default parameters:
esrap = Esrapgra()
Custom Separator
Customize the separator between words in keyword arguments:
# Using underscores as separators
esrap = Esrapgra(separator="_")
# Example usage
esrap.lex_arguments(test_argument="test") # Output: ['--test_argument="test"']
Custom Prefix
Define a custom prefix for the keyword arguments:
# Using a single hyphen as a prefix
esrap = Esrapgra(prefix="-")
# Example usage
esrap.lex_arguments(test_argument="test") # Output: ['-test_argument="test"']
Keyword Arguments Position
Control the position of keyword arguments relative to positional arguments:
# Putting keyword arguments before positional arguments
esrap = Esrapgra(kwargs_last=False)
# Example usage
esrap.lex_arguments(
"first_arg",
test_argument="test"
)
# Output: ['-test_argument="test"', 'first_arg']
Quoting Strings
You can enable or disable the quoting of strings as per your needs:
# Disabling quoting of strings
esrap = Esrapgra(quote_strings=False)
# Example usage
# Adjust the expected output based on the implementation of `lex_arguments`
esrap.lex_arguments(test_argument="test")
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file esrapgra-0.1.1.tar.gz.
File metadata
- Download URL: esrapgra-0.1.1.tar.gz
- Upload date:
- Size: 4.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
722edd547f93c7ae452bd60f148b533aa46fe03cbecb9c4c7928214f66ece7ab
|
|
| MD5 |
129e34872aaa1eb845b8539aca423c18
|
|
| BLAKE2b-256 |
8b013835e57a0fa3128f67fefe287fd0049f22a26ab287511ecfefd205a0f582
|
File details
Details for the file esrapgra-0.1.1-py3-none-any.whl.
File metadata
- Download URL: esrapgra-0.1.1-py3-none-any.whl
- Upload date:
- Size: 4.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e5ab2953904e7a35dbba6f42112fc8c152aab9e3078b742344af2b7de247385
|
|
| MD5 |
936eee02355075552815110c1c5418dc
|
|
| BLAKE2b-256 |
b10bd7bcb4010093a8831e03c207eaa9335557686b589ead338aa09605a5ec1d
|