Sync from SUSE:SLFO:Main python-py revision 94ad4a38884c57b6e08347598088840f

This commit is contained in:
Adrian Schröter 2024-05-03 21:59:59 +02:00
commit b3e4bfc2d6
7 changed files with 1048 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -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

3
_multibuild Normal file
View File

@ -0,0 +1,3 @@
<multibuild>
<package>test</package>
</multibuild>

409
pr_222.patch Normal file
View File

@ -0,0 +1,409 @@
From f4ed62ad39f289d09b3efdfed7305f935ce60bfc Mon Sep 17 00:00:00 2001
From: Stanislav Levin <slev@altlinux.org>
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 <slev@altlinux.org>
---
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:

BIN
py-1.11.0.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

463
python-py.changes Normal file
View File

@ -0,0 +1,463 @@
-------------------------------------------------------------------
Tue Jul 25 14:23:03 UTC 2023 - Markéta Machová <mmachova@suse.com>
- 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 <dmueller@suse.com>
- add sle15_python_module_pythons (jsc#PED-68)
-------------------------------------------------------------------
Thu Apr 13 22:43:30 UTC 2023 - Matej Cepl <mcepl@suse.com>
- Make calling of %{sle15modernpython} optional.
-------------------------------------------------------------------
Tue Jan 17 05:13:56 UTC 2023 - Steve Kowalik <steven.kowalik@suse.com>
- 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 <daniel.garcia@suse.com>
- 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 <coolo@suse.com>
- use %python_expand for %fdupes
-------------------------------------------------------------------
Mon Mar 14 10:53:30 UTC 2022 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- 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 <dmueller@suse.com>
- 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 <code@bnavigator.de>
- 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 <jayvdb@gmail.com>
- Devendor apipkg and iniconfig
- Add pr_222.patch to activate test suite
-------------------------------------------------------------------
Mon Jun 29 08:51:40 UTC 2020 - Marketa Calabkova <mcalabkova@suse.com>
- Update to 1.9.0
* Add type annotation stubs
-------------------------------------------------------------------
Mon Jan 6 12:53:25 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
- 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 <tchvatal@suse.com>
- Switch to multibuild to avoid cycle bsc#1138666
-------------------------------------------------------------------
Wed Feb 27 13:48:08 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
- 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 <tchvatal@suse.com>
- 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 <tchvatal@suse.com>
- 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 <tchvatal@suse.com>
- 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 <mimi.vx@gmail.com>
- 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 cant 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

111
python-py.spec Normal file
View File

@ -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

36
remove-svn-remants.patch Normal file
View File

@ -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