Skip to main content

Python static command parser. Add commands completion to argparse.

Project description

Statikomand

Python static command parser, with command completion.

Subclasses argparse, but without connection to CLI. Only string to python objects.

Parses a raw string list into a structured object, and proposes completion for options, flags, ...

Getting Started

pip install statikomand

Basic Usage

from statikomand.komand_parser import KomandParser
# Example Usage
parser = KomandParser(prog="my-parser") # subclass of argparse.ArgumentParser

def pos1_completer(word, rank):
    return [f"pos1 completer : {word}-{rank}"]

def pos2_completer(word, rank):
    return [f"pos2 completer : {word}-{rank}"]

def opt1_completer(word, rank):
    return [f"opt1 completer : {word}-{rank}"]

def opt2_completer(word, rank):
    return [f"opt2 completer : {word}-{rank}"]

parser.add_argument("pos1", nargs=1, completer=pos1_completer) # give completer method, which is called when the parser is asked to complete the line

parser.add_argument("pos2", nargs=1, completer=pos2_completer)
parser.add_argument("--opt1", "-o1", nargs=2, completer=opt1_completer)
parser.add_argument("--opt2", "-o2", nargs=2, completer=opt2_completer)

arg_strings = shlex.split("argpos1 argpo")
print(parser.complete(arg_strings))  # ['pos2 completer : argpo-1']

arg_strings = shlex.split("argpos")
print(parser.complete(arg_strings))  # ['pos1 completer : argpos-1']

arg_strings = shlex.split("--")
print(
    parser.complete(arg_strings)
)  # ['--help', '--opt1', '--opt2'] - help flag is by default on all argparse.ArgumentParser

arg_strings = shlex.split("--op")
print(
    parser.complete(arg_strings)
)  # ['--opt1', '--opt2'] - help flag is by default on all argparse.ArgumentParser

arg_strings = shlex.split("argpos1 --opt1 argopt1 arg")
print(
    parser.complete(arg_strings)
)  # ['opt1 completer : arg-2'] - second argument of opt1 needs to be completed

arg_strings = shlex.split("argpos1 --opt1 argopt1 argopt2 arg")
print(
    parser.complete(arg_strings)
)  # ['pos2 completer : arg-1'] - completer of pos2

arg_strings = shlex.split("argpos1 --opt1 argopt1 argopt2 --o")
print(
    parser.complete(arg_strings)
)  # ['--opt2'] - completes flag name among the ones not already seen before

Completion detail

When calling add_argument method of KomandParser, you can add a completer method, which is a function that take a string and an int as argument, and returns a list of strings (proposition of completions).

The 'complete' method of the parser tries to complete the flag names, and calls the complete method of positional and / or flag arguments; according to the position of the last caracter.

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

statikomand-0.1.0.tar.gz (6.6 kB view details)

Uploaded Source

File details

Details for the file statikomand-0.1.0.tar.gz.

File metadata

  • Download URL: statikomand-0.1.0.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for statikomand-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7dc362f4b65e49a3ff846a44ab99428c3a93025f45182affae252d0e50335bf1
MD5 6ffbf3aea094007e72f250c2fee4595a
BLAKE2b-256 c5695235b748796919caf085066ec72bd714d8b5f1ba2ba8ee1fadacb583c7ff

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