15
0

- Update to the version 3.5.1:

- Restore compatibility with argparse in Python 3.12.7+
  - Use project.scripts instead of setuptools scripts
  - Test infrastructure improvements
- Remove upstreamed patches:
  - argparse-3_12_7.patch

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-argcomplete?expand=0&rev=80
This commit is contained in:
2024-10-29 17:08:44 +00:00
committed by Git OBS Bridge
commit b898a04ace
11 changed files with 880 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.osc

BIN
argcomplete-3.3.0.tar.gz LFS Normal file

Binary file not shown.

BIN
argcomplete-3.4.0.tar.gz LFS Normal file

Binary file not shown.

3
argcomplete-3.5.1.tar.gz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:eb1ee355aa2557bd3d0145de7b06b2a45b0ce461e1e7813f5d066039ab4177b4
size 82280

22
argparse-3_12_7.patch Normal file
View File

@@ -0,0 +1,22 @@
From 480d112ba488fa6825db877201577270053dacce Mon Sep 17 00:00:00 2001
From: Eggry Ran <eggry@live.cn>
Date: Sun, 6 Oct 2024 16:16:49 +0800
Subject: [PATCH] Fix issue #507
---
argcomplete/packages/_argparse.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/argcomplete/packages/_argparse.py b/argcomplete/packages/_argparse.py
index 2a064f9..d10cf01 100644
--- a/argcomplete/packages/_argparse.py
+++ b/argcomplete/packages/_argparse.py
@@ -162,6 +162,8 @@ def take_action(action, argument_strings, option_string=None):
def consume_optional(start_index):
# get the optional identified at this index
option_tuple = option_string_indices[start_index]
+ if isinstance(option_tuple, list): # Python 3.12.7+
+ option_tuple = option_tuple[0]
if len(option_tuple) == 3:
action, option_string, explicit_arg = option_tuple
else: # Python 3.11.9+, 3.12.3+, 3.13+

13
bash-repl.patch Normal file
View File

