File: prog

package info (click to toggle)
python-argcomplete 3.6.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 704 kB
  • sloc: python: 2,814; makefile: 50; sh: 7
file content (55 lines) | stat: -rwxr-xr-x 1,765 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/env python3
# PYTHON_ARGCOMPLETE_OK
"""Test script used by test.TestBash."""

import argparse
import os
import sys

import argcomplete


def complete_cont(*args, **kwargs):
    return ["foo=", "bar/", "baz:"]


def check_environ(*args, **kwargs):
    assert "COMP_TYPE" in os.environ, "wrapper should have set COMP_TYPE"
    assert len(sys.argv) == 1, "should never be completed with arguments"
    return ["ok"]


def print_output(*args, **kwargs):
    print("PYTHON_ARGCOMPLETE_STDOUT")
    print("PYTHON_ARGCOMPLETE_STDERR", file=sys.stderr)
    return ["foo"]


def get_comp_point(*args, **kwargs):
    return [os.environ["COMP_POINT"]]


parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
subparsers.add_parser("basic", help="basic help\nnext line of help").add_argument("arg", choices=["foo", "bar", "baz"])
subparsers.add_parser("space").add_argument("arg", choices=["foo bar", "baz"])
subparsers.add_parser("cont").add_argument("arg").completer = complete_cont
subparsers.add_parser("spec").add_argument("arg", choices=["d$e$f", "d$e$g", "x!x", r"y\y"])
subparsers.add_parser("quote").add_argument("arg", choices=["1'1", '2"2'])
subparsers.add_parser("break", help="break help").add_argument("arg", choices=["a:b:c", "a:b:d"])
subparsers.add_parser("env").add_argument("arg").completer = check_environ
subparsers.add_parser("debug").add_argument("arg").completer = print_output
subparsers.add_parser("point", add_help=False).add_argument("arg", nargs="*").completer = get_comp_point


if "POINT" in os.environ:
    argcomplete.autocomplete(parser, validator=lambda x, y: True)
else:
    argcomplete.autocomplete(parser)

args = parser.parse_args()

if "POINT" in os.environ:
    print(args.arg[-1])
else:
    print(args.arg)