Skip to main content

ArgCompile

Python Version License PyPI

Command-line parsing library

This module proposes to extend argparse command-line parsing library objects in order to promote devices to easily apply post-parsing processing over supplied arguments.

The package contains three public design classes, some useful implementations of them and other auxiliary classes. The most significant ones are described bellow:

ArgumentCompiler

The main entry point for command-line parsing, extended to process new-design group usage test, attribute formation and Namespace compilation. Following its superclass, ArgumentParser, it's filled by Actions that defines as command line should be parsed. By extension, add_attribute() method process the inclusion of complex ActionsContainer named accordingly.

  • FileSelector: A multiple file opener that filters selection based on path, filename(s) and extension(s)
  • FileComputer: A FileSelector specialization that also defines an output target
  • YamlCompuler: A FileComputer based class that restricts yaml and yml file extensions, already loading its content to a dictionary

Attribute

An ActionsContainer specialization to manage parsing of multiple arguments into an unique Namespace attribute. Implementations of it can be made in order to define how a Namespace attribute should be constructed based on the several target arguments parsed.

  • Target: Defines a reference collection of the main parsed object
  • Extension: Designed to accumulate a list of extensions, allowing defining special arguments for desired options
  • Output: Defines title and opening-mode of a writing file

CustomGroup

A group-type class that allows post parsing usage tests to be executed. This design enables the implementation of custom rules in Action groups.

  • RequiredGroup: A simple group that checks the presence of its arguments to require at least one has been provided
  • DependentGroup: Restricts the use of its arguments based on presence of its dependence list

Example

The following code is a Python program that prints out the file list of a target path

# ls.py
from argcompile import FileSelector

class Ls(FileSelector):
	def __call__(self, namespace):
		for file in namespace.file:
			print(file.name)

compiler = Ls(
	path={
		'*': ['path'],
		'nargs': 1
	}
)
compiler.parse_args()

It can be run at the command line and provides useful help messages:

$ python3 ls.py -h
usage: ls.py [-h] [--all] [-e ext [ext ...]]
           path [filename [filename ...]]

positional arguments:
  path                  define path to look up files from
  filename              define chosen filenames

optional arguments:
  -h, --help            show this help message and exit
  --all                 select all filenames
  -e ext [ext ...],     restrict files extension(s)

When run with the appropriate arguments, it does the job:

$ python3 ls.py . --all
./.gitignore
./DESCRIPTION.md
./LICENSE
./makefile
./MANIFEST.in
./README.md
./setup.cfg
./setup.py

Metadata

Release files for argcompile 0.0.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for argcompile 0.0.9
File Size Uploaded
argcompile-0.0.9.zip 13.9 kB Details

Built distribution (wheel)

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

Total release size: 23.5 kB

Release files / argcompile-0.0.9.zip

Download URL argcompile-0.0.9.zip
Size 13.9 kB
Tags Source
SHA-256 checksum
How to use checksums
afa0b3fa7b0e1a0d7aa28381d080d81ce8dfa1ee13fc2508a34832ec33a9c98a
BLAKE2b-256 checksum
How to use checksums
d9a830adc550b05ac16afc4863cf7a8cddfc559fbb8e15ead69867fdeca25aeb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.3

Release files / argcompile-0.0.9-py3-none-any.whl

Download URL argcompile-0.0.9-py3-none-any.whl
Size 9.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
25b42bcce94d8a87217483f963b7b0495eef42f052df794c4c6bb03b617e8345
BLAKE2b-256 checksum
How to use checksums
ef7f53defed471590b578f187cb42aefab770ee58ae6437dbe6badf2aafb871e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.3

Release history Release notifications | RSS feed

This release

0.0.9 This release

2 release files

0.0.4

2 release files

0.0.1

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