Python library for creating Command Line Interfaces via configuration files. Supports .toml, .json, .yaml and .xml (for the brave ones)
Project description
chancleta
Python library for creating command line interfaces in a composable way via configuration files.
Supports .toml, .json, .yaml. and (if you'd like to be more adventurous) .xml.
How to use
- Describe configurations in a chancleta.toml file.
(File format could vary between .toml, .json, .yaml and .xml as long as the name remains the same.)
Add mandatory 'meta' data with general information about your program
[meta]
src = "testoo.util.commands"
prog = "foo"
version = "0.1.0"
description = "Test my new flip flops"
usage = "Take that jive Jack, put it in your pocket 'til I get back"
'src' points to the directory where the corresponding python functions are to be found and called with arguments read from the terminal
- Configure subcommands as separate tables (objects if you're using JSON)
[yes]
description = "Simple yes function"
argument = { name = "text", help = "Some dummy text" }
option = { name = "should-repeat", short = "r", flag = "True", help = "should repeat text 5 times" }
help = "yes func"
function = "yes"
function shows the name of the python function to be called
- If you have multiple arguments/options - put them as inline tables inside arrays
[echo]
arguments = [
{ name = "text", help = "Some dummy text" },
{ name = "mark", type = "str", help = "Final mark" },
]
options = [
{ name = "other-text", short = "o", default = "Panda", dest = "other", help = "Some other dummy text" },
{ name = "delimiter", default = ", ", help = "use DELIM instead of TAB for field delimiter" },
{ name = "num", default = 42, type = "int", help = "some random number to make things pretty" }
]
function = "echo"
chancleta supports advanced features such as choices, nargs, dest (for options), type validation
[maybe]
argument = { name = "number", type = "int", choices = [3, 5, 8], help = "Some meaningless number" }
option = { name = "other-number", type = "int", nargs = "*", choices = [1, 2], dest = "other", help = "Other marvelous number" }
function = "maybe"
- For boolean flags you could use
options = [
{ name = "should-log", flag = "False", default = true },
{ name = "should-repeat", flag = "True"}
]
which is equivalent to
action="store_false"...
action="store_true"...
- If no short name is given for an option, the first letter of the full name is used
- Inside your program import the Chancleta object, pass a path to the directory where your config file lives and call the parse method
from chancleta import Chancleta
def main():
Chancleta("./testoo/config").parse()
If no path is given chancleta will try to find the config file inside the root directory of your project
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
File details
Details for the file chancleta-1.0.2.tar.gz
.
File metadata
- Download URL: chancleta-1.0.2.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.8.0-48-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97a9fc2be8fc3beca0582ca8cd69e9bdfa5a7dbf57aafc14cb73fcdcf42b2798 |
|
MD5 | 9443bd8b5b90572b33f497e0d478b98a |
|
BLAKE2b-256 | 9d2e3201c2fcb839ff7696a10051282229f04cf1c79fd2e24b5f1c0323fb444d |
File details
Details for the file chancleta-1.0.2-py3-none-any.whl
.
File metadata
- Download URL: chancleta-1.0.2-py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.8.0-48-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ed8b70177f56b8b85103682cd53ea2d432556a7319ac2a859339374bc181950a |
|
MD5 | 6c3786980ba6d0cb3602a0ef20f688a7 |
|
BLAKE2b-256 | a02224a2b433674d30bb7bbd78ca1df476af6f7ad79cf5d36aa3a84e07b28892 |