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

Uploaded Source

Built Distribution

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

Uploaded Python 3

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

Hashes for esrapgra-0.1.1.tar.gz
Algorithm Hash digest
SHA256 722edd547f93c7ae452bd60f148b533aa46fe03cbecb9c4c7928214f66ece7ab
MD5 129e34872aaa1eb845b8539aca423c18
BLAKE2b-256 8b013835e57a0fa3128f67fefe287fd0049f22a26ab287511ecfefd205a0f582

See more details on using hashes here.

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

Hashes for esrapgra-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5e5ab2953904e7a35dbba6f42112fc8c152aab9e3078b742344af2b7de247385
MD5 936eee02355075552815110c1c5418dc
BLAKE2b-256 b10bd7bcb4010093a8831e03c207eaa9335557686b589ead338aa09605a5ec1d

See more details on using hashes here.

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