Hello community,

here is the log from the commit of package python-pytaglib for 
openSUSE:Leap:15.2 checked in at 2020-03-27 16:44:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/python-pytaglib (Old)
 and      /work/SRC/openSUSE:Leap:15.2/.python-pytaglib.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pytaglib"

Fri Mar 27 16:44:09 2020 rev:13 rq:788296 version:1.4.6

Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/python-pytaglib/python-pytaglib.changes        
2020-03-02 13:21:22.202161281 +0100
+++ 
/work/SRC/openSUSE:Leap:15.2/.python-pytaglib.new.3160/python-pytaglib.changes  
    2020-03-27 16:46:24.175872650 +0100
@@ -1,0 +2,10 @@
+Mon Mar 23 11:44:33 UTC 2020 - [email protected]
+
+- version update to 1.4.6
+  - fix #65: use tox for testing. Request re-cythonizing module with 
environment variable `PYTAGLIB_CYTHONIZE` instead of argument to `setup.py` now.
+  - fix #63: python2 tests did not pass
+  - fix #62: pyprinttags module did not work
+- deleted patches
+  - python-pytaglib-python2-localpath.patch (upstreamed)
+
+-------------------------------------------------------------------

Old:
----
  python-pytaglib-python2-localpath.patch
  v1.4.5.tar.gz

New:
----
  v1.4.6.tar.gz

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

Other differences:
------------------
++++++ python-pytaglib.spec ++++++
--- /var/tmp/diff_new_pack.EvpQbU/_old  2020-03-27 16:46:24.855873050 +0100
+++ /var/tmp/diff_new_pack.EvpQbU/_new  2020-03-27 16:46:24.859873052 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-pytaglib
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,15 +18,12 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-pytaglib
-Version:        1.4.5
+Version:        1.4.6
 Release:        0
 Summary:        Metadata "tagging" library based on TagLib
 License:        GPL-3.0-only OR MIT
 URL:            https://github.com/supermihi/pytaglib
 Source:         
https://github.com/supermihi/pytaglib/archive/v%{version}.tar.gz
-# https://github.com/supermihi/pytaglib/issues/63
-# fix  'LocalPath'object has no attribute 'endswith' for python2
-Patch0:         python-pytaglib-python2-localpath.patch
 BuildRequires:  %{python_module Cython}
 BuildRequires:  %{python_module devel}
 BuildRequires:  %{python_module pytest-runner}
@@ -35,6 +32,7 @@
 BuildRequires:  gcc-c++
 BuildRequires:  libtag-devel
 BuildRequires:  python-rpm-macros
+Requires:       python-setuptools
 %python_subpackages
 
 %description
@@ -43,32 +41,37 @@
 
 %prep
 %setup -q -n "pytaglib-%{version}"
-%patch0 -p1
 # Remove pre-generated source
 rm -vf src/taglib.cpp
 sed -i -e "1d" src/pyprinttags.py
 
 %build
-%python_build "--cython"
+sed -i "s:\(script_name =\).*:\1 'pyprinttags':" setup.py
+export PYTAGLIB_CYTHONIZE=1
+%python_build
 
 %install
 %python_install
-mv %{buildroot}%{_bindir}/pyprinttags3 %{buildroot}/%{_bindir}/pyprinttags
 %python_expand %fdupes %{buildroot}%{$python_sitearch}
-# https://github.com/supermihi/pytaglib/issues/62
-mkdir -p %{buildroot}%{python3_sitelib}
-install -m 644 src/pyprinttags.py %{buildroot}%{python3_sitelib}
+%python_clone -a %{buildroot}%{_bindir}/pyprinttags
 
 %check
 export LANG=en_US.UTF-8
-%python_exec setup.py test
+%pytest_arch
+
+%post
+%python_install_alternative pyprinttags
+
+%postun
+%python_uninstall_alternative pyprinttags
 
 %files %{python_files}
 %license COPYING
 %doc README.md
-%python3_only %{_bindir}/pyprinttags
-%python3_only %{python3_sitelib}/pyprinttags.py
 %{python_sitearch}/taglib*.so
+%{python_sitearch}/pyprinttags.*
 %{python_sitearch}/pytaglib-%{version}-py%{python_version}.egg-info/
+%pycache_only %{python_sitearch}/__pycache__/pyprinttags.*
+%python_alternative %{_bindir}/pyprinttags
 
 %changelog

++++++ v1.4.5.tar.gz -> v1.4.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytaglib-1.4.5/.circleci/config.yml 
new/pytaglib-1.4.6/.circleci/config.yml
--- old/pytaglib-1.4.5/.circleci/config.yml     2019-03-26 21:49:35.000000000 
+0100
+++ new/pytaglib-1.4.6/.circleci/config.yml     2020-02-26 19:51:52.000000000 
+0100
@@ -1,8 +1,14 @@
 version: 2
+workflows:
+  version: 2
+  test:
+    jobs:
+      - tox
+
 jobs:
-  build:
+  tox:
     docker:
-      - image: python:3.7-stretch
+      - image: python:3.8-buster
 
     working_directory: ~/repo
 
@@ -10,32 +16,20 @@
       - checkout
       - restore_cache:
           keys:
-            - v1-dependencies-{{ checksum "requirements.txt" }}
-            # fallback to using the latest cache if no exact match is found
-            - v1-dependencies-
-
+            - v2-dependencies-
       - run:
           name: install dependencies
           command: |
-            apt-get -qq update && apt-get -y -qq install libtag1-dev
-            python3 -m venv venv
-            . venv/bin/activate
-            pip3 install cython pytest
-
-      - run:
-          name: build cython module
-          command: |
-            python3 -m venv venv
+            apt-get -qq update && apt-get -y -qq install libtag1-dev 
python-dev python3-dev virtualenv python3-virtualenv
+            virtualenv --python=python3 venv
             . venv/bin/activate
-            python3 setup.py build --cython
-
+            pip install tox
       - save_cache:
           paths:
-            - ./venv
-          key: v1-dependencies-{{ checksum "requirements.txt" }}
-
+            - ./.tox
+          key: v2-dependencies-
       - run:
           name: run tests
           command: |
             . venv/bin/activate
-            python3 setup.py test
+            tox
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytaglib-1.4.5/.gitignore 
new/pytaglib-1.4.6/.gitignore
--- old/pytaglib-1.4.5/.gitignore       2019-03-26 21:49:35.000000000 +0100
+++ new/pytaglib-1.4.6/.gitignore       2020-02-26 19:51:52.000000000 +0100
@@ -4,6 +4,7 @@
 .settings
 .project
 .pydevproject
+.tox
 .idea
 *.pyc
 *.so
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytaglib-1.4.5/CHANGELOG.md 
new/pytaglib-1.4.6/CHANGELOG.md
--- old/pytaglib-1.4.5/CHANGELOG.md     2019-03-26 21:49:35.000000000 +0100
+++ new/pytaglib-1.4.6/CHANGELOG.md     2020-02-26 19:51:52.000000000 +0100
@@ -1,6 +1,12 @@
 Changelog
 =========
 
+pytaglib 1.4.6 (2020/02/26)
+-----------------
+- fix #65: use tox for testing. Request re-cythonizing module with environment 
variable `PYTAGLIB_CYTHONIZE` instead of argument to `setup.py` now.
+- fix #63: python2 tests did not pass
+- fix #62: pyprinttags module did not work
+
 pytaglib 1.4.5 (2019/03/26)
 ---------------------------
 - Fix published taglib.cpp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytaglib-1.4.5/README.md new/pytaglib-1.4.6/README.md
--- old/pytaglib-1.4.5/README.md        2019-03-26 21:49:35.000000000 +0100
+++ new/pytaglib-1.4.6/README.md        2020-02-26 19:51:52.000000000 +0100
@@ -68,7 +68,8 @@
 
 
 **Note**: The `taglib` Python extension is built from 
[`taglib.cpp`](src/taglib.cpp) which in turn is
-auto-generated by [Cython](http://www.cython.org) from 
[`taglib.pyx`](src/taglib.pyx). To regenerate the `taglib.cpp` after making 
changes to `taglib.pyx`, use `setup.py --cython build`.
+auto-generated by [Cython](http://www.cython.org) from 
[`taglib.pyx`](src/taglib.pyx).
+To regenerate the `taglib.cpp` after making changes to `taglib.pyx`, set the 
environment variable `PYTAGLIB_CYTHONIZE` to `1` before calling `setup.py` or 
`pip`.
 
 ### Manual Compilation: Windows
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytaglib-1.4.5/requirements.txt 
new/pytaglib-1.4.6/requirements.txt
--- old/pytaglib-1.4.5/requirements.txt 2019-03-26 21:49:35.000000000 +0100
+++ new/pytaglib-1.4.6/requirements.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-Cython==0.29.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytaglib-1.4.5/setup.cfg new/pytaglib-1.4.6/setup.cfg
--- old/pytaglib-1.4.5/setup.cfg        2019-03-26 21:49:35.000000000 +0100
+++ new/pytaglib-1.4.6/setup.cfg        1970-01-01 01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-[aliases]
-test=pytest
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytaglib-1.4.5/setup.py new/pytaglib-1.4.6/setup.py
--- old/pytaglib-1.4.5/setup.py 2019-03-26 21:49:35.000000000 +0100
+++ new/pytaglib-1.4.6/setup.py 2020-02-26 19:51:52.000000000 +0100
@@ -10,7 +10,7 @@
 
 import io, os, os.path, sys
 import re
-from setuptools import setup, find_packages
+from setuptools import setup
 from distutils.extension import Extension
 
 CLASSIFIERS = [
@@ -37,25 +37,31 @@
 script_name = 'pyprinttags3' if sys.version_info[0] >= 3 else 'pyprinttags'
 is_windows = sys.platform.startswith('win')
 
-if is_windows:
-    # on windows, we compile static taglib build into the python module
-    TAGLIB_HOME = os.environ.get('TAGLIB_HOME', 'C:\\Libraries\\taglib')
-    kwargs = dict(
-        define_macros=[('TAGLIB_STATIC', None)],
-        extra_objects=[os.path.join(TAGLIB_HOME, 'lib', 'tag.lib')],
-        include_dirs=[os.path.join(TAGLIB_HOME, 'include')],
-    )
-else:
-    # on unix systems, use the dynamic library and rely on headers at standard 
location
-    kwargs = dict(libraries=['tag'])
 
-if '--cython' in sys.argv or is_windows:
+def extension_kwargs():
+    if is_windows:
+        # on windows, we compile static taglib build into the python module
+        TAGLIB_HOME = os.environ.get('TAGLIB_HOME', 'C:\\Libraries\\taglib')
+        return dict(
+            define_macros=[('TAGLIB_STATIC', None)],
+            extra_objects=[os.path.join(TAGLIB_HOME, 'lib', 'tag.lib')],
+            include_dirs=[os.path.join(TAGLIB_HOME, 'include')],
+        )
+    else:
+        # on unix systems, use the dynamic library and rely on headers at 
standard location
+        return dict(libraries=['tag'])
+
+
+def is_cython_requested():
+    return is_windows or 'PYTAGLIB_CYTHONIZE' in os.environ
+
+
+if is_cython_requested():
     from Cython.Build import cythonize
     print('cythonizing taglib.pyx ...')
-    extensions = cythonize([Extension('taglib', [os.path.join('src', 
'taglib.pyx')], **kwargs)])
-    sys.argv = [arg for arg in sys.argv if arg != '--cython']
+    extensions = cythonize([Extension('taglib', [os.path.join('src', 
'taglib.pyx')], **extension_kwargs())])
 else:
-    extensions = [Extension('taglib', [os.path.join('src', 'taglib.cpp')], 
**kwargs)]
+    extensions = [Extension('taglib', [os.path.join('src', 'taglib.cpp')], 
**extension_kwargs())]
 
 
 def version():
@@ -76,10 +82,8 @@
     author_email='[email protected]',
     url='http://github.com/supermihi/pytaglib',
     ext_modules=extensions,
-    packages=find_packages(exclude=['tests']),
-    py_modules=['pyprinttags'],
-    entry_points={'console_scripts': ['{0} = 
pyprinttags:script'.format(script_name)]},
-    setup_requires=['pytest-runner'],
-    test_suite='tests',
-    tests_require=['pytest']
+    package_dir={'': 'src'},
+    py_modules=['pytaglib', 'pyprinttags'],
+    entry_points={'console_scripts': 
['{0}=pyprinttags:script'.format(script_name)]},
+    python_requires='>=2.7'
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytaglib-1.4.5/src/taglib.cpp 
new/pytaglib-1.4.6/src/taglib.cpp
--- old/pytaglib-1.4.5/src/taglib.cpp   2019-03-26 21:49:35.000000000 +0100
+++ new/pytaglib-1.4.6/src/taglib.cpp   2020-02-26 19:51:52.000000000 +0100
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.29.6 */
+/* Generated by Cython 0.29.15 */
 
 /* BEGIN: Cython Metadata
 {
@@ -24,8 +24,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_6"
-#define CYTHON_HEX_VERSION 0x001D06F0
+#define CYTHON_ABI "0_29_15"
+#define CYTHON_HEX_VERSION 0x001D0FF0
 #define CYTHON_FUTURE_DIVISION 1
 #include <stddef.h>
 #ifndef offsetof
@@ -341,8 +341,13 @@
   #define __Pyx_DefaultClassType PyClass_Type
 #else
   #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, 
fline, lnos)\
+          PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, 
fline, lnos)
+#else
   #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, 
fline, lnos)\
           PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, 
lnos)
+#endif
   #define __Pyx_DefaultClassType PyType_Type
 #endif
 #ifndef Py_TPFLAGS_CHECKTYPES
@@ -555,10 +560,10 @@
 #if PY_VERSION_HEX < 0x030200A4
   typedef long Py_hash_t;
   #define __Pyx_PyInt_FromHash_t PyInt_FromLong
-  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+  #define __Pyx_PyInt_AsHash_t   __Pyx_PyIndex_AsHash_t
 #else
   #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
-  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+  #define __Pyx_PyInt_AsHash_t   __Pyx_PyIndex_AsSsize_t
 #endif
 #if PY_MAJOR_VERSION >= 3
   #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, 
self) : (Py_INCREF(func), func))
@@ -731,6 +736,7 @@
     (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : 
PySequence_Tuple(obj))
 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
 #if CYTHON_ASSUME_SAFE_MACROS
 #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? 
PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
 #else
@@ -1009,7 +1015,7 @@
 #define __Pyx_PyFunction_FastCall(func, args, nargs)\
     __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
 #if 1 || PY_VERSION_HEX < 0x030600B1
-static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject 
**args, int nargs, PyObject *kwargs);
+static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject 
**args, Py_ssize_t nargs, PyObject *kwargs);
 #else
 #define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) 
_PyFunction_FastCallDict(func, args, nargs, kwargs)
 #endif
@@ -1381,7 +1387,7 @@
 static const char __pyx_k_path[] = "path";
 static const char __pyx_k_test[] = "__test__";
 static const char __pyx_k_utf8[] = "utf8";
-static const char __pyx_k_1_4_5[] = "1.4.5";
+static const char __pyx_k_1_4_6[] = "1.4.6";
 static const char __pyx_k_UTF_8[] = "UTF-8";
 static const char __pyx_k_items[] = "items";
 static const char __pyx_k_upper[] = "upper";
@@ -1407,7 +1413,7 @@
 static const char __pyx_k_Unable_to_save_tags_Unknown_OS_e[] = "Unable to save 
tags: Unknown OS error";
 static const char __pyx_k_Unable_to_save_tags_file_is_read[] = "Unable to save 
tags: file is read-only";
 static const char __pyx_k_no_default___reduce___due_to_non[] = "no default 
__reduce__ due to non-trivial __cinit__";
-static PyObject *__pyx_kp_u_1_4_5;
+static PyObject *__pyx_kp_u_1_4_6;
 static PyObject *__pyx_kp_u_Could_not_read_file;
 static PyObject *__pyx_kp_u_File;
 static PyObject *__pyx_n_s_File_2;
@@ -1468,7 +1474,7 @@
 /* Late includes */
 
 /* "taglib.pyx":15
- * version = '1.4.5'
+ * version = '1.4.6'
  * 
  * cdef unicode toUnicode(ctypes.String s):             # <<<<<<<<<<<<<<
  *     """Converts TagLib::String to a unicode string (``str`` in Python 3, 
``unicode`` else)."""
@@ -1496,7 +1502,7 @@
   goto __pyx_L0;
 
   /* "taglib.pyx":15
- * version = '1.4.5'
+ * version = '1.4.6'
  * 
  * cdef unicode toUnicode(ctypes.String s):             # <<<<<<<<<<<<<<
  *     """Converts TagLib::String to a unicode string (``str`` in Python 3, 
``unicode`` else)."""
@@ -4201,7 +4207,12 @@
   sizeof(struct __pyx_obj_6taglib_File), /*tp_basicsize*/
   0, /*tp_itemsize*/
   __pyx_tp_dealloc_6taglib_File, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
   0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
   0, /*tp_getattr*/
   0, /*tp_setattr*/
   #if PY_MAJOR_VERSION < 3
@@ -4251,6 +4262,12 @@
   #if PY_VERSION_HEX >= 0x030400a1
   0, /*tp_finalize*/
   #endif
+  #if PY_VERSION_HEX >= 0x030800b1
+  0, /*tp_vectorcall*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+  0, /*tp_print*/
+  #endif
 };
 
 static PyMethodDef __pyx_methods[] = {
@@ -4299,7 +4316,7 @@
 #endif
 
 static __Pyx_StringTabEntry __pyx_string_tab[] = {
-  {&__pyx_kp_u_1_4_5, __pyx_k_1_4_5, sizeof(__pyx_k_1_4_5), 0, 1, 0, 0},
+  {&__pyx_kp_u_1_4_6, __pyx_k_1_4_6, sizeof(__pyx_k_1_4_6), 0, 1, 0, 0},
   {&__pyx_kp_u_Could_not_read_file, __pyx_k_Could_not_read_file, 
sizeof(__pyx_k_Could_not_read_file), 0, 1, 0, 0},
   {&__pyx_kp_u_File, __pyx_k_File, sizeof(__pyx_k_File), 0, 1, 0, 0},
   {&__pyx_n_s_File_2, __pyx_k_File_2, sizeof(__pyx_k_File_2), 0, 0, 1, 1},
@@ -4451,7 +4468,9 @@
   __pyx_vtabptr_6taglib_File = &__pyx_vtable_6taglib_File;
   __pyx_vtable_6taglib_File.readProperties = (void (*)(struct 
__pyx_obj_6taglib_File *))__pyx_f_6taglib_4File_readProperties;
   if (PyType_Ready(&__pyx_type_6taglib_File) < 0) __PYX_ERR(0, 36, 
__pyx_L1_error)
+  #if PY_VERSION_HEX < 0x030800B1
   __pyx_type_6taglib_File.tp_print = 0;
+  #endif
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && 
likely(!__pyx_type_6taglib_File.tp_dictoffset && 
__pyx_type_6taglib_File.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_6taglib_File.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
@@ -4650,10 +4669,9 @@
   __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, 
__pyx_L1_error)
   Py_INCREF(__pyx_d);
   __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if 
(unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if 
(unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
-  #if CYTHON_COMPILING_IN_PYPY
   Py_INCREF(__pyx_b);
-  #endif
+  __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if 
(unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
+  Py_INCREF(__pyx_cython_runtime);
   if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) 
__PYX_ERR(0, 1, __pyx_L1_error);
   /*--- Initialize various global constants etc. ---*/
   if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -4672,9 +4690,9 @@
   }
   #endif
   /*--- Builtin init code ---*/
-  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_InitCachedBuiltins() < 0) goto __pyx_L1_error;
   /*--- Constants init code ---*/
-  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_InitCachedConstants() < 0) goto __pyx_L1_error;
   /*--- Global type/function init code ---*/
   (void)__Pyx_modinit_global_init_code();
   (void)__Pyx_modinit_variable_export_code();
@@ -4691,11 +4709,11 @@
   /* "taglib.pyx":13
  * cimport ctypes
  * 
- * version = '1.4.5'             # <<<<<<<<<<<<<<
+ * version = '1.4.6'             # <<<<<<<<<<<<<<
  * 
  * cdef unicode toUnicode(ctypes.String s):
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_kp_u_1_4_5) < 0) 
__PYX_ERR(0, 13, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_kp_u_1_4_6) < 0) 
__PYX_ERR(0, 13, __pyx_L1_error)
 
   /* "taglib.pyx":1
  * # -*- coding: utf-8 -*-             # <<<<<<<<<<<<<<
@@ -4866,7 +4884,7 @@
     return result;
 }
 #if 1 || PY_VERSION_HEX < 0x030600B1
-static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject 
**args, int nargs, PyObject *kwargs) {
+static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject 
**args, Py_ssize_t nargs, PyObject *kwargs) {
     PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
     PyObject *globals = PyFunction_GET_GLOBALS(func);
     PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
@@ -4937,12 +4955,12 @@
     }
 #if PY_MAJOR_VERSION >= 3
     result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
-                               args, nargs,
+                               args, (int)nargs,
                                k, (int)nk,
                                d, (int)nd, kwdefs, closure);
 #else
     result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
-                               args, nargs,
+                               args, (int)nargs,
                                k, (int)nk,
                                d, (int)nd, closure);
 #endif
@@ -6017,43 +6035,43 @@
     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_GetAttrStr(type_obj, 
__pyx_n_s_reduce_cython); if (unlikely(!reduce_cython)) goto __PYX_BAD;
+            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;
             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_GetAttrStr(type_obj, 
__pyx_n_s_setstate_cython); if (unlikely(!setstate_cython)) goto __PYX_BAD;
+                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;
             }
             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);
@@ -7125,6 +7143,23 @@
   Py_DECREF(x);
   return ival;
 }
+static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
+  if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
+    return __Pyx_PyIndex_AsSsize_t(o);
+#if PY_MAJOR_VERSION < 3
+  } else if (likely(PyInt_CheckExact(o))) {
+    return PyInt_AS_LONG(o);
+#endif
+  } else {
+    Py_ssize_t ival;
+    PyObject *x;
+    x = PyNumber_Index(o);
+    if (!x) return -1;
+    ival = PyInt_AsLong(x);
+    Py_DECREF(x);
+    return ival;
+  }
+}
 static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
   return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytaglib-1.4.5/src/taglib.pyx 
new/pytaglib-1.4.6/src/taglib.pyx
--- old/pytaglib-1.4.5/src/taglib.pyx   2019-03-26 21:49:35.000000000 +0100
+++ new/pytaglib-1.4.6/src/taglib.pyx   2020-02-26 19:51:52.000000000 +0100
@@ -10,7 +10,7 @@
 from libcpp.utility cimport pair
 cimport ctypes
 
-version = '1.4.5'
+version = '1.4.6'
 
 cdef unicode toUnicode(ctypes.String s):
     """Converts TagLib::String to a unicode string (``str`` in Python 3, 
``unicode`` else)."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytaglib-1.4.5/tests/__init__.py 
new/pytaglib-1.4.6/tests/__init__.py
--- old/pytaglib-1.4.5/tests/__init__.py        2019-03-26 21:49:35.000000000 
+0100
+++ new/pytaglib-1.4.6/tests/__init__.py        2020-02-26 19:51:52.000000000 
+0100
@@ -12,6 +12,6 @@
 def copy_test_file(filename, tmpdir):
     """Make a temporary copy of test data file *name* (without dir) and return 
its full path."""
     source = os.path.join(os.path.dirname(__file__), 'data', filename)
-    target = os.path.join(tmpdir, filename)
+    target = os.path.join(tmpdir.strpath, filename)
     shutil.copyfile(source, target)
     return target
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytaglib-1.4.5/tests/test_finds_pyprinttags.py 
new/pytaglib-1.4.6/tests/test_finds_pyprinttags.py
--- old/pytaglib-1.4.5/tests/test_finds_pyprinttags.py  1970-01-01 
01:00:00.000000000 +0100
+++ new/pytaglib-1.4.6/tests/test_finds_pyprinttags.py  2020-02-26 
19:51:52.000000000 +0100
@@ -0,0 +1,2 @@
+def test_import_pyprinttags():
+    import pyprinttags
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytaglib-1.4.5/tox.ini new/pytaglib-1.4.6/tox.ini
--- old/pytaglib-1.4.5/tox.ini  1970-01-01 01:00:00.000000000 +0100
+++ new/pytaglib-1.4.6/tox.ini  2020-02-26 19:51:52.000000000 +0100
@@ -0,0 +1,11 @@
+[tox]
+envlist = py27,py38
+
+[testenv]
+deps =
+    pytest
+    cython
+commands =
+    pytest
+setenv =
+    PYTAGLIB_CYTHONIZE = 1


Reply via email to