Skip to main content

Esrapgra

Test

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 and retry_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")

Metadata

Release files for esrapgra 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 esrapgra 0.1.1
File Size Uploaded
esrapgra-0.1.1.tar.gz 4.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for esrapgra 0.1.1
File Interpreter ABI Platform
esrapgra-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 8.4 kB

Release files / esrapgra-0.1.1.tar.gz

Download URL esrapgra-0.1.1.tar.gz
Size 4.2 kB
Tags Source
SHA-256 checksum
How to use checksums
722edd547f93c7ae452bd60f148b533aa46fe03cbecb9c4c7928214f66ece7ab
BLAKE2b-256 checksum
How to use checksums
8b013835e57a0fa3128f67fefe287fd0049f22a26ab287511ecfefd205a0f582
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.3

Release files / esrapgra-0.1.1-py3-none-any.whl

Download URL esrapgra-0.1.1-py3-none-any.whl
Size 4.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5e5ab2953904e7a35dbba6f42112fc8c152aab9e3078b742344af2b7de247385
BLAKE2b-256 checksum
How to use checksums
b10bd7bcb4010093a8831e03c207eaa9335557686b589ead338aa09605a5ec1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.3

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

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