comparison env/lib/python3.9/site-packages/argcomplete-1.12.2.dist-info/METADATA @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 Metadata-Version: 2.1
2 Name: argcomplete
3 Version: 1.12.2
4 Summary: Bash tab completion for argparse
5 Home-page: https://github.com/kislyuk/argcomplete
6 Author: Andrey Kislyuk
7 Author-email: kislyuk@gmail.com
8 License: Apache Software License
9 Project-URL: Documentation, https://kislyuk.github.io/argcomplete
10 Project-URL: Source Code, https://github.com/kislyuk/argcomplete
11 Project-URL: Issue Tracker, https://github.com/kislyuk/argcomplete/issues
12 Project-URL: Change Log, https://github.com/kislyuk/argcomplete/blob/master/Changes.rst
13 Platform: MacOS X
14 Platform: Posix
15 Classifier: Environment :: Console
16 Classifier: Intended Audience :: Developers
17 Classifier: License :: OSI Approved :: Apache Software License
18 Classifier: Operating System :: MacOS :: MacOS X
19 Classifier: Operating System :: POSIX
20 Classifier: Programming Language :: Python
21 Classifier: Programming Language :: Python :: 2
22 Classifier: Programming Language :: Python :: 2.7
23 Classifier: Programming Language :: Python :: 3
24 Classifier: Programming Language :: Python :: 3.5
25 Classifier: Programming Language :: Python :: 3.6
26 Classifier: Programming Language :: Python :: 3.7
27 Classifier: Programming Language :: Python :: 3.8
28 Classifier: Programming Language :: Python :: Implementation :: CPython
29 Classifier: Programming Language :: Python :: Implementation :: PyPy
30 Classifier: Development Status :: 5 - Production/Stable
31 Classifier: Topic :: Software Development
32 Classifier: Topic :: Software Development :: Libraries :: Python Modules
33 Classifier: Topic :: System :: Shells
34 Classifier: Topic :: Terminals
35 Requires-Dist: importlib-metadata (<4,>=0.23) ; python_version == "2.7"
36 Requires-Dist: importlib-metadata (<4,>=0.23) ; python_version == "3.5"
37 Requires-Dist: importlib-metadata (<4,>=0.23) ; python_version == "3.6"
38 Requires-Dist: importlib-metadata (<4,>=0.23) ; python_version == "3.7"
39 Provides-Extra: test
40 Requires-Dist: coverage ; extra == 'test'
41 Requires-Dist: flake8 ; extra == 'test'
42 Requires-Dist: pexpect ; extra == 'test'
43 Requires-Dist: wheel ; extra == 'test'
44
45 argcomplete - Bash tab completion for argparse
46 ==============================================
47 *Tab complete all the things!*
48
49 Argcomplete provides easy, extensible command line tab completion of arguments for your Python script.
50
51 It makes two assumptions:
52
53 * You're using bash as your shell (limited support for zsh, fish, and tcsh is available)
54 * You're using `argparse <http://docs.python.org/3/library/argparse.html>`_ to manage your command line arguments/options
55
56 Argcomplete is particularly useful if your program has lots of options or subparsers, and if your program can
57 dynamically suggest completions for your argument/option values (for example, if the user is browsing resources over
58 the network).
59
60 Installation
61 ------------
62 ::
63
64 pip install argcomplete
65 activate-global-python-argcomplete
66
67 See `Activating global completion`_ below for details about the second step (or if it reports an error).
68
69 Refresh your bash environment (start a new shell or ``source /etc/profile``).
70
71 Synopsis
72 --------
73 Python code (e.g. ``my-awesome-script``):
74
75 .. code-block:: python
76
77 #!/usr/bin/env python
78 # PYTHON_ARGCOMPLETE_OK
79 import argcomplete, argparse
80 parser = argparse.ArgumentParser()
81 ...
82 argcomplete.autocomplete(parser)
83 args = parser.parse_args()
84 ...
85
86 Shellcode (only necessary if global completion is not activated - see `Global completion`_ below), to be put in e.g. ``.bashrc``::
87
88 eval "$(register-python-argcomplete my-awesome-script)"
89
90 argcomplete.autocomplete(*parser*)
91 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
92 This method is the entry point to the module. It must be called **after** ArgumentParser construction is complete, but
93 **before** the ``ArgumentParser.parse_args()`` method is called. The method looks for an environment variable that the
94 completion hook shellcode sets, and if it's there, collects completions, prints them to the output stream (fd 8 by
95 default), and exits. Otherwise, it returns to the caller immediately.
96
97 .. admonition:: Side effects
98
99 Argcomplete gets completions by running your program. It intercepts the execution flow at the moment
100 ``argcomplete.autocomplete()`` is called. After sending completions, it exits using ``exit_method`` (``os._exit``
101 by default). This means if your program has any side effects that happen before ``argcomplete`` is called, those
102 side effects will happen every time the user presses ``<TAB>`` (although anything your program prints to stdout or
103 stderr will be suppressed). For this reason it's best to construct the argument parser and call
104 ``argcomplete.autocomplete()`` as early as possible in your execution flow.
105
106 .. admonition:: Performance
107
108 If the program takes a long time to get to the point where ``argcomplete.autocomplete()`` is called, the tab completion
109 process will feel sluggish, and the user may lose confidence in it. So it's also important to minimize the startup time
110 of the program up to that point (for example, by deferring initialization or importing of large modules until after
111 parsing options).
112
113 Specifying completers
114 ---------------------
115 You can specify custom completion functions for your options and arguments. Two styles are supported: callable and
116 readline-style. Callable completers are simpler. They are called with the following keyword arguments:
117
118 * ``prefix``: The prefix text of the last word before the cursor on the command line.
119 For dynamic completers, this can be used to reduce the work required to generate possible completions.
120 * ``action``: The ``argparse.Action`` instance that this completer was called for.
121 * ``parser``: The ``argparse.ArgumentParser`` instance that the action was taken by.
122 * ``parsed_args``: The result of argument parsing so far (the ``argparse.Namespace`` args object normally returned by
123 ``ArgumentParser.parse_args()``).
124
125 Completers should return their completions as a list of strings. An example completer for names of environment
126 variables might look like this:
127
128 .. code-block:: python
129
130 def EnvironCompleter(**kwargs):
131 return os.environ
132
133 To specify a completer for an argument or option, set the ``completer`` attribute of its associated action. An easy
134 way to do this at definition time is:
135
136 .. code-block:: python
137
138 from argcomplete.completers import EnvironCompleter
139
140 parser = argparse.ArgumentParser()
141 parser.add_argument("--env-var1").completer = EnvironCompleter
142 parser.add_argument("--env-var2").completer = EnvironCompleter
143 argcomplete.autocomplete(parser)
144
145 If you specify the ``choices`` keyword for an argparse option or argument (and don't specify a completer), it will be
146 used for completions.
147
148 A completer that is initialized with a set of all possible choices of values for its action might look like this:
149
150 .. code-block:: python
151
152 class ChoicesCompleter(object):
153 def __init__(self, choices):
154 self.choices = choices
155
156 def __call__(self, **kwargs):
157 return self.choices
158
159 The following two ways to specify a static set of choices are equivalent for completion purposes:
160
161 .. code-block:: python
162
163 from argcomplete.completers import ChoicesCompleter
164
165 parser.add_argument("--protocol", choices=('http', 'https', 'ssh', 'rsync', 'wss'))
166 parser.add_argument("--proto").completer=ChoicesCompleter(('http', 'https', 'ssh', 'rsync', 'wss'))
167
168 Note that if you use the ``choices=<completions>`` option, argparse will show
169 all these choices in the ``--help`` output by default. To prevent this, set
170 ``metavar`` (like ``parser.add_argument("--protocol", metavar="PROTOCOL",
171 choices=('http', 'https', 'ssh', 'rsync', 'wss'))``).
172
173 The following `script <https://raw.github.com/kislyuk/argcomplete/master/docs/examples/describe_github_user.py>`_ uses
174 ``parsed_args`` and `Requests <http://python-requests.org/>`_ to query GitHub for publicly known members of an
175 organization and complete their names, then prints the member description:
176
177 .. code-block:: python
178
179 #!/usr/bin/env python
180 # PYTHON_ARGCOMPLETE_OK
181 import argcomplete, argparse, requests, pprint
182
183 def github_org_members(prefix, parsed_args, **kwargs):
184 resource = "https://api.github.com/orgs/{org}/members".format(org=parsed_args.organization)
185 return (member['login'] for member in requests.get(resource).json() if member['login'].startswith(prefix))
186
187 parser = argparse.ArgumentParser()
188 parser.add_argument("--organization", help="GitHub organization")
189 parser.add_argument("--member", help="GitHub member").completer = github_org_members
190
191 argcomplete.autocomplete(parser)
192 args = parser.parse_args()
193
194 pprint.pprint(requests.get("https://api.github.com/users/{m}".format(m=args.member)).json())
195
196 `Try it <https://raw.github.com/kislyuk/argcomplete/master/docs/examples/describe_github_user.py>`_ like this::
197
198 ./describe_github_user.py --organization heroku --member <TAB>
199
200 If you have a useful completer to add to the `completer library
201 <https://github.com/kislyuk/argcomplete/blob/master/argcomplete/completers.py>`_, send a pull request!
202
203 Readline-style completers
204 ~~~~~~~~~~~~~~~~~~~~~~~~~
205 The readline_ module defines a completer protocol in rlcompleter_. Readline-style completers are also supported by
206 argcomplete, so you can use the same completer object both in an interactive readline-powered shell and on the bash
207 command line. For example, you can use the readline-style completer provided by IPython_ to get introspective
208 completions like you would get in the IPython shell:
209
210 .. _readline: http://docs.python.org/3/library/readline.html
211 .. _rlcompleter: http://docs.python.org/3/library/rlcompleter.html#completer-objects
212 .. _IPython: http://ipython.org/
213
214 .. code-block:: python
215
216 import IPython
217 parser.add_argument("--python-name").completer = IPython.core.completer.Completer()
218
219 ``argcomplete.CompletionFinder.rl_complete`` can also be used to plug in an argparse parser as a readline completer.
220
221 Printing warnings in completers
222 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
223 Normal stdout/stderr output is suspended when argcomplete runs. Sometimes, though, when the user presses ``<TAB>``, it's
224 appropriate to print information about why completions generation failed. To do this, use ``warn``:
225
226 .. code-block:: python
227
228 from argcomplete import warn
229
230 def AwesomeWebServiceCompleter(prefix, **kwargs):
231 if login_failed:
232 warn("Please log in to Awesome Web Service to use autocompletion")
233 return completions
234
235 Using a custom completion validator
236 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
237 By default, argcomplete validates your completions by checking if they start with the prefix given to the completer. You
238 can override this validation check by supplying the ``validator`` keyword to ``argcomplete.autocomplete()``:
239
240 .. code-block:: python
241
242 def my_validator(current_input, keyword_to_check_against):
243 # Pass through ALL options even if they don't all start with 'current_input'
244 return True
245
246 argcomplete.autocomplete(parser, validator=my_validator)
247
248 Global completion
249 -----------------
250 In global completion mode, you don't have to register each argcomplete-capable executable separately. Instead, bash
251 will look for the string **PYTHON_ARGCOMPLETE_OK** in the first 1024 bytes of any executable that it's running
252 completion for, and if it's found, follow the rest of the argcomplete protocol as described above.
253
254 Additionally, completion is activated for scripts run as ``python <script>`` and ``python -m <module>``.
255 This also works for alternate Python versions (e.g. ``python3`` and ``pypy``), as long as that version of Python has
256 argcomplete installed.
257
258 .. admonition:: Bash version compatibility
259
260 Global completion requires bash support for ``complete -D``, which was introduced in bash 4.2. On OS X or older Linux
261 systems, you will need to update bash to use this feature. Check the version of the running copy of bash with
262 ``echo $BASH_VERSION``. On OS X, install bash via `Homebrew <http://brew.sh/>`_ (``brew install bash``), add
263 ``/usr/local/bin/bash`` to ``/etc/shells``, and run ``chsh`` to change your shell.
264
265 Global completion is not currently compatible with zsh.
266
267 .. note:: If you use setuptools/distribute ``scripts`` or ``entry_points`` directives to package your module,
268 argcomplete will follow the wrapper scripts to their destination and look for ``PYTHON_ARGCOMPLETE_OK`` in the
269 destination code.
270
271 If you choose not to use global completion, or ship a bash completion module that depends on argcomplete, you must
272 register your script explicitly using ``eval "$(register-python-argcomplete my-awesome-script)"``. Standard bash
273 completion registration roules apply: namely, the script name is passed directly to ``complete``, meaning it is only tab
274 completed when invoked exactly as it was registered. In the above example, ``my-awesome-script`` must be on the path,
275 and the user must be attempting to complete it by that name. The above line alone would **not** allow you to complete
276 ``./my-awesome-script``, or ``/path/to/my-awesome-script``.
277
278
279 Activating global completion
280 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
281 The script ``activate-global-python-argcomplete`` will try to install the file
282 ``bash_completion.d/python-argcomplete`` (`see on GitHub`_) into an appropriate location on your system
283 (``/etc/bash_completion.d/`` or ``~/.bash_completion.d/``). If it
284 fails, but you know the correct location of your bash completion scripts directory, you can specify it with ``--dest``::
285
286 activate-global-python-argcomplete --dest=/path/to/bash_completion.d
287
288 Otherwise, you can redirect its shellcode output into a file::
289
290 activate-global-python-argcomplete --dest=- > file
291
292 The file's contents should then be sourced in e.g. ``~/.bashrc``.
293
294 .. _`see on GitHub`: https://github.com/kislyuk/argcomplete/blob/master/argcomplete/bash_completion.d/python-argcomplete
295
296 Zsh Support
297 ------------
298 To activate completions for zsh you need to have ``bashcompinit`` enabled in zsh::
299
300 autoload -U bashcompinit
301 bashcompinit
302
303 Afterwards you can enable completion for your scripts with ``register-python-argcomplete``::
304
305 eval "$(register-python-argcomplete my-awesome-script)"
306
307 Tcsh Support
308 ------------
309 To activate completions for tcsh use::
310
311 eval `register-python-argcomplete --shell tcsh my-awesome-script`
312
313 The ``python-argcomplete-tcsh`` script provides completions for tcsh.
314 The following is an example of the tcsh completion syntax for
315 ``my-awesome-script`` emitted by ``register-python-argcomplete``::
316
317 complete my-awesome-script 'p@*@`python-argcomplete-tcsh my-awesome-script`@'
318
319 Fish Support
320 ------------
321 To activate completions for fish use::
322
323 register-python-argcomplete --shell fish my-awesome-script | source
324
325 or create new completion file, e.g::
326
327 register-python-argcomplete --shell fish ~/.config/fish/completions/my-awesome-script.fish
328
329 Completion Description For Fish
330 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
331 By default help string is added as completion description.
332
333 .. image:: docs/fish_help_string.png
334
335 You can disable this feature by removing ``_ARGCOMPLETE_DFS`` variable, e.g::
336
337 register-python-argcomplete --shell fish my-awesome-script | grep -v _ARGCOMPLETE_DFS | .
338
339 Git Bash Support
340 ----------------
341 Due to limitations of file descriptor inheritance on Windows,
342 Git Bash not supported out of the box. You can opt in to using
343 temporary files instead of file descriptors for for IPC
344 by setting the environment variable ``ARGCOMPLETE_USE_TEMPFILES``,
345 e.g. by adding ``export ARGCOMPLETE_USE_TEMPFILES=1`` to ``~/.bashrc``.
346
347 For full support, consider using Bash with the
348 Windows Subsystem for Linux (WSL).
349
350 External argcomplete script
351 ---------------------------
352 To register an argcomplete script for an arbitrary name, the ``--external-argcomplete-script`` argument of the ``register-python-argcomplete`` script can be used::
353
354 eval "$(register-python-argcomplete --external-argcomplete-script /path/to/script arbitrary-name)"
355
356 This allows, for example, to use the auto completion functionality of argcomplete for an application not written in Python.
357 The command line interface of this program must be additionally implemented in a Python script with argparse and argcomplete and whenever the application is called the registered external argcomplete script is used for auto completion.
358
359 This option can also be used in combination with the other supported shells.
360
361 Python Support
362 --------------
363 Argcomplete requires Python 2.7 or 3.5+.
364
365 Common Problems
366 ---------------
367 If global completion is not completing your script, bash may have registered a
368 default completion function::
369
370 $ complete | grep my-awesome-script
371 complete -F _minimal my-awesome-script
372
373 You can fix this by restarting your shell, or by running
374 ``complete -r my-awesome-script``.
375
376 Debugging
377 ---------
378 Set the ``_ARC_DEBUG`` variable in your shell to enable verbose debug output every time argcomplete runs. This will
379 disrupt the command line composition state of your terminal, but make it possible to see the internal state of the
380 completer if it encounters problems.
381
382 Acknowledgments
383 ---------------
384 Inspired and informed by the optcomplete_ module by Martin Blais.
385
386 .. _optcomplete: http://pypi.python.org/pypi/optcomplete
387
388 Links
389 -----
390 * `Project home page (GitHub) <https://github.com/kislyuk/argcomplete>`_
391 * `Documentation <https://kislyuk.github.io/argcomplete/>`_
392 * `Package distribution (PyPI) <https://pypi.python.org/pypi/argcomplete>`_
393 * `Change log <https://github.com/kislyuk/argcomplete/blob/master/Changes.rst>`_
394 * `xontrib-argcomplete <https://github.com/anki-code/xontrib-argcomplete>`_ - support argcomplete in `xonsh <https://github.com/xonsh/xonsh>`_ shell
395
396 Bugs
397 ~~~~
398 Please report bugs, issues, feature requests, etc. on `GitHub <https://github.com/kislyuk/argcomplete/issues>`_.
399
400 License
401 -------
402 Licensed under the terms of the `Apache License, Version 2.0 <http://www.apache.org/licenses/LICENSE-2.0>`_.
403
404 .. image:: https://github.com/kislyuk/argcomplete/workflows/Python%20package/badge.svg
405 :target: https://github.com/kislyuk/argcomplete/actions
406 .. image:: https://codecov.io/github/kislyuk/argcomplete/coverage.svg?branch=master
407 :target: https://codecov.io/github/kislyuk/argcomplete?branch=master
408 .. image:: https://img.shields.io/pypi/v/argcomplete.svg
409 :target: https://pypi.python.org/pypi/argcomplete
410 .. image:: https://img.shields.io/pypi/l/argcomplete.svg
411 :target: https://pypi.python.org/pypi/argcomplete
412
413