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
File details
Details for the file pyTooling.CLIAbstraction-0.4.1.tar.gz
.
File metadata
- Download URL: pyTooling.CLIAbstraction-0.4.1.tar.gz
- Upload date:
- Size: 20.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 62c675d743564638785df6fcdab9a54be6321b789f34dcc6ca18103d3cc303a6 |
|
MD5 | 3965230390136ee497f345b71ce08220 |
|
BLAKE2b-256 | 727fb2e9aa19d94e9c1678960979e02a5f554f5c0d3e41aa62c9913643fc9c79 |
File details
Details for the file pyTooling.CLIAbstraction-0.4.1-py3-none-any.whl
.
File metadata
- Download URL: pyTooling.CLIAbstraction-0.4.1-py3-none-any.whl
- Upload date:
- Size: 30.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 290ca69f8d977711162b0c38fbb947c6c24eeba89da1a6a1f26d39a727ce0592 |
|
MD5 | 21b8933954e92aa8ffe577f3bc5fb3f3 |
|
BLAKE2b-256 | 7e2887b6f2017253f8af583db98139317714bb76fcfc7a5b7374c03096730762 |