magiᴄʟɪ✨
Automatically turn functions of file into command line interface.
Install
pip install magicli
Get started
Hello world example.
Docstrings can be added to variables by using typing.Annotated.
A short option can be added as a third argument to Annotated.
By default the first function is called automatically. All following functions in the file are treated as commands. Functions starting with an underscore are ignored.
from typing import Annotated
def hello(
name: Annotated[str, 'Person to greet.'],
amount: Annotated[int, 'How often to greet.', 'a']=1,
):
for _ in range(amount):
print(f"Hello {name}!")
if __name__ == '__main__':
import magicli
$ hello world 3
Hello world!
Hello world!
Hello world!
Define name of CLI in setup.py
In order to define the name of the CLI, it needs to be defined in the setup.py file. The following code sets up a sample CLI with the following folder structure.
hello/
└── setup.py
└── hello.py
setup.py
from setuptools import setup
setup(
name='hello',
version='0.1.0',
install_requires=[
'magicli'
],
entry_points={
'console_scripts':[
'hello=hello:main'
]
}
)
hello.py
from magicli import magicli
def main():
magicli()
def hello(name='World', amount=1):
for _ in range(int(amount)):
print(f'Hello {name}!')
The script can then be called in the following way.
hello Name --amount 3
This outputs
Hello Name!
Hello Name!
Hello Name!
Help message
By default, a help message will be created based on the available functions.
For the example above, calling hello --help will display this help message.
Usage:
hello --name --amount