Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-poetry for openSUSE:Factory checked in at 2022-08-27 11:50:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-poetry (Old) and /work/SRC/openSUSE:Factory/.python-poetry.new.2083 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-poetry" Sat Aug 27 11:50:06 2022 rev:17 rq:999443 version:1.1.15 Changes: -------- --- /work/SRC/openSUSE:Factory/python-poetry/python-poetry.changes 2022-07-10 23:15:17.144944765 +0200 +++ /work/SRC/openSUSE:Factory/.python-poetry.new.2083/python-poetry.changes 2022-08-27 11:50:09.201851229 +0200 @@ -1,0 +2,9 @@ +Fri Aug 26 16:23:30 UTC 2022 - Ben Greiner <c...@bnavigator.de> + +- Update to 1.1.15 + * Poetry now fallback to gather metadata for dependencies via + pep517 if parsing pyproject.toml fail (#6206) + * Extras and extras dependencies are now sorted in lock file + (#6207) + +------------------------------------------------------------------- Old: ---- poetry-1.1.14.tar.gz New: ---- poetry-1.1.15.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-poetry.spec ++++++ --- /var/tmp/diff_new_pack.lME4PG/_old 2022-08-27 11:50:09.825852570 +0200 +++ /var/tmp/diff_new_pack.lME4PG/_new 2022-08-27 11:50:09.829852578 +0200 @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python3-%{**}} %define skip_python2 1 Name: python-poetry -Version: 1.1.14 +Version: 1.1.15 Release: 0 Summary: Python dependency management and packaging License: MIT @@ -37,33 +37,36 @@ BuildRequires: %{python_module cachy >= 0.3.0} BuildRequires: %{python_module cleo >= 0.8.1} BuildRequires: %{python_module clikit >= 0.6.2} +BuildRequires: %{python_module crashtest >= 0.3.0} BuildRequires: %{python_module html5lib >= 1.0} BuildRequires: %{python_module importlib-metadata if %python-base < 3.6} BuildRequires: %{python_module keyring >= 21.2.0} # cachecontrol[filecache] BuildRequires: %{python_module lockfile >= 0.9} BuildRequires: %{python_module packaging >= 20.4} +BuildRequires: %{python_module pexpect >= 4.7.0} BuildRequires: %{python_module pip} -BuildRequires: %{python_module pkginfo >= 1.5} +BuildRequires: %{python_module pkginfo >= 1.4} BuildRequires: %{python_module poetry-core >= 1.0.7} BuildRequires: %{python_module requests >= 2.18} BuildRequires: %{python_module requests-toolbelt >= 0.9.1} BuildRequires: %{python_module shellingham >= 1.1} BuildRequires: %{python_module tomlkit >= 0.7.0} -BuildRequires: %{python_module virtualenv} +BuildRequires: %{python_module virtualenv >= 20.0.26} BuildRequires: fdupes BuildRequires: python-rpm-macros Requires: python-CacheControl >= 0.12.9 Requires: python-cachy >= 0.3.0 -Requires: python-cleo >= 0.8.0 +Requires: python-cleo >= 0.8.1 Requires: python-clikit >= 0.6.2 +Requires: python-crashtest >= 0.3.0 Requires: python-html5lib >= 1.0 Requires: python-keyring >= 21.2.0 # cachecontrol[filecache] Requires: python-lockfile >= 0.9 Requires: python-packaging >= 20.4 Requires: python-pexpect >= 4.7.0 -Requires: python-pkginfo >= 1.5 +Requires: python-pkginfo >= 1.4 Requires: python-poetry-core >= 1.0.7 Requires: python-requests >= 2.18 Requires: python-requests-toolbelt >= 0.9.1 ++++++ poetry-1.1.14.tar.gz -> poetry-1.1.15.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poetry-1.1.14/CHANGELOG.md new/poetry-1.1.15/CHANGELOG.md --- old/poetry-1.1.14/CHANGELOG.md 2022-07-08 15:30:02.000000000 +0200 +++ new/poetry-1.1.15/CHANGELOG.md 2022-08-22 12:34:10.000000000 +0200 @@ -1,14 +1,21 @@ # Change Log +## [1.1.15] - 2022-08-22 + +### Changed + +- Poetry now fallback to gather metadata for dependencies via pep517 if parsing pyproject.toml fail ([#6206](https://github.com/python-poetry/poetry/pull/6206)) +- Extras and extras dependencies are now sorted in lock file ([#6207](https://github.com/python-poetry/poetry/pull/6207)) + ## [1.1.14] - 2022-07-08 -## Fixed +### Fixed - Fixed an issue where dependencies hashes could not be retrieved when locking due to a breaking change on PyPI JSON API ([#5973](https://github.com/python-poetry/poetry/pull/5973)) ## [1.1.13] - 2022-02-09 -## Fixed +### Fixed - Fixed an issue where envs in MSYS2 always reported as broken ([#4942](https://github.com/python-poetry/poetry/pull/4942)) - Fixed an issue where conda envs in windows are always reported as broken ([#5008](https://github.com/python-poetry/poetry/pull/5008)) @@ -1183,7 +1190,8 @@ -[Unreleased]: https://github.com/python-poetry/poetry/compare/1.1.14...1.1 +[Unreleased]: https://github.com/python-poetry/poetry/compare/1.1.15...1.1 +[1.1.15]: https://github.com/python-poetry/poetry/releases/tag/1.1.15 [1.1.14]: https://github.com/python-poetry/poetry/releases/tag/1.1.14 [1.1.13]: https://github.com/python-poetry/poetry/releases/tag/1.1.13 [1.1.12]: https://github.com/python-poetry/poetry/releases/tag/1.1.12 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poetry-1.1.14/docs/_index.md new/poetry-1.1.15/docs/_index.md --- old/poetry-1.1.14/docs/_index.md 2022-07-08 15:30:02.000000000 +0200 +++ new/poetry-1.1.15/docs/_index.md 2022-08-22 12:34:10.000000000 +0200 @@ -32,10 +32,10 @@ from the rest of your system by vendorizing its dependencies. This is the recommended way of installing `poetry`. -{{% note %}} -The `get-poetry.py` script described here will be replaced in Poetry 1.2 by `install-poetry.py`. +{{% warning %}} +The `get-poetry.py` script described here will be replaced in Poetry 1.2 by `install.python-poetry.org`. From Poetry **1.1.7 onwards**, you can already use this script as described [here]({{< relref "docs/master/#installation" >}}). -{{% /note %}} +{{% /warning %}} ### osx / linux / bashonwindows install instructions ```bash diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poetry-1.1.14/poetry/__version__.py new/poetry-1.1.15/poetry/__version__.py --- old/poetry-1.1.14/poetry/__version__.py 2022-07-08 15:30:02.000000000 +0200 +++ new/poetry-1.1.15/poetry/__version__.py 2022-08-22 12:34:10.000000000 +0200 @@ -1 +1 @@ -__version__ = "1.1.14" +__version__ = "1.1.15" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poetry-1.1.14/poetry/inspection/info.py new/poetry-1.1.15/poetry/inspection/info.py --- old/poetry-1.1.14/poetry/inspection/info.py 2022-07-08 15:30:02.000000000 +0200 +++ new/poetry-1.1.15/poetry/inspection/info.py 2022-08-22 12:34:10.000000000 +0200 @@ -437,7 +437,12 @@ # Note: we ignore any setup.py file at this step # TODO: add support for handling non-poetry PEP-517 builds if PyProjectTOML(path.joinpath("pyproject.toml")).is_poetry_project(): - return Factory().create_poetry(path).package + try: + return Factory().create_poetry(path).package + except RuntimeError: + return None + + return None @classmethod def _pep517_metadata(cls, path): # type (Path) -> PackageInfo diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poetry-1.1.14/poetry/installation/executor.py new/poetry-1.1.15/poetry/installation/executor.py --- old/poetry-1.1.14/poetry/installation/executor.py 2022-07-08 15:30:02.000000000 +0200 +++ new/poetry-1.1.15/poetry/installation/executor.py 2022-08-22 12:34:10.000000000 +0200 @@ -513,34 +513,39 @@ legacy_pip = self._env.pip_version < self._env.pip_version.__class__( 19, 0, 0 ) - package_poetry = Factory().create_poetry(pyproject.file.path.parent) - if package.develop and not package_poetry.package.build_script: - from poetry.masonry.builders.editable import EditableBuilder + try: + package_poetry = Factory().create_poetry(pyproject.file.path.parent) + except RuntimeError: + package_poetry = None + + if package_poetry is not None: + if package.develop and not package_poetry.package.build_script: + from poetry.masonry.builders.editable import EditableBuilder + + # This is a Poetry package in editable mode + # we can use the EditableBuilder without going through pip + # to install it, unless it has a build script. + builder = EditableBuilder(package_poetry, self._env, NullIO()) + builder.build() + + return 0 + elif legacy_pip or package_poetry.package.build_script: + from poetry.core.masonry.builders.sdist import SdistBuilder + + # We need to rely on creating a temporary setup.py + # file since the version of pip does not support + # build-systems + # We also need it for non-PEP-517 packages + builder = SdistBuilder(package_poetry) + + with builder.setup_py(): + if package.develop: + args.append("-e") - # This is a Poetry package in editable mode - # we can use the EditableBuilder without going through pip - # to install it, unless it has a build script. - builder = EditableBuilder(package_poetry, self._env, NullIO()) - builder.build() - - return 0 - elif legacy_pip or package_poetry.package.build_script: - from poetry.core.masonry.builders.sdist import SdistBuilder - - # We need to rely on creating a temporary setup.py - # file since the version of pip does not support - # build-systems - # We also need it for non-PEP-517 packages - builder = SdistBuilder(package_poetry) - - with builder.setup_py(): - if package.develop: - args.append("-e") + args.append(req) - args.append(req) - - return self.run_pip(*args) + return self.run_pip(*args) if package.develop: args.append("-e") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poetry-1.1.14/poetry/installation/pip_installer.py new/poetry-1.1.15/poetry/installation/pip_installer.py --- old/poetry-1.1.14/poetry/installation/pip_installer.py 2022-07-08 15:30:02.000000000 +0200 +++ new/poetry-1.1.15/poetry/installation/pip_installer.py 2022-08-22 12:34:10.000000000 +0200 @@ -202,34 +202,39 @@ legacy_pip = self._env.pip_version < self._env.pip_version.__class__( 19, 0, 0 ) - package_poetry = Factory().create_poetry(pyproject.file.path.parent) - if package.develop and not package_poetry.package.build_script: - from poetry.masonry.builders.editable import EditableBuilder + try: + package_poetry = Factory().create_poetry(pyproject.file.path.parent) + except RuntimeError: + package_poetry = None + + if package_poetry is not None: + if package.develop and not package_poetry.package.build_script: + from poetry.masonry.builders.editable import EditableBuilder + + # This is a Poetry package in editable mode + # we can use the EditableBuilder without going through pip + # to install it, unless it has a build script. + builder = EditableBuilder(package_poetry, self._env, NullIO()) + builder.build() + + return 0 + elif legacy_pip or package_poetry.package.build_script: + from poetry.core.masonry.builders.sdist import SdistBuilder + + # We need to rely on creating a temporary setup.py + # file since the version of pip does not support + # build-systems + # We also need it for non-PEP-517 packages + builder = SdistBuilder(package_poetry) + + with builder.setup_py(): + if package.develop: + args.append("-e") - # This is a Poetry package in editable mode - # we can use the EditableBuilder without going through pip - # to install it, unless it has a build script. - builder = EditableBuilder(package_poetry, self._env, NullIO()) - builder.build() - - return 0 - elif legacy_pip or package_poetry.package.build_script: - from poetry.core.masonry.builders.sdist import SdistBuilder - - # We need to rely on creating a temporary setup.py - # file since the version of pip does not support - # build-systems - # We also need it for non-PEP-517 packages - builder = SdistBuilder(package_poetry) - - with builder.setup_py(): - if package.develop: - args.append("-e") + args.append(req) - args.append(req) - - return self.run(*args) + return self.run(*args) if package.develop: args.append("-e") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poetry-1.1.14/poetry/packages/locker.py new/poetry-1.1.15/poetry/packages/locker.py --- old/poetry-1.1.14/poetry/packages/locker.py 2022-07-08 15:30:02.000000000 +0200 +++ new/poetry-1.1.15/poetry/packages/locker.py 2022-08-22 12:34:10.000000000 +0200 @@ -570,14 +570,14 @@ data["dependencies"][k].append(constraint) if package.extras: - extras = {} - for name, deps in package.extras.items(): + extras = OrderedDict() + for name, deps in sorted(package.extras.items()): # TODO: This should use dep.to_pep_508() once this is fixed # https://github.com/python-poetry/poetry-core/pull/102 - extras[name] = [ + extras[name] = sorted( dep.base_pep_508_name if not dep.constraint.is_any() else dep.name for dep in deps - ] + ) data["extras"] = extras diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poetry-1.1.14/pyproject.toml new/poetry-1.1.15/pyproject.toml --- old/poetry-1.1.14/pyproject.toml 2022-07-08 15:30:02.000000000 +0200 +++ new/poetry-1.1.15/pyproject.toml 2022-08-22 12:34:10.000000000 +0200 @@ -1,6 +1,6 @@ [tool.poetry] name = "poetry" -version = "1.1.14" +version = "1.1.15" description = "Python dependency management and packaging made easy." authors = [ "S??bastien Eustace <sebast...@eustace.io>" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poetry-1.1.14/tests/fixtures/inspection/demo_poetry_package/pyproject.toml new/poetry-1.1.15/tests/fixtures/inspection/demo_poetry_package/pyproject.toml --- old/poetry-1.1.14/tests/fixtures/inspection/demo_poetry_package/pyproject.toml 1970-01-01 01:00:00.000000000 +0100 +++ new/poetry-1.1.15/tests/fixtures/inspection/demo_poetry_package/pyproject.toml 2022-08-22 12:34:10.000000000 +0200 @@ -0,0 +1,15 @@ +[tool.poetry] +name = "demo-poetry" +version = "0.1.0" +description = "" +authors = ["John Doe <j...@example.com.com>"] + +[tool.poetry.dependencies] +python = "^3.10" +pendulum = "*" + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poetry-1.1.14/tests/inspection/test_info.py new/poetry-1.1.15/tests/inspection/test_info.py --- old/poetry-1.1.14/tests/inspection/test_info.py 2022-07-08 15:30:02.000000000 +0200 +++ new/poetry-1.1.15/tests/inspection/test_info.py 2022-08-22 12:34:10.000000000 +0200 @@ -127,6 +127,22 @@ demo_check_info(info) +def test_info_from_poetry_directory_fallback_on_poetry_create_error(mocker): + mock_create_poetry = mocker.patch( + "poetry.inspection.info.Factory.create_poetry", side_effect=RuntimeError + ) + mock_get_poetry_package = mocker.spy(PackageInfo, "_get_poetry_package") + mock_get_pep517_metadata = mocker.patch( + "poetry.inspection.info.PackageInfo._pep517_metadata" + ) + + PackageInfo.from_directory(FIXTURE_DIR_INSPECTIONS / "demo_poetry_package") + + assert mock_create_poetry.call_count == 1 + assert mock_get_poetry_package.call_count == 1 + assert mock_get_pep517_metadata.call_count == 1 + + def test_info_from_requires_txt(): info = PackageInfo.from_metadata( FIXTURE_DIR_INSPECTIONS / "demo_only_requires_txt.egg-info" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poetry-1.1.14/tests/installation/fixtures/with-pypi-repository.test new/poetry-1.1.15/tests/installation/fixtures/with-pypi-repository.test --- old/poetry-1.1.14/tests/installation/fixtures/with-pypi-repository.test 2022-07-08 15:30:02.000000000 +0200 +++ new/poetry-1.1.15/tests/installation/fixtures/with-pypi-repository.test 2022-08-22 12:34:10.000000000 +0200 @@ -7,7 +7,7 @@ python-versions = "*" [package.extras] -dev = ["coverage", "hypothesis", "pympler", "pytest", "six", "zope.interface", "sphinx", "zope.interface"] +dev = ["coverage", "hypothesis", "pympler", "pytest", "six", "sphinx", "zope.interface", "zope.interface"] docs = ["sphinx", "zope.interface"] tests = ["coverage", "hypothesis", "pympler", "pytest", "six", "zope.interface"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poetry-1.1.14/tests/installation/test_executor.py new/poetry-1.1.15/tests/installation/test_executor.py --- old/poetry-1.1.14/tests/installation/test_executor.py 2022-07-08 15:30:02.000000000 +0200 +++ new/poetry-1.1.15/tests/installation/test_executor.py 2022-08-22 12:34:10.000000000 +0200 @@ -358,3 +358,53 @@ ) assert archive == link_cached + + +def test_executer_fallback_on_poetry_create_error( + mocker, config, pool, io, tmp_dir, mock_file_downloads, +): + import poetry.installation.executor + + mock_pip_install = mocker.patch.object( + poetry.installation.executor.Executor, "run_pip" + ) + mock_sdist_builder = mocker.patch("poetry.core.masonry.builders.sdist.SdistBuilder") + mock_editable_builder = mocker.patch( + "poetry.masonry.builders.editable.EditableBuilder" + ) + mock_create_poetry = mocker.patch( + "poetry.factory.Factory.create_poetry", side_effect=RuntimeError + ) + + config.merge({"cache-dir": tmp_dir}) + + env = MockEnv(path=Path(tmp_dir)) + executor = Executor(env, pool, config, io) + + directory_package = Package( + "simple-project", + "1.2.3", + source_type="directory", + source_url=Path(__file__) + .parent.parent.joinpath("fixtures/simple_project") + .resolve() + .as_posix(), + ) + + return_code = executor.execute([Install(directory_package)]) + + expected = """ +Package operations: 1 install, 0 updates, 0 removals + ??? Installing simple-project (1.2.3 {source_url}) +""".format( + source_url=directory_package.source_url + ) + + expected = set(expected.splitlines()) + output = set(io.fetch_output().splitlines()) + assert output == expected + assert return_code == 0 + assert mock_create_poetry.call_count == 1 + assert mock_sdist_builder.call_count == 0 + assert mock_editable_builder.call_count == 0 + assert mock_pip_install.call_count == 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poetry-1.1.14/tests/installation/test_pip_installer.py new/poetry-1.1.15/tests/installation/test_pip_installer.py --- old/poetry-1.1.14/tests/installation/test_pip_installer.py 2022-07-08 15:30:02.000000000 +0200 +++ new/poetry-1.1.15/tests/installation/test_pip_installer.py 2022-08-22 12:34:10.000000000 +0200 @@ -216,3 +216,35 @@ # any command in the virtual environment should trigger the error message output = tmp_venv.run("python", "-m", "site") assert "Error processing line 1 of {}".format(pth_file_candidate) not in output + + +def test_install_directory_fallback_on_poetry_create_error(mocker, tmp_venv, pool): + import poetry.installation.pip_installer + + mock_create_poetry = mocker.patch( + "poetry.factory.Factory.create_poetry", side_effect=RuntimeError + ) + mock_sdist_builder = mocker.patch("poetry.core.masonry.builders.sdist.SdistBuilder") + mock_editable_builder = mocker.patch( + "poetry.masonry.builders.editable.EditableBuilder" + ) + mock_pip_install = mocker.patch.object( + poetry.installation.pip_installer.PipInstaller, "run" + ) + + package = Package( + "demo", + "1.0.0", + source_type="directory", + source_url=str( + Path(__file__).parent.parent / "fixtures/inspection/demo_poetry_package" + ), + ) + + installer = PipInstaller(tmp_venv, NullIO(), pool) + installer.install_directory(package) + + assert mock_create_poetry.call_count == 1 + assert mock_sdist_builder.call_count == 0 + assert mock_editable_builder.call_count == 0 + assert mock_pip_install.call_count == 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poetry-1.1.14/tests/packages/test_locker.py new/poetry-1.1.15/tests/packages/test_locker.py --- old/poetry-1.1.14/tests/packages/test_locker.py 2022-07-08 15:30:02.000000000 +0200 +++ new/poetry-1.1.15/tests/packages/test_locker.py 2022-08-22 12:34:10.000000000 +0200 @@ -598,6 +598,49 @@ assert expected == content +def test_locker_dumps_dependency_extras_in_correct_order(locker, root): + root_dir = Path(__file__).parent.parent.joinpath("fixtures") + package_a = get_package("A", "1.0.0") + Factory.create_dependency("B", "1.0.0", root_dir=root_dir) + Factory.create_dependency("C", "1.0.0", root_dir=root_dir) + package_first = Factory.create_dependency("first", "1.0.0", root_dir=root_dir) + package_second = Factory.create_dependency("second", "1.0.0", root_dir=root_dir) + package_third = Factory.create_dependency("third", "1.0.0", root_dir=root_dir) + + package_a.extras = { + "C": [package_third, package_second, package_first], + "B": [package_first, package_second, package_third], + } + + locker.set_lock_data(root, [package_a]) + + with locker.lock.open(encoding="utf-8") as f: + content = f.read() + + expected = """[[package]] +name = "A" +version = "1.0.0" +description = "" +category = "main" +optional = false +python-versions = "*" + +[package.extras] +B = ["first (==1.0.0)", "second (==1.0.0)", "third (==1.0.0)"] +C = ["first (==1.0.0)", "second (==1.0.0)", "third (==1.0.0)"] + +[metadata] +lock-version = "1.1" +python-versions = "*" +content-hash = "115cf985d932e9bf5f540555bbdd75decbb62cac81e399375fc19f6277f8c1d8" + +[metadata.files] +A = [] +""" + + assert content == expected + + @pytest.mark.skipif(sys.version_info[:2] == (3, 5), reason="Skip for Python 3.5") def test_locked_repository_uses_root_dir_of_package(locker, mocker): content = """\