Skip to main content

CodeQL Python Testing

shell-complete-py

python package to generate shell-completion for your CLI

Installation

PyPI - Version

pip3 install shell-complete

Quick-Start

Installation

pip3 install shell-complete

Testing if everything works

To test if the package was installed successfully

$ eval "$(shell-complete shell_complete.__main__:parser)"  # via CLI
$ eval "$(shell-complete --completion)"  # via ShellCompleteAction
$ shell-complete <tab><tab>
--completion  --help        --root        --version
$ shell-complete --root <tab><tab>
dir/ .git/ .venv/  # example. this part will look different on your machine

or pipe it into a file and source that

$ shell-complete --completion > ./shell-complete.completion.bash
$ source ./shell-complete.completion.bash

Usage

Either import and use the generate(parser: ArgumentParser) function directly or add the ShellCompleteAction to your argparse.

import pathlib
from argparse import ArgumentParser
from shell_complete import ShellCompleteAction, types, associate


parser = ArgumentParser(prog="myprog")
...
# creates the --completion argument that's similar to --help or --version
# --completion print : prints the script for the user to handle it himself or use with eval
# --completion install : creates script in ~/.bash_completion.d/ and `source <script>` in ~/.bashrc
# --completion uninstall : removes script in ~/.bash_completion.d/ and `source <script>` in ~/.bashrc
parser.add_argument('--completion', action=ShellCompleteAction,
                    help="Generate a bash-completion-script")

# add custom type converter that can still auto-complete
@associate(types.directory)
def dirtype(value: str) -> pathlib.Path:
    return pathlib.Path(value)

# smart autocompletion
parser.add_argument('--dest', type=dirtype)  # the custom type
parser.add_argument('--source', type=types.file)  # or the builtins
parser.add_argument('--bind', type=types.ip_address)
parser.add_argument('--database', type=types.known_hosts)

# subparsers are also supported
subparsers = parser.add_subparsers()
subcommand = subparsers.add_parser("sub")
# Completion is only suggested after typing `myprog sub`
subcommand.add_argument('--hidden', types=types.ip_address)

You can also execute the module itself

python3 -m shell_complete [--root ROOT] parser

Or run the console-script

shell-complete [--root ROOT] parser

Support completion types

Basic completion types can be imported via

from shell_complete import types
from shell_complete.argparse import types  # both are the same
type info
types.path any type of path (file and directories)
types.file completion for files
types.directory completion for directories
types.mac_address mac addresses
types.ip_address ip addresses
types.ipv4_address ipv4 addresses
types.ipv6_address ipv6 addresses
types.network_interface names of network interfaces
types.inet_services names of inet services
types.uid available user id's
types.gid available group id's
types.service available systemctl services
types.user_group user:group pair
types.user_at_host user@host pair
types.known_hosts name of known hosts

Metadata

Release files for shell-complete 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for shell-complete 0.4.2
File Size Uploaded
shell_complete-0.4.2.tar.gz 13.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for shell-complete 0.4.2
File Interpreter ABI Platform
shell_complete-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 27.7 kB

Release files / shell_complete-0.4.2.tar.gz

Download URL shell_complete-0.4.2.tar.gz
Size 13.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c1ac5d4e9f96fa1c78a2694493c656e2e13e0fae59c77617dd5d23d35a700a51
BLAKE2b-256 checksum
How to use checksums
4404cc34cc7a5af887264f9dfcca1286d3fb201e887ff9d5d9b6e8a04602b3af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.10.12

Release files / shell_complete-0.4.2-py3-none-any.whl

Download URL shell_complete-0.4.2-py3-none-any.whl
Size 14.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0c4fb13c524ac5327ad495b29d4f08ef93164906fed0741175ed4bbb92135e5e
BLAKE2b-256 checksum
How to use checksums
b81813edec7995b4ededa087551e9b916a39108567bc1ac3952fcbb0081b559a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page