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
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
224a46be7efd13a2caafabc3db841ede21927f81fa20099bd37a362a17dd3d40
|
|
| MD5 |
eeb0a77e72b1bb785f87222f048891a2
|
|
| BLAKE2b-256 |
650c94256e4c85966e12b18d7e8134a332ab884d23d978606ea04f44d21abf90
|