Interfaces de comando sin ceremonia

Convierte funciones Python en una CLI pulida.

Vulcano sirve para ese momento en el que un script empieza a convertirse en una herramienta. Mantienes tus funciones simples, las registras en la app y obtienes un REPL interactivo, modo de argumentos, autocompletado, ayuda en línea, historial, resaltado de sintaxis y grupos anidados.

Python 3.10+Pensado para Python moderno
prompt_toolkitBase para shells interactivos
Rich + PygmentsSalida de comandos más legible

Problemas que resuelve

La superficie de comandos que normalmente dejas para después.

Caso 01

Tengo funciones útiles.

Registra callables Python existentes sin reescribirlos dentro de un framework pesado.

Caso 02

Necesito que sea fácil de descubrir.

Tablas de ayuda, descripciones, inspección de argumentos y sugerencias hacen que la herramienta se explique sola.

Caso 03

Necesito modo interactivo.

Historial, autocompletado, temas y grupos anidados hacen cómodo el trabajo repetido con comandos.

Caso 04

También necesito modo shell.

Ejecuta comandos desde argumentos, encadena acciones con and y usa rutas con punto para comandos agrupados.

Conoce Vulcano

Un framework que se mantiene cerca de tu código.

Autocompletado

Los nombres de comandos y argumentos se infieren desde las funciones registradas.

Ayuda en línea

Docstrings y descripciones se convierten en pantallas de ayuda legibles.

Opciones de argumento

arg_opts sugiere valores predefinidos y cita valores con espacios.

Encadenado

Ejecuta varias acciones con and en modo REPL o modo argumentos.

Grupos

Organiza comandos en subcontextos anidados con ejecución por rutas de puntos.

Inspección de código

Añade ? a un comando para ver su fuente resaltada.

Inicio rápido

Un archivo es suficiente para empezar.

pip install vulcano
from vulcano.app import VulcanoApp
from vulcano.themes import MonokaiTheme

app = VulcanoApp()

@app.command("hi", "Greet someone by name")
def salute(name, title="Mr."):
    return "Hi! {} {}.".format(title, name)

@app.command("greet", "Greet someone by role", arg_opts={"role": ["admin", "user", "guest"]})
def greet_by_role(name, role="user"):
    return "Hello, {} {}!".format(role.capitalize(), name)

if __name__ == "__main__":
    app.run(theme=MonokaiTheme)
python your_app.py hi name=David
python your_app.py greet name=David role=admin

Especificaciones técnicas

Superficie pequeña, valores por defecto útiles.

ÁreaCapacidad
EntornoPython 3.10, 3.11, 3.12 y 3.13
InterfazREPL interactivo y ejecución por argumentos
ParsingInspección de argumentos de funciones y parseo de comandos
UXAutocompletado, historial, sugerencias, ayuda y resaltado de sintaxis
OrganizaciónGrupos anidados y ejecución con rutas de puntos
EmpaquetadoPaquete PyPI con punto de entrada vulcano

Vulcano está en desarrollo activo. Para producción, fija una versión mientras la API avanza hacia una versión 1.x estable.