From 6b81eebd79fa26e3e1cb01764bc5001607f349bc Mon Sep 17 00:00:00 2001 From: Nico Albers Date: Wed, 19 May 2021 14:03:42 +0200 Subject: [PATCH 1/8] pass package_name explicitly in click.version_option decorators --- piptools/scripts/compile.py | 2 +- piptools/scripts/sync.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/piptools/scripts/compile.py b/piptools/scripts/compile.py index b880b80eb..967992a99 100755 --- a/piptools/scripts/compile.py +++ b/piptools/scripts/compile.py @@ -45,7 +45,7 @@ def _get_default_option(option_name: str) -> Any: @click.command(context_settings={"help_option_names": ("-h", "--help")}) -@click.version_option() +@click.version_option(package_name="pip-tools") @click.pass_context @click.option("-v", "--verbose", count=True, help="Show more output") @click.option("-q", "--quiet", count=True, help="Give less output") diff --git a/piptools/scripts/sync.py b/piptools/scripts/sync.py index 56fe3050c..83c4e3415 100755 --- a/piptools/scripts/sync.py +++ b/piptools/scripts/sync.py @@ -21,7 +21,7 @@ @click.command(context_settings={"help_option_names": ("-h", "--help")}) -@click.version_option() +@click.version_option(package_name="pip-tools") @click.option( "-a", "--ask", From 0b0769008f8d7a257dcee44435d510279000030f Mon Sep 17 00:00:00 2001 From: Nico Albers Date: Wed, 26 May 2021 15:54:59 +0200 Subject: [PATCH 2/8] bump dependency to version click >= 8 --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index dc29b0f09..01345791d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -29,7 +29,7 @@ setup_requires = setuptools_scm packages = find: zip_safe = false install_requires = - click >= 7 + click >= 8 pep517 pip >= 20.3 From d46cf973f1e7ef33673b78cc307c4a706db10233 Mon Sep 17 00:00:00 2001 From: Nico Albers Date: Thu, 27 May 2021 11:14:52 +0200 Subject: [PATCH 3/8] reenable click7 and provide package options depending on a switch on the version of click --- piptools/scripts/compile.py | 9 ++++++++- piptools/scripts/sync.py | 10 +++++++++- setup.cfg | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/piptools/scripts/compile.py b/piptools/scripts/compile.py index 967992a99..2b8dcad00 100755 --- a/piptools/scripts/compile.py +++ b/piptools/scripts/compile.py @@ -33,6 +33,13 @@ DEFAULT_REQUIREMENTS_OUTPUT_FILE = "requirements.txt" METADATA_FILENAMES = frozenset({"setup.py", "setup.cfg", "pyproject.toml"}) +# TODO: drop click 7 and remove this block, pass directly to version_option +if click.__version__.split(".")[0] == "7": + ver_kwargs = {} +else: + # this was introduced in click8 and if not passed would break this package + ver_kwargs = {"package_name": "pip-tools"} + def _get_default_option(option_name: str) -> Any: """ @@ -45,7 +52,7 @@ def _get_default_option(option_name: str) -> Any: @click.command(context_settings={"help_option_names": ("-h", "--help")}) -@click.version_option(package_name="pip-tools") +@click.version_option(**ver_kwargs) @click.pass_context @click.option("-v", "--verbose", count=True, help="Show more output") @click.option("-q", "--quiet", count=True, help="Give less output") diff --git a/piptools/scripts/sync.py b/piptools/scripts/sync.py index 83c4e3415..2c1e44b97 100755 --- a/piptools/scripts/sync.py +++ b/piptools/scripts/sync.py @@ -20,8 +20,16 @@ DEFAULT_REQUIREMENTS_FILE = "requirements.txt" +# TODO: drop click 7 and remove this block, pass directly to version_option +if click.__version__.split(".")[0] == "7": + ver_kwargs = {} +else: + # this was introduced in click8 and if not passed would break this package + ver_kwargs = {"package_name": "pip-tools"} + + @click.command(context_settings={"help_option_names": ("-h", "--help")}) -@click.version_option(package_name="pip-tools") +@click.version_option(**ver_kwargs) @click.option( "-a", "--ask", diff --git a/setup.cfg b/setup.cfg index 01345791d..dc29b0f09 100644 --- a/setup.cfg +++ b/setup.cfg @@ -29,7 +29,7 @@ setup_requires = setuptools_scm packages = find: zip_safe = false install_requires = - click >= 8 + click >= 7 pep517 pip >= 20.3 From 1d70557039e85af0199b06166329c31f3df991f4 Mon Sep 17 00:00:00 2001 From: Nico Albers Date: Thu, 27 May 2021 11:19:37 +0200 Subject: [PATCH 4/8] remove unnecessary split string in click version comparison --- piptools/scripts/compile.py | 2 +- piptools/scripts/sync.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/piptools/scripts/compile.py b/piptools/scripts/compile.py index 2b8dcad00..f20dfc55a 100755 --- a/piptools/scripts/compile.py +++ b/piptools/scripts/compile.py @@ -34,7 +34,7 @@ METADATA_FILENAMES = frozenset({"setup.py", "setup.cfg", "pyproject.toml"}) # TODO: drop click 7 and remove this block, pass directly to version_option -if click.__version__.split(".")[0] == "7": +if click.__version__[0] == "7": ver_kwargs = {} else: # this was introduced in click8 and if not passed would break this package diff --git a/piptools/scripts/sync.py b/piptools/scripts/sync.py index 2c1e44b97..01a933abe 100755 --- a/piptools/scripts/sync.py +++ b/piptools/scripts/sync.py @@ -21,7 +21,7 @@ # TODO: drop click 7 and remove this block, pass directly to version_option -if click.__version__.split(".")[0] == "7": +if click.__version__[0] == "7": ver_kwargs = {} else: # this was introduced in click8 and if not passed would break this package From fbef89446f30e8d29d661d890204d88fbb4889ad Mon Sep 17 00:00:00 2001 From: Nico Albers Date: Thu, 27 May 2021 15:48:31 +0200 Subject: [PATCH 5/8] added compat module for click version and use that to determine the version_option arguments to click --- piptools/_compat/__init__.py | 3 ++- piptools/_compat/click_compat.py | 5 +++++ piptools/scripts/compile.py | 10 +++------- piptools/scripts/sync.py | 11 +++-------- 4 files changed, 13 insertions(+), 16 deletions(-) create mode 100644 piptools/_compat/click_compat.py diff --git a/piptools/_compat/__init__.py b/piptools/_compat/__init__.py index 657bc13c3..518a82e63 100644 --- a/piptools/_compat/__init__.py +++ b/piptools/_compat/__init__.py @@ -1,3 +1,4 @@ from .pip_compat import PIP_VERSION, parse_requirements +from .click_compat import IS_CLICK_VER_8_PLUS -__all__ = ["PIP_VERSION", "parse_requirements"] +__all__ = ["PIP_VERSION", "IS_CLICK_VER_8_PLUS", "parse_requirements"] diff --git a/piptools/_compat/click_compat.py b/piptools/_compat/click_compat.py new file mode 100644 index 000000000..09932c82f --- /dev/null +++ b/piptools/_compat/click_compat.py @@ -0,0 +1,5 @@ +import click +from pip._vendor.packaging.version import Version + +CLICK_VERSION = Version(click.__version__).major +IS_CLICK_VER_8_PLUS = CLICK_VERSION > 7 diff --git a/piptools/scripts/compile.py b/piptools/scripts/compile.py index f20dfc55a..e8dc208d3 100755 --- a/piptools/scripts/compile.py +++ b/piptools/scripts/compile.py @@ -12,7 +12,7 @@ from pip._internal.req.constructors import install_req_from_line from pip._internal.utils.misc import redact_auth_from_url -from .._compat import parse_requirements +from .._compat import parse_requirements, IS_CLICK_VER_8_PLUS from ..cache import DependencyCache from ..exceptions import PipToolsError from ..locations import CACHE_DIR @@ -34,11 +34,7 @@ METADATA_FILENAMES = frozenset({"setup.py", "setup.cfg", "pyproject.toml"}) # TODO: drop click 7 and remove this block, pass directly to version_option -if click.__version__[0] == "7": - ver_kwargs = {} -else: - # this was introduced in click8 and if not passed would break this package - ver_kwargs = {"package_name": "pip-tools"} +version_option_kwargs = {} if IS_CLICK_VER_8_PLUS else {"package_name": "pip-tools"} def _get_default_option(option_name: str) -> Any: @@ -52,7 +48,7 @@ def _get_default_option(option_name: str) -> Any: @click.command(context_settings={"help_option_names": ("-h", "--help")}) -@click.version_option(**ver_kwargs) +@click.version_option(**version_option_kwargs) @click.pass_context @click.option("-v", "--verbose", count=True, help="Show more output") @click.option("-q", "--quiet", count=True, help="Give less output") diff --git a/piptools/scripts/sync.py b/piptools/scripts/sync.py index 01a933abe..0c273b47d 100755 --- a/piptools/scripts/sync.py +++ b/piptools/scripts/sync.py @@ -11,7 +11,7 @@ from pip._internal.utils.misc import get_installed_distributions from .. import sync -from .._compat import parse_requirements +from .._compat import parse_requirements, IS_CLICK_VER_8_PLUS from ..exceptions import PipToolsError from ..logging import log from ..repositories import PyPIRepository @@ -19,17 +19,12 @@ DEFAULT_REQUIREMENTS_FILE = "requirements.txt" - # TODO: drop click 7 and remove this block, pass directly to version_option -if click.__version__[0] == "7": - ver_kwargs = {} -else: - # this was introduced in click8 and if not passed would break this package - ver_kwargs = {"package_name": "pip-tools"} +version_option_kwargs = {} if IS_CLICK_VER_8_PLUS else {"package_name": "pip-tools"} @click.command(context_settings={"help_option_names": ("-h", "--help")}) -@click.version_option(**ver_kwargs) +@click.version_option(**version_option_kwargs) @click.option( "-a", "--ask", From 726f819d98ec5be7ab4bd06c4f62851ed177f999 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 27 May 2021 13:48:57 +0000 Subject: [PATCH 6/8] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- piptools/_compat/__init__.py | 2 +- piptools/scripts/compile.py | 2 +- piptools/scripts/sync.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/piptools/_compat/__init__.py b/piptools/_compat/__init__.py index 518a82e63..b2cbad4de 100644 --- a/piptools/_compat/__init__.py +++ b/piptools/_compat/__init__.py @@ -1,4 +1,4 @@ -from .pip_compat import PIP_VERSION, parse_requirements from .click_compat import IS_CLICK_VER_8_PLUS +from .pip_compat import PIP_VERSION, parse_requirements __all__ = ["PIP_VERSION", "IS_CLICK_VER_8_PLUS", "parse_requirements"] diff --git a/piptools/scripts/compile.py b/piptools/scripts/compile.py index e8dc208d3..c001e4619 100755 --- a/piptools/scripts/compile.py +++ b/piptools/scripts/compile.py @@ -12,7 +12,7 @@ from pip._internal.req.constructors import install_req_from_line from pip._internal.utils.misc import redact_auth_from_url -from .._compat import parse_requirements, IS_CLICK_VER_8_PLUS +from .._compat import IS_CLICK_VER_8_PLUS, parse_requirements from ..cache import DependencyCache from ..exceptions import PipToolsError from ..locations import CACHE_DIR diff --git a/piptools/scripts/sync.py b/piptools/scripts/sync.py index 0c273b47d..ea2345439 100755 --- a/piptools/scripts/sync.py +++ b/piptools/scripts/sync.py @@ -11,7 +11,7 @@ from pip._internal.utils.misc import get_installed_distributions from .. import sync -from .._compat import parse_requirements, IS_CLICK_VER_8_PLUS +from .._compat import IS_CLICK_VER_8_PLUS, parse_requirements from ..exceptions import PipToolsError from ..logging import log from ..repositories import PyPIRepository From 462fb9cd41348e38de5f19d232c4fe5ba2be8602 Mon Sep 17 00:00:00 2001 From: Nico Albers Date: Thu, 27 May 2021 17:14:49 +0200 Subject: [PATCH 7/8] name variable corresponding to click major version properly --- piptools/_compat/click_compat.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/piptools/_compat/click_compat.py b/piptools/_compat/click_compat.py index 09932c82f..078f0fc9f 100644 --- a/piptools/_compat/click_compat.py +++ b/piptools/_compat/click_compat.py @@ -1,5 +1,5 @@ import click from pip._vendor.packaging.version import Version -CLICK_VERSION = Version(click.__version__).major -IS_CLICK_VER_8_PLUS = CLICK_VERSION > 7 +CLICK_MAJOR_VERSION = Version(click.__version__).major +IS_CLICK_VER_8_PLUS = CLICK_MAJOR_VERSION > 7 From bc2034f8937e10bf78a8bfbdfbf895283c4016c2 Mon Sep 17 00:00:00 2001 From: Nico Albers Date: Thu, 27 May 2021 22:39:01 +0200 Subject: [PATCH 8/8] get rid of dependency on pip vendored packages --- piptools/_compat/__init__.py | 2 +- piptools/_compat/click.py | 7 +++++++ piptools/_compat/click_compat.py | 5 ----- 3 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 piptools/_compat/click.py delete mode 100644 piptools/_compat/click_compat.py diff --git a/piptools/_compat/__init__.py b/piptools/_compat/__init__.py index b2cbad4de..cdc47e771 100644 --- a/piptools/_compat/__init__.py +++ b/piptools/_compat/__init__.py @@ -1,4 +1,4 @@ -from .click_compat import IS_CLICK_VER_8_PLUS +from .click import IS_CLICK_VER_8_PLUS from .pip_compat import PIP_VERSION, parse_requirements __all__ = ["PIP_VERSION", "IS_CLICK_VER_8_PLUS", "parse_requirements"] diff --git a/piptools/_compat/click.py b/piptools/_compat/click.py new file mode 100644 index 000000000..a0e4da612 --- /dev/null +++ b/piptools/_compat/click.py @@ -0,0 +1,7 @@ +import click + +CLICK_MAJOR_VERSION = int( + # extract major version of click + click.__version__.split(".")[0] +) +IS_CLICK_VER_8_PLUS = CLICK_MAJOR_VERSION > 7 diff --git a/piptools/_compat/click_compat.py b/piptools/_compat/click_compat.py deleted file mode 100644 index 078f0fc9f..000000000 --- a/piptools/_compat/click_compat.py +++ /dev/null @@ -1,5 +0,0 @@ -import click -from pip._vendor.packaging.version import Version - -CLICK_MAJOR_VERSION = Version(click.__version__).major -IS_CLICK_VER_8_PLUS = CLICK_MAJOR_VERSION > 7