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