Skip to main content

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

  1. Install:

    # pip install xacto
  2. Prepare:

    # ln -s $(which xacto) do
  3. 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"""
  1. 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
  2. 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
  3. Run tool (function):

    # ./do work hard --method=cheat --code=iddqd taskN
    {'method': 'cheat',
     'params': {'code': 'iddqd'},
     'speed': 32,
     'tasks': ('taskN',)}
  4. 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

xacto-0.8.7.tar.gz (15.3 kB view details)

Uploaded Source

Built Distributions

xacto-0.8.7-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

xacto-0.8.7-py2-none-any.whl (15.2 kB view details)

Uploaded Python 2

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

Hashes for xacto-0.8.7.tar.gz
Algorithm Hash digest
SHA256 d1a1447f54167ede5be20a62d7c75b92bf690abc91cae68a4f1cf89f5a137f2d
MD5 fe6e7e174b6081207f83573087d6b0ea
BLAKE2b-256 3edcd05b1c869df146422bd656328c0e041c44437c5a86e30bace2f8e6dd249e

See more details on using hashes here.

File details

Details for the file xacto-0.8.7-py3-none-any.whl.

File metadata

File hashes

Hashes for xacto-0.8.7-py3-none-any.whl
Algorithm Hash digest
SHA256 30e124ec9a6b1f82d25c7894dfaefe01c539adbc4baa555efdace964b7570e71
MD5 b71edb2883e7797505e177608ae96ea9
BLAKE2b-256 5e8d4b5e48223a90b99f2f2ab25fe437061e97adcde2e26b39fbef2f89e12aa0

See more details on using hashes here.

File details

Details for the file xacto-0.8.7-py2-none-any.whl.

File metadata

File hashes

Hashes for xacto-0.8.7-py2-none-any.whl
Algorithm Hash digest
SHA256 b126bdd53ec9caa4a772bc08289d8bde603d5680d2a80ac4b80aca1452ae2fd3
MD5 ce8a16fff48cabf75e72f7bd8ae98513
BLAKE2b-256 ebb945c308286a04be0cede51dbd9f35b0ed02095614f3d397df2182e7e2af53

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