Skip to main content

Python library for creating Command Line Interfaces via configuration files. Supports .toml, .json, .yaml and .xml (for the brave ones)

Project description

Chancleta Samurai

chancleta

Python 3.x PyPI Downloads


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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chancleta-1.0.2.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

chancleta-1.0.2-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

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

Hashes for chancleta-1.0.2.tar.gz
Algorithm Hash digest
SHA256 97a9fc2be8fc3beca0582ca8cd69e9bdfa5a7dbf57aafc14cb73fcdcf42b2798
MD5 9443bd8b5b90572b33f497e0d478b98a
BLAKE2b-256 9d2e3201c2fcb839ff7696a10051282229f04cf1c79fd2e24b5f1c0323fb444d

See more details on using hashes here.

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

Hashes for chancleta-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ed8b70177f56b8b85103682cd53ea2d432556a7319ac2a859339374bc181950a
MD5 6c3786980ba6d0cb3602a0ef20f688a7
BLAKE2b-256 a02224a2b433674d30bb7bbd78ca1df476af6f7ad79cf5d36aa3a84e07b28892

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