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

Uploaded Source

File details

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

File metadata

  • Download URL: statikomand-0.1.1.tar.gz
  • Upload date:
  • Size: 6.8 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.1.tar.gz
Algorithm Hash digest
SHA256 224a46be7efd13a2caafabc3db841ede21927f81fa20099bd37a362a17dd3d40
MD5 eeb0a77e72b1bb785f87222f048891a2
BLAKE2b-256 650c94256e4c85966e12b18d7e8134a332ab884d23d978606ea04f44d21abf90

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