Hello community,

here is the log from the commit of package python-persistent for 
openSUSE:Factory checked in at 2018-08-15 10:38:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-persistent (Old)
 and      /work/SRC/openSUSE:Factory/.python-persistent.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-persistent"

Wed Aug 15 10:38:37 2018 rev:7 rq:629251 version:4.3.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-persistent/python-persistent.changes      
2018-07-31 15:57:54.479394733 +0200
+++ /work/SRC/openSUSE:Factory/.python-persistent.new/python-persistent.changes 
2018-08-15 10:38:43.524327864 +0200
@@ -1,0 +2,16 @@
+Tue Aug 14 14:55:56 UTC 2018 - mc...@suse.com
+
+- Update to 4.3.0:
+    * Fix the possibility of a rare crash in the C extension when
+      deallocating items. See
+      https://github.com/zopefoundation/persistent/issues/66
+    * Change cPickleCache's comparison of object sizes to determine
+      whether an object can go in the cache to use PyObject_TypeCheck().
+      This matches what the pure Python implementation does and is
+      a stronger test that the object really is compatible with the
+      cache. Previously, an object could potentially include
+      cPersistent_HEAD and not set tp_base to cPersistenceCAPI->pertype
+      and still be eligible for the pickle cache; that is no longer the
+      case. See https://github.com/zopefoundation/persistent/issues/69
+
+-------------------------------------------------------------------

Old:
----
  persistent-4.2.4.2.tar.gz

New:
----
  persistent-4.3.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-persistent.spec ++++++
--- /var/tmp/diff_new_pack.oewYSZ/_old  2018-08-15 10:38:45.156330839 +0200
+++ /var/tmp/diff_new_pack.oewYSZ/_new  2018-08-15 10:38:45.160330847 +0200
@@ -19,14 +19,15 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-persistent
-Version:        4.2.4.2
+Version:        4.3.0
 Release:        0
 Summary:        Translucent persistent objects
 License:        ZPL-2.1
 Group:          Development/Languages/Python
 URL:            https://github.com/zopefoundation/persistent
 Source:         
https://files.pythonhosted.org/packages/source/p/persistent/persistent-%{version}.tar.gz
-Patch0:         persistent-4.2.4.2-switch-off-tests.patch
+# Blocking https://github.com/zopefoundation/persistent/issues/86
+Patch:          persistent-4.2.4.2-switch-off-tests.patch
 # Documentation requirements:
 BuildRequires:  %{python_module Sphinx}
 BuildRequires:  %{python_module devel}
@@ -62,8 +63,8 @@
 
 %prep
 %setup -q -n persistent-%{version}
+%autopatch -p1
 rm -rf persistent.egg-info
-%patch0 -p1
 
 %build
 %python_build

++++++ persistent-4.2.4.2.tar.gz -> persistent-4.3.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/persistent-4.2.4.2/.travis.yml 
new/persistent-4.3.0/.travis.yml
--- old/persistent-4.2.4.2/.travis.yml  2017-04-23 18:58:54.000000000 +0200
+++ new/persistent-4.3.0/.travis.yml    2018-07-30 19:50:15.000000000 +0200
@@ -61,7 +61,6 @@
     - echo [distutils]                                  > ~/.pypirc
     - echo index-servers = pypi                        >> ~/.pypirc
     - echo [pypi]                                      >> ~/.pypirc
-    - echo repository=https://pypi.python.org/pypi     >> ~/.pypirc
     - echo username=zope.wheelbuilder                  >> ~/.pypirc
     - echo password=$PYPIPASSWORD                      >> ~/.pypirc
     - if [[ $TRAVIS_TAG && "$TRAVIS_OS_NAME" == "osx" ]]; then pip install 
twine; fi
@@ -70,4 +69,4 @@
 
 env:
     global:
