From b77631734b986633bcd4687e32d989a371bc5c78 Mon Sep 17 00:00:00 2001 From: Albert Tugushev Date: Sun, 13 Nov 2022 02:32:37 +0100 Subject: [PATCH] Deprecate `pip-compile --resolver=legacy` (#1724) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Sorin Sbarnea Resolves https://github.com/jazzband/pip-tools/issues/1659 --- README.rst | 2 ++ piptools/scripts/compile.py | 7 +++++++ tests/test_cli_compile.py | 14 ++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/README.rst b/README.rst index a540240b9..153e3ea73 100644 --- a/README.rst +++ b/README.rst @@ -571,6 +571,8 @@ This section lists ``pip-tools`` features that are currently deprecated. default. Use ``--no-allow-unsafe`` to keep the old behavior. It is recommended to pass the ``--allow-unsafe`` now to adapt to the upcoming change. +- Legacy resolver is deprecated and will be removed in future versions. + Use ``--resolver=backtracking`` instead. A Note on Resolvers =================== diff --git a/piptools/scripts/compile.py b/piptools/scripts/compile.py index c0d9fbf5b..1a01c5d05 100755 --- a/piptools/scripts/compile.py +++ b/piptools/scripts/compile.py @@ -378,6 +378,13 @@ def cli( if isinstance(output_file, LazyFile): # pragma: no cover ctx.call_on_close(safecall(output_file.close_intelligently)) + if resolver_name == "legacy": + log.warning( + "WARNING: using legacy resolver is deprecated and will be removed in " + "future versions. The default resolver will be change to 'backtracking' " + "in 7.0.0 version. Specify --resolver=backtracking to silence this warning." + ) + ### # Setup ### diff --git a/tests/test_cli_compile.py b/tests/test_cli_compile.py index 300f142f2..1b5016782 100644 --- a/tests/test_cli_compile.py +++ b/tests/test_cli_compile.py @@ -2546,3 +2546,17 @@ def test_failure_of_legacy_resolver_prompts_for_backtracking( assert out.exit_code == 0, out else: # pragma: no cover raise AssertionError("unreachable") + + +def test_print_deprecation_warning_if_using_legacy_resolver(runner, current_resolver): + with open("requirements.in", "w"): + pass + + out = runner.invoke(cli) + assert out.exit_code == 0, out + + expected_warning = "WARNING: using legacy resolver is deprecated" + if current_resolver == "legacy": + assert expected_warning in out.stderr + else: + assert expected_warning not in out.stderr