From b0152bfcfe8969324dd77397e7e0e50c0b0b5f8ecd39625819e72d4abb25b559 Mon Sep 17 00:00:00 2001 From: Matej Cepl Date: Sun, 17 Oct 2021 15:26:11 +0000 Subject: [PATCH] Accepting request 925833 from home:bnavigator:branches:devel:languages:python:pytest - Update to v2.1.0 * fix race condition for import of modules using apipkg.initpkg in Python 3.3+ by updating existing modules in-place rather than replacing in sys.modules with an apipkg.ApiModule instances. This race condition exists for import statements (and __import__) in Python 3.3+ where sys.modules is checked before obtaining an import lock, and for importlib.import_module in Python 3.11+ for the same reason. - Release 2.0.1 * fix race conditions for attribute creation - Release 2.0.0 * also transfer __spec__ attribute * make py.test hack more specific to avoid hiding real errors * switch from Travis CI to GitHub Actions * modernize package build * reformat code with black - Drop pytest4.patch OBS-URL: https://build.opensuse.org/request/show/925833 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-apipkg?expand=0&rev=11 --- apipkg-1.5.tar.gz | 3 --- apipkg-2.1.0.tar.gz | 3 +++ pytest4.patch | 34 ---------------------------------- python-apipkg.changes | 21 +++++++++++++++++++++ python-apipkg.spec | 22 ++++++++++------------ 5 files changed, 34 insertions(+), 49 deletions(-) delete mode 100644 apipkg-1.5.tar.gz create mode 100644 apipkg-2.1.0.tar.gz delete mode 100644 pytest4.patch diff --git a/apipkg-1.5.tar.gz b/apipkg-1.5.tar.gz deleted file mode 100644 index dba5c53..0000000 --- a/apipkg-1.5.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:37228cda29411948b422fae072f57e31d3396d2ee1c9783775980ee9c9990af6 -size 11186 diff --git a/apipkg-2.1.0.tar.gz b/apipkg-2.1.0.tar.gz new file mode 100644 index 0000000..c01f0b8 --- /dev/null +++ b/apipkg-2.1.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4be31cf8081e660d2cdea6edfb8a0f39f385866abdcfcfa45e5a0887345cb70 +size 16346 diff --git a/pytest4.patch b/pytest4.patch deleted file mode 100644 index 57f8ffa..0000000 --- a/pytest4.patch +++ /dev/null @@ -1,34 +0,0 @@ ---- a/test_apipkg.py -+++ b/test_apipkg.py -@@ -13,7 +13,7 @@ ModuleType = types.ModuleType - class TestRealModule: - - def setup_class(cls): -- cls.tmpdir = py.test.ensuretemp('test_apipkg') -+ cls.tmpdir = py.path.local('test_apipkg') - sys.path = [str(cls.tmpdir)] + sys.path - pkgdir = cls.tmpdir.ensure('realtest', dir=1) - -@@ -319,8 +319,10 @@ def test_error_loading_one_element(monke - import errorloading1 - assert isinstance(errorloading1, apipkg.ApiModule) - assert errorloading1.y == 0 -- py.test.raises(ImportError, 'errorloading1.x') -- py.test.raises(ImportError, 'errorloading1.x') -+ with pytest.raises(ImportError): -+ errorloading1.x -+ with pytest.raises(ImportError): -+ errorloading1.x - - - def test_onfirstaccess(tmpdir, monkeypatch): -@@ -493,7 +495,8 @@ def test_aliasmodule_proxy_methods(tmpdi - assert doit is orig.doit - - del proxy.doit -- py.test.raises(AttributeError, "orig.doit") -+ with pytest.raises(AttributeError): -+ orig.doit - - proxy.doit = doit - assert orig.doit is doit diff --git a/python-apipkg.changes b/python-apipkg.changes index d54f2ae..ffe04f2 100644 --- a/python-apipkg.changes +++ b/python-apipkg.changes @@ -1,3 +1,24 @@ +------------------------------------------------------------------- +Sun Oct 17 12:03:03 UTC 2021 - Ben Greiner + +- Update to v2.1.0 + * fix race condition for import of modules using apipkg.initpkg + in Python 3.3+ by updating existing modules in-place rather + than replacing in sys.modules with an apipkg.ApiModule + instances. This race condition exists for import statements + (and __import__) in Python 3.3+ where sys.modules is checked + before obtaining an import lock, and for + importlib.import_module in Python 3.11+ for the same reason. +- Release 2.0.1 + * fix race conditions for attribute creation +- Release 2.0.0 + * also transfer __spec__ attribute + * make py.test hack more specific to avoid hiding real errors + * switch from Travis CI to GitHub Actions + * modernize package build + * reformat code with black +- Drop pytest4.patch + ------------------------------------------------------------------- Tue Dec 8 10:59:41 UTC 2020 - Benjamin Greiner diff --git a/python-apipkg.spec b/python-apipkg.spec index 09adb23..515606b 100644 --- a/python-apipkg.spec +++ b/python-apipkg.spec @@ -1,7 +1,7 @@ # -# spec file for package python +# spec file # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -26,17 +26,13 @@ %bcond_with test %endif Name: python-apipkg%{psuffix} -Version: 1.5 +Version: 2.1.0 Release: 0 Summary: Namespace control and lazy-import mechanism License: MIT Group: Development/Languages/Python URL: https://github.com/pytest-dev/apipkg/ Source: https://files.pythonhosted.org/packages/source/a/apipkg/apipkg-%{version}.tar.gz -# PATCH-FIX-UPSTREAM pytest4.patch bsc#[0-9]+ mimi.vx@gmail.com -# Collected upstream fixes for gh#pytest-dev/apipkg#14 and -# gh#pytest-dev/apipkg#15 -Patch0: pytest4.patch %if %{with test} BuildRequires: %{python_module pytest} %endif @@ -50,16 +46,18 @@ BuildArch: noarch %description With apipkg you can control the exported namespace of a python package and greatly reduce the number of imports for your users. -It is a `small pure python module`_ that works on virtually all Python -versions, including CPython2.3 to Python3.1, Jython and PyPy. It co-operates -well with Python's ``help()`` system, custom importers (PEP302) and common -command line completion tools. +It is a small pure python module that works on CPython 2.7 and 3.4+, +Jython and PyPy. It co-operates well with Python's help() system, +custom importers (PEP302) and common command line completion tools. Usage is very simple: you can require 'apipkg' as a dependency or you -can copy paste the <100 Lines of code into your project. +can copy paste the ~200 lines of code into your project. %prep %autosetup -p1 -n apipkg-%{version} +# Fix Python 2 install error on old setuptools in Leap +# https://github.com/pypa/setuptools/issues/1136 +sed -i '/use_scm_version/ a \ package_dir={"": "src"},' setup.py %build %python_build