-        secure: 
"NTWzDr5p8KRPNt+sniTot7csbzC87rzir/XfLtENE0GpQ49FlKw3lBhsDqAPoD8Ea5lwiHXmC/C/ci1UZhFvVEkAoQ2qJlMRnhqUdRJSrqcitmRt0fT6mLaTd+Lr+DxKlBxpssobrEm2G42V/G1s0Ggym04OqF8T+s6MF5ywgJM="
\ No newline at end of file
+        secure: 
"NTWzDr5p8KRPNt+sniTot7csbzC87rzir/XfLtENE0GpQ49FlKw3lBhsDqAPoD8Ea5lwiHXmC/C/ci1UZhFvVEkAoQ2qJlMRnhqUdRJSrqcitmRt0fT6mLaTd+Lr+DxKlBxpssobrEm2G42V/G1s0Ggym04OqF8T+s6MF5ywgJM="
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/persistent-4.2.4.2/CHANGES.rst 
new/persistent-4.3.0/CHANGES.rst
--- old/persistent-4.2.4.2/CHANGES.rst  2017-04-23 18:58:54.000000000 +0200
+++ new/persistent-4.3.0/CHANGES.rst    2018-07-30 19:50:15.000000000 +0200
@@ -1,6 +1,21 @@
 ``persistent`` Changelog
 ========================
 
+4.3.0 (2018-07-30)
+------------------
+
+- Fix the possibility of a rare crash in the C extension when
+  deallocating items. See 
https://github.com/zopefoundation/persistent/issues/66
+
+- Change cPickleCache's comparison of object sizes to determine
+  whether an object can go in the cache to use ``PyObject_TypeCheck()``.
+  This matches what the pure Python implementation does and is a
+  stronger test that the object really is compatible with the cache.
+  Previously, an object could potentially include ``cPersistent_HEAD``
+  and *not* set ``tp_base`` to ``cPersistenceCAPI->pertype`` and still
+  be eligible for the pickle cache; that is no longer the case. See
+  `issue 69 <https://github.com/zopefoundation/persistent/issues/69>`_.
+
 4.2.4.2 (2017-04-23)
 --------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/persistent-4.2.4.2/PKG-INFO 
new/persistent-4.3.0/PKG-INFO
--- old/persistent-4.2.4.2/PKG-INFO     2017-04-23 18:58:55.000000000 +0200
+++ new/persistent-4.3.0/PKG-INFO       2018-07-30 19:50:16.000000000 +0200
@@ -1,15 +1,15 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: persistent
-Version: 4.2.4.2
+Version: 4.3.0
 Summary: Translucent persistent objects
-Home-page: http://www.zope.org/Products/ZODB
+Home-page: https://github.com/zopefoundation/persistent/
 Author: Zope Corporation
 Author-email: zodb-...@zope.org
 License: ZPL 2.1
 Description: ``persistent``:  automatic persistence for Python objects
         =========================================================
         
-        .. image:: 
https://travis-ci.org/zopefoundation/persistent.png?branch=master
+        .. image:: 
https://travis-ci.org/zopefoundation/persistent.svg?branch=master
                 :target: https://travis-ci.org/zopefoundation/persistent
         
         .. image:: 
https://readthedocs.org/projects/persistent/badge/?version=latest
@@ -29,7 +29,9 @@
         a database such as the ZODB.
         
         Please see the Sphinx documentation (``docs/index.rst``) for further
