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 <[email protected]>
+
+- 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 <[email protected]>
+
+- 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 <[email protected]>
+
+- 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