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


Reply via email to