Skip to main content

The opposite of Argparse

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

esrapgra-0.1.1.tar.gz (4.2 kB view hashes)

Uploaded Source

Built Distribution

esrapgra-0.1.1-py3-none-any.whl (4.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page