Socket
Socket
Sign inDemoInstall

argcompile

Package Overview
Dependencies
1
Maintainers
1
Alerts
File Explorer

Install Socket

Detect and block malicious and high-risk dependencies

Install

    argcompile

An argparse extension to easily manage post-processing of multiple parsed arguments


Maintainers
1

Readme

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

FAQs


Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc