Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-cchardet for openSUSE:Factory 
checked in at 2021-03-05 13:44:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-cchardet (Old)
 and      /work/SRC/openSUSE:Factory/.python-cchardet.new.2378 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-cchardet"

Fri Mar  5 13:44:11 2021 rev:4 rq:875285 version:2.1.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-cchardet/python-cchardet.changes  
2020-09-15 16:29:27.170663577 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-cchardet.new.2378/python-cchardet.changes    
    2021-03-05 13:44:22.351572900 +0100
@@ -1,0 +2,7 @@
+Fri Feb 26 06:57:19 UTC 2021 - ecsos <ec...@opensuse.org>
+
+- Update to 2.1.7
+  - support Python 3.9
+  - drop support for Python 3.5
+
+-------------------------------------------------------------------

Old:
----
  cchardet-2.1.6.tar.gz

New:
----
  cchardet-2.1.7.tar.gz

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

Other differences:
------------------
++++++ python-cchardet.spec ++++++
--- /var/tmp/diff_new_pack.L8Axvz/_old  2021-03-05 13:44:23.423573875 +0100
+++ /var/tmp/diff_new_pack.L8Axvz/_new  2021-03-05 13:44:23.427573879 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-cchardet
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,9 +19,9 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define skip_python2 1
 Name:           python-cchardet
-Version:        2.1.6
+Version:        2.1.7
 Release:        0
-Summary:        cChardet is high speed universal character encoding detector
+Summary:        CChardet is high speed universal character encoding detector
 License:        MPL-1.1 OR LGPL-2.1-or-later OR GPL-2.0-or-later
 URL:            https://github.com/PyYoshi/cChardet
 Source:         
https://files.pythonhosted.org/packages/source/c/cchardet/cchardet-%{version}.tar.gz

++++++ cchardet-2.1.6.tar.gz -> cchardet-2.1.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cchardet-2.1.6/CHANGES.rst 
new/cchardet-2.1.7/CHANGES.rst
--- old/cchardet-2.1.6/CHANGES.rst      2020-03-16 16:22:53.000000000 +0100
+++ new/cchardet-2.1.7/CHANGES.rst      2020-10-27 09:16:37.000000000 +0100
@@ -1,10 +1,11 @@
 CHANGES
 =======
 
-2.x.x
------
-
+2.1.7 (2020-10-27)
+------------------
 
+- support Python 3.9
+- drop support for Python 3.5
 
 2.1.6 (2020-03-17)
 ------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cchardet-2.1.6/PKG-INFO new/cchardet-2.1.7/PKG-INFO
--- old/cchardet-2.1.6/PKG-INFO 2020-03-16 16:31:20.785576600 +0100
+++ new/cchardet-2.1.7/PKG-INFO 2020-10-27 09:17:35.690796400 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: cchardet
-Version: 2.1.6
+Version: 2.1.7
 Summary: cChardet is high speed universal character encoding detector.
 Home-page: https://github.com/PyYoshi/cChardet
 Author: PyYoshi
@@ -14,12 +14,18 @@
         .. image:: https://badge.fury.io/py/cchardet.svg
            :target: https://badge.fury.io/py/cchardet
            :alt: PyPI version
-        .. image:: https://travis-ci.org/PyYoshi/cChardet.svg?branch=master
-           :target: https://travis-ci.org/PyYoshi/cChardet
-           :alt: Travis Ci build status
-        .. image:: 
https://ci.appveyor.com/api/projects/status/lwkc4rgf3gncb1ne/branch/master?svg=true
-           :target: 
https://ci.appveyor.com/project/PyYoshi/cchardet/branch/master
-           :alt: AppVeyor build status
+        
+        .. image:: 
https://github.com/PyYoshi/cChardet/workflows/Build%20for%20Linux/badge.svg?branch=master
+           :target: 
https://github.com/PyYoshi/cChardet/actions?query=workflow%3A%22Build+for+Linux%22
+           :alt: Build for Linux
+        
+        .. image:: 
https://github.com/PyYoshi/cChardet/workflows/Build%20for%20macOS/badge.svg?branch=master
+           :target: 
https://github.com/PyYoshi/cChardet/actions?query=workflow%3A%22Build+for+macOS%22
+           :alt: Build for macOS
+        
+        .. image:: 
https://github.com/PyYoshi/cChardet/workflows/Build%20for%20windows/badge.svg?branch=master
+           :target: 
https://github.com/PyYoshi/cChardet/actions?query=workflow%3A%22Build+for+windows%22
+           :alt: Build for Windows
         
         Supported Languages/Encodings
         -----------------------------
@@ -290,10 +296,11 @@
         CHANGES
         =======
         
-        2.x.x
-        -----
-        
+        2.1.7 (2020-10-27)
+        ------------------
         
+        - support Python 3.9
+        - drop support for Python 3.5
         
         2.1.6 (2020-03-17)
         ------------------
@@ -415,7 +422,7 @@
 Classifier: Programming Language :: Python
 Classifier: Topic :: Software Development :: Libraries
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cchardet-2.1.6/README.rst 
new/cchardet-2.1.7/README.rst
--- old/cchardet-2.1.6/README.rst       2020-03-16 15:40:14.000000000 +0100
+++ new/cchardet-2.1.7/README.rst       2020-10-27 08:27:23.000000000 +0100
@@ -6,12 +6,18 @@
 .. image:: https://badge.fury.io/py/cchardet.svg
    :target: https://badge.fury.io/py/cchardet
    :alt: PyPI version
-.. image:: https://travis-ci.org/PyYoshi/cChardet.svg?branch=master
-   :target: https://travis-ci.org/PyYoshi/cChardet
-   :alt: Travis Ci build status
-.. image:: 
https://ci.appveyor.com/api/projects/status/lwkc4rgf3gncb1ne/branch/master?svg=true
-   :target: https://ci.appveyor.com/project/PyYoshi/cchardet/branch/master
-   :alt: AppVeyor build status
+
+.. image:: 
https://github.com/PyYoshi/cChardet/workflows/Build%20for%20Linux/badge.svg?branch=master
+   :target: 
https://github.com/PyYoshi/cChardet/actions?query=workflow%3A%22Build+for+Linux%22
+   :alt: Build for Linux
+
+.. image:: 
https://github.com/PyYoshi/cChardet/workflows/Build%20for%20macOS/badge.svg?branch=master
+   :target: 
https://github.com/PyYoshi/cChardet/actions?query=workflow%3A%22Build+for+macOS%22
+   :alt: Build for macOS
+
+.. image:: 
https://github.com/PyYoshi/cChardet/workflows/Build%20for%20windows/badge.svg?branch=master
+   :target: 
https://github.com/PyYoshi/cChardet/actions?query=workflow%3A%22Build+for+windows%22
+   :alt: Build for Windows
 
 Supported Languages/Encodings
 -----------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cchardet-2.1.6/requirements-dev.txt 
new/cchardet-2.1.7/requirements-dev.txt
--- old/cchardet-2.1.6/requirements-dev.txt     2020-03-16 16:08:33.000000000 
+0100
+++ new/cchardet-2.1.7/requirements-dev.txt     2020-10-27 08:34:50.000000000 
+0100
@@ -1,8 +1,8 @@
 chardet==3.0.4
 nose==1.3.7
-tox==3.14.5
-Cython==0.29.15
-# pylint==2.4.4
-# wheel==0.34.2
-# twine==3.1.1
-# autopep8==1.5
+tox==3.20.1
+Cython==0.29.21
+# pylint==2.6.0
+# wheel==0.35.1
+# twine==3.2.0
+# autopep8==1.5.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cchardet-2.1.6/setup.py new/cchardet-2.1.7/setup.py
--- old/cchardet-2.1.6/setup.py 2020-03-16 15:41:17.000000000 +0100
+++ new/cchardet-2.1.7/setup.py 2020-10-27 09:08:51.000000000 +0100
@@ -129,10 +129,10 @@
         'Programming Language :: Python',
         'Topic :: Software Development :: Libraries',
         'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.5',
         'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: 3.7',
         'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.9',
     ],
     keywords=[
         'cython',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cchardet-2.1.6/src/cchardet/_cchardet.cpp 
new/cchardet-2.1.7/src/cchardet/_cchardet.cpp
--- old/cchardet-2.1.6/src/cchardet/_cchardet.cpp       2020-03-16 
16:31:20.000000000 +0100
+++ new/cchardet-2.1.7/src/cchardet/_cchardet.cpp       2020-10-27 
09:17:35.000000000 +0100
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.29.14 */
+/* Generated by Cython 0.29.21 */
 
 #define PY_SSIZE_T_CLEAN
 #include "Python.h"
@@ -7,8 +7,8 @@
 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && 
PY_VERSION_HEX < 0x03030000)
     #error Cython requires Python 2.6+ or Python 3.3+.
 #else
-#define CYTHON_ABI "0_29_14"
-#define CYTHON_HEX_VERSION 0x001D0EF0
+#define CYTHON_ABI "0_29_21"
+#define CYTHON_HEX_VERSION 0x001D15F0
 #define CYTHON_FUTURE_DIVISION 1
 #include <stddef.h>
 #ifndef offsetof
@@ -449,7 +449,11 @@
   #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
   #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
   #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  PyUnicode_WRITE(k, d, i, ch)
+  #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
   #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) 
? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
+  #else
+  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_LENGTH(u))
+  #endif
 #else
   #define CYTHON_PEP393_ENABLED 0
   #define PyUnicode_1BYTE_KIND  1
@@ -498,8 +502,10 @@
   #define PyString_Type                PyUnicode_Type
   #define PyString_Check               PyUnicode_Check
   #define PyString_CheckExact          PyUnicode_CheckExact
+#ifndef PyObject_Unicode
   #define PyObject_Unicode             PyObject_Str
 #endif
+#endif
 #if PY_MAJOR_VERSION >= 3
   #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
   #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
@@ -510,6 +516,13 @@
 #ifndef PySet_CheckExact
   #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
 #endif
+#if PY_VERSION_HEX >= 0x030900A4
+  #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
+  #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
+#else
+  #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
+  #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
+#endif
 #if CYTHON_ASSUME_SAFE_MACROS
   #define __Pyx_PySequence_SIZE(seq)  Py_SIZE(seq)
 #else
@@ -549,7 +562,7 @@
   #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
 #endif
 #if PY_MAJOR_VERSION >= 3
-  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, 
self) : (Py_INCREF(func), func))
+  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), 
PyMethod_New(func, self)) : __Pyx_NewRef(func))
 #else
   #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
 #endif
@@ -590,11 +603,10 @@
 #define __Pyx_truncl truncl
 #endif
 
-
+#define __PYX_MARK_ERR_POS(f_index, lineno) \
+    { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = 
lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
 #define __PYX_ERR(f_index, lineno, Ln_error) \
-{ \
-  __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = 
__LINE__; goto Ln_error; \
-}
+    { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }
 
 #ifndef __PYX_EXTERN_C
   #ifdef __cplusplus
@@ -987,6 +999,17 @@
 #define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
 #endif
 
+/* PyErrExceptionMatches.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyErr_ExceptionMatches(err) 
__Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
+static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* 
tstate, PyObject* err);
+#else
+#define __Pyx_PyErr_ExceptionMatches(err)  PyErr_ExceptionMatches(err)
+#endif
+
+/* PyObjectGetAttrStrNoError.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, 
PyObject* attr_name);
+
 /* SetupReduce.proto */
 static int __Pyx_setup_reduce(PyObject* type_obj);
 
@@ -1160,6 +1183,9 @@
 static PyObject 
*__pyx_pw_8cchardet_9_cchardet_1detect_with_confidence(PyObject *__pyx_self, 
PyObject *__pyx_v_msg); /*proto*/
 static PyMethodDef __pyx_mdef_8cchardet_9_cchardet_1detect_with_confidence = 
{"detect_with_confidence", 
(PyCFunction)__pyx_pw_8cchardet_9_cchardet_1detect_with_confidence, METH_O, 0};
 static PyObject 
*__pyx_pw_8cchardet_9_cchardet_1detect_with_confidence(PyObject *__pyx_self, 
PyObject *__pyx_v_msg) {
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("detect_with_confidence (wrapper)", 0);
@@ -1188,6 +1214,9 @@
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("detect_with_confidence", 0);
 
   /* "cchardet/_cchardet.pyx":15
@@ -1594,6 +1623,9 @@
 /* Python wrapper */
 static PyObject 
*__pyx_pw_8cchardet_9_cchardet_17UniversalDetector_5feed(PyObject 
*__pyx_v_self, PyObject *__pyx_v_msg); /*proto*/
 static PyObject 
*__pyx_pw_8cchardet_9_cchardet_17UniversalDetector_5feed(PyObject 
*__pyx_v_self, PyObject *__pyx_v_msg) {
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("feed (wrapper)", 0);
@@ -1618,6 +1650,9 @@
   Py_ssize_t __pyx_t_2;
   const char* __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("feed", 0);
 
   /* "cchardet/_cchardet.pyx":61
@@ -1839,6 +1874,9 @@
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("close", 0);
 
   /* "cchardet/_cchardet.pyx":79
@@ -1958,6 +1996,9 @@
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "cchardet/_cchardet.pyx":89
@@ -2025,6 +2066,9 @@
   Py_ssize_t __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "cchardet/_cchardet.pyx":93
@@ -2131,6 +2175,9 @@
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
 
   /* "(tree fragment)":2
@@ -2185,6 +2232,9 @@
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
 
   /* "(tree fragment)":4
@@ -2515,6 +2565,9 @@
 
 static int __Pyx_modinit_type_init_code(void) {
   __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
   /*--- Type init code ---*/
   if (PyType_Ready(&__pyx_type_8cchardet_9_cchardet_UniversalDetector) < 0) 
__PYX_ERR(1, 35, __pyx_L1_error)
@@ -2559,17 +2612,19 @@
 }
 
 
-#if PY_MAJOR_VERSION < 3
-#ifdef CYTHON_NO_PYINIT_EXPORT
-#define __Pyx_PyMODINIT_FUNC void
-#else
+#ifndef CYTHON_NO_PYINIT_EXPORT
 #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
+#elif PY_MAJOR_VERSION < 3
+#ifdef __cplusplus
+#define __Pyx_PyMODINIT_FUNC extern "C" void
+#else
+#define __Pyx_PyMODINIT_FUNC void
 #endif
 #else
-#ifdef CYTHON_NO_PYINIT_EXPORT
-#define __Pyx_PyMODINIT_FUNC PyObject *
+#ifdef __cplusplus
+#define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
 #else
-#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
+#define __Pyx_PyMODINIT_FUNC PyObject *
 #endif
 #endif
 
@@ -2651,6 +2706,9 @@
 #endif
 {
   PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
   __Pyx_RefNannyDeclarations
   #if CYTHON_PEP489_MULTI_PHASE_INIT
   if (__pyx_m) {
@@ -2739,14 +2797,14 @@
   }
   #endif
   /*--- Builtin init code ---*/
-  if (__Pyx_InitCachedBuiltins() < 0) goto __pyx_L1_error;
+  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(1, 1, __pyx_L1_error)
   /*--- Constants init code ---*/
-  if (__Pyx_InitCachedConstants() < 0) goto __pyx_L1_error;
+  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(1, 1, __pyx_L1_error)
   /*--- Global type/function init code ---*/
   (void)__Pyx_modinit_global_init_code();
   (void)__Pyx_modinit_variable_export_code();
   (void)__Pyx_modinit_function_export_code();
-  if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error;
+  if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(1, 1, 
__pyx_L1_error)
   (void)__Pyx_modinit_type_import_code();
   (void)__Pyx_modinit_variable_import_code();
   (void)__Pyx_modinit_function_import_code();
@@ -3187,6 +3245,53 @@
 }
 #endif
 
+/* PyErrExceptionMatches */
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject 
*tuple) {
+    Py_ssize_t i, n;
+    n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+    for (i=0; i<n; i++) {
+        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
+    }
+#endif
+    for (i=0; i<n; i++) {
+        if (__Pyx_PyErr_GivenExceptionMatches(exc_type, 
PyTuple_GET_ITEM(tuple, i))) return 1;
+    }
+    return 0;
+}
+static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* 
tstate, PyObject* err) {
+    PyObject *exc_type = tstate->curexc_type;
+    if (exc_type == err) return 1;
+    if (unlikely(!exc_type)) return 0;
+    if (unlikely(PyTuple_Check(err)))
+        return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
+    return __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
+}
+#endif
+
+/* PyObjectGetAttrStrNoError */
+static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
+        __Pyx_PyErr_Clear();
+}
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, 
PyObject* attr_name) {
+    PyObject *result;
+#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 
0x030700B1
+    PyTypeObject* tp = Py_TYPE(obj);
+    if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
+        return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
+    }
+#endif
+    result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
+    if (unlikely(!result)) {
+        __Pyx_PyObject_GetAttrStr_ClearAttributeError();
+    }
+    return result;
+}
+
 /* SetupReduce */
 static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
   int ret;
@@ -3214,43 +3319,51 @@
     PyObject *setstate = NULL;
     PyObject *setstate_cython = NULL;
 #if CYTHON_USE_PYTYPE_LOOKUP
-    if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto GOOD;
+    if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto 
__PYX_GOOD;
 #else
-    if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto GOOD;
+    if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD;
 #endif
 #if CYTHON_USE_PYTYPE_LOOKUP
-    object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, 
__pyx_n_s_reduce_ex); if (!object_reduce_ex) goto BAD;
+    object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, 
__pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
 #else
-    object_reduce_ex = 
__Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); 
if (!object_reduce_ex) goto BAD;
+    object_reduce_ex = 
__Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); 
if (!object_reduce_ex) goto __PYX_BAD;
 #endif
-    reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if 
(unlikely(!reduce_ex)) goto BAD;
+    reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if 
(unlikely(!reduce_ex)) goto __PYX_BAD;
     if (reduce_ex == object_reduce_ex) {
 #if CYTHON_USE_PYTYPE_LOOKUP
-        object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); 
if (!object_reduce) goto BAD;
+        object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); 
if (!object_reduce) goto __PYX_BAD;
 #else
-        object_reduce = 
__Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if 
(!object_reduce) goto BAD;
+        object_reduce = 
__Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if 
(!object_reduce) goto __PYX_BAD;
 #endif
-        reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if 
(unlikely(!reduce)) goto BAD;
+        reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if 
(unlikely(!reduce)) goto __PYX_BAD;
         if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, 
__pyx_n_s_reduce_cython)) {
-            reduce_cython = __Pyx_PyObject_GetAttrStr(type_obj, 
__pyx_n_s_reduce_cython); if (unlikely(!reduce_cython)) goto BAD;
-            ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, 
__pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto BAD;
-            ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, 
__pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto BAD;
+            reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, 
__pyx_n_s_reduce_cython);
+            if (likely(reduce_cython)) {
+                ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, 
__pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
+                ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, 
__pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
+            } else if (reduce == object_reduce || PyErr_Occurred()) {
+                goto __PYX_BAD;
+            }
             setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate);
             if (!setstate) PyErr_Clear();
             if (!setstate || __Pyx_setup_reduce_is_named(setstate, 
__pyx_n_s_setstate_cython)) {
-                setstate_cython = __Pyx_PyObject_GetAttrStr(type_obj, 
__pyx_n_s_setstate_cython); if (unlikely(!setstate_cython)) goto BAD;
-                ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, 
__pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto BAD;
-                ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, 
__pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto BAD;
+                setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, 
__pyx_n_s_setstate_cython);
+                if (likely(setstate_cython)) {
+                    ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, 
__pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
+                    ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, 
__pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
+                } else if (!setstate || PyErr_Occurred()) {
+                    goto __PYX_BAD;
+                }
             }
             PyType_Modified((PyTypeObject*)type_obj);
         }
     }
-    goto GOOD;
-BAD:
+    goto __PYX_GOOD;
+__PYX_BAD:
     if (!PyErr_Occurred())
         PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for 
