Skip to main content

Basic abstraction layer for executables.

Project description

Sourcecode on GitHub Sourcecode License GitHub tag (latest SemVer incl. pre-release) GitHub release (latest SemVer incl. including pre-releases) GitHub release date Dependents (via libraries.io)
GitHub Workflow - Build and Test Status Codacy - Quality Codacy - Coverage Codecov - Branch Coverage Libraries.io SourceRank
PyPI PyPI - Python Version PyPI - Status Libraries.io status for latest release Requires.io
Read the Docs Documentation License Documentation - Read Now!

pyTooling.CLIAbstraction

pyTooling.CLIAbstraction is an abstraction layer and wrapper for command line programs, so they can be used easily in Python. All parameters like --value=42 are described as parameters of the executable.

Main Goals

  • Offer access to CLI programs as Python classes.
  • Abstract CLI arguments (a.k.a. parameter, option, flag, ...) as members on such a Python class.
  • Derive program variants from existing programs.
  • Assemble parameters in list format for handover to subprocess.Popen with proper escaping and quoting.
  • Launch a program with subprocess.Popen and hide the complexity of Popen.
  • Get a generator object for line-by-line output reading to enable postprocessing of outputs.

Use Cases

  • Wrap command line interfaces of EDA tools (Electronic Design Automation) in Python classes.

Example

The following example implements a portion of the git program and its commit sub-command.

Git program defining commit argument:

from pyTooling.CLIAbstraction import CLIArgument, Executable
from pyTooling.CLIAbstraction.Command import CommandArgument
from pyTooling.CLIAbstraction.Flag import LongFlag
from pyTooling.CLIAbstraction.ValuedTupleFlag import ShortTupleFlag

class Git(Executable):
	_executableNames = {
		"Windows": "git.exe",
		"Linux": "git",
		"Darwin": "git"
	}
	
	@CLIArgument()
	class FlagVerbose(LongFlag, name="verbose"):
		"""Print verbose messages."""
	
	@CLIArgument()
	class CommandCommit(CommandArgument, name="commit"):
		"""Command to commit staged files."""
	
	@CLIArgument()
	class ValueCommitMessage(ShortTupleFlag, name="m"):
		"""Specify the commit message."""
	
	def GetCommitTool(self):
		"""Derive a new program from a configured program."""
		tool = self.__class__(executablePath=self._executablePath)
		tool[tool.CommandCommit] = True
		self._CopyParameters(tool)
		
		return tool

Usage:

# Create a program instance and set common parameters.
git = Git()
git[git.FlagVerbose] = True

# Derive a variant of that pre-configured program.
commit = git.getCommitTool()
commit[commit.ValueCommitMessage] = "Bumped dependencies."

# Launch the program and parse outputs line-by-line.
commit.StartProcess()
for line in commit.GetLineReader():
	print(line)

Consumers

This layer is used by:

Contributors

License

This Python package (source code) licensed under Apache License 2.0.
The accompanying documentation is licensed under Creative Commons - Attribution 4.0 (CC-BY 4.0).


SPDX-License-Identifier: Apache-2.0

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

pyTooling.CLIAbstraction-0.4.1.tar.gz (20.8 kB view details)

Uploaded Source

Built Distribution

pyTooling.CLIAbstraction-0.4.1-py3-none-any.whl (30.9 kB view details)

Uploaded Python 3

File details

Details for the file pyTooling.CLIAbstraction-0.4.1.tar.gz.

File metadata

File hashes

Hashes for pyTooling.CLIAbstraction-0.4.1.tar.gz
Algorithm Hash digest
SHA256 62c675d743564638785df6fcdab9a54be6321b789f34dcc6ca18103d3cc303a6
MD5 3965230390136ee497f345b71ce08220
BLAKE2b-256 727fb2e9aa19d94e9c1678960979e02a5f554f5c0d3e41aa62c9913643fc9c79

See more details on using hashes here.

File details

Details for the file pyTooling.CLIAbstraction-0.4.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pyTooling.CLIAbstraction-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 290ca69f8d977711162b0c38fbb947c6c24eeba89da1a6a1f26d39a727ce0592
MD5 21b8933954e92aa8ffe577f3bc5fb3f3
BLAKE2b-256 7e2887b6f2017253f8af583db98139317714bb76fcfc7a5b7374c03096730762

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