Generate command-line interfaces (CLI) by introspecting callables
Project description
Xacto
CLI Analyzer/Generator
Introspect, compose, marshal and export arbitrary callables into a unified, hierarchical, command-line interface (CLI)
Features
auto-find tools scan signatures and export as CLI node
Why
FAST! EASY! natural import usage! --help is decent!
Quickstart
Install:
# pip install xacto
Prepare:
# ln -s $(which xacto) do
Create python file at tools/work.py:
from pprint import pprint
__all__ = ["easy", "hard", "manual"]
def easy(method, speed=16, *tasks):
"""The simple version"""
pprint(locals())
def hard(method, speed=32, *tasks, **params):
"""The difficult version"""
pprint(locals())
class manual(object):
"""The laborious version"""
def __call__(self, method, speed, *tasks):
pprint(locals())
def method(self, process):
"""Howto perform operation"""
def speed(self, ops=64):
"""Operations per second"""
def tasks(self, pri, sec, ter):
"""Various tasks"""
View --help:
# ./do work --help usage: do work OBJECT ... additional modules: OBJECT := { .do.work } easy The simple version hard The difficult version manual The laborious version
View object-level --help:
# ./do work manual --help usage: do work manual --method PROCESS --speed [OPS] [tasks [tasks ...]] The laborious version positional arguments: tasks Various tasks optional arguments: --method PROCESS Howto perform operation --speed [OPS] Operations per second The laborious version
Run tool (function):
# ./do work hard --method=cheat --code=iddqd taskN {'method': 'cheat', 'params': {'code': 'iddqd'}, 'speed': 32, 'tasks': ('taskN',)}
Run tool (class):
# ./do work manual --method=cheap --speed=256 taskN {'method': 'cheap', 'self': <do.work.manual object at ...>, 'speed': '256', 'tasks': ('taskN',)}
Limitations
true/false quirkyness (default=True means –default flips to False)
TODO
RELEASE!
testing: set-like functions, import semantics.. everything
handle bools better
detect output
standard output structure
prettify to tty
lazy load tools
lazy import globals (cpython)
bytecode cache
argument forwarding/chaining
integrate with zippy.shell
tab-completion
auto-reduce common components for aliases
make xacto object accessible to tools
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 Distributions
File details
Details for the file xacto-0.8.7.tar.gz
.
File metadata
- Download URL: xacto-0.8.7.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1a1447f54167ede5be20a62d7c75b92bf690abc91cae68a4f1cf89f5a137f2d |
|
MD5 | fe6e7e174b6081207f83573087d6b0ea |
|
BLAKE2b-256 | 3edcd05b1c869df146422bd656328c0e041c44437c5a86e30bace2f8e6dd249e |
File details
Details for the file xacto-0.8.7-py3-none-any.whl
.
File metadata
- Download URL: xacto-0.8.7-py3-none-any.whl
- Upload date:
- Size: 15.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30e124ec9a6b1f82d25c7894dfaefe01c539adbc4baa555efdace964b7570e71 |
|
MD5 | b71edb2883e7797505e177608ae96ea9 |
|
BLAKE2b-256 | 5e8d4b5e48223a90b99f2f2ab25fe437061e97adcde2e26b39fbef2f89e12aa0 |
File details
Details for the file xacto-0.8.7-py2-none-any.whl
.
File metadata
- Download URL: xacto-0.8.7-py2-none-any.whl
- Upload date:
- Size: 15.2 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b126bdd53ec9caa4a772bc08289d8bde603d5680d2a80ac4b80aca1452ae2fd3 |
|
MD5 | ce8a16fff48cabf75e72f7bd8ae98513 |
|
BLAKE2b-256 | ebb945c308286a04be0cede51dbd9f35b0ed02095614f3d397df2182e7e2af53 |