Hello community, here is the log from the commit of package python-pyrsistent for openSUSE:Factory checked in at 2019-07-30 13:06:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pyrsistent (Old) and /work/SRC/openSUSE:Factory/.python-pyrsistent.new.4126 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pyrsistent" Tue Jul 30 13:06:55 2019 rev:5 rq:719530 version:0.15.4 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pyrsistent/python-pyrsistent.changes 2019-06-07 12:16:54.864818144 +0200 +++ /work/SRC/openSUSE:Factory/.python-pyrsistent.new.4126/python-pyrsistent.changes 2019-07-30 13:06:57.086363533 +0200 @@ -1,0 +2,22 @@ +Mon Jul 29 08:24:54 UTC 2019 - Tomáš Chvátal <tchva...@suse.com> + +- Update to 0.15.4: + * support new pytest + * Fix #174, fix a GC traversal bug in pvector evolver C extension. + +------------------------------------------------------------------- +Thu Jul 18 09:42:37 UTC 2019 - Tomáš Chvátal <tchva...@suse.com> + +- Use pytest4 for testing as pytest 5.x series do not work; bug + was reported upstream + +------------------------------------------------------------------- +Thu Jul 18 09:38:13 UTC 2019 - Tomáš Chvátal <tchva...@suse.com> + +- Update to 0.15.3: + * Fix #172, catch all exceptions during extension build to reduce chance of corner cases that prevents installation. + * Fix #171, in PVector equality comparison don's assume that other object has a length, check before calling len. + * Fix #168, write warning about failing build of C extension directly to stderr to avoid that pip silences it. + * Fix #155, update PMapEvolver type stub to better reflect implementation. + +------------------------------------------------------------------- @@ -4 +26 @@ -- Update t0 0.15.2 +- Update to 0.15.2 Old: ---- pyrsistent-0.15.2.tar.gz New: ---- pyrsistent-0.15.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pyrsistent.spec ++++++ --- /var/tmp/diff_new_pack.0VYuxh/_old 2019-07-30 13:06:57.910363320 +0200 +++ /var/tmp/diff_new_pack.0VYuxh/_new 2019-07-30 13:06:57.910363320 +0200 @@ -18,7 +18,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-pyrsistent -Version: 0.15.2 +Version: 0.15.4 Release: 0 Summary: Persistent, Functional, Immutable data structures License: MIT @@ -58,6 +58,7 @@ %python_expand %fdupes %{buildroot}%{$python_sitearch} %check +export PYTHONDONTWRITEBYTECODE=1 %pytest_arch %files %{python_files} ++++++ pyrsistent-0.15.2.tar.gz -> pyrsistent-0.15.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyrsistent-0.15.2/CHANGES.txt new/pyrsistent-0.15.4/CHANGES.txt --- old/pyrsistent-0.15.2/CHANGES.txt 2019-05-12 14:13:50.000000000 +0200 +++ new/pyrsistent-0.15.4/CHANGES.txt 2019-07-27 21:04:15.000000000 +0200 @@ -1,5 +1,15 @@ Revision history ---------------- +0.15.4, 2019-07-27 + * Fix #174, fix a GC traversal bug in pvector evolver C extension. Thanks @till-varoquaux for finding and fixing this! + * Fix #175, pytest 5 compatibility, this is a quick fix, some more work is needed to get coverage working etc. + +0.15.3, 2019-07-07 + * Fix #172, catch all exceptions during extension build to reduce chance of corner cases that prevents installation. + * Fix #171, in PVector equality comparison don's assume that other object has a length, check before calling len. + * Fix #168, write warning about failing build of C extension directly to stderr to avoid that pip silences it. + * Fix #155, update PMapEvolver type stub to better reflect implementation. + 0.15.2, 2019-05-12 * Fix #166, Propagate 'ignore_extra' param in hierarchy. Thanks @ss18 for this! * Fix #167, thaw typing. Thanks @nattofriends for this! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyrsistent-0.15.2/PKG-INFO new/pyrsistent-0.15.4/PKG-INFO --- old/pyrsistent-0.15.2/PKG-INFO 2019-05-12 14:14:06.000000000 +0200 +++ new/pyrsistent-0.15.4/PKG-INFO 2019-07-27 21:05:36.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: pyrsistent -Version: 0.15.2 +Version: 0.15.4 Summary: Persistent/Functional/Immutable data structures Home-page: http://github.com/tobgu/pyrsistent/ Author: Tobias Gustafsson @@ -682,6 +682,8 @@ Semen Zhydenko https://github.com/ss18 + Till Varoquaux https://github.com/till-varoquaux + Contributing ------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyrsistent-0.15.2/README new/pyrsistent-0.15.4/README --- old/pyrsistent-0.15.2/README 2019-05-12 14:12:29.000000000 +0200 +++ new/pyrsistent-0.15.4/README 2019-07-27 21:04:15.000000000 +0200 @@ -674,6 +674,8 @@ Semen Zhydenko https://github.com/ss18 +Till Varoquaux https://github.com/till-varoquaux + Contributing ------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyrsistent-0.15.2/README.rst new/pyrsistent-0.15.4/README.rst --- old/pyrsistent-0.15.2/README.rst 2019-05-12 14:12:29.000000000 +0200 +++ new/pyrsistent-0.15.4/README.rst 2019-07-27 21:04:15.000000000 +0200 @@ -674,6 +674,8 @@ Semen Zhydenko https://github.com/ss18 +Till Varoquaux https://github.com/till-varoquaux + Contributing ------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyrsistent-0.15.2/_pyrsistent_version.py new/pyrsistent-0.15.4/_pyrsistent_version.py --- old/pyrsistent-0.15.2/_pyrsistent_version.py 2019-05-12 14:13:50.000000000 +0200 +++ new/pyrsistent-0.15.4/_pyrsistent_version.py 2019-07-27 21:04:15.000000000 +0200 @@ -1 +1 @@ -__version__ = '0.15.2' +__version__ = '0.15.4' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyrsistent-0.15.2/pvectorcmodule.c new/pyrsistent-0.15.4/pvectorcmodule.c --- old/pyrsistent-0.15.2/pvectorcmodule.c 2019-02-21 22:21:41.000000000 +0100 +++ new/pyrsistent-0.15.4/pvectorcmodule.c 2019-07-27 20:51:01.000000000 +0200 @@ -1557,7 +1557,9 @@ static int PVectorEvolver_traverse(PVectorEvolver *self, visitproc visit, void *arg) { Py_VISIT(self->newVector); - Py_VISIT(self->originalVector); + if (self->newVector != self->originalVector) { + Py_VISIT(self->originalVector); + } Py_VISIT(self->appendList); return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyrsistent-0.15.2/pyrsistent/_checked_types.py new/pyrsistent-0.15.4/pyrsistent/_checked_types.py --- old/pyrsistent-0.15.2/pyrsistent/_checked_types.py 2018-10-14 12:06:35.000000000 +0200 +++ new/pyrsistent-0.15.4/pyrsistent/_checked_types.py 2019-07-02 21:31:43.000000000 +0200 @@ -117,7 +117,7 @@ def wrap_invariant(invariant): # Invariant functions may return the outcome of several tests - # In those cases the results have to be merged before beeing passed + # In those cases the results have to be merged before being passed # back to the client. def f(*args, **kwargs): result = invariant(*args, **kwargs) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyrsistent-0.15.2/pyrsistent/_pvector.py new/pyrsistent-0.15.4/pyrsistent/_pvector.py --- old/pyrsistent-0.15.2/pyrsistent/_pvector.py 2018-10-14 12:06:35.000000000 +0200 +++ new/pyrsistent-0.15.4/pyrsistent/_pvector.py 2019-07-04 22:05:29.000000000 +0200 @@ -76,10 +76,10 @@ return iter(self.tolist()) def __ne__(self, other): - return self._count != len(other) or compare_pvector(self, other, operator.ne) + return not self.__eq__(other) def __eq__(self, other): - return self is other or self._count == len(other) and compare_pvector(self, other, operator.eq) + return self is other or (hasattr(other, '__len__') and self._count == len(other)) and compare_pvector(self, other, operator.eq) def __gt__(self, other): return compare_pvector(self, other, operator.gt) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyrsistent-0.15.2/pyrsistent/typing.pyi new/pyrsistent-0.15.4/pyrsistent/typing.pyi --- old/pyrsistent-0.15.2/pyrsistent/typing.pyi 2019-04-25 21:49:19.000000000 +0200 +++ new/pyrsistent-0.15.4/pyrsistent/typing.pyi 2019-07-04 22:22:31.000000000 +0200 @@ -11,7 +11,6 @@ from typing import Iterable from typing import List from typing import Mapping -from typing import MutableMapping from typing import Optional from typing import Sequence from typing import AbstractSet @@ -48,10 +47,9 @@ def update_with(self, update_fn: Callable[[VT, VT], VT], *args: Mapping) -> Any: ... -class PMapEvolver(MutableMapping[KT, VT]): +class PMapEvolver(Generic[KT, VT]): def __delitem__(self, key: KT) -> None: ... def __getitem__(self, key: KT) -> VT: ... - def __iter__(self) -> Iterator[KT]: ... def __len__(self) -> int: ... def __setitem__(self, key: KT, val: VT) -> None: ... def is_dirty(self) -> bool: ... diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyrsistent-0.15.2/pyrsistent.egg-info/PKG-INFO new/pyrsistent-0.15.4/pyrsistent.egg-info/PKG-INFO --- old/pyrsistent-0.15.2/pyrsistent.egg-info/PKG-INFO 2019-05-12 14:14:06.000000000 +0200 +++ new/pyrsistent-0.15.4/pyrsistent.egg-info/PKG-INFO 2019-07-27 21:05:36.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: pyrsistent -Version: 0.15.2 +Version: 0.15.4 Summary: Persistent/Functional/Immutable data structures Home-page: http://github.com/tobgu/pyrsistent/ Author: Tobias Gustafsson @@ -682,6 +682,8 @@ Semen Zhydenko https://github.com/ss18 + Till Varoquaux https://github.com/till-varoquaux + Contributing ------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyrsistent-0.15.2/setup.py new/pyrsistent-0.15.4/setup.py --- old/pyrsistent-0.15.2/setup.py 2019-05-11 08:02:14.000000000 +0200 +++ new/pyrsistent-0.15.4/setup.py 2019-07-04 21:52:49.000000000 +0200 @@ -9,12 +9,6 @@ from distutils.errors import DistutilsPlatformError, DistutilsExecError from _pyrsistent_version import __version__ -try: - FileNotFoundError -except NameError: # Python 2 - FileNotFoundError = IOError - - readme_path = os.path.join(os.path.dirname(__file__), 'README.rst') with codecs.open(readme_path, encoding='utf8') as f: readme = f.read() @@ -41,27 +35,19 @@ def run(self): try: build_ext.run(self) - except (CCompilerError, DistutilsExecError, DistutilsPlatformError, FileNotFoundError): + except Exception: e = sys.exc_info()[1] - sys.stdout.write('%s\n' % str(e)) - warnings.warn(self.warning_message % ("Extension modules", - "There was an issue with " - "your platform configuration" - " - see above.")) + sys.stderr.write('%s\n' % str(e)) + sys.stderr.write(self.warning_message % ("extension modules", "There was an issue with your platform configuration - see above.")) def build_extension(self, ext): name = ext.name try: build_ext.build_extension(self, ext) - except (CCompilerError, DistutilsExecError, DistutilsPlatformError, FileNotFoundError): + except Exception: e = sys.exc_info()[1] - sys.stdout.write('%s\n' % str(e)) - warnings.warn(self.warning_message % ("The %s extension " - "module" % (name,), - "The output above " - "this warning shows how " - "the compilation " - "failed.")) + sys.stderr.write('%s\n' % str(e)) + sys.stderr.write(self.warning_message % ("%s extension module" % name, "The output above this warning shows how the compilation failed.")) setup( name='pyrsistent', @@ -84,7 +70,7 @@ 'Programming Language :: Python :: Implementation :: PyPy', ], test_suite='tests', - tests_require=['pytest', 'hypothesis<5'], + tests_require=['pytest<5', 'hypothesis<5'], scripts=[], setup_requires=pytest_runner, ext_modules=extensions, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyrsistent-0.15.2/tests/deque_test.py new/pyrsistent-0.15.4/tests/deque_test.py --- old/pyrsistent-0.15.2/tests/deque_test.py 2018-07-07 15:53:48.000000000 +0200 +++ new/pyrsistent-0.15.4/tests/deque_test.py 2019-07-27 20:52:14.000000000 +0200 @@ -257,7 +257,7 @@ with pytest.raises(TypeError) as e: pdeque([1, 2, 3])['foo'] - assert 'cannot be interpreted' in str(e) + assert 'cannot be interpreted' in str(e.value) def test_slicing(): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyrsistent-0.15.2/tests/list_test.py new/pyrsistent-0.15.4/tests/list_test.py --- old/pyrsistent-0.15.2/tests/list_test.py 2019-04-25 21:49:19.000000000 +0200 +++ new/pyrsistent-0.15.4/tests/list_test.py 2019-07-27 20:52:14.000000000 +0200 @@ -90,7 +90,7 @@ with pytest.raises(TypeError) as e: plist([1, 2, 3])['foo'] # type: ignore - assert 'cannot be interpreted' in str(e) + assert 'cannot be interpreted' in str(e.value) def test_slicing_take(): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyrsistent-0.15.2/tests/vector_test.py new/pyrsistent-0.15.4/tests/vector_test.py --- old/pyrsistent-0.15.2/tests/vector_test.py 2018-10-14 12:06:35.000000000 +0200 +++ new/pyrsistent-0.15.4/tests/vector_test.py 2019-07-27 20:51:01.000000000 +0200 @@ -875,6 +875,11 @@ assert v >= [1, 2] +def test_compare_with_non_iterable(pvector): + assert pvector([1, 2, 3]) != 5 + assert not (pvector([1, 2, 3]) == 5) + + def test_python_no_c_extension_with_environment_variable(): from six.moves import reload_module import pyrsistent._pvector @@ -898,6 +903,17 @@ import weakref weakref.ref(pvector()) +def test_get_evolver_referents(pvector): + """The C implementation of the evolver should expose the original PVector + to the gc only once. + """ + if pvector.__module__ == 'pyrsistent._pvector': + pytest.skip("This test only applies to pvectorc") + import gc + v = pvector([1, 2, 3]) + e = v.evolver() + assert len([x for x in gc.get_referents(e) if x is v]) == 1 + def test_failing_repr(pvector): # See https://github.com/tobgu/pyrsistent/issues/84