Basic abstraction layer for executables.
Project description
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
- Patrick Lehmann (Maintainer)
- Unai Martinez-Corral
- and more...
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
Built Distribution
Close
Hashes for pyTooling.CLIAbstraction-0.4.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 62c675d743564638785df6fcdab9a54be6321b789f34dcc6ca18103d3cc303a6 |
|
MD5 | 3965230390136ee497f345b71ce08220 |
|
BLAKE2b-256 | 727fb2e9aa19d94e9c1678960979e02a5f554f5c0d3e41aa62c9913643fc9c79 |
Close
Hashes for pyTooling.CLIAbstraction-0.4.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 290ca69f8d977711162b0c38fbb947c6c24eeba89da1a6a1f26d39a727ce0592 |
|
MD5 | 21b8933954e92aa8ffe577f3bc5fb3f3 |
|
BLAKE2b-256 | 7e2887b6f2017253f8af583db98139317714bb76fcfc7a5b7374c03096730762 |