From b3e4bfc2d6bd7df02aa34eadbd534a166ef87b0c273622703447f34061791257 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Fri, 3 May 2024 21:59:59 +0200 Subject: [PATCH] Sync from SUSE:SLFO:Main python-py revision 94ad4a38884c57b6e08347598088840f --- .gitattributes | 23 ++ _multibuild | 3 + pr_222.patch | 409 ++++++++++++++++++++++++++++++++++ py-1.11.0.tar.gz | 3 + python-py.changes | 463 +++++++++++++++++++++++++++++++++++++++ python-py.spec | 111 ++++++++++ remove-svn-remants.patch | 36 +++ 7 files changed, 1048 insertions(+) create mode 100644 .gitattributes create mode 100644 _multibuild create mode 100644 pr_222.patch create mode 100644 py-1.11.0.tar.gz create mode 100644 python-py.changes create mode 100644 python-py.spec create mode 100644 remove-svn-remants.patch diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..fcc7b97 --- /dev/null +++ b/_multibuild @@ -0,0 +1,3 @@ + + test + diff --git a/pr_222.patch b/pr_222.patch new file mode 100644 index 0000000..c0d1d4d --- /dev/null +++ b/pr_222.patch @@ -0,0 +1,409 @@ +From f4ed62ad39f289d09b3efdfed7305f935ce60bfc Mon Sep 17 00:00:00 2001 +From: Stanislav Levin +Date: Tue, 4 Jun 2019 14:33:36 +0300 +Subject: [PATCH] Fix Pytest4.x compatibility errors + +This patch should fix such errors/warnings as: + +- raises / warns with a string as the second argument +Deprecated since version 4.1. + +- pytest_funcarg__ prefix +Removed in version 4.0. + +- getfuncargvalue + +- Metafunc.addcall +Removed in version 4.0. + +Fixes: https://github.com/pytest-dev/py/issues/209 +Signed-off-by: Stanislav Levin +--- + doc/faq.txt | 14 ------------- + testing/code/test_assertion.py | 9 +++------ + testing/code/test_code.py | 3 ++- + testing/code/test_excinfo.py | 12 ++++++----- + testing/code/test_source.py | 18 ++++++++--------- + testing/io_/test_capture.py | 15 +++++++++----- + testing/io_/test_terminalwriter.py | 17 ++++++++-------- + testing/io_/test_terminalwriter_linewidth.py | 6 ++++++ + testing/log/test_log.py | 6 ++++-- + testing/path/common.py | 7 ++++--- + testing/path/conftest.py | 16 +++++++-------- + testing/path/test_cacheutil.py | 6 ++++-- + testing/path/test_svnauth.py | 6 ++++-- + testing/path/test_svnurl.py | 21 +++++++++++++------- + testing/path/test_svnwc.py | 17 ++++++++++------ + testing/root/test_builtin.py | 6 ++++-- + testing/root/test_std.py | 3 ++- + 17 files changed, 100 insertions(+), 82 deletions(-) + +Index: py-1.9.0/testing/code/test_assertion.py +=================================================================== +--- py-1.9.0.orig/testing/code/test_assertion.py ++++ py-1.9.0/testing/code/test_assertion.py +@@ -18,15 +18,12 @@ def test_assert(): + + + def test_assert_within_finally(): +- excinfo = py.test.raises(ZeroDivisionError, """ ++ with py.test.raises(ZeroDivisionError, ++ match=".*division.* by zero"): + try: +- 1/0 ++ 1 / 0 + finally: + i = 42 +- """) +- s = excinfo.exconly() +- assert re.search("ZeroDivisionError:.*division", s) is not None +- + + def test_assert_multiline_1(): + try: +Index: py-1.9.0/testing/code/test_code.py +=================================================================== +--- py-1.9.0.orig/testing/code/test_code.py ++++ py-1.9.0/testing/code/test_code.py +@@ -18,7 +18,8 @@ def test_code_gives_back_name_for_not_ex + def test_code_with_class(): + class A: + pass +- py.test.raises(TypeError, "py.code.Code(A)") ++ with py.test.raises(TypeError): ++ py.code.Code(A) + + if True: + def x(): +Index: py-1.9.0/testing/code/test_excinfo.py +=================================================================== +--- py-1.9.0.orig/testing/code/test_excinfo.py ++++ py-1.9.0/testing/code/test_excinfo.py +@@ -145,7 +145,8 @@ class TestTraceback_f_g_h: + + def test_traceback_cut_excludepath(self, testdir): + p = testdir.makepyfile("def f(): raise ValueError") +- excinfo = py.test.raises(ValueError, "p.pyimport().f()") ++ with py.test.raises(ValueError) as excinfo: ++ p.pyimport().f() + basedir = py.path.local(py.test.__file__).dirpath() + newtraceback = excinfo.traceback.cut(excludepath=basedir) + for x in newtraceback: +@@ -273,8 +274,8 @@ def test_tbentry_reinterpret(): + def test_excinfo_exconly(): + excinfo = py.test.raises(ValueError, h) + assert excinfo.exconly().startswith('ValueError') +- excinfo = py.test.raises(ValueError, +- "raise ValueError('hello\\nworld')") ++ with py.test.raises(ValueError) as excinfo: ++ raise ValueError('hello\\nworld') + msg = excinfo.exconly(tryshort=True) + assert msg.startswith('ValueError') + assert msg.endswith("world") +@@ -350,10 +351,11 @@ def test_codepath_Queue_example(): + + + class TestFormattedExcinfo: +- def pytest_funcarg__importasmod(self, request): ++ @pytest.fixture ++ def importasmod(self, request): + def importasmod(source): + source = py.code.Source(source) +- tmpdir = request.getfuncargvalue("tmpdir") ++ tmpdir = request.getfixturevalue("tmpdir") + modpath = tmpdir.join("mod.py") + tmpdir.ensure("__init__.py") + modpath.write(source) +Index: py-1.9.0/testing/code/test_source.py +=================================================================== +--- py-1.9.0.orig/testing/code/test_source.py ++++ py-1.9.0/testing/code/test_source.py +@@ -272,7 +272,8 @@ class TestSourceParsingAndCompiling: + co = self.source.compile() + py.builtin.exec_(co, globals()) + f(7) +- excinfo = py.test.raises(AssertionError, "f(6)") ++ with py.test.raises(AssertionError) as excinfo: ++ f(6) + frame = excinfo.traceback[-1].frame + stmt = frame.code.fullsource.getstatement(frame.lineno) + #print "block", str(block) +@@ -326,14 +327,13 @@ def test_getstartingblock_multiline(): + + def test_getline_finally(): + def c(): pass +- excinfo = py.test.raises(TypeError, """ +- teardown = None +- try: +- c(1) +- finally: +- if teardown: +- teardown() +- """) ++ with py.test.raises(TypeError) as excinfo: ++ teardown = None ++ try: ++ c(1) ++ finally: ++ if teardown: ++ teardown() + source = excinfo.traceback[-1].statement + assert str(source).strip() == 'c(1)' + +Index: py-1.9.0/testing/io_/test_capture.py +=================================================================== +--- py-1.9.0.orig/testing/io_/test_capture.py ++++ py-1.9.0/testing/io_/test_capture.py +@@ -1,6 +1,7 @@ + from __future__ import with_statement + + import os, sys ++import pytest + import py + + needsdup = py.test.mark.skipif("not hasattr(os, 'dup')") +@@ -45,7 +46,8 @@ class TestTextIO: + f = py.io.TextIO() + if sys.version_info >= (3,0): + f.write("\u00f6") +- py.test.raises(TypeError, "f.write(bytes('hello', 'UTF-8'))") ++ with py.test.raises(TypeError): ++ f.write(bytes('hello', 'UTF-8')) + else: + f.write(unicode("\u00f6", 'UTF-8')) + f.write("hello") # bytes +@@ -56,7 +58,8 @@ class TestTextIO: + def test_bytes_io(): + f = py.io.BytesIO() + f.write(tobytes("hello")) +- py.test.raises(TypeError, "f.write(totext('hello'))") ++ with py.test.raises(TypeError): ++ f.write(totext('hello')) + s = f.getvalue() + assert s == tobytes("hello") + +@@ -70,8 +73,9 @@ def test_dontreadfrominput(): + py.test.raises(ValueError, f.fileno) + f.close() # just for completeness + +-def pytest_funcarg__tmpfile(request): +- testdir = request.getfuncargvalue("testdir") ++@pytest.fixture ++def tmpfile(request): ++ testdir = request.getfixturevalue("testdir") + f = testdir.makepyfile("").open('wb+') + request.addfinalizer(f.close) + return f +@@ -315,7 +319,8 @@ class TestStdCapture: + print ("XXX which indicates an error in the underlying capturing") + print ("XXX mechanisms") + cap = self.getcapture() +- py.test.raises(IOError, "sys.stdin.read()") ++ with py.test.raises(IOError): ++ sys.stdin.read() + out, err = cap.reset() + + def test_suspend_resume(self): +Index: py-1.9.0/testing/io_/test_terminalwriter.py +=================================================================== +--- py-1.9.0.orig/testing/io_/test_terminalwriter.py ++++ py-1.9.0/testing/io_/test_terminalwriter.py +@@ -107,14 +107,11 @@ def test_unicode_on_file_with_ascii_enco + + win32 = int(sys.platform == "win32") + class TestTerminalWriter: +- def pytest_generate_tests(self, metafunc): +- if "tw" in metafunc.funcargnames: +- metafunc.addcall(id="path", param="path") +- metafunc.addcall(id="stringio", param="stringio") +- metafunc.addcall(id="callable", param="callable") +- def pytest_funcarg__tw(self, request): ++ ++ @pytest.fixture(params=["path", "stringio", "callable"]) ++ def tw(self, request): + if request.param == "path": +- tmpdir = request.getfuncargvalue("tmpdir") ++ tmpdir = request.getfixturevalue("tmpdir") + p = tmpdir.join("tmpfile") + f = codecs.open(str(p), 'w+', encoding='utf8') + tw = py.io.TerminalWriter(f) +@@ -182,8 +179,10 @@ class TestTerminalWriter: + for color in ("red", "green"): + text2 = tw.markup("hello", **{color: True, 'bold': bold}) + assert text2.find("hello") != -1 +- py.test.raises(ValueError, "tw.markup('x', wronkw=3)") +- py.test.raises(ValueError, "tw.markup('x', wronkw=0)") ++ with py.test.raises(ValueError): ++ tw.markup('x', wronkw=3) ++ with py.test.raises(ValueError): ++ tw.markup('x', wronkw=0) + + def test_line_write_markup(self, tw): + tw.hasmarkup = True +Index: py-1.9.0/testing/io_/test_terminalwriter_linewidth.py +=================================================================== +--- py-1.9.0.orig/testing/io_/test_terminalwriter_linewidth.py ++++ py-1.9.0/testing/io_/test_terminalwriter_linewidth.py +@@ -1,6 +1,8 @@ + # coding: utf-8 + from __future__ import unicode_literals + ++import pytest ++ + from py._io.terminalwriter import TerminalWriter + + +@@ -31,6 +33,10 @@ def test_terminal_writer_line_width_upda + assert tw.width_of_current_line == 21 # 5*2 + 1 + 5*2 + + ++@pytest.mark.skipif( ++ 'sys.version_info > (3,)', ++ reason='Bytes are not accepted' ++ ' https://github.com/pytest-dev/pytest/issues/4861') + def test_terminal_writer_line_width_update_with_wide_bytes(): + tw = TerminalWriter() + tw.write('乇乂ㄒ尺卂 ㄒ卄丨匚匚'.encode('utf-8')) +Index: py-1.9.0/testing/log/test_log.py +=================================================================== +--- py-1.9.0.orig/testing/log/test_log.py ++++ py-1.9.0/testing/log/test_log.py +@@ -89,8 +89,10 @@ class TestLogConsumer: + + def test_no_auto_producer(self): + p = py.log.Producer('x') +- py.test.raises(AttributeError, "p._x") +- py.test.raises(AttributeError, "p.x_y") ++ with py.test.raises(AttributeError): ++ p._x ++ with py.test.raises(AttributeError): ++ p.x_y + + def test_setconsumer_with_producer(self): + l = [] +Index: py-1.9.0/testing/path/common.py +=================================================================== +--- py-1.9.0.orig/testing/path/common.py ++++ py-1.9.0/testing/path/common.py +@@ -155,8 +155,8 @@ class CommonFSTests(object): + l = path1.listdir() + assert path1.join('sampledir') in l + assert path1.join('samplefile') in l +- py.test.raises(py.error.ENOTDIR, +- "path1.join('samplefile').listdir()") ++ with py.test.raises(py.error.ENOTDIR): ++ path1.join('samplefile').listdir() + + def test_listdir_fnmatchstring(self, path1): + l = path1.listdir('s*dir') +@@ -300,7 +300,8 @@ class CommonFSTests(object): + assert url.mtime() > 0 + + def test_relto_wrong_type(self, path1): +- py.test.raises(TypeError, "path1.relto(42)") ++ with py.test.raises(TypeError): ++ path1.relto(42) + + def test_load(self, path1): + p = path1.join('samplepickle') +Index: py-1.9.0/testing/path/conftest.py +=================================================================== +--- py-1.9.0.orig/testing/path/conftest.py ++++ py-1.9.0/testing/path/conftest.py +@@ -1,20 +1,19 @@ + import py + import sys ++import pytest + from py._path import svnwc as svncommon + + svnbin = py.path.local.sysfind('svn') + repodump = py.path.local(__file__).dirpath('repotest.dump') + from py.builtin import print_ + +-def pytest_funcarg__repowc1(request): ++@pytest.fixture ++def repowc1(request): + if svnbin is None: + py.test.skip("svn binary not found") + +- tmpdir = request.getfuncargvalue("tmpdir") +- repo, repourl, wc = request.cached_setup( +- setup=lambda: getrepowc(tmpdir, "path1repo", "path1wc"), +- scope="module", +- ) ++ tmpdir = request.getfixturevalue("tmpdir") ++ repo, repourl, wc = getrepowc(tmpdir, "path1repo", "path1wc") + for x in ('test_remove', 'test_move', 'test_status_deleted'): + if request.function.__name__.startswith(x): + #print >>sys.stderr, ("saving repo", repo, "for", request.function) +@@ -22,8 +21,9 @@ def pytest_funcarg__repowc1(request): + request.addfinalizer(lambda: restore_repowc(_savedrepowc)) + return repo, repourl, wc + +-def pytest_funcarg__repowc2(request): +- tmpdir = request.getfuncargvalue("tmpdir") ++@pytest.fixture ++def repowc2(request): ++ tmpdir = request.getfixturevalue("tmpdir") + name = request.function.__name__ + repo, url, wc = getrepowc(tmpdir, "%s-repo-2" % name, "%s-wc-2" % name) + return repo, url, wc +Index: py-1.9.0/testing/path/test_cacheutil.py +=================================================================== +--- py-1.9.0.orig/testing/path/test_cacheutil.py ++++ py-1.9.0/testing/path/test_cacheutil.py +@@ -12,12 +12,14 @@ class BasicCacheAPITest: + assert val == 42 + + def test_cache_get_key_error(self): +- pytest.raises(KeyError, "self.cache._getentry(-23)") ++ with pytest.raises(KeyError): ++ self.cache._getentry(-23) + + def test_delentry_non_raising(self): + self.cache.getorbuild(100, lambda: 100) + self.cache.delentry(100) +- pytest.raises(KeyError, "self.cache._getentry(100)") ++ with pytest.raises(KeyError): ++ self.cache._getentry(100) + + def test_delentry_raising(self): + self.cache.getorbuild(100, lambda: 100) +Index: py-1.9.0/testing/root/test_builtin.py +=================================================================== +--- py-1.9.0.orig/testing/root/test_builtin.py ++++ py-1.9.0/testing/root/test_builtin.py +@@ -56,7 +56,8 @@ def test_frozenset(): + + def test_print_simple(): + from py.builtin import print_ +- py.test.raises(TypeError, "print_(hello=3)") ++ with py.test.raises(TypeError): ++ print_(hello=3) + f = py.io.TextIO() + print_("hello", "world", file=f) + s = f.getvalue() +@@ -133,7 +134,8 @@ def test_reraise(): + raise Exception() + except Exception: + cls, val, tb = sys.exc_info() +- excinfo = py.test.raises(Exception, "_reraise(cls, val, tb)") ++ with py.test.raises(Exception): ++ _reraise(cls, val, tb) + + def test_exec(): + l = [] +Index: py-1.9.0/testing/root/test_std.py +=================================================================== +--- py-1.9.0.orig/testing/root/test_std.py ++++ py-1.9.0/testing/root/test_std.py +@@ -6,7 +6,8 @@ def test_os(): + assert py.std.os is os + + def test_import_error_converts_to_attributeerror(): +- py.test.raises(AttributeError, "py.std.xyzalskdj") ++ with py.test.raises(AttributeError): ++ py.std.xyzalskdj + + def test_std_gets_it(): + for x in py.std.sys.modules: diff --git a/py-1.11.0.tar.gz b/py-1.11.0.tar.gz new file mode 100644 index 0000000..849123a --- /dev/null +++ b/py-1.11.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719 +size 207796 diff --git a/python-py.changes b/python-py.changes new file mode 100644 index 0000000..5dd3960 --- /dev/null +++ b/python-py.changes @@ -0,0 +1,463 @@ +------------------------------------------------------------------- +Tue Jul 25 14:23:03 UTC 2023 - Markéta Machová + +- Skip tests failing with pytest 7.4, they don't matter + * failure comes from py.core, which has low usage + * https://github.com/pytest-dev/py/issues/288 + * according to that this code is not used in Tumbleweed anyway + +------------------------------------------------------------------- +Fri Apr 21 12:30:10 UTC 2023 - Dirk Müller + +- add sle15_python_module_pythons (jsc#PED-68) + +------------------------------------------------------------------- +Thu Apr 13 22:43:30 UTC 2023 - Matej Cepl + +- Make calling of %{sle15modernpython} optional. + +------------------------------------------------------------------- +Tue Jan 17 05:13:56 UTC 2023 - Steve Kowalik + +- Remove all traces of py._path.svn{url,wc}. (bsc#1204364, CVE-2022-42969) +- Add patch remove-svn-remants.patch to help with that goal. +- Refresh pr_222.patch as needed for above. + +------------------------------------------------------------------- +Tue Nov 29 17:04:41 UTC 2022 - Daniel Garcia + +- Remove python_module macro definition +- Add python-py dep for testing +- Use autosetup insteado of setup + patch +- More specific python_sitelib in %files + +------------------------------------------------------------------- +Tue Mar 15 08:13:43 UTC 2022 - Stephan Kulow + +- use %python_expand for %fdupes + +------------------------------------------------------------------- +Mon Mar 14 10:53:30 UTC 2022 - John Paul Adrian Glaubitz + +- Update in SLE-15 (bsc#1195916, bsc#1196696, jsc#PM-3356, jsc#SLE-23972) +- Drop CVE-2020-29651.patch, issue fixed upstream in 1.10.0 + +------------------------------------------------------------------- +Sun Jan 23 15:40:00 UTC 2022 - Dirk Müller + +- update to 1.11.0: + * Support Python 3.11 + * Support ``NO_COLOR`` environment variable + * Update vendored apipkg: 1.5 => 2.0 + +------------------------------------------------------------------- +Fri Feb 19 15:21:06 UTC 2021 - Ben Greiner + +- Update to 1.10.0 + * Fix a regular expression DoS vulnerability in the py.path.svnwc + SVN blame functionality (CVE-2020-29651) + +------------------------------------------------------------------- +Sat Oct 17 11:43:32 UTC 2020 - John Vandenberg + +- Devendor apipkg and iniconfig +- Add pr_222.patch to activate test suite + +------------------------------------------------------------------- +Mon Jun 29 08:51:40 UTC 2020 - Marketa Calabkova + +- Update to 1.9.0 + * Add type annotation stubs + +------------------------------------------------------------------- +Mon Jan 6 12:53:25 UTC 2020 - Tomáš Chvátal + +- Update to 1.8.1: + - Handle ``FileNotFoundError`` when trying to import pathlib in + ``path.common`` on Python 3.4 (#207). + - ``py.path.local.samefile`` now works correctly in Python 3 on + Windows when dealing with symlinks. + +------------------------------------------------------------------- +Wed Jun 19 10:08:47 UTC 2019 - Tomáš Chvátal + +- Switch to multibuild to avoid cycle bsc#1138666 + +------------------------------------------------------------------- +Wed Feb 27 13:48:08 UTC 2019 - Tomáš Chvátal + +- Update to 1.8.0: + * add ``"importlib"`` pyimport mode for python3.5+, allowing unimportable test suites + to contain identically named modules. + * fix ``LocalPath.as_cwd()`` not calling ``os.chdir()`` with ``None``, when + being invoked from a non-existing directory. +- Drop merged patch separators.patch + +------------------------------------------------------------------- +Fri Feb 15 11:19:55 UTC 2019 - Tomáš Chvátal + +- Make tests never fail as they are borked on pytest-4 with + most probably no intention of being ever fixed + +------------------------------------------------------------------- +Fri Feb 15 11:01:39 UTC 2019 - Tomáš Chvátal + +- Make tests really pass on pytest 3.x series +- Add patch to operate better with serparators (from upstream git): + * separators.patch + +------------------------------------------------------------------- +Tue Feb 12 14:34:40 UTC 2019 - Tomáš Chvátal + +- Drop the doc subpackage, no need for it really +- Make sure the tests are realy executed + +------------------------------------------------------------------- +Fri Oct 26 13:07:32 UTC 2018 - Ondřej Súkup + +- update to 1.7.0 + * use ``shutil.get_terminal_size()`` in Python 3.3+ to determine the size of the + terminal, which produces more accurate results than the previous method. + * introduce new ``PY_IGNORE_IMPORTMISMATCH`` environment variable + that suppresses ``ImportMismatchError`` exceptions when set to ``1``. + * add ``TerminalWriter.width_of_current_line`` (i18n version of + ``TerminalWriter.chars_on_current_line``), a read-only property + that tracks how wide the current line is, attempting to take + into account international characters in the calculation. + +------------------------------------------------------------------- +Thu Aug 2 12:39:13 UTC 2018 - mimi.vx@gmail.com + +- update to 1.5.4 + * don't make assumptions about fs case sensitivity in ``make_numbered_dir``. + +------------------------------------------------------------------- +Thu May 31 04:37:00 UTC 2018 - toddrme2178@gmail.com + +- update to version 1.5.3 + * - fix #179: ensure we can support 'from py.error import ...' + +------------------------------------------------------------------- +Sun Nov 19 05:51:49 UTC 2017 - arun@gmx.de + +- specfile: + * updated url + +- update to version 1.5.2: + * fix #169, #170: error importing py.log on Windows: no module named + "syslog". + +- changes from version 1.5.1: + * fix #167 - prevent pip from installing py in unsupported Python + versions. + +------------------------------------------------------------------- +Wed Nov 15 07:06:05 UTC 2017 - arun@gmx.de + +- update to version 1.5.0: + * python 2.6 and 3.3 are no longer supported + * deprecate py.std and remove all internal uses + * fix #73 turn py.error into an actual module + * path join to / no longer produces leading double slashes + * fix #82 - remove unsupportable aliases + * fix python37 compatibility of path.sysfind on windows by correctly + replacing vars + * turn iniconfig and apipkg into vendored packages and ease + de-vendoring for distributions + * fix #68 remove invalid py.test.ensuretemp references + * fix #25 - deprecate path.listdir(sort=callable) + * add TerminalWriter.chars_on_current_line read-only property that + tracks how many characters have been written to the current line. + +------------------------------------------------------------------- +Fri Jun 30 06:02:11 UTC 2017 - aloisio@gmx.com + +- Update to 1.4.34 + * fix issue119 / pytest issue708 where tmpdir may fail to make + numbered directories when the filesystem is case-insensitive. + 1.4.33: + * avoid imports in calls to py.path.local().fnmatch(). Thanks + Andreas Pelme for the PR. + * fix issue106: Naive unicode encoding when calling fspath() in + python2. Thanks Tiago Nobrega for the PR. + * fix issue110: unittest.TestCase.assertWarns fails with py + imported. + +------------------------------------------------------------------- +Thu Feb 23 14:56:48 UTC 2017 - jmatejek@suse.com + +- update to 1.4.32 + - fix issue70: added ability to copy all stat info in py.path.local.copy. + - make TerminalWriter.fullwidth a property. This results in the correct + value when the terminal gets resized. + - update supported html tags to include recent additions. + Thanks Denis Afonso for the PR. + - Remove internal code in ``Source.compile`` meant to support earlier Python 3 versions that produced the side effect + of leaving ``None`` in ``sys.modules`` when called (see pytest-dev/pytest#2103). + Thanks Bruno Oliveira for the PR. + +------------------------------------------------------------------- +Wed Oct 5 14:47:53 UTC 2016 - jmatejek@suse.com + +- update for singlespec + +------------------------------------------------------------------- +Sat Sep 3 18:33:49 UTC 2016 - p.drouand@gmail.com + +- Update download Url + +------------------------------------------------------------------- +Sat Jul 23 13:23:33 UTC 2016 - michael@stroeder.com + +- corrected homepage URL +- HTTPS URL for pypi source link +- update to version 1.4.31 + * fix local().copy(dest, mode=True) to also work with unicode. + * pass better error message with svn EEXIST paths + +------------------------------------------------------------------- +Thu Jul 2 10:01:08 UTC 2015 - aj@ajaissle.de + +- update to version 1.4.30: + * fix issue68 an assert with a multiline list comprehension was not + reported correctly. Thanks Henrik Heibuerger. + +- changes from version 1.4.29: + * fix issue55: revert a change to the statement finding algorithm + which is used by pytest for generating tracebacks. Thanks Daniel + Hahler for initial analysis. + * fix pytest issue254 for when traceback rendering can’t find valid + source code. Thanks Ionel Cristian Maries. + +------------------------------------------------------------------- +Tue Jun 30 13:45:03 UTC 2015 - aj@ajaissle.de + +- Split documentation into separate package to avoid build loop + +------------------------------------------------------------------- +Mon Jun 22 15:13:02 UTC 2015 - tbechtold@suse.com + +- update to 1.4.28: + - fix issue64 -- dirpath regression when "abs=True" is passed. + - fix issue59: point to new repo site + - allow a new ensuresyspath="append" mode for py.path.local.pyimport() + so that a neccessary import path is appended instead of prepended to + sys.path + - strike undocumented, untested argument to py.path.local.pypkgpath + - speed up py.path.local.dirpath by a factor of 10 + +------------------------------------------------------------------- +Wed Feb 4 14:25:30 UTC 2015 - tbechtold@suse.com + +- update to version 1.4.26: + - avoid calling normpath twice in py.path.local + - py.builtin._reraise properly reraises under Python3 now. + - fix issue53 - remove module index, thanks jenisys. + - allow posix path separators when "fnmatch" is called. + Thanks Christian Long for the complete PR. + +------------------------------------------------------------------- +Sat Sep 27 17:35:17 UTC 2014 - dmueller@suse.com + +- update to 1.4.25: + - fix issue52: vaguely fix py25 compat of py.path.local (it's not + officially supported), also fix docs + - fix pytest issue 589: when checking if we have a recursion error + check for the specific "maximum recursion depth" text of the exception. +- update to 1.4.24: + - Fix retrieving source when an else: line has an other statement on + the same line. + - add localpath read_text/write_text/read_bytes/write_bytes methods + as shortcuts and clearer bytes/text interfaces for read/write. + Adapted from a PR from Paul Moore. +- update to 1.4.23: + - use newer apipkg version which makes attribute access on + alias modules resolve to None rather than an ImportError. + This helps with code that uses inspect.getframeinfo() + on py34 which causes a complete walk on sys.modules + thus triggering the alias module to resolve and blowing + up with ImportError. The negative side is that something + like "py.test.X" will now result in None instead of "importerror: pytest" + if pytest is not installed. But you shouldn't import "py.test" + anyway anymore. + - adapt one svn test to only check for any exception instead + of specific ones because different svn versions cause different + errors and we don't care. + +------------------------------------------------------------------- +Wed Jul 30 07:50:37 UTC 2014 - toddrme2178@gmail.com + +- Update to 1.4.22 + - refactor class-level registry on ForkedFunc child start/finish + event to become instance based (i.e. passed into the constructor) +- Update to 1.4.21 + - ForkedFunc now has class-level register_on_start/on_exit() + methods to allow adding information in the boxed process. + Thanks Marc Schlaich. + - ForkedFunc in the child opens in "auto-flush" mode for + stdout/stderr so that when a subprocess dies you can see + its output even if it didn't flush itself. + - refactor traceback generation in light of pytest issue 364 + (shortening tracebacks). you can now set a new traceback style + on a per-entry basis such that a caller can force entries to be + isplayed as short or long entries. + - win32: py.path.local.sysfind(name) will preferrably return files with + extensions so that if "X" and "X.bat" or "X.exe" is on the PATH, + one of the latter two will be returned. + +------------------------------------------------------------------- +Tue May 6 11:39:52 UTC 2014 - osynge@suse.com + +- Removed unnessisary dependency on python-setuptools especially as this + causes a conflict with SLE11sp3 + +------------------------------------------------------------------- +Wed Mar 12 16:08:39 UTC 2014 - speilicke@suse.com + +- Update to version 1.4.20: + + ignore unicode decode errors in xmlescape. Thanks Anatoly Bubenkoff. + + on python2 modify traceback.format_exception_only to match python3 + behaviour, namely trying to print unicode for Exception instances + + use a safer way for serializing exception reports (helps to fix + pytest issue413) +- Drop %check section, we never ran tests. That would need python-pytest + and introduce a cycle + +------------------------------------------------------------------- +Fri Jan 3 08:30:42 UTC 2014 - mvyskocil@suse.com + +- update to 1.4.19: + - merge in apipkg fixes + - some micro-optimizations in py/_code/code.py for speeding + up pytest runs. Thanks Alex Gaynor for initiative. + - check PY_COLORS=1 or PY_COLORS=0 to force coloring/not-coloring + for py.io.TerminalWriter() independently from capabilities + of the output file. Thanks Marc Abramowitz for the PR. + - some fixes to unicode handling in assertion handling. + Thanks for the PR to Floris Bruynooghe. (This helps + to fix pytest issue 319). + - depend on setuptools presence, remove distribute_setup + +------------------------------------------------------------------- +Sun Dec 8 21:10:33 UTC 2013 - p.drouand@gmail.com + +- Update to version 1.4.18 + + introduce path.ensure_dir() as a synonym for ensure(..., dir=1) + + some unicode/python3 related fixes wrt to path manipulations + (if you start passing unicode particular in py2 you might + still get problems, though) +- Changes from 1.4.17 + + make py.io.TerminalWriter() prefer colorama if it is available + and avoid empty lines when separator-lines are printed by + being defensive and reducing the working terminalwidth by 1 + + introduce optional "expanduser" argument to py.path.local + to that local("~", expanduser=True) gives the home + directory of "user". +- Changes from 1.4.16 + + fix issue35 - define __gt__ ordering between a local path + and strings + + fix issue36 - make chdir() work even if os.getcwd() fails. + + add path.exists/isdir/isfile/islink shortcuts + + introduce local path.as_cwd() context manager. + + introduce p.write(ensure=1) and p.open(ensure=1) + where ensure triggers creation of neccessary parent dirs. + +------------------------------------------------------------------- +Thu Oct 24 11:10:27 UTC 2013 - speilicke@suse.com + +- Require python-setuptools instead of distribute (upstreams merged) + +------------------------------------------------------------------- +Tue Jun 25 11:45:11 UTC 2013 - dmueller@suse.com + +- update to 1.4.15: + - majorly speed up some common calling patterns with + LocalPath.listdir()/join/check/stat functions considerably. + - fix an edge case with fnmatch where a glob style pattern appeared + in an absolute path. + +------------------------------------------------------------------- +Mon May 27 14:08:03 UTC 2013 - dmueller@suse.com + +- update to 1.4.14: + - fix dupfile to work with files that don't carry a mode. + - fix getting statementrange/compiling a file ending + in a comment line without newline (on python2.5) + - for local paths you can pass "mode=True" to a copy() + in order to copy permission bits (underlying mechanism + is using shutil.copymode) + - add paths arguments to py.path.local.sysfind to restrict + search to the diretories in the path. + - add isdir/isfile/islink to path.stat() objects allowing to perform + multiple checks without calling out multiple times + - drop py.path.local.__new__ in favour of a simpler __init__ + - iniconfig: allow "name:value" settings in config files, no space after + "name" required + - fix issue 27 - NameError in unlikely untested case of saferepr + +------------------------------------------------------------------- +Sat Jan 12 16:41:46 UTC 2013 - p.drouand@gmail.com + +- Initial python3 support + +------------------------------------------------------------------- +Sat Jan 12 16:40:43 UTC 2013 - p.drouand@gmail.com + +- Update to 1.4.12 version: + * fix python2.4 support - for pre-AST interpreters re-introduce + old way to find statements in exceptions (closes pytest issue 209) + * add tox.ini to distribution + * fix issue23 - print *,** args information in tracebacks, + thanks Manuel Jacob + +------------------------------------------------------------------- +Fri Jun 22 13:34:17 UTC 2012 - saschpe@suse.de + +- Update to version 1.4.9: + + fix bug of path.visit() which would not recognize glob-style patterns + for the "rec" recursion argument + + changed iniconfig parsing to better conform, now the chars ";" + and "#" only mark a comment at the stripped start of a line + + include recent apipkg-1.2 + + change internal terminalwriter.line/reline logic to more nicely + support file spinners +- Changes from version 1.4.8: + + fix issue 13 - correct handling of the tag name object in xmlgen + + fix issue 14 - support raw attribute values in xmlgen + + fix windows terminalwriter printing/re-line problem + + update distribute_setup.py to 0.6.27 + +------------------------------------------------------------------- +Mon Feb 20 22:04:23 UTC 2012 - saschpe@gmx.de + +- Update to version 1.4.7: + * fix issue11 - own test failure with python3.3 / Thanks Benjamin Peterson + * help fix pytest issue 102 +- Changes from version 1.4.6: + * help to fix pytest issue99: unify output of + ExceptionInfo.getrepr(style="native") with ...(style="long") + * fix issue7: source.getstatementrange() now raises proper error + if no valid statement can be found + * fix issue8: fix code and tests of svnurl/svnwc to work on subversion 1.7 - + note that path.status(updates=1) will not properly work svn-17's status + --xml output is broken. + * make source.getstatementrange() more resilent about non-python code frames + (as seen from jnja2) + * make trackeback recursion detection more resilent + about the eval magic of a decorator library + * iniconfig: add support for ; as comment starter + * properly handle lists in xmlgen on python3 + * normalize py.code.getfslineno(obj) to always return a (string, int) tuple + defaulting to ("", -1) respectively if no source code can be found for obj. +- Changes from version 1.4.5: + * improve some unicode handling in terminalwriter and capturing +- Spec file cleanup: + * BuildRequire python-distribute instead of setuptools + * Simplified macro usage + * Removed outdated %clean section + +------------------------------------------------------------------- +Thu Jul 14 08:48:35 UTC 2011 - saschpe@suse.de + +- Initial version + diff --git a/python-py.spec b/python-py.spec new file mode 100644 index 0000000..69444fe --- /dev/null +++ b/python-py.spec @@ -0,0 +1,111 @@ +# +# spec file +# +# Copyright (c) 2023 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define oldpython python +%global flavor @BUILD_FLAVOR@%{nil} +%if "%{flavor}" == "test" +%define psuffix -test +%bcond_without test +%else +%define psuffix %{nil} +%bcond_with test +%endif +%{?sle15_python_module_pythons} +Name: python-py%{psuffix} +Version: 1.11.0 +Release: 0 +Summary: Library with cross-python path, ini-parsing, io, code, log facilities +License: MIT +Group: Development/Languages/Python +URL: https://github.com/pytest-dev/py +Source: https://files.pythonhosted.org/packages/source/p/py/py-%{version}.tar.gz +# https://github.com/pytest-dev/py/pull/222 +Patch0: pr_222.patch +# CVE-2022-42969 Remove all traces of svn +Patch1: remove-svn-remants.patch +BuildRequires: %{python_module apipkg} +BuildRequires: %{python_module iniconfig} +BuildRequires: %{python_module setuptools_scm} +BuildRequires: %{python_module setuptools} +Requires: python-apipkg +Requires: python-iniconfig +BuildRequires: fdupes +BuildRequires: python-rpm-macros +Obsoletes: %{oldpython}-py-docs +BuildArch: noarch +%if %{with test} +BuildRequires: %{python_module py = %{version}} +BuildRequires: %{python_module pytest} +%endif +%python_subpackages + +%description +The py lib is a Python development support library featuring +the following tools and modules: + +* py.path: uniform local and svn path objects +* py.apipkg: explicit API control and lazy-importing +* py.iniconfig: easy parsing of .ini files +* py.code: dynamic code generation and introspection +* py.path: uniform local and svn path objects + +%prep +%autosetup -p1 -n py-%{version} + +rm -rf py.egg-info +rm -f tox.ini +# https://github.com/pytest-dev/py/issues/162 +rm -f testing/log/test_warning.py +rm -r py/_vendored_packages + +# CVE-2022-42969 Remove all traces of svn +pushd py/_path +rm svnwc.py svnurl.py +popd +pushd testing/path +rm conftest.py svntestbase.py test_svnauth.py test_svnurl.py test_svnwc.py +popd + +%build +%python_build + +%install +%if !%{with test} +%python_install +%python_expand %fdupes %{buildroot}%{$python_sitelib} +%endif + +%check +%if %{with test} +export LANG=en_US.UTF-8 +# In addition to PR 222, there are other tests failing due to changes in pytest 5 & 6 +# https://github.com/pytest-dev/py/issues/209 +# another failing tests with pytest 7.4: https://github.com/pytest-dev/pytest/commit/cc23ec91d042ee15145b890aea04e96f6e831101 https://github.com/pytest-dev/pytest/commit/0a20452f78a2f5401cf0fc05dad04c8aeee170d7 +# ...but the failure comes from py.core, which was integrated to pytest long ago and will probably be dropped soon: https://github.com/pytest-dev/py/issues/288 +%pytest -k 'not (test_getdimensions or test_format_excinfo or test_excinfo_repr or test_excinfo_str or test_syntaxerror_rerepresentation or test_len or test_power or test_comments or test_repr_traceback or test_traceback_getcrashentry)' +%endif + +%if !%{with test} +%files %{python_files} +%doc README.rst +%license LICENSE +%{python_sitelib}/py +%{python_sitelib}/py-%{version}*-info +%endif + +%changelog diff --git a/remove-svn-remants.patch b/remove-svn-remants.patch new file mode 100644 index 0000000..36930f2 --- /dev/null +++ b/remove-svn-remants.patch @@ -0,0 +1,36 @@ +Index: py-1.10.0/testing/path/test_local.py +=================================================================== +--- py-1.10.0.orig/testing/path/test_local.py ++++ py-1.10.0/testing/path/test_local.py +@@ -338,11 +338,11 @@ class TestLocalPath(common.CommonFSTests + l2 = local(l) + assert l2 == l + +- wc = py.path.svnwc('.') +- l3 = local(wc) +- assert l3 is not wc +- assert l3.strpath == wc.strpath +- assert not hasattr(l3, 'commit') ++ #wc = py.path.svnwc('.') ++ #l3 = local(wc) ++ #assert l3 is not wc ++ #assert l3.strpath == wc.strpath ++ #assert not hasattr(l3, 'commit') + + @py.test.mark.xfail(run=False, reason="unreliable est for long filenames") + def test_long_filenames(self, tmpdir): +Index: py-1.10.0/py/__init__.py +=================================================================== +--- py-1.10.0.orig/py/__init__.py ++++ py-1.10.0/py/__init__.py +@@ -57,10 +57,7 @@ apipkg.initpkg(__name__, attr={'_apipkg' + + 'path' : { + '__doc__' : '._path:__doc__', +- 'svnwc' : '._path.svnwc:SvnWCCommandPath', +- 'svnurl' : '._path.svnurl:SvnCommandPath', + 'local' : '._path.local:LocalPath', +- 'SvnAuth' : '._path.svnwc:SvnAuth', + }, + + # python inspection/code-generation API