Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-compat-patcher-core for openSUSE:Factory checked in at 2022-09-27 20:14:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-compat-patcher-core (Old) and /work/SRC/openSUSE:Factory/.python-compat-patcher-core.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-compat-patcher-core" Tue Sep 27 20:14:04 2022 rev:5 rq:1006327 version:2.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-compat-patcher-core/python-compat-patcher-core.changes 2021-12-14 22:02:42.071165201 +0100 +++ /work/SRC/openSUSE:Factory/.python-compat-patcher-core.new.2275/python-compat-patcher-core.changes 2022-09-27 20:14:06.677850916 +0200 @@ -1,0 +2,12 @@ +Mon Sep 26 23:20:56 UTC 2022 - Yogalakshmi Arunachalam <yarunacha...@suse.com> + +- Update to Version 2.1 + * Debug CI + * Fix Trove classifiers of package + +- Update to Version 2.0 + * Fix encoding and error reporting bugs + * Extend test coverage to Python3.10 + * Drop support for Python2.7 and Python3.5 + +------------------------------------------------------------------- Old: ---- compat-patcher-core-1.2.tar.gz New: ---- compat-patcher-core-2.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-compat-patcher-core.spec ++++++ --- /var/tmp/diff_new_pack.xAQktN/_old 2022-09-27 20:14:07.201852071 +0200 +++ /var/tmp/diff_new_pack.xAQktN/_new 2022-09-27 20:14:07.205852080 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-compat-patcher-core # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-compat-patcher-core -Version: 1.2 +Version: 2.1 Release: 0 Summary: Python patcher system License: MIT ++++++ compat-patcher-core-1.2.tar.gz -> compat-patcher-core-2.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compat-patcher-core-1.2/CHANGELOG new/compat-patcher-core-2.1/CHANGELOG --- old/compat-patcher-core-1.2/CHANGELOG 2021-01-19 21:07:01.000000000 +0100 +++ new/compat-patcher-core-2.1/CHANGELOG 2022-06-15 22:34:26.000000000 +0200 @@ -1,4 +1,19 @@ +Version 2.1 +============ + +* Debug CI +* Fix Trove classifiers of package + + +Version 2.0 +============ + +* Fix encoding and error reporting bugs +* Extend test coverage to Python3.10 +* Drop support for Python2.7 and Python3.5 + + Version 1.2 ============ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compat-patcher-core-1.2/PKG-INFO new/compat-patcher-core-2.1/PKG-INFO --- old/compat-patcher-core-1.2/PKG-INFO 2021-01-19 22:12:10.791734200 +0100 +++ new/compat-patcher-core-2.1/PKG-INFO 2022-06-15 22:40:55.360431200 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: compat-patcher-core -Version: 1.2 +Version: 2.1 Summary: A patcher system to allow easy and lasting API compatibility. Home-page: https://github.com/pakal/compat-patcher-core Author: Pascal Chambon & others @@ -18,7 +18,7 @@ (plugins, bridges to other applications...), while still keeping the main codebase clean, and getting new features at a good pace. - Compatibility Patchers inject backward/forward compatibility shims (like class/function/attribute aliases, restore + Compatibility Patchers inject backward/forward compatibility shims (like class/function/attribute aliases), restore features which were dropped/externalized because "not used enough" or "outside the scope of the library", and tweak the signatures and behaviour of callables (eg. for arguments which disappeared, or which became mandatory). It can even setup lazy "import aliases", so that code can import a moved module both from its old and new location. @@ -40,7 +40,7 @@ Compat Patcher Core holds the core logice of that system, via easily extendable classes: a registry system, monkey-patching utilities, and a generic runner to be called at the very start of your application. It also contains - a cookiecutter recipe to setup your own Compatibility Patcher in a few minutes, with test scaffolding and packaging + a **cookiecutter recipe** to setup your own Compatibility Patcher in a few minutes, with test scaffolding and packaging metadata ready for launch. Documentation is available on `Read The Docs <https://compat-patcher-core.readthedocs.io/en/latest/index.html>`_ @@ -57,13 +57,11 @@ Classifier: Intended Audience :: Information Technology Classifier: License :: OSI Approved :: MIT License Classifier: Natural Language :: English -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: Unix diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compat-patcher-core-1.2/README.rst new/compat-patcher-core-2.1/README.rst --- old/compat-patcher-core-1.2/README.rst 2019-06-22 20:28:11.000000000 +0200 +++ new/compat-patcher-core-2.1/README.rst 2022-06-15 15:19:47.000000000 +0200 @@ -10,7 +10,7 @@ (plugins, bridges to other applications...), while still keeping the main codebase clean, and getting new features at a good pace. -Compatibility Patchers inject backward/forward compatibility shims (like class/function/attribute aliases, restore +Compatibility Patchers inject backward/forward compatibility shims (like class/function/attribute aliases), restore features which were dropped/externalized because "not used enough" or "outside the scope of the library", and tweak the signatures and behaviour of callables (eg. for arguments which disappeared, or which became mandatory). It can even setup lazy "import aliases", so that code can import a moved module both from its old and new location. @@ -32,7 +32,7 @@ Compat Patcher Core holds the core logice of that system, via easily extendable classes: a registry system, monkey-patching utilities, and a generic runner to be called at the very start of your application. It also contains -a cookiecutter recipe to setup your own Compatibility Patcher in a few minutes, with test scaffolding and packaging +a **cookiecutter recipe** to setup your own Compatibility Patcher in a few minutes, with test scaffolding and packaging metadata ready for launch. Documentation is available on `Read The Docs <https://compat-patcher-core.readthedocs.io/en/latest/index.html>`_ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compat-patcher-core-1.2/VERSION new/compat-patcher-core-2.1/VERSION --- old/compat-patcher-core-1.2/VERSION 2021-01-19 21:05:23.000000000 +0100 +++ new/compat-patcher-core-2.1/VERSION 2022-06-15 22:32:09.000000000 +0200 @@ -1 +1 @@ -1.2 +2.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compat-patcher-core-1.2/pytest.ini new/compat-patcher-core-2.1/pytest.ini --- old/compat-patcher-core-1.2/pytest.ini 2019-06-21 23:01:17.000000000 +0200 +++ new/compat-patcher-core-2.1/pytest.ini 2022-06-15 16:27:42.000000000 +0200 @@ -13,5 +13,7 @@ -vl --strict --tb=auto - --cov=compat_patcher_core - --cov-report=html + # ENABLE WHEN WANTED: + # --cov-report=html + # --cov=compat_patcher_core + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compat-patcher-core-1.2/requirements.txt new/compat-patcher-core-2.1/requirements.txt --- old/compat-patcher-core-1.2/requirements.txt 2021-01-09 18:42:55.000000000 +0100 +++ new/compat-patcher-core-2.1/requirements.txt 2022-06-15 16:21:45.000000000 +0200 @@ -1,20 +1,24 @@ # Beware, keep in sync with setup.py dependencies -six==1.15.0 +six==1.16.0 -pytest>=4.6.11,<7 -pytest-cov==2.10.1 -docutils==0.16 +pytest==7.1.2 +pytest-cov==3.0.0 -sphinx>=1.8.5 -sphinx_rtd_theme==0.5.1 +docutils==0.17.1 -pylint>=1.9.5<3 -pylint-quotes>=0.1.8 +sphinx==2.0.1 +sphinx_rtd_theme==1.0.0 -tox==3.20.1 -check-manifest>=0.40 +pylint==2.14.2 +pylint-quotes==0.2.1 +tox==3.25.0 + +check-manifest==0.48 + +# FIXME upgrade/repair this, it breaks for now if bigger version +# https://github.com/hackebrot/pytest-cookies/issues/62 cookiecutter==1.7.2 -pytest_cookies==0.5.1 +pytest_cookies==0.6.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compat-patcher-core-1.2/setup.py new/compat-patcher-core-2.1/setup.py --- old/compat-patcher-core-1.2/setup.py 2021-01-09 18:42:55.000000000 +0100 +++ new/compat-patcher-core-2.1/setup.py 2022-06-15 17:46:35.000000000 +0200 @@ -21,13 +21,11 @@ Intended Audience :: Information Technology License :: OSI Approved :: MIT License Natural Language :: English -Programming Language :: Python :: 2 -Programming Language :: Python :: 2.7 -Programming Language :: Python :: 3 -Programming Language :: Python :: 3.4 -Programming Language :: Python :: 3.5 Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 +Programming Language :: Python :: 3.8 +Programming Language :: Python :: 3.9 +Programming Language :: Python :: 3.10 Topic :: Software Development :: Libraries :: Python Modules Operating System :: Microsoft :: Windows Operating System :: Unix diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compat-patcher-core-1.2/src/compat_patcher_core/runner.py new/compat-patcher-core-2.1/src/compat_patcher_core/runner.py --- old/compat-patcher-core-1.2/src/compat_patcher_core/runner.py 2021-01-09 18:42:54.000000000 +0100 +++ new/compat-patcher-core-2.1/src/compat_patcher_core/runner.py 2022-06-14 00:10:16.000000000 +0200 @@ -110,6 +110,9 @@ Return a dict with, at least field "fixers_just_applied", the list of fixers that were successfully applied during this call. """ + relevant_fixers = self._get_sorted_relevant_fixers() + fixers_just_applied = self._apply_selected_fixers(relevant_fixers) + return dict(fixers_just_applied=fixers_just_applied) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compat-patcher-core-1.2/src/compat_patcher_core/scaffolding.py new/compat-patcher-core-2.1/src/compat_patcher_core/scaffolding.py --- old/compat-patcher-core-1.2/src/compat_patcher_core/scaffolding.py 2021-01-09 18:42:54.000000000 +0100 +++ new/compat-patcher-core-2.1/src/compat_patcher_core/scaffolding.py 2022-06-15 13:59:37.000000000 +0200 @@ -17,8 +17,8 @@ for f in [x for x in files if x.endswith(".py")]: full_path = os.path.join(root, f) # print(">> ANALYSING PYTHON FILE", full_path) - with open(full_path, "r") as s: - data = s.read() + with open(full_path, "rb") as stream: + data = stream.read().decode("utf8", "ignore") for forbidden_phrase in forbidden_phrases: if re.search(forbidden_phrase, data, re.MULTILINE): if (f == "utilities.py") and ( @@ -49,17 +49,22 @@ import copy from _pytest.python import Function + def generate_missing_fixer_test(_error_message): + # We use this closure system, else "error_message" free variable would be wrong in the for loop + def missing_fixer_test(): + raise RuntimeError(_error_message) + return missing_fixer_test + all_fixers = patching_registry.get_all_fixers() all_tests_names = [test.name for test in items] for fixer in all_fixers: expected_test_name = "test_{}".format(fixer["fixer_callable"].__name__) if expected_test_name not in all_tests_names: + error_message = "No test written for {} fixer '{}'".format( fixer["fixer_family"].title(), fixer["fixer_callable"].__name__ ) - - def missing_fixer_test(): - raise RuntimeError(error_message) + missing_fixer_test = generate_missing_fixer_test(error_message) if _fail_fast: # For testing only missing_fixer_test() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compat-patcher-core-1.2/src/compat_patcher_core/utilities.py new/compat-patcher-core-2.1/src/compat_patcher_core/utilities.py --- old/compat-patcher-core-1.2/src/compat_patcher_core/utilities.py 2021-01-09 18:42:54.000000000 +0100 +++ new/compat-patcher-core-2.1/src/compat_patcher_core/utilities.py 2022-06-15 13:45:15.000000000 +0200 @@ -227,12 +227,16 @@ When injecting a submodule, its parent module(s) must exist too. + It is good practice to, then, also inject this module object as an attribute + of its immediate parents (with inject_attribute()), since this is normally done + during python imports. + :param target_module_name: The dotted name of the new module in sys.modules :param module: The module object to inject """ target_module_name = str(target_module_name) # Python2 compatibility assert isinstance(module, types.ModuleType), module - assert sys.modules.get(target_module_name) is None + assert sys.modules.get(target_module_name) is None, target_module_name self._patch_injected_object(module) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compat-patcher-core-1.2/src/compat_patcher_core.egg-info/PKG-INFO new/compat-patcher-core-2.1/src/compat_patcher_core.egg-info/PKG-INFO --- old/compat-patcher-core-1.2/src/compat_patcher_core.egg-info/PKG-INFO 2021-01-19 22:12:10.000000000 +0100 +++ new/compat-patcher-core-2.1/src/compat_patcher_core.egg-info/PKG-INFO 2022-06-15 22:40:55.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: compat-patcher-core -Version: 1.2 +Version: 2.1 Summary: A patcher system to allow easy and lasting API compatibility. Home-page: https://github.com/pakal/compat-patcher-core Author: Pascal Chambon & others @@ -18,7 +18,7 @@ (plugins, bridges to other applications...), while still keeping the main codebase clean, and getting new features at a good pace. - Compatibility Patchers inject backward/forward compatibility shims (like class/function/attribute aliases, restore + Compatibility Patchers inject backward/forward compatibility shims (like class/function/attribute aliases), restore features which were dropped/externalized because "not used enough" or "outside the scope of the library", and tweak the signatures and behaviour of callables (eg. for arguments which disappeared, or which became mandatory). It can even setup lazy "import aliases", so that code can import a moved module both from its old and new location. @@ -40,7 +40,7 @@ Compat Patcher Core holds the core logice of that system, via easily extendable classes: a registry system, monkey-patching utilities, and a generic runner to be called at the very start of your application. It also contains - a cookiecutter recipe to setup your own Compatibility Patcher in a few minutes, with test scaffolding and packaging + a **cookiecutter recipe** to setup your own Compatibility Patcher in a few minutes, with test scaffolding and packaging metadata ready for launch. Documentation is available on `Read The Docs <https://compat-patcher-core.readthedocs.io/en/latest/index.html>`_ @@ -57,13 +57,11 @@ Classifier: Intended Audience :: Information Technology Classifier: License :: OSI Approved :: MIT License Classifier: Natural Language :: English -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: Unix diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compat-patcher-core-1.2/tests/test_cookiecutter_recipe.py new/compat-patcher-core-2.1/tests/test_cookiecutter_recipe.py --- old/compat-patcher-core-1.2/tests/test_cookiecutter_recipe.py 2019-06-22 18:59:44.000000000 +0200 +++ new/compat-patcher-core-2.1/tests/test_cookiecutter_recipe.py 2022-06-15 15:31:19.000000000 +0200 @@ -7,6 +7,8 @@ from cookiecutter.utils import rmtree +import compat_patcher_core + SOURCE_ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) @contextmanager @@ -38,7 +40,7 @@ rmtree(str(result.project)) -def run_inside_dir(command, dirpath): +def run_inside_dir(command, dirpath, **popen_kwargs): """ Run a command from inside a given directory, returning the exit status @@ -46,7 +48,7 @@ :param dirpath: String, path of the directory the command is being run. """ with inside_dir(dirpath): - return subprocess.check_call(shlex.split(command)) + return subprocess.check_call(shlex.split(command), **popen_kwargs) def check_output_inside_dir(command, dirpath): @@ -90,5 +92,8 @@ def test_using_pytest(cookies): with bake_in_temp_dir(cookies) as result: assert result.project.isdir() - # Test the new pytest target - run_inside_dir('pytest', str(result.project)) == 0 + # Test the new pytest target - we must help pytest find current compat_patcher_core though + popen_kwargs = dict( + env=dict(os.environ, + PYTHONPATH=os.path.dirname(os.path.dirname(compat_patcher_core.__file__)))) + run_inside_dir('pytest', str(result.project), **popen_kwargs) == 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compat-patcher-core-1.2/tox.ini new/compat-patcher-core-2.1/tox.ini --- old/compat-patcher-core-1.2/tox.ini 2021-01-19 21:48:23.000000000 +0100 +++ new/compat-patcher-core-2.1/tox.ini 2022-06-15 18:19:13.000000000 +0200 @@ -1,13 +1,19 @@ [tox] -envlist = {py27,py35,py36,py37,py38,py39} +envlist = {py36,py37,py38,py39,py310} skip_missing_interpreters=True toxworkdir={env:TOX_WORK_DIR:.tox} [testenv] changedir=tests deps= - -r requirements.txt + pytest + docutils + cookiecutter==1.7.2 + pytest_cookies commands= + pip install -U setuptools importlib-metadata + pip list + python -c "import importlib_metadata; print(importlib_metadata.version('importlib-metadata'))" pytest setenv = INSIDE_TOX_FOR_CPC = true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compat-patcher-core-1.2/{{cookiecutter.root_directory_name}}/.travis.yml new/compat-patcher-core-2.1/{{cookiecutter.root_directory_name}}/.travis.yml --- old/compat-patcher-core-1.2/{{cookiecutter.root_directory_name}}/.travis.yml 2019-06-18 22:04:00.000000000 +0200 +++ new/compat-patcher-core-2.1/{{cookiecutter.root_directory_name}}/.travis.yml 2022-06-15 16:58:05.000000000 +0200 @@ -1,12 +1,11 @@ -dist: xenial +sudo: false language: python -cache: pip python: - - 2.7.13 - - 3.4 - - 3.5 - - 3.6 - - 3.7 + - "3.6" + - "3.7" + - "3.8" + - "3.9" + - "3.10-dev" install: - pip install tox-travis script: