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 versionView 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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|