-        information.
+        information, or view the documentation at Read The Docs, for either
+        the latest (``http://persistent.readthedocs.io/en/latest/) or stable 
+        release (``http://persistent.readthedocs.io/en/stable/``).
         
         .. note::
         
@@ -41,6 +43,21 @@
         ``persistent`` Changelog
         ========================
         
+        4.3.0 (2018-07-30)
+        ------------------
+        
+        - Fix the possibility of a rare crash in the C extension when
+          deallocating items. See 
https://github.com/zopefoundation/persistent/issues/66
+        
+        - Change cPickleCache's comparison of object sizes to determine
+          whether an object can go in the cache to use 
``PyObject_TypeCheck()``.
+          This matches what the pure Python implementation does and is a
+          stronger test that the object really is compatible with the cache.
+          Previously, an object could potentially include ``cPersistent_HEAD``
+          and *not* set ``tp_base`` to ``cPersistenceCAPI->pertype`` and still
+          be eligible for the pickle cache; that is no longer the case. See
+          `issue 69 <https://github.com/zopefoundation/persistent/issues/69>`_.
+        
         4.2.4.2 (2017-04-23)
         --------------------
         
@@ -300,3 +317,6 @@
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
 Classifier: Operating System :: Microsoft :: Windows
 Classifier: Operating System :: Unix
+Provides-Extra: docs
+Provides-Extra: test
+Provides-Extra: testing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/persistent-4.2.4.2/README.rst 
new/persistent-4.3.0/README.rst
--- old/persistent-4.2.4.2/README.rst   2017-04-23 18:58:54.000000000 +0200
+++ new/persistent-4.3.0/README.rst     2018-07-30 19:50:15.000000000 +0200
@@ -1,7 +1,7 @@
 ``persistent``:  automatic persistence for Python objects
 =========================================================
 
-.. image:: https://travis-ci.org/zopefoundation/persistent.png?branch=master
+.. image:: https://travis-ci.org/zopefoundation/persistent.svg?branch=master
         :target: https://travis-ci.org/zopefoundation/persistent
 
 .. image:: https://readthedocs.org/projects/persistent/badge/?version=latest
@@ -21,7 +21,9 @@
 a database such as the ZODB.
 
 Please see the Sphinx documentation (``docs/index.rst``) for further
-information.
+information, or view the documentation at Read The Docs, for either
+the latest (``http://persistent.readthedocs.io/en/latest/) or stable 
+release (``http://persistent.readthedocs.io/en/stable/``).
 
 .. note::
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/persistent-4.2.4.2/persistent/cPersistence.c 
new/persistent-4.3.0/persistent/cPersistence.c
--- old/persistent-4.2.4.2/persistent/cPersistence.c    2017-04-23 
18:58:54.000000000 +0200
+++ new/persistent-4.3.0/persistent/cPersistence.c      2018-07-30 
19:50:15.000000000 +0200
@@ -783,6 +783,7 @@
 static void
 Per_dealloc(cPersistentObject *self)
 {
+    PyObject_GC_UnTrack((PyObject *)self);
     if (self->state >= 0)
     {
         /* If the cache has been cleared, then a non-ghost object
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/persistent-4.2.4.2/persistent/cPickleCache.c 
new/persistent-4.3.0/persistent/cPickleCache.c
--- old/persistent-4.2.4.2/persistent/cPickleCache.c    2017-04-23 
18:58:54.000000000 +0200
+++ new/persistent-4.3.0/persistent/cPickleCache.c      2018-07-30 
19:50:15.000000000 +0200
@@ -99,11 +99,6 @@
 #include <stddef.h>
 #undef Py_FindMethod
 
-/* Python 2.4 backward compat */
-#if PY_MAJOR_VERSION <= 2 && PY_MINOR_VERSION < 5
-#define Py_ssize_t int
-typedef Py_ssize_t (*lenfunc)(PyObject *);
-#endif
 
 /* Python string objects to speed lookups; set by module init. */
 static PyObject *py__p_changed;
@@ -111,7 +106,7 @@
 static PyObject *py__p_jar;
 static PyObject *py__p_oid;
 
-static cPersistenceCAPIstruct *capi;
+static cPersistenceCAPIstruct *cPersistenceCAPI;
 
 /* This object is the pickle cache.  The CACHE_HEAD macro guarantees
    that layout of this struct is the same as the start of
@@ -206,7 +201,7 @@
     {
         assert(self->ring_lock);
         assert(here != &self->ring_home);
-        
+
         /* At this point we know that the ring only contains nodes
             from persistent objects, plus our own home node.  We know
             this because the ring lock is held.  We can safely assume
@@ -214,14 +209,14 @@
             is not the home */
         object = OBJECT_FROM_RING(self, here);
 
-        if (object->state == cPersistent_UPTODATE_STATE) 
+        if (object->state == cPersistent_UPTODATE_STATE)
         {
             CPersistentRing placeholder;
             PyObject *method;
             PyObject *temp;
             int error_occurred = 0;
             /* deactivate it. This is the main memory saver. */
-            
+
             /* Add a placeholder, a dummy node in the ring.  We need
                 to do this to mark our position in the ring.  It is
                 possible that the PyObject_GetAttr() call below will
@@ -237,7 +232,7 @@
             method = PyObject_GetAttr((PyObject *)object, py__p_deactivate);
             if (method == NULL)
                 error_occurred = 1;
-            else 
+            else
             {
                 temp = PyObject_CallObject(method, NULL);
                 Py_DECREF(method);
@@ -523,7 +518,7 @@
             v = Py_BuildValue("Oi", k, v->ob_refcnt);
 
         else if (! PyType_Check(v) &&
-                (v->ob_type->tp_basicsize >= sizeof(cPersistentObject))
+                PER_TypeCheck(v)
                 )
             v = Py_BuildValue("Oisi",
                             k, v->ob_refcnt, v->ob_type->tp_name,
@@ -711,13 +706,12 @@
     {
         /* Its a persistent class, such as a ZClass. Thats ok. */
     }
-    else if (v->ob_type->tp_basicsize < sizeof(cPersistentObject))
+    else if (! PER_TypeCheck(v))
     {
         /* If it's not an instance of a persistent class, (ie Python
             classes that derive from persistent.Persistent, BTrees,
             etc), report an error.
 
-            TODO:  checking sizeof() seems a poor test.
         */
         PyErr_SetString(PyExc_TypeError,
                         "Cache values must be persistent objects.");
@@ -891,6 +885,7 @@
 static void
 cc_dealloc(ccobject *self)
 {
+    PyObject_GC_UnTrack((PyObject *)self);
     Py_XDECREF(self->data);
     Py_XDECREF(self->jar);
     PyObject_GC_Del(self);
@@ -1033,13 +1028,11 @@
     {
         /* Its a persistent class, such as a ZClass. Thats ok. */
     }
-    else if (v->ob_type->tp_basicsize < sizeof(cPersistentObject))
+    else if (! PER_TypeCheck(v))
     {
         /* If it's not an instance of a persistent class, (ie Python
             classes that derive from persistent.Persistent, BTrees,
             etc), report an error.
-
-            TODO:  checking sizeof() seems a poor test.
         */
         PyErr_SetString(PyExc_TypeError,
                         "Cache values must be persistent objects.");
@@ -1058,7 +1051,7 @@
         PyErr_Format(PyExc_TypeError,
                     "Cached object oid must be bytes, not a %s",
                     oid->ob_type->tp_name);
-        
+
         return -1;
     }
 
@@ -1346,14 +1339,14 @@
 #endif
 
 #ifdef PY3K
-    capi = (cPersistenceCAPIstruct *)PyCapsule_Import(CAPI_CAPSULE_NAME, 0);
+    cPersistenceCAPI = (cPersistenceCAPIstruct 
*)PyCapsule_Import(CAPI_CAPSULE_NAME, 0);
 #else
-    capi = (cPersistenceCAPIstruct *)PyCObject_Import(
-                    "persistent.cPersistence", "CAPI");
+    cPersistenceCAPI = (cPersistenceCAPIstruct *)PyCObject_Import(
+                       "persistent.cPersistence", "CAPI");
 #endif
-    if (!capi)
+    if (!cPersistenceCAPI)
         return NULL;
-    capi->percachedel = (percachedelfunc)cc_oid_unreferenced;
+    cPersistenceCAPI->percachedel = (percachedelfunc)cc_oid_unreferenced;
 
     py__p_changed = INTERN("_p_changed");
     if (!py__p_changed)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/persistent-4.2.4.2/persistent.egg-info/PKG-INFO 
new/persistent-4.3.0/persistent.egg-info/PKG-INFO
--- old/persistent-4.2.4.2/persistent.egg-info/PKG-INFO 2017-04-23 
18:58:55.000000000 +0200
+++ new/persistent-4.3.0/persistent.egg-info/PKG-INFO   2018-07-30 
19:50:16.000000000 +0200
@@ -1,15 +1,15 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: persistent
-Version: 4.2.4.2
+Version: 4.3.0
 Summary: Translucent persistent objects
-Home-page: http://www.zope.org/Products/ZODB
+Home-page: https://github.com/zopefoundation/persistent/
 Author: Zope Corporation
 Author-email: zodb-...@zope.org
 License: ZPL 2.1
 Description: ``persistent``:  automatic persistence for Python objects
         =========================================================
         
-        .. image:: 
https://travis-ci.org/zopefoundation/persistent.png?branch=master
+        .. image:: 
https://travis-ci.org/zopefoundation/persistent.svg?branch=master
                 :target: https://travis-ci.org/zopefoundation/persistent
         
         .. image:: 
https://readthedocs.org/projects/persistent/badge/?version=latest
@@ -29,7 +29,9 @@
         a database such as the ZODB.
         
         Please see the Sphinx documentation (``docs/index.rst``) for further
-        information.
+        information, or view the documentation at Read The Docs, for either
+        the latest (``http://persistent.readthedocs.io/en/latest/) or stable 
+        release (``http://persistent.readthedocs.io/en/stable/``).
         
         .. note::
         
@@ -41,6 +43,21 @@
         ``persistent`` Changelog
         ========================
         
+        4.3.0 (2018-07-30)
+        ------------------
+        
+        - Fix the possibility of a rare crash in the C extension when
+          deallocating items. See 
https://github.com/zopefoundation/persistent/issues/66
+        
+        - Change cPickleCache's comparison of object sizes to determine
+          whether an object can go in the cache to use 
``PyObject_TypeCheck()``.
+          This matches what the pure Python implementation does and is a
+          stronger test that the object really is compatible with the cache.
+          Previously, an object could potentially include ``cPersistent_HEAD``
+          and *not* set ``tp_base`` to ``cPersistenceCAPI->pertype`` and still
+          be eligible for the pickle cache; that is no longer the case. See
+          `issue 69 <https://github.com/zopefoundation/persistent/issues/69>`_.
+        
         4.2.4.2 (2017-04-23)
         --------------------
         
@@ -300,3 +317,6 @@
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
 Classifier: Operating System :: Microsoft :: Windows
 Classifier: Operating System :: Unix
+Provides-Extra: docs
+Provides-Extra: test
+Provides-Extra: testing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/persistent-4.2.4.2/setup.py 
new/persistent-4.3.0/setup.py
--- old/persistent-4.2.4.2/setup.py     2017-04-23 18:58:54.000000000 +0200
+++ new/persistent-4.3.0/setup.py       2018-07-30 19:50:15.000000000 +0200
@@ -20,7 +20,7 @@
 from setuptools import find_packages
 from setuptools import setup
 
-version = '4.2.4.2'
+version = '4.3.0'
 
 here = os.path.abspath(os.path.dirname(__file__))
 
@@ -43,58 +43,69 @@
 if is_pypy or is_jython or is_pure:
     ext_modules = headers = []
 else:
-    ext_modules = [Extension(name = 'persistent.cPersistence',
-                             sources= ['persistent/cPersistence.c',
-                                       'persistent/ring.c',
-                                      ],
-                             depends = ['persistent/cPersistence.h',
-                                        'persistent/ring.h',
-                                        'persistent/ring.c',
-                                       ]
-                            ),
-                   Extension(name = 'persistent.cPickleCache',
-                             sources= ['persistent/cPickleCache.c',
-                                       'persistent/ring.c'
-                                      ],
-                             depends = ['persistent/cPersistence.h',
-                                        'persistent/ring.h',
-                                        'persistent/ring.c',
-                                       ]
-                            ),
-                   Extension(name = 'persistent._timestamp',
-                             sources= ['persistent/_timestamp.c',
-                                      ],
-                            ),
-                  ]
-    headers = ['persistent/cPersistence.h',
-               'persistent/ring.h']
+    ext_modules = [
+        Extension(
+            name='persistent.cPersistence',
+            sources=[
+                'persistent/cPersistence.c',
+                'persistent/ring.c',
+            ],
+            depends=[
+                'persistent/cPersistence.h',
+                'persistent/ring.h',
+                'persistent/ring.c',
+            ]
+        ),
+        Extension(
+            name='persistent.cPickleCache',
+            sources=[
+                'persistent/cPickleCache.c',
+                'persistent/ring.c',
+            ],
+            depends=[
+                'persistent/cPersistence.h',
+                'persistent/ring.h',
+                'persistent/ring.c',
+            ]
+        ),
+        Extension(
+            name='persistent._timestamp',
+            sources=[
+                'persistent/_timestamp.c',
+            ],
+        ),
+    ]
+    headers = [
+        'persistent/cPersistence.h',
+        'persistent/ring.h',
+    ]
 
 setup(name='persistent',
       version=version,
       description='Translucent persistent objects',
       long_description=README,
       classifiers=[
-        "Development Status :: 6 - Mature",
-        "License :: OSI Approved :: Zope Public License",
-        "Programming Language :: Python",
-        'Programming Language :: Python :: 2',
-        'Programming Language :: Python :: 2.7',
-        'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.3',
-        'Programming Language :: Python :: 3.4',
-        'Programming Language :: Python :: 3.5',
-        'Programming Language :: Python :: 3.6',
-        "Programming Language :: Python :: Implementation :: CPython",
-        "Programming Language :: Python :: Implementation :: PyPy",
-        "Framework :: ZODB",
-        "Topic :: Database",
-        "Topic :: Software Development :: Libraries :: Python Modules",
-        "Operating System :: Microsoft :: Windows",
-        "Operating System :: Unix",
-        ],
+          "Development Status :: 6 - Mature",
+          "License :: OSI Approved :: Zope Public License",
+          "Programming Language :: Python",
+          'Programming Language :: Python :: 2',
+          'Programming Language :: Python :: 2.7',
+          'Programming Language :: Python :: 3',
+          'Programming Language :: Python :: 3.3',
+          'Programming Language :: Python :: 3.4',
+          'Programming Language :: Python :: 3.5',
+          'Programming Language :: Python :: 3.6',
+          "Programming Language :: Python :: Implementation :: CPython",
+          "Programming Language :: Python :: Implementation :: PyPy",
+          "Framework :: ZODB",
+          "Topic :: Database",
+          "Topic :: Software Development :: Libraries :: Python Modules",
+          "Operating System :: Microsoft :: Windows",
+          "Operating System :: Unix",
+      ],
       author="Zope Corporation",
       author_email="zodb-...@zope.org",
-      url="http://www.zope.org/Products/ZODB";,
+      url="https://github.com/zopefoundation/persistent/";,
       license="ZPL 2.1",
       platforms=["any"],
       packages=find_packages(),
@@ -103,13 +114,19 @@
       ext_modules=ext_modules,
       headers=headers,
       extras_require={
-        'test': (),
-        'testing': ['nose', 'coverage'],
-        'docs': ['Sphinx', 'repoze.sphinx.autointerface'],
+          'test': (),
+          'testing': [
+              'nose',
+              'coverage',
+          ],
+          'docs': [
+              'Sphinx',
+              'repoze.sphinx.autointerface',
+          ],
       },
       test_suite="persistent.tests",
       install_requires=[
-        'zope.interface',
+          'zope.interface',
       ],
       entry_points={},
-      )
+)


Reply via email to