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=True
turns into--retry-connrefused
andretry_connrefused=False
turns 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
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 |