Automatically generates a CLI from functions.
Project description
magiᴄʟɪ✨
Automatically generates a CLI from functions of a module.
Install
pip install magicli
Get started
Simple usage example.
# module.py
def hello(name, times=1):
for _ in range(times):
print("hello", name)
Then run this in your terminal to initialize the CLI:
magicli
You are now able to install your package:
pip install .
And then call it:
$ hello world --times 2
hello world
hello world
Define name of CLI in pyproject.toml
The terminal command magicli adds the following to your pyproject.toml.
[project.scripts]
hello = "magicli:magicli"
Important: Make sure the name of your CLI, the module name and the name of the function to be called are the same!
.
├── hello.py
└── pyproject.toml
You can now pip install your code and call it like this:
$ hello world --times 2
hello world
hello world
Using subcommands
# module.py
def hello(): ...
def world(times=1):
for _ in range(times):
print("hello world")
$ hello world --times 2
hello world
hello world
Help message
By default, the docstring of the function will be displayed.
If no docstring is specified, an error message will be printed.
Development
Run pytest with coverage report:
python3 -m pytest -s --cov=magicli --cov-report=term-missing
Project details
Release history Release notifications | RSS feed
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
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 magicli-2.0.2.tar.gz.
File metadata
- Download URL: magicli-2.0.2.tar.gz
- Upload date:
- Size: 20.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03b90afdebdfca5006fe540c7ce3f35fc973ca3b2578d298eda0eea79f68cbaf
|
|
| MD5 |
ab1165afe20d46ee380c20d1de0d36a7
|
|
| BLAKE2b-256 |
466f4c105bad2be3610d43d1588aaa6b86a7833445e4a6e4b53b0cd3f3e90ee3
|
File details
Details for the file magicli-2.0.2-py3-none-any.whl.
File metadata
- Download URL: magicli-2.0.2-py3-none-any.whl
- Upload date:
- Size: 17.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0bbd684aedf52a0876df90d18b901ccf454e7ce900c1f9bfc62d2ad552996913
|
|
| MD5 |
dd82c218eaf80bc01776e1d5b6ce7416
|
|
| BLAKE2b-256 |
ad8e813cac0229c5c1e5c5204462795c2c7a987099295bac23f96c41ccb14b96
|