Hello community, here is the log from the commit of package python-importlib-metadata for openSUSE:Factory checked in at 2020-03-08 22:23:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-importlib-metadata (Old) and /work/SRC/openSUSE:Factory/.python-importlib-metadata.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-importlib-metadata" Sun Mar 8 22:23:00 2020 rev:9 rq:782612 version:1.5.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-importlib-metadata/python-importlib-metadata.changes 2020-01-20 22:50:12.731222741 +0100 +++ /work/SRC/openSUSE:Factory/.python-importlib-metadata.new.26092/python-importlib-metadata.changes 2020-03-08 22:23:05.744038897 +0100 @@ -1,0 +2,14 @@ +Sun Mar 8 04:09:30 UTC 2020 - Tomáš Chvátal <tchva...@suse.com> + +- Switch to multibuild in order to avoid buildcycles + +------------------------------------------------------------------- +Fri Feb 28 22:56:32 UTC 2020 - Dirk Mueller <dmuel...@suse.com> + +- update to 1.5.0: + * Additional performance optimizations in FastPath now + saves an additional 20% on a typical call. + * Correct for issue where PyOxidizer finder has no + ``__module__`` attribute. Closes #110. + +------------------------------------------------------------------- Old: ---- importlib_metadata-1.4.0.tar.gz New: ---- _multibuild importlib_metadata-1.5.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-importlib-metadata.spec ++++++ --- /var/tmp/diff_new_pack.haN8j4/_old 2020-03-08 22:23:07.792040161 +0100 +++ /var/tmp/diff_new_pack.haN8j4/_new 2020-03-08 22:23:07.796040163 +0100 @@ -20,28 +20,37 @@ %if %{python3_version_nodots} >= 38 %define skip_python3 1 %endif -Name: python-importlib-metadata -Version: 1.4.0 +%global flavor @BUILD_FLAVOR@%{nil} +%if "%{flavor}" == "test" +%define psuffix -test +%bcond_without test +%else +%define psuffix %{nil} +%bcond_with test +%endif +Name: python-importlib-metadata%{psuffix} +Version: 1.5.0 Release: 0 Summary: Tool to read metadata from Python packages License: Apache-2.0 -Group: Development/Languages/Python URL: https://gitlab.com/python-devs/importlib_metadata Source: https://files.pythonhosted.org/packages/source/i/importlib_metadata/importlib_metadata-%{version}.tar.gz -BuildRequires: %{python_module packaging} -BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools_scm} BuildRequires: %{python_module setuptools} -BuildRequires: %{python_module wheel} -BuildRequires: %{python_module zipp >= 0.5} BuildRequires: fdupes -BuildRequires: python-importlib_resources BuildRequires: python-rpm-macros -BuildRequires: python2-configparser >= 3.5 -BuildRequires: python2-contextlib2 Requires: python-zipp >= 0.5 Provides: python-importlib_metadata = %{version} BuildArch: noarch +%if %{with test} +BuildRequires: %{python_module packaging} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module pyfakefs} +BuildRequires: %{python_module wheel} +BuildRequires: %{python_module zipp >= 0.5} +BuildRequires: python-importlib_resources +BuildRequires: python2-configparser >= 3.5 +BuildRequires: python2-contextlib2 %if %{?suse_version} <= 1500 BuildRequires: python3-importlib_resources %endif @@ -50,6 +59,7 @@ %else BuildRequires: python-pathlib2 %endif +%endif %ifpython2 Requires: python-configparser >= 3.5 Requires: python-contextlib2 @@ -68,15 +78,21 @@ %python_build %install +%if !%{with test} %python_install %python_expand %fdupes %{buildroot}%{$python_sitelib} +%endif %check -%python_exec -m unittest discover +%if %{with test} +%python_exec -m unittest discover -v +%endif +%if !%{with test} %files %{python_files} %doc README.rst %license LICENSE %{python_sitelib}/* +%endif %changelog ++++++ _multibuild ++++++ <multibuild> <package>test</package> </multibuild> ++++++ importlib_metadata-1.4.0.tar.gz -> importlib_metadata-1.5.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_metadata-1.4.0/.gitlab-ci.yml new/importlib_metadata-1.5.0/.gitlab-ci.yml --- old/importlib_metadata-1.4.0/.gitlab-ci.yml 2020-01-11 01:18:29.000000000 +0100 +++ new/importlib_metadata-1.5.0/.gitlab-ci.yml 2020-01-29 05:15:02.000000000 +0100 @@ -22,6 +22,10 @@ paths: - coverage.xml +benchmark: + script: + - tox -e perf + diffcov: script: - tox -e py27-diffcov,py35-diffcov,py36-diffcov,py37-diffcov,py38-diffcov diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_metadata-1.4.0/PKG-INFO new/importlib_metadata-1.5.0/PKG-INFO --- old/importlib_metadata-1.4.0/PKG-INFO 2020-01-11 01:18:51.000000000 +0100 +++ new/importlib_metadata-1.5.0/PKG-INFO 2020-01-29 05:15:30.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: importlib_metadata -Version: 1.4.0 +Version: 1.5.0 Summary: Read metadata from Python packages Home-page: http://importlib-metadata.readthedocs.io/ Author: Barry Warsaw diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_metadata-1.4.0/importlib_metadata/__init__.py new/importlib_metadata-1.5.0/importlib_metadata/__init__.py --- old/importlib_metadata-1.4.0/importlib_metadata/__init__.py 2020-01-11 01:18:29.000000000 +0100 +++ new/importlib_metadata-1.5.0/importlib_metadata/__init__.py 2020-01-29 05:15:02.000000000 +0100 @@ -408,6 +408,7 @@ def __init__(self, root): self.root = root + self.base = os.path.basename(root).lower() def joinpath(self, child): return pathlib.Path(self.root, child) @@ -430,12 +431,11 @@ ) def is_egg(self, search): - root_n_low = os.path.split(self.root)[1].lower() - + base = self.base return ( - root_n_low == search.normalized + '.egg' - or root_n_low.startswith(search.prefix) - and root_n_low.endswith('.egg')) + base == search.versionless_egg_name + or base.startswith(search.prefix) + and base.endswith('.egg')) def search(self, name): for child in self.children(): @@ -456,6 +456,7 @@ prefix = '' suffixes = '.dist-info', '.egg-info' exact_matches = [''][:0] + versionless_egg_name = '' def __init__(self, name): self.name = name @@ -465,6 +466,7 @@ self.prefix = self.normalized + '-' self.exact_matches = [ self.normalized + suffix for suffix in self.suffixes] + self.versionless_egg_name = self.normalized + '.egg' @install diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_metadata-1.4.0/importlib_metadata/_compat.py new/importlib_metadata-1.5.0/importlib_metadata/_compat.py --- old/importlib_metadata-1.4.0/importlib_metadata/_compat.py 2020-01-11 01:18:29.000000000 +0100 +++ new/importlib_metadata-1.5.0/importlib_metadata/_compat.py 2020-01-29 05:15:02.000000000 +0100 @@ -73,7 +73,7 @@ """ def matches(finder): return ( - finder.__module__ == '_frozen_importlib_external' + getattr(finder, '__module__', None) == '_frozen_importlib_external' and hasattr(finder, 'find_distributions') ) for finder in filter(matches, sys.meta_path): # pragma: nocover diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_metadata-1.4.0/importlib_metadata/docs/changelog.rst new/importlib_metadata-1.5.0/importlib_metadata/docs/changelog.rst --- old/importlib_metadata-1.4.0/importlib_metadata/docs/changelog.rst 2020-01-11 01:18:29.000000000 +0100 +++ new/importlib_metadata-1.5.0/importlib_metadata/docs/changelog.rst 2020-01-29 05:15:02.000000000 +0100 @@ -2,6 +2,14 @@ importlib_metadata NEWS ========================= +v1.5.0 +====== + +* Additional performance optimizations in FastPath now + saves an additional 20% on a typical call. +* Correct for issue where PyOxidizer finder has no + ``__module__`` attribute. Closes #110. + v1.4.0 ====== @@ -9,6 +17,11 @@ 3-4x faster. Thanks to Antony Lee for the contribution. Closes #95. +* When searching through ``sys.path``, if any error + occurs attempting to list a path entry, that entry + is skipped, making the system much more lenient + to errors. Closes #94. + v1.3.0 ====== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_metadata-1.4.0/importlib_metadata/tests/fixtures.py new/importlib_metadata-1.5.0/importlib_metadata/tests/fixtures.py --- old/importlib_metadata-1.4.0/importlib_metadata/tests/fixtures.py 2020-01-11 01:18:29.000000000 +0100 +++ new/importlib_metadata-1.5.0/importlib_metadata/tests/fixtures.py 2020-01-29 05:15:02.000000000 +0100 @@ -47,14 +47,28 @@ yield tmp -class SiteDir: +@contextlib.contextmanager +def install_finder(finder): + sys.meta_path.append(finder) + try: + yield + finally: + sys.meta_path.remove(finder) + + +class Fixtures: def setUp(self): self.fixtures = ExitStack() self.addCleanup(self.fixtures.close) + + +class SiteDir(Fixtures): + def setUp(self): + super(SiteDir, self).setUp() self.site_dir = self.fixtures.enter_context(tempdir()) -class OnSysPath: +class OnSysPath(Fixtures): @staticmethod @contextlib.contextmanager def add_sys_path(dir): @@ -198,3 +212,8 @@ def DALS(str): "Dedent and left-strip" return textwrap.dedent(str).lstrip() + + +class NullFinder: + def find_module(self, name): + pass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_metadata-1.4.0/importlib_metadata/tests/test_integration.py new/importlib_metadata-1.5.0/importlib_metadata/tests/test_integration.py --- old/importlib_metadata-1.4.0/importlib_metadata/tests/test_integration.py 2020-01-11 01:18:29.000000000 +0100 +++ new/importlib_metadata-1.5.0/importlib_metadata/tests/test_integration.py 2020-01-29 05:15:02.000000000 +0100 @@ -3,7 +3,10 @@ import packaging.version from . import fixtures -from .. import version +from .. import ( + _compat, + version, + ) class IntegrationTests(fixtures.DistInfoPkg, unittest.TestCase): @@ -20,3 +23,20 @@ assert is_installed('distinfo-pkg==1.0') assert is_installed('distinfo-pkg>=1.0,<2.0') assert not is_installed('distinfo-pkg<1.0') + + +class FinderTests(fixtures.Fixtures, unittest.TestCase): + + def test_finder_without_module(self): + class ModuleFreeFinder(fixtures.NullFinder): + """ + A finder without an __module__ attribute + """ + def __getattribute__(self, name): + if name == '__module__': + raise AttributeError(name) + return super().__getattribute__(name) + + self.fixtures.enter_context( + fixtures.install_finder(ModuleFreeFinder())) + _compat.disable_stdlib_finder() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_metadata-1.4.0/importlib_metadata/tests/test_main.py new/importlib_metadata-1.5.0/importlib_metadata/tests/test_main.py --- old/importlib_metadata-1.4.0/importlib_metadata/tests/test_main.py 2020-01-11 01:18:29.000000000 +0100 +++ new/importlib_metadata-1.5.0/importlib_metadata/tests/test_main.py 2020-01-29 05:15:02.000000000 +0100 @@ -8,6 +8,7 @@ import unittest import importlib import importlib_metadata +import pyfakefs.fake_filesystem_unittest as ffs from . import fixtures from .. import ( @@ -193,6 +194,33 @@ version('foo') +class MissingSysPath(fixtures.OnSysPath, unittest.TestCase): + site_dir = '/does-not-exist' + + def test_discovery(self): + """ + Discovering distributions should succeed even if + there is an invalid path on sys.path. + """ + importlib_metadata.distributions() + + +class InaccessibleSysPath(fixtures.OnSysPath, ffs.TestCase): + site_dir = '/access-denied' + + def setUp(self): + super(InaccessibleSysPath, self).setUp() + self.setUpPyfakefs() + self.fs.create_dir(self.site_dir, perm_bits=000) + + def test_discovery(self): + """ + Discovering distributions should succeed even if + there is an invalid path on sys.path. + """ + list(importlib_metadata.distributions()) + + class TestEntryPoints(unittest.TestCase): def __init__(self, *args): super(TestEntryPoints, self).__init__(*args) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_metadata-1.4.0/importlib_metadata.egg-info/PKG-INFO new/importlib_metadata-1.5.0/importlib_metadata.egg-info/PKG-INFO --- old/importlib_metadata-1.4.0/importlib_metadata.egg-info/PKG-INFO 2020-01-11 01:18:51.000000000 +0100 +++ new/importlib_metadata-1.5.0/importlib_metadata.egg-info/PKG-INFO 2020-01-29 05:15:29.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: importlib-metadata -Version: 1.4.0 +Version: 1.5.0 Summary: Read metadata from Python packages Home-page: http://importlib-metadata.readthedocs.io/ Author: Barry Warsaw diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_metadata-1.4.0/importlib_metadata.egg-info/SOURCES.txt new/importlib_metadata-1.5.0/importlib_metadata.egg-info/SOURCES.txt --- old/importlib_metadata-1.4.0/importlib_metadata.egg-info/SOURCES.txt 2020-01-11 01:18:51.000000000 +0100 +++ new/importlib_metadata-1.5.0/importlib_metadata.egg-info/SOURCES.txt 2020-01-29 05:15:30.000000000 +0100 @@ -31,6 +31,5 @@ importlib_metadata/tests/data/__init__.py importlib_metadata/tests/data/example-21.12-py3-none-any.whl importlib_metadata/tests/data/example-21.12-py3.6.egg -pip-wheel-metadata/importlib_metadata.dist-info/top_level.txt prepare/example/setup.py prepare/example/example/__init__.py \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_metadata-1.4.0/pip-wheel-metadata/importlib_metadata.dist-info/top_level.txt new/importlib_metadata-1.5.0/pip-wheel-metadata/importlib_metadata.dist-info/top_level.txt --- old/importlib_metadata-1.4.0/pip-wheel-metadata/importlib_metadata.dist-info/top_level.txt 2020-01-11 01:18:48.000000000 +0100 +++ new/importlib_metadata-1.5.0/pip-wheel-metadata/importlib_metadata.dist-info/top_level.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -importlib_metadata diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlib_metadata-1.4.0/tox.ini new/importlib_metadata-1.5.0/tox.ini --- old/importlib_metadata-1.4.0/tox.ini 2020-01-11 01:18:29.000000000 +0100 +++ new/importlib_metadata-1.5.0/tox.ini 2020-01-29 05:15:02.000000000 +0100 @@ -1,14 +1,13 @@ [tox] -envlist = {py27,py35,py36,py37,py38}{,-cov,-diffcov},qa,docs +envlist = {py27,py35,py36,py37,py38}{,-cov,-diffcov},qa,docs,perf skip_missing_interpreters = True - +minversion = 3.2 +# Ensure that a late version of pip is used even on tox-venv. +requires = + tox-pip-version>=0.0.6 [testenv] -# Pin pip at version less than 19.1, see https://gitlab.com/python-devs/importlib_metadata/issues/54 for background -# Full discussion at https://discuss.python.org/t/pip-19-1-and-installing-in-editable-mode-with-pyproject-toml/1553 -# One liner copied from https://github.com/ansible/molecule/pull/2009/files -install_command = - python -c 'import subprocess, sys; pip_inst_cmd = sys.executable, "-m", "pip", "install"; subprocess.check_call(pip_inst_cmd + ("pip<19.1", )); subprocess.check_call(pip_inst_cmd + tuple(sys.argv[1:]))' {opts} {packages} +pip_version = pip commands = !cov,!diffcov: python -m unittest discover {posargs} cov,diffcov: python -m coverage run {[coverage]rc} -m unittest discover {posargs} @@ -28,6 +27,7 @@ deps = cov,diffcov: coverage>=4.5 diffcov: diff_cover + pyfakefs setenv = cov: COVERAGE_PROCESS_START={[coverage]rcfile} cov: COVERAGE_OPTIONS="-p" @@ -60,6 +60,14 @@ docs +[testenv:perf] +use_develop = False +deps = + ipython +commands = + python -m timeit -s 'import importlib_metadata' -- 'importlib_metadata.distribution("ipython")' + + [testenv:release] basepython = python3 deps =