Compare commits
1 Commits
| Author | SHA256 | Date | |
|---|---|---|---|
| 9c0809271b |
3
.gitattributes
vendored
3
.gitattributes
vendored
@@ -1,4 +1,4 @@
|
|||||||
## Default LFS
|
*.changes merge=merge-changes
|
||||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||||
*.png filter=lfs diff=lfs merge=lfs -text
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tar filter=lfs diff=lfs merge=lfs -text
|
||||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
|||||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1 +1,4 @@
|
|||||||
.osc
|
*.obscpio
|
||||||
|
*.osc
|
||||||
|
_build.*
|
||||||
|
.pbuild
|
||||||
|
|||||||
3
_multibuild
Normal file
3
_multibuild
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<multibuild>
|
||||||
|
<package>test</package>
|
||||||
|
</multibuild>
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
|
|
||||||
github.com/pallets/click/issues/2939
|
|
||||||
github.com/pallets/click/pull/2940
|
|
||||||
|
|
||||||
|
|
||||||
From 93c6966eb3a575c2b600434d1cc9f4b3aee505ac Mon Sep 17 00:00:00 2001
|
|
||||||
From: Antoine Lambert <anlambert@softwareheritage.org>
|
|
||||||
Date: Thu, 22 May 2025 22:14:23 +0200
|
|
||||||
Subject: [PATCH] testing/CliRunner: Fix regression related to EOF introduced
|
|
||||||
in 262bdf0
|
|
||||||
|
|
||||||
Commit 262bdf0 ensured to raise an EOFError exception on end of input
|
|
||||||
to simulate tty behavior and avoid blocking prompt during tests when
|
|
||||||
no more input is available.
|
|
||||||
|
|
||||||
However the introduced implementation has a side effect when testing a
|
|
||||||
click command having a File type option or argument and when it is set
|
|
||||||
to stdin: the command ends up with error due to the Abort exception
|
|
||||||
being raised when the stdin EOFError exception is caught.
|
|
||||||
|
|
||||||
To prevent this undesirable side effect, prefer to raise the EOFError
|
|
||||||
exceptions directly from the prompts functions inside the CliRunner
|
|
||||||
class instead of doing it in the method overriding the iterator protcol
|
|
||||||
for the _NamedTextIOWrapper class.
|
|
||||||
|
|
||||||
Restore previous implementation of a test broken by changes of 262bdf0.
|
|
||||||
|
|
||||||
Fixes #2939.
|
|
||||||
---
|
|
||||||
CHANGES.rst | 5 +++++
|
|
||||||
src/click/testing.py | 17 ++++++++---------
|
|
||||||
tests/test_chain.py | 4 ++--
|
|
||||||
3 files changed, 15 insertions(+), 11 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/CHANGES.rst b/CHANGES.rst
|
|
||||||
index 1b8af9a5f..decdc2d91 100644
|
|
||||||
--- a/CHANGES.rst
|
|
||||||
+++ b/CHANGES.rst
|
|
||||||
@@ -1,5 +1,10 @@
|
|
||||||
.. currentmodule:: click
|
|
||||||
|
|
||||||
+Version 8.2.2
|
|
||||||
+-------------
|
|
||||||
+
|
|
||||||
+- Fix regression related to EOF handling in CliRunner. :issue:`2939`
|
|
||||||
+
|
|
||||||
Version 8.2.1
|
|
||||||
-------------
|
|
||||||
|
|
||||||
diff --git a/src/click/testing.py b/src/click/testing.py
|
|
||||||
index 7c0e8741e..e57eacc5d 100644
|
|
||||||
--- a/src/click/testing.py
|
|
||||||
+++ b/src/click/testing.py
|
|
||||||
@@ -116,13 +116,6 @@ def name(self) -> str:
|
|
||||||
def mode(self) -> str:
|
|
||||||
return self._mode
|
|
||||||
|
|
||||||
- def __next__(self) -> str: # type: ignore
|
|
||||||
- try:
|
|
||||||
- line = super().__next__()
|
|
||||||
- except StopIteration as e:
|
|
||||||
- raise EOFError() from e
|
|
||||||
- return line
|
|
||||||
-
|
|
||||||
|
|
||||||
def make_input_stream(
|
|
||||||
input: str | bytes | t.IO[t.Any] | None, charset: str
|
|
||||||
@@ -348,7 +341,10 @@ def isolation(
|
|
||||||
@_pause_echo(echo_input) # type: ignore
|
|
||||||
def visible_input(prompt: str | None = None) -> str:
|
|
||||||
sys.stdout.write(prompt or "")
|
|
||||||
- val = next(text_input).rstrip("\r\n")
|
|
||||||
+ try:
|
|
||||||
+ val = next(text_input).rstrip("\r\n")
|
|
||||||
+ except StopIteration as e:
|
|
||||||
+ raise EOFError() from e
|
|
||||||
sys.stdout.write(f"{val}\n")
|
|
||||||
sys.stdout.flush()
|
|
||||||
return val
|
|
||||||
@@ -357,7 +353,10 @@ def visible_input(prompt: str | None = None) -> str:
|
|
||||||
def hidden_input(prompt: str | None = None) -> str:
|
|
||||||
sys.stdout.write(f"{prompt or ''}\n")
|
|
||||||
sys.stdout.flush()
|
|
||||||
- return next(text_input).rstrip("\r\n")
|
|
||||||
+ try:
|
|
||||||
+ return next(text_input).rstrip("\r\n")
|
|
||||||
+ except StopIteration as e:
|
|
||||||
+ raise EOFError() from e
|
|
||||||
|
|
||||||
@_pause_echo(echo_input) # type: ignore
|
|
||||||
def _getchar(echo: bool) -> str:
|
|
||||||
diff --git a/tests/test_chain.py b/tests/test_chain.py
|
|
||||||
index ba11b7e2a..702eaaa3e 100644
|
|
||||||
--- a/tests/test_chain.py
|
|
||||||
+++ b/tests/test_chain.py
|
|
||||||
@@ -163,8 +163,8 @@ def processor(iterator):
|
|
||||||
return processor
|
|
||||||
|
|
||||||
result = runner.invoke(cli, args, input=input)
|
|
||||||
- # last two lines are '' and 'Aborted!'
|
|
||||||
- assert result.output.splitlines()[:-2] == expect
|
|
||||||
+ assert not result.exception
|
|
||||||
+ assert result.output.splitlines() == expect
|
|
||||||
|
|
||||||
|
|
||||||
def test_args_and_chain(runner):
|
|
||||||
BIN
click-8.2.1.tar.gz
LFS
BIN
click-8.2.1.tar.gz
LFS
Binary file not shown.
BIN
click-8.3.1.tar.gz
LFS
Normal file
BIN
click-8.3.1.tar.gz
LFS
Normal file
Binary file not shown.
@@ -1,3 +1,51 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Feb 4 10:40:58 UTC 2026 - Daniel Garcia <daniel.garcia@suse.com>
|
||||||
|
|
||||||
|
- Add pythons_for_pypi macro
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jan 29 09:04:24 UTC 2026 - Daniel Garcia <daniel.garcia@suse.com>
|
||||||
|
|
||||||
|
- Run tests in a subpackage, this allows to exclude build in different
|
||||||
|
distributions
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Nov 17 08:34:57 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
|
||||||
|
|
||||||
|
- Update to 8.3.1
|
||||||
|
* Don’t discard pager arguments by correctly using subprocess.Popen.
|
||||||
|
* Replace Sentinel.UNSET default values by None as they’re passed
|
||||||
|
through the Context.invoke() method.
|
||||||
|
* Fix conversion of Sentinel.UNSET happening too early, which caused
|
||||||
|
incorrect behavior for multiple parameters using the same name.
|
||||||
|
* Hide Sentinel.UNSET values as None when looking up for other
|
||||||
|
parameters through the context inside parameter callbacks.
|
||||||
|
* Fix rendering when prompt and confirm parameter prompt_suffix is empty.
|
||||||
|
* When Sentinel.UNSET is found during parsing, it will skip calls to
|
||||||
|
type_cast_value.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Sep 26 04:26:21 UTC 2025 - Steve Kowalik <steven.kowalik@suse.com>
|
||||||
|
|
||||||
|
- Update to 8.3.0:
|
||||||
|
* Improved flag option handling: Reworked the relationship between
|
||||||
|
flag_value and default parameters for better consistency.
|
||||||
|
* Show correct auto complete value for nargs option in combination with
|
||||||
|
flag option.
|
||||||
|
* Fix handling of quoted and escaped parameters in Fish autocompletion.
|
||||||
|
* Properly forward exception information to resources registered with
|
||||||
|
click.core.Context.with_resource().
|
||||||
|
* Fix regression related to EOF handling in CliRunner.
|
||||||
|
- Drop patch click-8.2.1-clirunner.patch, included upstream.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Aug 9 07:09:03 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
Revert to 8.2.1, version 8.2.2 was yanked because Unintended change in
|
||||||
|
behavior of boolean options and None
|
||||||
|
https://pypi.org/project/click/8.2.2/
|
||||||
|
(and if I read `osc log` I would know dgarcia did this already)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Jun 8 15:09:58 UTC 2025 - Friedrich Haubensak <hsk17@mail.de>
|
Tue Jun 8 15:09:58 UTC 2025 - Friedrich Haubensak <hsk17@mail.de>
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package python-click
|
# spec file for package python-click
|
||||||
#
|
#
|
||||||
# Copyright (c) 2025 SUSE LLC
|
# Copyright (c) 2026 SUSE LLC and contributors
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@@ -16,22 +16,32 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
|
%global flavor @BUILD_FLAVOR@%{nil}
|
||||||
|
%if "%{flavor}" == "test"
|
||||||
|
%define psuffix -test
|
||||||
|
%bcond_without test
|
||||||
|
%else
|
||||||
|
%define psuffix %{nil}
|
||||||
|
%bcond_with test
|
||||||
|
%endif
|
||||||
|
%{?pythons_for_pypi}
|
||||||
%{?sle15_python_module_pythons}
|
%{?sle15_python_module_pythons}
|
||||||
Name: python-click
|
Name: python-click%{psuffix}
|
||||||
Version: 8.2.1
|
Version: 8.3.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: A wrapper around optparse for command line utilities
|
Summary: A wrapper around optparse for command line utilities
|
||||||
License: BSD-3-Clause
|
License: BSD-3-Clause
|
||||||
URL: https://github.com/pallets/click
|
URL: https://github.com/pallets/click
|
||||||
Source: https://files.pythonhosted.org/packages/source/c/click/click-%{version}.tar.gz
|
Source: https://files.pythonhosted.org/packages/source/c/click/click-%{version}.tar.gz
|
||||||
## see github.com/pallets/click/issues/2939, github.com/pallets/click/pull/2940
|
|
||||||
Patch0: click-8.2.1-clirunner.patch
|
|
||||||
BuildRequires: %{python_module base >= 3.10}
|
BuildRequires: %{python_module base >= 3.10}
|
||||||
BuildRequires: %{python_module flit-core}
|
BuildRequires: %{python_module flit-core}
|
||||||
BuildRequires: %{python_module pip}
|
BuildRequires: %{python_module pip}
|
||||||
BuildRequires: %{python_module pytest}
|
|
||||||
BuildRequires: %{python_module setuptools}
|
BuildRequires: %{python_module setuptools}
|
||||||
BuildRequires: %{python_module wheel}
|
BuildRequires: %{python_module wheel}
|
||||||
|
%if %{with test}
|
||||||
|
BuildRequires: %{python_module click == %{version}}
|
||||||
|
BuildRequires: %{python_module pytest}
|
||||||
|
%endif
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: python-rpm-macros
|
BuildRequires: python-rpm-macros
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
@@ -47,20 +57,28 @@ defaults out of the box.
|
|||||||
%autosetup -p1 -n click-%{version}
|
%autosetup -p1 -n click-%{version}
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
%if %{without test}
|
||||||
%pyproject_wheel
|
%pyproject_wheel
|
||||||
|
%endif
|
||||||
|
|
||||||
%install
|
%install
|
||||||
|
%if %{without test}
|
||||||
%pyproject_install
|
%pyproject_install
|
||||||
%python_expand %fdupes %{buildroot}%{$python_sitelib}
|
%python_expand %fdupes %{buildroot}%{$python_sitelib}
|
||||||
|
%endif
|
||||||
|
|
||||||
%check
|
%check
|
||||||
|
%if %{with test}
|
||||||
export LANG=en_US.UTF-8
|
export LANG=en_US.UTF-8
|
||||||
%pytest -rs --tb=short
|
%pytest -rs --tb=short
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{without test}
|
||||||
%files %{python_files}
|
%files %{python_files}
|
||||||
%license LICENSE.txt
|
%license LICENSE.txt
|
||||||
%doc CHANGES.rst README.md
|
%doc CHANGES.rst README.md
|
||||||
%{python_sitelib}/click
|
%{python_sitelib}/click
|
||||||
%{python_sitelib}/click-%{version}.dist-info
|
%{python_sitelib}/click-%{version}.dist-info
|
||||||
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
|||||||
Reference in New Issue
Block a user