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.3.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

Details for the file chancleta-1.0.3.tar.gz.

File metadata

  • Download URL: chancleta-1.0.3.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.0 CPython/3.12.3 Linux/6.8.0-51-generic

File hashes

Hashes for chancleta-1.0.3.tar.gz
Algorithm Hash digest
SHA256 c0be4935e5273a22d8b250b636025bde59f8cea91ffbd48cbeb4c437bfe1ab53
MD5 36d8cd9c1e74f8e5398a36f9d30d0e69
BLAKE2b-256 a413f84665afc2967d6adab64e1d39c46a20e2879ba34e050eed25d0fdfa73ed

See more details on using hashes here.

File details

Details for the file chancleta-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: chancleta-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 5.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.0 CPython/3.12.3 Linux/6.8.0-51-generic

File hashes

Hashes for chancleta-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9658117ee227160d1a52cf137ddff3d77ff960aa8a4336a7e476345c2c8e1d49
MD5 8b2cfd31b30a07e8b9e3b952a28adec1
BLAKE2b-256 a0a60092d129f4cbf6f32cce6d0ddf54d448f9d0de6417379d5d7820eb181125

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page