%s", ((PyTypeObject*)type_obj)->tp_name);
     ret = -1;
-GOOD:
+__PYX_GOOD:
 #if !CYTHON_USE_PYTYPE_LOOKUP
     Py_XDECREF(object_reduce);
     Py_XDECREF(object_reduce_ex);
@@ -3291,7 +3404,7 @@
 
 /* CLineInTraceback */
 #ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
+static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, 
int c_line) {
     PyObject *use_cline;
     PyObject *ptype, *pvalue, *ptraceback;
 #if CYTHON_COMPILING_IN_CPYTHON
@@ -3395,7 +3508,7 @@
     if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
         int new_max = __pyx_code_cache.max_count + 64;
         entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
-            __pyx_code_cache.entries, 
(size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+            __pyx_code_cache.entries, ((size_t)new_max) * 
sizeof(__Pyx_CodeObjectCacheEntry));
         if (unlikely(!entries)) {
             return;
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cchardet-2.1.6/src/cchardet/version.py 
new/cchardet-2.1.7/src/cchardet/version.py
--- old/cchardet-2.1.6/src/cchardet/version.py  2020-03-16 16:11:59.000000000 
+0100
+++ new/cchardet-2.1.7/src/cchardet/version.py  2020-10-27 09:16:59.000000000 
+0100
@@ -1 +1 @@
-__version__ = '2.1.6'
+__version__ = '2.1.7'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cchardet-2.1.6/src/cchardet.egg-info/PKG-INFO 
new/cchardet-2.1.7/src/cchardet.egg-info/PKG-INFO
--- old/cchardet-2.1.6/src/cchardet.egg-info/PKG-INFO   2020-03-16 
16:31:20.000000000 +0100
+++ new/cchardet-2.1.7/src/cchardet.egg-info/PKG-INFO   2020-10-27 
09:17:35.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: cchardet
-Version: 2.1.6
+Version: 2.1.7
 Summary: cChardet is high speed universal character encoding detector.
 Home-page: https://github.com/PyYoshi/cChardet
 Author: PyYoshi
@@ -14,12 +14,18 @@
         .. image:: https://badge.fury.io/py/cchardet.svg
            :target: https://badge.fury.io/py/cchardet
            :alt: PyPI version
-        .. image:: https://travis-ci.org/PyYoshi/cChardet.svg?branch=master
-           :target: https://travis-ci.org/PyYoshi/cChardet
-           :alt: Travis Ci build status
-        .. image:: 
https://ci.appveyor.com/api/projects/status/lwkc4rgf3gncb1ne/branch/master?svg=true
-           :target: 
https://ci.appveyor.com/project/PyYoshi/cchardet/branch/master
-           :alt: AppVeyor build status
+        
+        .. image:: 
https://github.com/PyYoshi/cChardet/workflows/Build%20for%20Linux/badge.svg?branch=master
+           :target: 
https://github.com/PyYoshi/cChardet/actions?query=workflow%3A%22Build+for+Linux%22
+           :alt: Build for Linux
+        
+        .. image:: 
https://github.com/PyYoshi/cChardet/workflows/Build%20for%20macOS/badge.svg?branch=master
+           :target: 
https://github.com/PyYoshi/cChardet/actions?query=workflow%3A%22Build+for+macOS%22
+           :alt: Build for macOS
+        
+        .. image:: 
https://github.com/PyYoshi/cChardet/workflows/Build%20for%20windows/badge.svg?branch=master
+           :target: 
https://github.com/PyYoshi/cChardet/actions?query=workflow%3A%22Build+for+windows%22
+           :alt: Build for Windows
         
         Supported Languages/Encodings
         -----------------------------
@@ -290,10 +296,11 @@
         CHANGES
         =======
         
-        2.x.x
-        -----
-        
+        2.1.7 (2020-10-27)
+        ------------------
         
+        - support Python 3.9
+        - drop support for Python 3.5
         
         2.1.6 (2020-03-17)
         ------------------
@@ -415,7 +422,7 @@
 Classifier: Programming Language :: Python
 Classifier: Topic :: Software Development :: Libraries
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9

Reply via email to