@@ -0,0 +1,13 @@
Index: argcomplete-3.0.8/test/test.py
===================================================================
--- argcomplete-3.0.8.orig/test/test.py
+++ argcomplete-3.0.8/test/test.py
@@ -65,7 +65,7 @@ def _repl_sh(command, args, non_printabl
def bash_repl(command="bash"):
- bashrc = os.path.join(os.path.dirname(pexpect.__file__), "replwrap", "bashrc.sh")
+ bashrc = os.path.join(os.path.dirname(pexpect.__file__), "bashrc.sh")
sh = _repl_sh(command, ["--rcfile", bashrc], non_printable_insert="\\[\\]")
return sh

431
python-argcomplete.changes Normal file
View File

@@ -0,0 +1,431 @@
-------------------------------------------------------------------
Tue Oct 29 17:07:05 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
- Update to the version 3.5.1:
- Restore compatibility with argparse in Python 3.12.7+
- Use project.scripts instead of setuptools scripts
- Test infrastructure improvements
- Remove upstreamed patches:
- argparse-3_12_7.patch
-------------------------------------------------------------------
Sun Oct 6 21:27:22 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
- Add argparse-3_12_7.patch which should actually fix
gh#kislyuk/argcomplete#507.
- Remove skip-failing-tests-3_12_7.patch, which is now
unnecessary.
-------------------------------------------------------------------
Sat Oct 5 14:53:29 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
- Add skip-failing-tests-3_12_7.patch as a temporary workaround,
skip failing tests (gh#kislyuk/argcomplete#507).
-------------------------------------------------------------------
Tue Aug 13 20:18:47 UTC 2024 - Dirk Müller <dmueller@suse.com>
- require ca-certificates-mozilla for the pip >= 24.2
-------------------------------------------------------------------
Mon Jul 15 11:25:31 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Update to 3.4.0
* No stdin for python calls from bash completion functions (#488)
- Prevents usage of stdin by (python) executables that are called
during completion generation. This prevents the completion locking up
the entire shell when the python script is broken i.e. it enters an
interactive mode (REPL) instead of generating the completions, as
expected.
* Localize shell variable REPLY to avoid overwriting users value (#489)
- The variable REPLY is used by default by the ``read`` shell builtin
to store the return value, and like all bash/zsh variables, is scoped
globally. This change allows this variable to be used for other needs
by appropriately scoping its internal use by an argcomplete utility
function that uses ``read``.
- Drop patches for issued fixed upstream
* bash-repl.patch
-------------------------------------------------------------------
Thu Apr 18 06:26:52 UTC 2024 - Daniel Garcia <daniel.garcia@suse.com>
- Update to 3.3.0 (bsc#1222880):
* Preserve compatibility with argparse option tuples of length 4.
This update is required to use argcomplete on Python 3.11.9+ or
3.12.3+.
- update to 3.2.3:
* Allow register-python-argcomplete output to be used as lazy-loaded
zsh completion module (#475)
- Move debug_stream initialization to helper method to allow fd 9
behavior to be overridden in subclasses (#471)
-------------------------------------------------------------------
Tue Jan 30 12:07:05 UTC 2024 - Dirk Müller <dmueller@suse.com>
- update to 3.2.2:
* Expand tilde in zsh
-------------------------------------------------------------------
Wed Jan 3 10:54:17 UTC 2024 - Ben Greiner <code@bnavigator.de>
- Remove coverage check
- Fix zsh test failures: avoid coloring terminal
-------------------------------------------------------------------
Fri Dec 29 18:27:06 UTC 2023 - Dirk Müller <dmueller@suse.com>
- update to 3.2.1:
* Allow explicit zsh global completion activation (#467)
* Fix and test global completion in zsh (#463, #466)
* Add yes option to activate-global-python-argcomplete (#461)
* Test suite improvements
- drop without_zsh.patch: obsolete
-------------------------------------------------------------------
Mon Nov 27 15:26:30 UTC 2023 - Dirk Müller <dmueller@suse.com>
- update to 3.1.6:
* Respect user choice in activate-global-python-argcomplete
* Escape colon in zsh completions. Fixes #456
* Call \_default as a fallback in zsh global completion
-------------------------------------------------------------------
Fri Nov 10 12:26:40 UTC 2023 - Dirk Müller <dmueller@suse.com>
- update to 3.1.4:
* Call \_default as a fallback in zsh global completion
* zsh: Allow to use external script (#453)
* Add support for Python 3.12 and drop EOL 3.6 and 3.7 (#449)
* Use homebrew prefix by default
* zsh: Allow to use external script (#453)
-------------------------------------------------------------------
Tue Oct 24 12:01:08 UTC 2023 - Dirk Müller <dmueller@suse.com>
- add setuptools_scm for proper version detection
-------------------------------------------------------------------
Thu Oct 5 08:46:50 UTC 2023 - Dirk Müller <dmueller@suse.com>
- update to 3.1.2:
*Ensure Python 3.12+ compatibility in check_console_script
-------------------------------------------------------------------
Tue Jul 4 11:24:40 UTC 2023 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Update to version 3.1.1
* Search through asdf shims
* Use \` as escape character in PowerShell (#434)
- from version 3.1.0
* setup.py -> pyproject.toml migration start (#427)
* Improve user install logic in activate-global-python-argcomplete (#437)
* Ensure Python 3.7 compatibility in check_console_script (#436)
* ZSH implementation fixes (#431, #433)
* Documentation improvements
- Drop obsolete patch
* trim-test-deps.patch
-------------------------------------------------------------------
Tue May 30 16:02:49 UTC 2023 - Andreas Schwab <schwab@suse.de>
- bash-repl.patch: Use correct place for auxiliary bashrc.sh file from pexpect
-------------------------------------------------------------------
Fri May 5 11:23:29 UTC 2023 - Daniel Garcia <daniel.garcia@suse.com>
- Add without_zsh.patch
- Delete skip_tcsh_tests.patch
- Delete without_fish.patch
- Update to 3.0.8:
* Test suite shell wrapper: Accept OSError on exit
- 3.0.7:
* Test suite: Use general regex to cut zsh reset ANSI sequences (#425)
- 3.0.6:
* Allow importlib-metadata 6.x; skip test failures on Python 3.7 (#420, #424)
* Note completers can return iterables of strings, not just lists (#422)
* Documentation and test improvements
- 3.0.5:
* Call _default as fallback in zsh global completion hook
* Begin support for mapping-emitting completers
- 3.0.4:
* activate-global-python-argcomplete: do not overwrite existing dotfile in user directory
* Add NOTICE file
* Establish long term name for split_line as argcomplete.lexers.split_line
- 3.0.3:
* Re-add split_line to API (#419)
- 3.0.2:
* Fix zsh default completion issues
- 3.0.1:
* Fix zsh autoload issues
- 3.0.0:
* Fully support zsh. Argcomplete now supports completion
descriptions and global completion in zsh.
* Clean up top level namespace.
* Documentation and test improvements.
- 2.1.2:
* Test infrastructure improvements
* Indicate that there is no support commitment for fish and tcsh shells
- 2.1.1:
* Documentation and test improvements
- 2.1.0:
* Remove scripts for contrib-supported shells from global namespace
- 2.0.6:
* setup.py: exclude test.* subpackages from find_packages (#406)
* Support PowerShell (#405)
* CI updates
- 2.0.5:
* Revert "Support powershell (#392)"
-------------------------------------------------------------------
Fri Apr 21 12:21:56 UTC 2023 - Dirk Müller <dmueller@suse.com>
- add sle15_python_module_pythons (jsc#PED-68)
-------------------------------------------------------------------
Thu Apr 13 22:39:57 UTC 2023 - Matej Cepl <mcepl@suse.com>
- Make calling of %{sle15modernpython} optional.
-------------------------------------------------------------------
Fri Mar 24 10:47:53 UTC 2023 - Daniel Garcia <daniel.garcia@suse.com>
- Remove importlib-metadata requirement, it's not needed for python > 3.7
-------------------------------------------------------------------
Thu Mar 16 09:32:50 UTC 2023 - Matej Cepl <mcepl@suse.com>
- Add without_fish.patch which makes fish only optional
BuildRequires (gh#kislyuk/argcomplete!410).
-------------------------------------------------------------------
Tue Jan 31 23:49:21 UTC 2023 - Dirk Müller <dmueller@suse.com>
- fix substitution on tests/test.py to test the current python flavor
-------------------------------------------------------------------
Wed Jul 6 10:04:40 UTC 2022 - Dirk Müller <dmueller@suse.com>
- update to 2.0.0:
* Truncate input after cursor.
* Support of path completion in fish
* Drop support for Python 2.7 and 3.5
* Add support for Python 3.10
* Test, documentation, and release infrastructure improvements
-------------------------------------------------------------------
Sun Jun 6 11:43:24 UTC 2021 - Dirk Müller <dmueller@suse.com>
- update to 1.12.3:
* Update importlib-metadata version pin
* Display script debug output in tcsh
* Fish support improvements
* Print ``warn()`` message from beginning of line
* Test infrastructure improvements
-------------------------------------------------------------------
Sun Dec 20 09:17:00 UTC 2020 - Dirk Müller <dmueller@suse.com>
- update to 1.12.2:
- Update importlib-metadata dependency pin (#332)
- Add change log project URL (#312)
- Replace Travis CI with GitHub Actions (#323)
- Update importlib-metadata dependency version range
- Bash nounset mode fixes (#313)
- remove 0001-Remove-expected-test-failure-for-new-versions-of-fish.patch (upstream)
-------------------------------------------------------------------
Wed May 27 13:01:18 UTC 2020 - Petr Gajdos <pgajdos@suse.com>
- %python3_only -> %python_alternative
-------------------------------------------------------------------
Thu Apr 30 06:05:59 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
- Fix test execution without /usr/bin/python
-------------------------------------------------------------------
Thu Mar 26 09:44:38 UTC 2020 - Antonio Larrosa <alarrosa@suse.com>
- Add patch from upstream to fix tests with latest fish version:
* 0001-Remove-expected-test-failure-for-new-versions-of-fish.patch
-------------------------------------------------------------------
Fri Jan 17 10:42:58 UTC 2020 - Marketa Calabkova <mcalabkova@suse.com>
- update to 1.11.1
* Add -o bashdefault to register-python-argcompletes output command
* Use shell builtins where possible
* Switch from pkg_resources to importlib
* Remove .sh extension by bash-completion convention
* Do not suggest options after
* Include all test directory contents in source distribution
* Trigger completers on optional=PARTIAL_VALUE
* Documentation and test improvements
-------------------------------------------------------------------
Fri Sep 13 12:45:13 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
- Update to 1.10.0:
* fish support
- Refresh patch skip_tcsh_tests.patch
-------------------------------------------------------------------
Fri Apr 5 11:02:52 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
- Update to 1.9.5:
* check_module: Dont crash, exit with error instead (#261)
* Register completion for multiple commands (#246)
-------------------------------------------------------------------
Mon Feb 25 05:52:03 UTC 2019 - John Vandenberg <jayvdb@gmail.com>
- Trim unnecessary build dependencies using trim-test-deps.patch
- Simplify skip_tcsh_tests.patch so it is easier to read and update
- Update to v1.9.4
* Use the correct interpreter when checking wrappers
* Provide shellcode as a module function (#237)
- from v1.9.3
* Fix handling of COMP\_POINT
* Fix crash when writing unicode to debug\_stream in Python 2
-------------------------------------------------------------------
Tue Dec 4 12:45:38 UTC 2018 - Matej Cepl <mcepl@suse.com>
- Remove superfluous devel dependency for noarch package
-------------------------------------------------------------------
Fri Sep 15 13:49:08 UTC 2017 - adrian.glaubitz@suse.com
- New upstream release
+ Version 1.9.2
- Update patch to skip broken tcsh tests
+ skip_tcsh_tests.patch
- Fix issues with singlespec auto-conversion
+ Install %{python_sitelib}/bash_completion.d/python-argcomplete.sh
into %{_sysconfdir}/bash_completion.d/
+ Use %python_clone to create both Python 2 and Python 3 versions
of all scripts below /usr/bin and /etc/bash_completion.d
with the %{python_version} suffix; also install the Python 3
versions without the suffix
-------------------------------------------------------------------
Thu Aug 24 13:32:49 UTC 2017 - jmatejek@suse.com
- singlespec auto-conversion
-------------------------------------------------------------------
Thu Jul 20 09:48:53 UTC 2017 - sebix+novell.com@sebix.at
- update to 1.8.2
- add patch skip_tcsh_tests.patch to skip broken tcsh tests
-------------------------------------------------------------------
Tue Nov 02 20:50:53 UTC 2016 - achim.herwig@wodca.de
- ported back from python3 package including
introduced update-alternatives to coexist with corresponding python3 package
-------------------------------------------------------------------
Sat Dec 12 17:49:43 UTC 2015 - mimi.vx@gmail.com
- update to 1.0.0
* Don't print args with suppressed help by default; add
argcomplete.autocomplete(print_suppressed=True) to control this behavior
* Fix always_complete_options=False support.
* Correct doc filename in setup.cfg
* Make context managers exception-safe.
* Fix issue with non-string choices for arguments.
* Improve non-ascii argparse argument support on Python 2.7.
-------------------------------------------------------------------
Sun Apr 19 16:08:50 UTC 2015 - benoit.monin@gmx.fr
- update to 0.8.7:
* register-python-argcomplete: add option to avoid default
readline completion. Thanks to @drmalex07 (pull request #99).
- additional changes from 0.8.6:
* Expand tilde in script name, allowing argcomplete to work
when invoking scripts from one's home directory. Thanks to
@VorpalBlade (Issue 104).
- additional changes from 0.8.5:
* Fix issues related to using argcomplete in a REPL
environement.
* New helper method for custom completion display.
* Expand test suite; formatting cleanup.
- additional changes from 0.8.4:
* Fix issue related to using argcomplete in a REPL
environement. Thanks to @wapiflapi (pull request #91).
- additional changes from 0.8.3:
* Fix multiple issues related to using argcomplete in a REPL
environement. Thanks to @wapiflapi (pull request #90).
- additional changes from 0.8.2:
* Don't strip colon prefix in completion results if
COMP_WORDBREAKS does not contain a colon. Thanks to @berezv
(pull request #88).
- additional changes from 0.8.1:
* Use complete --nospace to avoid issues with directory
completion.
- additional changes from 0.8.0:
* Refactor main body of code into a class to enable
subclassing and overriding of functionality (Issue #78).
- additional changes from 0.7.1:
* New keyword option "argcomplete.autocomplete(validator=...)"
to supply a custom validator or bypass default validation.
Thanks to @thijsdezoete (Issue #77).
* Document debug options.
- additional changes from 0.7.0:
* New keyword option "argcomplete.autocomplete(exclude=[...])"
to suppress options (Issue #74).
* More speedups to code path for global completion hook negative
result.
- additional changes from 0.6.9:
* Fix handling of development mode script wrappers. Thanks to
@jmlopez-rod and @dcosson (Issue #69).
* Speed up code path for global completion hook negative
result by loading pkg_resources on demand.
- additional changes from 0.6.8:
* Begin tracking changes in changelog.
* Add completion support for PBR installed scripts (PR #71).
* Detect easy-install shims with shebang lines that contain
Py instead of py (Issue #69).
-------------------------------------------------------------------
Fri Jan 17 15:50:53 UTC 2014 - speilicke@suse.com
- Update to version 0.6.7:
+ Upstream provides no changelog
- Don't install testsuite globally
-------------------------------------------------------------------
Mon Nov 18 11:18:02 UTC 2013 - speilicke@suse.com
- Update to version 0.6.3:
+ No changelog
-------------------------------------------------------------------
Thu Oct 24 10:58:50 UTC 2013 - speilicke@suse.com
- Require python-setuptools instead of distribute (upstreams merged)
-------------------------------------------------------------------
Thu May 2 14:04:51 UTC 2013 - speilicke@suse.com
- Fix SLE builds
- Add LICENSE.rst and README.rst
- Run testsuite
-------------------------------------------------------------------
Mon Apr 29 11:10:08 UTC 2013 - darin@darins.net
- fixed license, set noarch for build
-------------------------------------------------------------------
Fri Apr 26 20:49:09 UTC 2013 - darin@darins.net
- add files in _bindir
- add python-distribute
-------------------------------------------------------------------
Fri Apr 26 20:44:08 UTC 2013 - darin@darins.net
- Initial packaging

121
python-argcomplete.spec Normal file
View File

@@ -0,0 +1,121 @@
#
# spec file for package python-argcomplete
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2013 Darin Perusich.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{?sle15_python_module_pythons}
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "test"
%define psuffix -test
%bcond_without test
%else
%define psuffix %{nil}
%bcond_with test
%endif
Name: python-argcomplete%{psuffix}
Version: 3.5.1
Release: 0
Summary: Bash tab completion for argparse
License: Apache-2.0
Group: Development/Languages/Python
URL: https://github.com/kislyuk/argcomplete
Source: https://files.pythonhosted.org/packages/source/a/argcomplete/argcomplete-%{version}.tar.gz
BuildRequires: %{python_module base >= 3.8}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools >= 67.2}
BuildRequires: %{python_module setuptools_scm >= 6.2}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
%if %{with test}
BuildRequires: %{python_module argcomplete == %{version}}
BuildRequires: %{python_module pexpect}
BuildRequires: ca-certificates-mozilla
BuildRequires: fish
BuildRequires: zsh
%endif
Requires(post): update-alternatives
Requires(postun): update-alternatives
BuildArch: noarch
%python_subpackages
%description
Argcomplete provides easy, extensible command line tab completion of
arguments for your Python script.
It makes two assumptions:
* You're using bash as your shell
* You're using argparse to manage your command line arguments/options
Argcomplete is particularly useful if your program has lots of options
or subparsers, and if your program can dynamically suggest completions
for your argument/option values (for example, if the user is browsing
resources over the network).
%prep
%autosetup -p1 -n argcomplete-%{version}
%build
%if %{without test}
%pyproject_wheel
%endif
%install
%if %{without test}
%pyproject_install
%python_clone -a %{buildroot}%{_bindir}/activate-global-python-argcomplete
%python_clone -a %{buildroot}%{_bindir}/register-python-argcomplete
%python_clone -a %{buildroot}%{_bindir}/python-argcomplete-check-easy-install-script
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%endif
%check
%if %{with test}
export LANG=en_US.UTF-8
export TERM=xterm-mono
%{python_expand \
# https://github.com/kislyuk/argcomplete/issues/255
# https://github.com/kislyuk/argcomplete/issues/299
sed -i -e "1s|#!.*python.*|#!%{__$python}|" test/prog test/*.py
sed -i -e "s|python3 |$python |g" test/test.py
PYTHONPATH=%{buildroot}%{$python_sitelib} $python ./test/test.py -v
}
%endif
%if %{without test}
%post
%python_install_alternative activate-global-python-argcomplete
%python_install_alternative register-python-argcomplete
%python_install_alternative python-argcomplete-check-easy-install-script
%postun
%python_uninstall_alternative activate-global-python-argcomplete
%python_uninstall_alternative register-python-argcomplete
%python_uninstall_alternative python-argcomplete-check-easy-install-script
%files %{python_files}
%doc README.rst
%license LICENSE.rst
%{python_sitelib}/argcomplete-%{version}.dist-info
%{python_sitelib}/argcomplete
%python_alternative %{_bindir}/activate-global-python-argcomplete
%python_alternative %{_bindir}/python-argcomplete-check-easy-install-script
%python_alternative %{_bindir}/register-python-argcomplete
%endif
%changelog

View File

@@ -0,0 +1,126 @@
---
test/test.py | 15 +++++++++++++++
1 file changed, 15 insertions(+)
--- a/test/test.py
+++ b/test/test.py
@@ -43,6 +43,7 @@ COMP_WORDBREAKS = " \t\n\"'><=;|&(:"
BASH_VERSION = subprocess.check_output(["bash", "-c", "echo $BASH_VERSION"]).decode()
BASH_MAJOR_VERSION = int(BASH_VERSION.split(".")[0])
+is_3_12_7 = sys.version_info[:2] == (3, 12) and sys.version_info[:3] >= (3, 12, 7)
class ArgcompleteREPLWrapper(REPLWrapper):
def run_command(self, command, **kwargs):
@@ -158,6 +159,7 @@ class TestArgcomplete(unittest.TestCase)
completions = self.run_completer(p, "prog -", always_complete_options=False)
self.assertEqual(set(completions), set(["-h", "--help", "--foo", "--bar"]))
+ @unittest.skipIf(is_3_12_7, "Doesn't work with Python 3.12.7")
def test_choices(self):
def make_parser():
parser = ArgumentParser()
@@ -274,6 +276,7 @@ class TestArgcomplete(unittest.TestCase)
for cmd, output in expected_outputs:
self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output))
+ @unittest.skipIf(is_3_12_7, "Doesn't work with Python 3.12.7")
def test_completers(self):
self.completions = ["http://url1", "http://url2"]
@@ -317,6 +320,7 @@ class TestArgcomplete(unittest.TestCase)
for cmd, output in zsh_expected_outputs:
self.assertEqual(set(self.run_completer(make_parser(), cmd, shell="zsh")), set(output))
+ @unittest.skipIf(is_3_12_7, "Doesn't work with Python 3.12.7")
def test_subparser_completers(self):
def c_depends_on_positional_arg1(prefix, parsed_args, **kwargs):
return [parsed_args.arg1]
@@ -355,6 +359,7 @@ class TestArgcomplete(unittest.TestCase)
fp.write("test")
self.assertEqual(set(fc("a")), set(["abcdefж/", "abcaha/", "abcxyz"]))
+ @unittest.skipIf(is_3_12_7, "Doesn't work with Python 3.12.7")
def test_filescompleter_filetype_integration(self):
def make_parser():
parser = ArgumentParser()
@@ -404,6 +409,7 @@ class TestArgcomplete(unittest.TestCase)
self.assertEqual(c("def/k"), set([]))
return
+ @unittest.skipIf(is_3_12_7, "Doesn't work with Python 3.12.7")
def test_default_completer(self):
def make_parser():
parser = ArgumentParser(add_help=False)
@@ -423,6 +429,7 @@ class TestArgcomplete(unittest.TestCase)
for cmd, output in expected_outputs:
self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output))
+ @unittest.skipIf(is_3_12_7, "Doesn't work with Python 3.12.7")
def test_subparsers(self):
def make_parser():
parser = ArgumentParser()
@@ -455,6 +462,7 @@ class TestArgcomplete(unittest.TestCase)
set(output) - set(["-h", "--help"]),
)
+ @unittest.skipIf(is_3_12_7, "Doesn't work with Python 3.12.7")
def test_non_ascii(self):
def make_parser():
parser = ArgumentParser()
@@ -664,6 +672,7 @@ class TestArgcomplete(unittest.TestCase)
for cmd, output in expected_outputs:
self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output))
+ @unittest.skipIf(is_3_12_7, "Doesn't work with Python 3.12.7")
def test_optional_nargs(self):
def make_parser():
parser = ArgumentParser()
@@ -696,6 +705,7 @@ class TestArgcomplete(unittest.TestCase)
for cmd, output in expected_outputs:
self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output))
+ @unittest.skipIf(is_3_12_7, "Doesn't work with Python 3.12.7")
def test_positional_remainder(self):
def make_parser():
parser = ArgumentParser()
@@ -753,6 +763,7 @@ class TestArgcomplete(unittest.TestCase)
result = self.run_completer(make_parser(), cmd, always_complete_options=always_complete_options)
self.assertEqual(set(result), set(output))
+ @unittest.skipIf(is_3_12_7, "Doesn't work with Python 3.12.7")
def test_exclusive(self):
def make_parser():
parser = ArgumentParser(add_help=False)
@@ -772,6 +783,7 @@ class TestArgcomplete(unittest.TestCase)
for cmd, output in expected_outputs:
self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output))
+ @unittest.skipIf(is_3_12_7, "Doesn't work with Python 3.12.7")
def test_mixed_optional_positional(self):
def make_parser():
parser = ArgumentParser(add_help=False)
@@ -801,6 +813,7 @@ class TestArgcomplete(unittest.TestCase)
self.assertEqual(self.run_completer(make_parser(), "prog "), ["bar "])
self.assertEqual(self.run_completer(make_parser(), "prog ", append_space=False), ["bar"])
+ @unittest.skipIf(is_3_12_7, "Doesn't work with Python 3.12.7")
def test_exclusive_class(self):
parser = ArgumentParser(add_help=False)
parser.add_argument("--foo", dest="types", action="append_const", const=str)
@@ -821,6 +834,7 @@ class TestArgcomplete(unittest.TestCase)
for cmd, output in expected_outputs:
self.assertEqual(set(self.run_completer(parser, cmd, completer=completer)), set(output))
+ @unittest.skipIf(is_3_12_7, "Doesn't work with Python 3.12.7")
def test_escape_special_chars(self):
def make_parser():
parser = ArgumentParser(add_help=False)
@@ -921,6 +935,7 @@ class TestArgcompleteREPL(unittest.TestC
completions = self.run_completer(p, c, "prog --")
assert set(completions) == set(["--help", "--foo", "--bar"])
+ @unittest.skipIf(is_3_12_7, "Doesn't work with Python 3.12.7")
def test_repl_parse_after_complete(self):
p = ArgumentParser()
p.add_argument("--foo", required=True)

View File

@@ -0,0 +1,134 @@
---
test/test.py | 20 +++++++++++---------
test/test_contrib_shells.py | 13 ++++++-------
2 files changed, 17 insertions(+), 16 deletions(-)
--- a/test/test.py
+++ b/test/test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3.10
import argparse
import contextlib
import os
@@ -19,6 +19,8 @@ TEST_DIR = os.path.abspath(os.path.dirna
BASE_DIR = os.path.dirname(TEST_DIR)
sys.path.insert(0, BASE_DIR)
+py_ver = "%s.%s" % sys.version_info[:2]
+
from argparse import SUPPRESS, ArgumentParser # noqa: E402
import argcomplete # noqa: E402
@@ -1254,7 +1256,7 @@ class TestBashZshBase(TestShellBase):
init_cmd = None
# 'dummy' argument unused; checks multi-command registration works
# by passing 'prog' as the second argument.
- install_cmd = 'eval "$(register-python-argcomplete dummy prog)"'
+ install_cmd = 'eval "$(register-python-argcomplete-{} dummy prog)"'.format(py_ver)
def setUp(self):
sh = self.repl_provider()
@@ -1271,7 +1273,7 @@ class TestBashZshBase(TestShellBase):
self.assertEqual(output, "")
# Register a dummy completion with an external argcomplete script
# to ensure this doesn't overwrite our previous registration.
- output = sh.run_command('eval "$(register-python-argcomplete dummy --external-argcomplete-script dummy)"')
+ output = sh.run_command('eval "$(register-python-argcomplete dummy-{} --external-argcomplete-script dummy)"'.format(py_ver))
self.assertEqual(output, "")
self.sh = sh
@@ -1330,7 +1332,7 @@ class TestZsh(TestBashZshBase, unittest.
class TestBashZshGlobalBase(TestBashZshBase):
- install_cmd = 'eval "$(activate-global-python-argcomplete --dest=-)"'
+ install_cmd = 'eval "$(activate-global-python-argcomplete-{} --dest=-)"'.format(py_ver)
def test_redirection_completion(self):
with TempDir(prefix="test_dir_py", dir="."):
@@ -1343,15 +1345,15 @@ class TestBashZshGlobalBase(TestBashZshB
def test_python_completion(self):
self.sh.run_command("cd " + TEST_DIR)
- self.assertEqual(self.sh.run_command("python3 ./prog basic f\t"), "foo\r\n")
+ self.assertEqual(self.sh.run_command("python{} ./prog basic f\t".format(py_ver)), "foo\r\n")
def test_python_filename_completion(self):
self.sh.run_command("cd " + TEST_DIR)
- self.assertEqual(self.sh.run_command("python3 ./pro\tbasic f\t"), "foo\r\n")
+ self.assertEqual(self.sh.run_command("python{} ./pro\tbasic f\t".format(py_ver)), "foo\r\n")
def test_python_stuck(self):
self.sh.run_command("cd " + TEST_DIR)
- self.sh.run_command("python3 ./stuck no\t-input")
+ self.sh.run_command("python{} ./stuck no\t-input".format(py_ver))
def test_python_not_executable(self):
"""Test completing a script that cannot be run directly."""
@@ -1363,7 +1365,7 @@ class TestBashZshGlobalBase(TestBashZshB
# Ensure prog is no longer able to be run as "./prog".
self.assertIn("<<126>>", self.sh.run_command('./prog; echo "<<$?>>"'))
# Ensure completion still functions when run via python.
- self.assertEqual(self.sh.run_command("python3 ./prog basic f\t"), "foo\r\n")
+ self.assertEqual(self.sh.run_command("python{} ./prog basic f\t".format(py_ver)), "foo\r\n")
def test_python_module(self):
"""Test completing a module run with python -m."""
@@ -1373,7 +1375,7 @@ class TestBashZshGlobalBase(TestBashZshB
open("package/__init__.py", "w").close()
shutil.copy(prog, "package/prog.py")
self.sh.run_command("cd " + os.getcwd())
- self.assertEqual(self.sh.run_command("python3 -m package.prog basic f\t"), "foo\r\n")
+ self.assertEqual(self.sh.run_command("python{} -m package.prog basic f\t".format(py_ver)), "foo\r\n")
def _test_console_script(self, package=False, wheel=False):
with TempDir(prefix="test_dir_py", dir="."):
--- a/test/test_contrib_shells.py
+++ b/test/test_contrib_shells.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3.10
import os
import os.path
import unittest
@@ -6,8 +6,7 @@ import unittest
import pexpect
import pexpect.replwrap
-from .test import BASE_DIR, TEST_DIR, Shell, TestShellBase
-
+from .test import BASE_DIR, TEST_DIR, Shell, TestShellBase, py_ver
@unittest.skip("tcsh is not supported. Enable this test manually if needed.")
class TestTcsh(TestShellBase, unittest.TestCase):
@@ -28,12 +27,12 @@ class TestTcsh(TestShellBase, unittest.T
sh.run_command("setenv PYTHONPATH {0}".format(BASE_DIR))
# 'dummy' argument unused; checks multi-command registration works
# by passing 'prog' as the second argument.
- output = sh.run_command("eval `register-python-argcomplete --shell tcsh dummy prog`")
+ output = sh.run_command("eval `register-python-argcomplete-{} --shell tcsh dummy prog`".format(py_ver))
self.assertEqual(output, "")
# Register a dummy completion with an external argcomplete script
# to ensure this doesn't overwrite our previous registration.
output = sh.run_command(
- "eval `register-python-argcomplete --shell tcsh dummy --external-argcomplete-script dummy`"
+ "eval `register-python-argcomplete-{} --shell tcsh dummy --external-argcomplete-script dummy`.format(py_ver)"
)
self.assertEqual(output, "")
self.sh = sh
@@ -62,12 +61,12 @@ class TestFish(TestShellBase, unittest.T
sh.run_command("set -x PYTHONPATH {0}".format(BASE_DIR))
# 'dummy' argument unused; checks multi-command registration works
# by passing 'prog' as the second argument.
- output = sh.run_command("register-python-argcomplete --shell fish dummy prog | source")
+ output = sh.run_command("register-python-argcomplete-{} --shell fish dummy prog | source".format(py_ver))
self.assertEqual(output, "")
# Register a dummy completion with an external argcomplete script
# to ensure this doesn't overwrite our previous registration.
output = sh.run_command(
- "register-python-argcomplete --shell fish dummy --external-argcomplete-script dummy | source"
+ "register-python-argcomplete-{} --shell fish dummy --external-argcomplete-script dummy | source".format(py_ver)
)
self.assertEqual(output, "")
self.sh = sh