From 976abd56cf22125893285ef6340960b2e1d43293af9a9c6293fc2e2599ab5ef7 Mon Sep 17 00:00:00 2001 From: Steve Kowalik Date: Mon, 21 Feb 2022 02:50:30 +0000 Subject: [PATCH] - Add patch rebuild-extension.patch: * Included sources now regenerated with a new version of Cython to fix the build for Python 3.10. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-python-crfsuite?expand=0&rev=6 --- python-python-crfsuite.changes | 7 + python-python-crfsuite.spec | 6 +- rebuild-extension.patch | 2139 ++++++++++++++++++++++++++++++++ 3 files changed, 2150 insertions(+), 2 deletions(-) create mode 100644 rebuild-extension.patch diff --git a/python-python-crfsuite.changes b/python-python-crfsuite.changes index 9b3b54e..1cab1a2 100644 --- a/python-python-crfsuite.changes +++ b/python-python-crfsuite.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Mon Feb 21 02:48:48 UTC 2022 - Steve Kowalik + +- Add patch rebuild-extension.patch: + * Included sources now regenerated with a new version of Cython to + fix the build for Python 3.10. + ------------------------------------------------------------------- Fri Mar 20 14:18:38 UTC 2020 - pgajdos@suse.com diff --git a/python-python-crfsuite.spec b/python-python-crfsuite.spec index 9632b87..ba2ba9e 100644 --- a/python-python-crfsuite.spec +++ b/python-python-crfsuite.spec @@ -1,7 +1,7 @@ # # spec file for package python-python-crfsuite # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -25,6 +25,8 @@ License: MIT Group: Development/Languages/Python URL: https://github.com/scrapinghub/python-crfsuite Source: https://files.pythonhosted.org/packages/source/p/python-crfsuite/python-crfsuite-%{version}.tar.gz +# PATCH-FIX-UPSTREAM gh#scrapinghub/python-crfsuite#c4c8b879fdf0cea493aedcc494321e35746417d1 +Patch0: rebuild-extension.patch BuildRequires: %{python_module devel} BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} @@ -37,7 +39,7 @@ BuildRequires: python-rpm-macros Python-crfsuite is a python binding to CRFsuite_. %prep -%setup -q -n python-crfsuite-%{version} +%autosetup -p1 -n python-crfsuite-%{version} %build export CFLAGS="%{optflags}" diff --git a/rebuild-extension.patch b/rebuild-extension.patch new file mode 100644 index 0000000..d511fce --- /dev/null +++ b/rebuild-extension.patch @@ -0,0 +1,2139 @@ +From c4c8b879fdf0cea493aedcc494321e35746417d1 Mon Sep 17 00:00:00 2001 +From: Mikhail Korobov +Date: Mon, 27 Dec 2021 17:17:28 +0500 +Subject: [PATCH] rebuild extension + +--- + pycrfsuite/_pycrfsuite.cpp | 815 +++++++++++++++++++++++++++++++------ + 1 file changed, 686 insertions(+), 129 deletions(-) + +diff --git a/pycrfsuite/_pycrfsuite.cpp b/pycrfsuite/_pycrfsuite.cpp +index 84d9bf5..2a17388 100644 +--- a/pycrfsuite/_pycrfsuite.cpp ++++ b/pycrfsuite/_pycrfsuite.cpp +@@ -1,14 +1,16 @@ +-/* Generated by Cython 0.29.15 */ ++/* Generated by Cython 0.29.26 */ + ++#ifndef PY_SSIZE_T_CLEAN + #define PY_SSIZE_T_CLEAN ++#endif /* PY_SSIZE_T_CLEAN */ + #include "Python.h" + #ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. + #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_15" +-#define CYTHON_HEX_VERSION 0x001D0FF0 ++#define CYTHON_ABI "0_29_26" ++#define CYTHON_HEX_VERSION 0x001D1AF0 + #define CYTHON_FUTURE_DIVISION 0 + #include + #ifndef offsetof +@@ -155,7 +157,7 @@ + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif +- #if PY_VERSION_HEX < 0x030300F0 ++ #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) +@@ -174,7 +176,7 @@ + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_PYCALL +- #define CYTHON_FAST_PYCALL 1 ++ #define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030B00A1) + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) +@@ -193,7 +195,9 @@ + #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) + #endif + #if CYTHON_USE_PYLONG_INTERNALS +- #include "longintrepr.h" ++ #if PY_MAJOR_VERSION < 3 ++ #include "longintrepr.h" ++ #endif + #undef SHIFT + #undef BASE + #undef MASK +@@ -324,9 +328,68 @@ class __Pyx_FakeReference { + #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) ++ #define __Pyx_DefaultClassType PyType_Type ++#if PY_VERSION_HEX >= 0x030B00A1 ++ static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f, ++ PyObject *code, PyObject *c, PyObject* n, PyObject *v, ++ PyObject *fv, PyObject *cell, PyObject* fn, ++ PyObject *name, int fline, PyObject *lnos) { ++ PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL; ++ PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL; ++ const char *fn_cstr=NULL; ++ const char *name_cstr=NULL; ++ PyCodeObject* co=NULL; ++ PyObject *type, *value, *traceback; ++ PyErr_Fetch(&type, &value, &traceback); ++ if (!(kwds=PyDict_New())) goto end; ++ if (!(argcount=PyLong_FromLong(a))) goto end; ++ if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end; ++ if (!(posonlyargcount=PyLong_FromLong(0))) goto end; ++ if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end; ++ if (!(kwonlyargcount=PyLong_FromLong(k))) goto end; ++ if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end; ++ if (!(nlocals=PyLong_FromLong(l))) goto end; ++ if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end; ++ if (!(stacksize=PyLong_FromLong(s))) goto end; ++ if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end; ++ if (!(flags=PyLong_FromLong(f))) goto end; ++ if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end; ++ if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end; ++ if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end; ++ if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end; ++ if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too; ++ if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here ++ if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too; ++ Py_XDECREF((PyObject*)co); ++ co = (PyCodeObject*)call_result; ++ call_result = NULL; ++ if (0) { ++ cleanup_code_too: ++ Py_XDECREF((PyObject*)co); ++ co = NULL; ++ } ++ end: ++ Py_XDECREF(kwds); ++ Py_XDECREF(argcount); ++ Py_XDECREF(posonlyargcount); ++ Py_XDECREF(kwonlyargcount); ++ Py_XDECREF(nlocals); ++ Py_XDECREF(stacksize); ++ Py_XDECREF(replace); ++ Py_XDECREF(call_result); ++ Py_XDECREF(empty); ++ if (type) { ++ PyErr_Restore(type, value, traceback); ++ } ++ return co; ++ } + #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) +@@ -440,8 +503,12 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + #endif + #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 ++ #if defined(PyUnicode_IS_READY) + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) ++ #else ++ #define __Pyx_PyUnicode_READY(op) (0) ++ #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) +@@ -449,7 +516,15 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + #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) ++ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 ++ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) ++ #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) ++ #endif ++ #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 +573,10 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + #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 +587,13 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + #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 +@@ -543,13 +627,13 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + #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)) ++ #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 +674,10 @@ static CYTHON_INLINE float __PYX_NAN() { + #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 +@@ -608,11 +691,11 @@ static CYTHON_INLINE float __PYX_NAN() { + #define __PYX_HAVE_API__pycrfsuite___pycrfsuite + /* Early includes */ + #include ++#include + #include "ios" + #include "new" + #include "stdexcept" + #include "typeinfo" +-#include + #include + #include "../crfsuite/include/crfsuite.h" + #include "../crfsuite/include/crfsuite_api.hpp" +@@ -714,6 +797,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); + (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 +@@ -1043,6 +1127,7 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, + #ifndef Py_MEMBER_SIZE + #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) + #endif ++#if CYTHON_FAST_PYCALL + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ +@@ -1050,6 +1135,7 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) ++#endif // CYTHON_FAST_PYCALL + #endif + + /* PyCFunctionFastCall.proto */ +@@ -1126,7 +1212,7 @@ static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { + if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { + Py_INCREF(x); + PyList_SET_ITEM(list, len, x); +- Py_SIZE(list) = len+1; ++ __Pyx_SET_SIZE(list, len + 1); + return 0; + } + return PyList_Append(list, x); +@@ -1377,7 +1463,7 @@ static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { + if (likely(L->allocated > len)) { + Py_INCREF(x); + PyList_SET_ITEM(list, len, x); +- Py_SIZE(list) = len+1; ++ __Pyx_SET_SIZE(list, len + 1); + return 0; + } + return PyList_Append(list, x); +@@ -1400,6 +1486,9 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam + #define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr + #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); + +@@ -1429,7 +1518,7 @@ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bas + /* FetchCommonType.proto */ + static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); + +-/* CythonFunction.proto */ ++/* CythonFunctionShared.proto */ + #define __Pyx_CyFunction_USED 1 + #define __Pyx_CYFUNCTION_STATICMETHOD 0x01 + #define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +@@ -1457,6 +1546,7 @@ typedef struct { + PyObject *func_classobj; + void *defaults; + int defaults_pyobjects; ++ size_t defaults_size; // used by FusedFunction for copying defaults + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; +@@ -1465,9 +1555,7 @@ typedef struct { + } __pyx_CyFunctionObject; + static PyTypeObject *__pyx_CyFunctionType = 0; + #define __Pyx_CyFunction_Check(obj) (__Pyx_TypeCheck(obj, __pyx_CyFunctionType)) +-#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ +- __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) +-static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, ++static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *self, + PyObject *module, PyObject *globals, +@@ -1483,6 +1571,13 @@ static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); + static int __pyx_CyFunction_init(void); + ++/* CythonFunction.proto */ ++static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, ++ int flags, PyObject* qualname, ++ PyObject *closure, ++ PyObject *module, PyObject *globals, ++ PyObject* code); ++ + /* Py3ClassCreate.proto */ + static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, + PyObject *mkw, PyObject *modname, PyObject *doc); +@@ -1518,8 +1613,10 @@ static void __Pyx_AddTraceback(const char *funcname, int c_line, + /* None.proto */ + #include + +-/* CIntToPy.proto */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); ++/* GCCDiagnostics.proto */ ++#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) ++#define __Pyx_HAS_GCC_DIAGNOSTIC ++#endif + + /* CppExceptionConversion.proto */ + #ifndef __Pyx_CppExn2PyErr +@@ -1563,6 +1660,9 @@ static void __Pyx_CppExn2PyErr() { + } + #endif + ++/* CIntToPy.proto */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); ++ + /* CIntFromPy.proto */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +@@ -1617,6 +1717,7 @@ typedef struct { + PyObject *gi_qualname; + PyObject *gi_modulename; + PyObject *gi_code; ++ PyObject *gi_frame; + int resume_label; + char is_running; + } __pyx_CoroutineObject; +@@ -2205,6 +2306,9 @@ static PyMethodDef __pyx_mdef_10pycrfsuite_11_pycrfsuite_13CRFSuiteError_1__init + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_13CRFSuiteError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_code = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); +@@ -2272,6 +2376,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_13CRFSuiteError___init__(CY + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":33 +@@ -2421,7 +2528,11 @@ static CRFSuite::Item __pyx_f_10pycrfsuite_11_pycrfsuite_to_item(PyObject *__pyx + std::vector ::iterator __pyx_t_10; + CRFSuite::Item *__pyx_t_11; + CRFSuite::Attribute __pyx_t_12; +- double __pyx_t_13; ++ std::string __pyx_t_13; ++ double __pyx_t_14; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("to_item", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":46 +@@ -2668,6 +2779,26 @@ static CRFSuite::Item __pyx_f_10pycrfsuite_11_pycrfsuite_to_item(PyObject *__pyx + ++__pyx_t_10; + __pyx_v_attr = __pyx_t_12; + ++ /* "pycrfsuite/_pycrfsuite.pyx":66 ++ * for attr in to_item(value): ++ * c_item.push_back( ++ * crfsuite_api.Attribute(c_key + _SEP + attr.attr, attr.value) # <<<<<<<<<<<<<< ++ * ) ++ * else: ++ */ ++ try { ++ __pyx_t_8 = (__pyx_v_c_key + __pyx_v_10pycrfsuite_11_pycrfsuite__SEP); ++ } catch(...) { ++ __Pyx_CppExn2PyErr(); ++ __PYX_ERR(1, 66, __pyx_L1_error) ++ } ++ try { ++ __pyx_t_13 = (__pyx_t_8 + __pyx_v_attr.attr); ++ } catch(...) { ++ __Pyx_CppExn2PyErr(); ++ __PYX_ERR(1, 66, __pyx_L1_error) ++ } ++ + /* "pycrfsuite/_pycrfsuite.pyx":65 + * # {"string_prefix": {...}} + * for attr in to_item(value): +@@ -2676,7 +2807,7 @@ static CRFSuite::Item __pyx_f_10pycrfsuite_11_pycrfsuite_to_item(PyObject *__pyx + * ) + */ + try { +- __pyx_v_c_item.push_back(CRFSuite::Attribute(((__pyx_v_c_key + __pyx_v_10pycrfsuite_11_pycrfsuite__SEP) + __pyx_v_attr.attr), __pyx_v_attr.value)); ++ __pyx_v_c_item.push_back(CRFSuite::Attribute(__pyx_t_13, __pyx_v_attr.value)); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(1, 65, __pyx_L1_error) +@@ -2735,9 +2866,9 @@ static CRFSuite::Item __pyx_f_10pycrfsuite_11_pycrfsuite_to_item(PyObject *__pyx + } + __pyx_t_6 = PyUnicode_AsUTF8String(((PyObject*)__pyx_v_value)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_8 = __pyx_convert_string_from_py_std__in_string(__pyx_t_6); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 72, __pyx_L1_error) ++ __pyx_t_13 = __pyx_convert_string_from_py_std__in_string(__pyx_t_6); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 72, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- __pyx_v_c_key += ((std::string)__pyx_t_8); ++ __pyx_v_c_key += ((std::string)__pyx_t_13); + + /* "pycrfsuite/_pycrfsuite.pyx":73 + * c_key += _SEP +@@ -2785,8 +2916,8 @@ static CRFSuite::Item __pyx_f_10pycrfsuite_11_pycrfsuite_to_item(PyObject *__pyx + * c_value = 1.0 + * else: + */ +- __pyx_t_8 = __pyx_convert_string_from_py_std__in_string(__pyx_v_value); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 77, __pyx_L1_error) +- __pyx_v_c_key += ((std::string)__pyx_t_8); ++ __pyx_t_13 = __pyx_convert_string_from_py_std__in_string(__pyx_v_value); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 77, __pyx_L1_error) ++ __pyx_v_c_key += ((std::string)__pyx_t_13); + + /* "pycrfsuite/_pycrfsuite.pyx":78 + * c_key += _SEP +@@ -2815,8 +2946,8 @@ static CRFSuite::Item __pyx_f_10pycrfsuite_11_pycrfsuite_to_item(PyObject *__pyx + * c_item.push_back(crfsuite_api.Attribute(c_key, c_value)) + */ + /*else*/ { +- __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 82, __pyx_L1_error) +- __pyx_v_c_value = __pyx_t_13; ++ __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 82, __pyx_L1_error) ++ __pyx_v_c_value = __pyx_t_14; + } + __pyx_L13:; + +@@ -2900,6 +3031,9 @@ static CRFSuite::ItemSequence __pyx_f_10pycrfsuite_11_pycrfsuite_to_seq(PyObject + PyObject *(*__pyx_t_6)(PyObject *); + PyObject *__pyx_t_7 = NULL; + CRFSuite::Item __pyx_t_8; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("to_seq", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":105 +@@ -3057,6 +3191,9 @@ static CRFSuite::ItemSequence __pyx_f_10pycrfsuite_11_pycrfsuite_to_seq(PyObject + static int __pyx_pw_10pycrfsuite_11_pycrfsuite_12ItemSequence_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ + static int __pyx_pw_10pycrfsuite_11_pycrfsuite_12ItemSequence_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_pyseq = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); +@@ -3107,6 +3244,9 @@ static int __pyx_pf_10pycrfsuite_11_pycrfsuite_12ItemSequence___init__(struct __ + int __pyx_r; + __Pyx_RefNannyDeclarations + CRFSuite::ItemSequence __pyx_t_1; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":160 +@@ -3181,6 +3321,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_12ItemSequence_2items(struc + CRFSuite::Attribute __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + int __pyx_t_8; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("items", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":174 +@@ -3409,6 +3552,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_12ItemSequence_6__repr__(st + Py_ssize_t __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__repr__", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":194 +@@ -3473,6 +3619,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_12ItemSequence_8__reduce_cy + 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 +@@ -3528,6 +3677,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_12ItemSequence_10__setstate + 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 +@@ -3586,6 +3738,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite__intbool(CYTHON_UNUSED PyOb + __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("_intbool", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":198 +@@ -3639,6 +3794,9 @@ static int __pyx_pw_10pycrfsuite_11_pycrfsuite_11BaseTrainer_1__init__(PyObject + PyObject *__pyx_v_algorithm = 0; + PyObject *__pyx_v_params = 0; + PyObject *__pyx_v_verbose = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); +@@ -3723,6 +3881,9 @@ static int __pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer___init__(struct __p + PyObject *__pyx_t_3 = NULL; + 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("__init__", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":257 +@@ -3881,6 +4042,9 @@ static int __pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_2__cinit__(struct _ + __Pyx_RefNannyDeclarations + std::string __pyx_t_1; + std::string __pyx_t_2; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__cinit__", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":265 +@@ -3961,6 +4125,9 @@ static PyObject *__pyx_f_10pycrfsuite_11_pycrfsuite_11BaseTrainer__on_message(st + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_on_message", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":272 +@@ -4045,6 +4212,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_4message(stru + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("message", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":288 +@@ -4125,6 +4295,9 @@ static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_11BaseTrainer_7append(PyObj + PyObject *__pyx_v_xseq = 0; + PyObject *__pyx_v_yseq = 0; + int __pyx_v_group; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("append (wrapper)", 0); +@@ -4203,6 +4376,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_6append(struc + __Pyx_RefNannyDeclarations + CRFSuite::ItemSequence __pyx_t_1; + CRFSuite::StringList __pyx_t_2; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("append", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":312 +@@ -4260,6 +4436,9 @@ static char __pyx_doc_10pycrfsuite_11_pycrfsuite_11BaseTrainer_8select[] = "Base + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_11BaseTrainer_9select(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_algorithm = 0; + PyObject *__pyx_v_type = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("select (wrapper)", 0); +@@ -4332,6 +4511,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_8select(struc + std::string __pyx_t_7; + int __pyx_t_8; + int __pyx_t_9; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("select", 0); + __Pyx_INCREF(__pyx_v_algorithm); + +@@ -4521,6 +4703,9 @@ static char __pyx_doc_10pycrfsuite_11_pycrfsuite_11BaseTrainer_10train[] = "Base + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_11BaseTrainer_11train(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_model = 0; + int __pyx_v_holdout; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("train (wrapper)", 0); +@@ -4595,6 +4780,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_10train(struc + int __pyx_t_5; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("train", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":358 +@@ -4740,6 +4928,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_12params(stru + __Pyx_RefNannyDeclarations + CRFSuite::StringList __pyx_t_1; + PyObject *__pyx_t_2 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("params", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":378 +@@ -4817,6 +5008,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_14set_params( + PyObject *__pyx_t_7 = NULL; + PyObject *(*__pyx_t_8)(PyObject *); + int __pyx_t_9; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("set_params", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":389 +@@ -5062,6 +5256,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_10get_params_ + struct __pyx_obj_10pycrfsuite_11_pycrfsuite___pyx_scope_struct_1_genexpr *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("genexpr", 0); + __pyx_cur_scope = (struct __pyx_obj_10pycrfsuite_11_pycrfsuite___pyx_scope_struct_1_genexpr *)__pyx_tp_new_10pycrfsuite_11_pycrfsuite___pyx_scope_struct_1_genexpr(__pyx_ptype_10pycrfsuite_11_pycrfsuite___pyx_scope_struct_1_genexpr, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { +@@ -5101,6 +5298,9 @@ static PyObject *__pyx_gb_10pycrfsuite_11_pycrfsuite_11BaseTrainer_10get_params_ + Py_ssize_t __pyx_t_4; + PyObject *(*__pyx_t_5)(PyObject *); + PyObject *__pyx_t_6 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("genexpr", 0); + switch (__pyx_generator->resume_label) { +@@ -5229,10 +5429,14 @@ static PyObject *__pyx_gb_10pycrfsuite_11_pycrfsuite_11BaseTrainer_10get_params_ + + static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_16get_params(struct __pyx_obj_10pycrfsuite_11_pycrfsuite_BaseTrainer *__pyx_v_self) { + struct __pyx_obj_10pycrfsuite_11_pycrfsuite___pyx_scope_struct__get_params *__pyx_cur_scope; ++ PyObject *__pyx_gb_10pycrfsuite_11_pycrfsuite_11BaseTrainer_10get_params_2generator = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_params", 0); + __pyx_cur_scope = (struct __pyx_obj_10pycrfsuite_11_pycrfsuite___pyx_scope_struct__get_params *)__pyx_tp_new_10pycrfsuite_11_pycrfsuite___pyx_scope_struct__get_params(__pyx_ptype_10pycrfsuite_11_pycrfsuite___pyx_scope_struct__get_params, __pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { +@@ -5278,6 +5482,7 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_16get_params( + __Pyx_AddTraceback("pycrfsuite._pycrfsuite.BaseTrainer.get_params", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; ++ __Pyx_XDECREF(__pyx_gb_10pycrfsuite_11_pycrfsuite_11BaseTrainer_10get_params_2generator); + __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); +@@ -5298,6 +5503,9 @@ static char __pyx_doc_10pycrfsuite_11_pycrfsuite_11BaseTrainer_18set[] = "BaseTr + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_11BaseTrainer_19set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_name = 0; + PyObject *__pyx_v_value = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("set (wrapper)", 0); +@@ -5362,6 +5570,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_18set(struct + int __pyx_t_3; + std::string __pyx_t_4; + std::string __pyx_t_5; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("set", 0); + __Pyx_INCREF(__pyx_v_value); + +@@ -5474,6 +5685,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_20get(struct + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":434 +@@ -5601,6 +5815,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_22help(struct + int __pyx_t_5; + std::string __pyx_t_6; + std::string __pyx_t_7; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("help", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":454 +@@ -5724,6 +5941,9 @@ static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_11BaseTrainer_25clear(PyObj + static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_24clear(struct __pyx_obj_10pycrfsuite_11_pycrfsuite_BaseTrainer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("clear", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":462 +@@ -5774,6 +5994,9 @@ static char __pyx_doc_10pycrfsuite_11_pycrfsuite_11BaseTrainer_26_cast_parameter + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_11BaseTrainer_27_cast_parameter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_name = 0; + PyObject *__pyx_v_value = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("_cast_parameter (wrapper)", 0); +@@ -5838,6 +6061,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_26_cast_param + 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("_cast_parameter", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":465 +@@ -6081,6 +6307,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_30__reduce_cy + 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 +@@ -6136,6 +6365,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_11BaseTrainer_32__setstate_ + 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 +@@ -6195,6 +6427,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_7Trainer__before_train(CYTH + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_before_train", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":496 +@@ -6265,6 +6500,9 @@ static PyMethodDef __pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_3message = {"m + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_7Trainer_3message(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_message = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("message (wrapper)", 0); +@@ -6335,6 +6573,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_7Trainer_2message(CYTHON_UN + PyObject *__pyx_t_7 = NULL; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("message", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":499 +@@ -6928,6 +7169,9 @@ static PyMethodDef __pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_5on_start = {" + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_7Trainer_5on_start(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + CYTHON_UNUSED PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_log = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("on_start (wrapper)", 0); +@@ -6990,6 +7234,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_7Trainer_4on_start(CYTHON_U + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("on_start", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":525 +@@ -7052,6 +7299,9 @@ static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_7Trainer_7on_featgen_progre + CYTHON_UNUSED PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_log = 0; + CYTHON_UNUSED PyObject *__pyx_v_percent = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("on_featgen_progress (wrapper)", 0); +@@ -7124,6 +7374,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_7Trainer_6on_featgen_progre + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("on_featgen_progress", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":528 +@@ -7185,6 +7438,9 @@ static PyMethodDef __pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_9on_featgen_en + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_7Trainer_9on_featgen_end(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + CYTHON_UNUSED PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_log = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("on_featgen_end (wrapper)", 0); +@@ -7247,6 +7503,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_7Trainer_8on_featgen_end(CY + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("on_featgen_end", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":531 +@@ -7308,6 +7567,9 @@ static PyMethodDef __pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_11on_prepared + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_7Trainer_11on_prepared(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + CYTHON_UNUSED PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_log = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("on_prepared (wrapper)", 0); +@@ -7370,6 +7632,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_7Trainer_10on_prepared(CYTH + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("on_prepared", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":534 +@@ -7431,6 +7696,9 @@ static PyMethodDef __pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_13on_prepare_e + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_7Trainer_13on_prepare_error(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + CYTHON_UNUSED PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_log = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("on_prepare_error (wrapper)", 0); +@@ -7493,6 +7761,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_7Trainer_12on_prepare_error + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("on_prepare_error", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":537 +@@ -7555,6 +7826,9 @@ static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_7Trainer_15on_iteration(PyO + CYTHON_UNUSED PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_log = 0; + CYTHON_UNUSED PyObject *__pyx_v_info = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("on_iteration (wrapper)", 0); +@@ -7627,6 +7901,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_7Trainer_14on_iteration(CYT + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("on_iteration", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":540 +@@ -7688,6 +7965,9 @@ static PyMethodDef __pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_17on_optimizat + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_7Trainer_17on_optimization_end(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + CYTHON_UNUSED PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_log = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("on_optimization_end (wrapper)", 0); +@@ -7750,6 +8030,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_7Trainer_16on_optimization_ + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("on_optimization_end", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":543 +@@ -7811,6 +8094,9 @@ static PyMethodDef __pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_19on_end = {"o + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_7Trainer_19on_end(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + CYTHON_UNUSED PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_log = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("on_end (wrapper)", 0); +@@ -7873,6 +8159,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_7Trainer_18on_end(CYTHON_UN + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("on_end", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":546 +@@ -7950,6 +8239,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_open(struct __pyx_o + std::string __pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("open", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":571 +@@ -8085,6 +8377,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_open(struct __pyx_o + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_6Tagger_3open_inmemory(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ + static char __pyx_doc_10pycrfsuite_11_pycrfsuite_6Tagger_2open_inmemory[] = "Tagger.open_inmemory(self, bytes value)\n\n Open a model from memory.\n\n Parameters\n ----------\n value : bytes\n Binary model data (content of a file saved by Trainer.train).\n\n "; + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_6Tagger_3open_inmemory(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("open_inmemory (wrapper)", 0); +@@ -8111,6 +8406,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_2open_inmemory(stru + Py_ssize_t __pyx_t_5; + int __pyx_t_6; + int __pyx_t_7; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("open_inmemory", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":586 +@@ -8274,6 +8572,9 @@ static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_6Tagger_5close(PyObject *__ + static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_4close(struct __pyx_obj_10pycrfsuite_11_pycrfsuite_Tagger *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("close", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":596 +@@ -8337,6 +8638,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_6labels(struct __py + __Pyx_RefNannyDeclarations + CRFSuite::StringList __pyx_t_1; + PyObject *__pyx_t_2 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("labels", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":607 +@@ -8391,6 +8695,9 @@ static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_6Tagger_9tag(PyObject *__py + static char __pyx_doc_10pycrfsuite_11_pycrfsuite_6Tagger_8tag[] = "Tagger.tag(self, xseq=None)\n\n Predict the label sequence for the item sequence.\n\n Parameters\n ----------\n xseq : item sequence, optional\n The item sequence. If omitted, the current sequence is used\n (a sequence set using :meth:`Tagger.set` method or\n a sequence used in a previous :meth:`Tagger.tag` call).\n\n ``xseq`` should be a list of item features or\n an :class:`~ItemSequence` instance. Allowed item features formats\n are the same as described in :class:`~ItemSequence` docs.\n\n Returns\n -------\n list of strings\n The label sequence predicted.\n "; + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_6Tagger_9tag(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_xseq = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("tag (wrapper)", 0); +@@ -8450,6 +8757,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_8tag(struct __pyx_o + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + CRFSuite::StringList __pyx_t_4; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("tag", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":629 +@@ -8556,6 +8866,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_10probability(struc + CRFSuite::StringList __pyx_t_1; + double __pyx_t_2; + PyObject *__pyx_t_3 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("probability", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":650 +@@ -8612,6 +8925,9 @@ static char __pyx_doc_10pycrfsuite_11_pycrfsuite_6Tagger_12marginal[] = "Tagger. + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_6Tagger_13marginal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_y = 0; + PyObject *__pyx_v_pos = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("marginal (wrapper)", 0); +@@ -8675,6 +8991,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_12marginal(struct _ + int __pyx_t_2; + double __pyx_t_3; + PyObject *__pyx_t_4 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("marginal", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":671 +@@ -8735,6 +9054,9 @@ static PyObject *__pyx_f_10pycrfsuite_11_pycrfsuite_6Tagger_set(struct __pyx_obj + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + CRFSuite::ItemSequence __pyx_t_5; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("set", 0); + /* Check if called by wrapper */ + if (unlikely(__pyx_skip_dispatch)) ; +@@ -8845,6 +9167,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_14set(struct __pyx_ + 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("set", 0); + __Pyx_XDECREF(__pyx_r); + try { +@@ -8883,6 +9208,9 @@ static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_6Tagger_17dump(PyObject *__ + static char __pyx_doc_10pycrfsuite_11_pycrfsuite_6Tagger_16dump[] = "Tagger.dump(self, filename=None)\n\n Dump a CRF model in plain-text format.\n\n Parameters\n ----------\n filename : string, optional\n File name to dump the model to.\n If None, the model is dumped to stdout.\n "; + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_6Tagger_17dump(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_filename = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("dump (wrapper)", 0); +@@ -8959,6 +9287,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_16dump(struct __pyx + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19 = NULL; + int __pyx_t_20; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("dump", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":700 +@@ -9469,6 +9800,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_18info(struct __pyx + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + int __pyx_t_24; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("info", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":716 +@@ -10173,6 +10507,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_20_check_model(CYTH + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + int __pyx_t_13; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_check_model", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":733 +@@ -10539,6 +10876,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_20_check_model(CYTH + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_6Tagger_23_check_inmemory_model(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ + static char __pyx_doc_10pycrfsuite_11_pycrfsuite_6Tagger_22_check_inmemory_model[] = "Tagger._check_inmemory_model(self, bytes value)"; + static PyObject *__pyx_pw_10pycrfsuite_11_pycrfsuite_6Tagger_23_check_inmemory_model(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("_check_inmemory_model (wrapper)", 0); +@@ -10562,6 +10902,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_22_check_inmemory_m + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_check_inmemory_model", 0); + + /* "pycrfsuite/_pycrfsuite.pyx":748 +@@ -10692,6 +11035,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_24__reduce_cython__ + 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 +@@ -10747,6 +11093,9 @@ static PyObject *__pyx_pf_10pycrfsuite_11_pycrfsuite_6Tagger_26__setstate_cython + 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 +@@ -10789,6 +11138,9 @@ static CYTHON_INLINE PyObject *__pyx_convert_PyObject_string_to_py_std__in_strin + 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("__pyx_convert_PyObject_string_to_py_std__in_string", 0); + + /* "string.to_py":32 +@@ -10836,6 +11188,9 @@ static CYTHON_INLINE PyObject *__pyx_convert_PyUnicode_string_to_py_std__in_stri + 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("__pyx_convert_PyUnicode_string_to_py_std__in_string", 0); + + /* "string.to_py":38 +@@ -10883,6 +11238,9 @@ static CYTHON_INLINE PyObject *__pyx_convert_PyStr_string_to_py_std__in_string(s + 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("__pyx_convert_PyStr_string_to_py_std__in_string", 0); + + /* "string.to_py":44 +@@ -10930,6 +11288,9 @@ static CYTHON_INLINE PyObject *__pyx_convert_PyBytes_string_to_py_std__in_string + 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("__pyx_convert_PyBytes_string_to_py_std__in_string", 0); + + /* "string.to_py":50 +@@ -10977,6 +11338,9 @@ static CYTHON_INLINE PyObject *__pyx_convert_PyByteArray_string_to_py_std__in_st + 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("__pyx_convert_PyByteArray_string_to_py_std__in_string", 0); + + /* "string.to_py":56 +@@ -11025,6 +11389,9 @@ static std::string __pyx_convert_string_from_py_std__in_string(PyObject *__pyx_v + std::string __pyx_r; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_convert_string_from_py_std__in_string", 0); + + /* "string.from_py":14 +@@ -11091,6 +11458,9 @@ static std::vector __pyx_convert_vector_from_py_std_3a__3a_string( + PyObject *(*__pyx_t_3)(PyObject *); + PyObject *__pyx_t_4 = NULL; + std::string __pyx_t_5; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_std_3a__3a_string", 0); + + /* "vector.from_py":47 +@@ -11209,6 +11579,9 @@ static PyObject *__pyx_convert_vector_to_py_std_3a__3a_string(const std::vector< + size_t __pyx_t_3; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_std_3a__3a_string", 0); + + /* "vector.to_py":61 +@@ -11372,6 +11745,9 @@ static PyTypeObject __pyx_type_10pycrfsuite_11_pycrfsuite_ItemSequence = { + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + static struct __pyx_vtabstruct_10pycrfsuite_11_pycrfsuite_BaseTrainer __pyx_vtable_10pycrfsuite_11_pycrfsuite_BaseTrainer; + +@@ -11530,6 +11906,9 @@ static PyTypeObject __pyx_type_10pycrfsuite_11_pycrfsuite_BaseTrainer = { + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + static struct __pyx_vtabstruct_10pycrfsuite_11_pycrfsuite_Tagger __pyx_vtable_10pycrfsuite_11_pycrfsuite_Tagger; + +@@ -11644,6 +12023,9 @@ static PyTypeObject __pyx_type_10pycrfsuite_11_pycrfsuite_Tagger = { + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static struct __pyx_obj_10pycrfsuite_11_pycrfsuite___pyx_scope_struct__get_params *__pyx_freelist_10pycrfsuite_11_pycrfsuite___pyx_scope_struct__get_params[8]; +@@ -11759,6 +12141,9 @@ static PyTypeObject __pyx_type_10pycrfsuite_11_pycrfsuite___pyx_scope_struct__ge + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static struct __pyx_obj_10pycrfsuite_11_pycrfsuite___pyx_scope_struct_1_genexpr *__pyx_freelist_10pycrfsuite_11_pycrfsuite___pyx_scope_struct_1_genexpr[8]; +@@ -11869,6 +12254,9 @@ static PyTypeObject __pyx_type_10pycrfsuite_11_pycrfsuite___pyx_scope_struct_1_g + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyMethodDef __pyx_methods[] = { +@@ -12418,6 +12806,9 @@ static int __Pyx_modinit_function_export_code(void) { + + 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_10pycrfsuite_11_pycrfsuite_ItemSequence) < 0) __PYX_ERR(1, 113, __pyx_L1_error) +@@ -12504,17 +12895,19 @@ static int __Pyx_modinit_function_import_code(void) { + } + + +-#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 + +@@ -12601,6 +12994,9 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec__pycrfsuite(PyObject *__pyx_pyinit + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + std::string __pyx_t_6; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { +@@ -12648,11 +13044,9 @@ if (!__Pyx_RefNanny) { + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ +- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS +- #ifdef WITH_THREAD /* Python build with threading support? */ ++ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + PyEval_InitThreads(); + #endif +- #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; +@@ -12689,14 +13083,14 @@ if (!__Pyx_RefNanny) { + } + #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(); +@@ -12919,7 +13313,7 @@ if (!__Pyx_RefNanny) { + * self.code = code + * Exception.__init__(self._messages.get(self.code, "Unexpected error")) + */ +- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_13CRFSuiteError_1__init__, 0, __pyx_n_s_CRFSuiteError___init, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 32, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_13CRFSuiteError_1__init__, 0, __pyx_n_s_CRFSuiteError___init, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_init, __pyx_t_4) < 0) __PYX_ERR(1, 32, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +@@ -13233,7 +13627,7 @@ if (!__Pyx_RefNanny) { + * self.logparser = _logparser.TrainLogParser() + * + */ +- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_1_before_train, 0, __pyx_n_s_Trainer__before_train, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 495, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_1_before_train, 0, __pyx_n_s_Trainer__before_train, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 495, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_before_train, __pyx_t_4) < 0) __PYX_ERR(1, 495, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +@@ -13245,7 +13639,7 @@ if (!__Pyx_RefNanny) { + * event = self.logparser.feed(message) + * + */ +- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_3message, 0, __pyx_n_s_Trainer_message, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 498, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_3message, 0, __pyx_n_s_Trainer_message, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 498, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_message, __pyx_t_4) < 0) __PYX_ERR(1, 498, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +@@ -13257,7 +13651,7 @@ if (!__Pyx_RefNanny) { + * print(log, end='') + * + */ +- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_5on_start, 0, __pyx_n_s_Trainer_on_start, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 524, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_5on_start, 0, __pyx_n_s_Trainer_on_start, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 524, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_on_start, __pyx_t_4) < 0) __PYX_ERR(1, 524, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +@@ -13269,7 +13663,7 @@ if (!__Pyx_RefNanny) { + * print(log, end='') + * + */ +- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_7on_featgen_progress, 0, __pyx_n_s_Trainer_on_featgen_progress, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 527, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_7on_featgen_progress, 0, __pyx_n_s_Trainer_on_featgen_progress, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 527, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_on_featgen_progress, __pyx_t_4) < 0) __PYX_ERR(1, 527, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +@@ -13281,7 +13675,7 @@ if (!__Pyx_RefNanny) { + * print(log, end='') + * + */ +- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_9on_featgen_end, 0, __pyx_n_s_Trainer_on_featgen_end, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 530, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_9on_featgen_end, 0, __pyx_n_s_Trainer_on_featgen_end, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 530, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_on_featgen_end, __pyx_t_4) < 0) __PYX_ERR(1, 530, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +@@ -13293,7 +13687,7 @@ if (!__Pyx_RefNanny) { + * print(log, end='') + * + */ +- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_11on_prepared, 0, __pyx_n_s_Trainer_on_prepared, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 533, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_11on_prepared, 0, __pyx_n_s_Trainer_on_prepared, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 533, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_on_prepared, __pyx_t_4) < 0) __PYX_ERR(1, 533, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +@@ -13305,7 +13699,7 @@ if (!__Pyx_RefNanny) { + * print(log, end='') + * + */ +- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_13on_prepare_error, 0, __pyx_n_s_Trainer_on_prepare_error, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 536, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_13on_prepare_error, 0, __pyx_n_s_Trainer_on_prepare_error, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 536, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_on_prepare_error, __pyx_t_4) < 0) __PYX_ERR(1, 536, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +@@ -13317,7 +13711,7 @@ if (!__Pyx_RefNanny) { + * print(log, end='') + * + */ +- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_15on_iteration, 0, __pyx_n_s_Trainer_on_iteration, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 539, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_15on_iteration, 0, __pyx_n_s_Trainer_on_iteration, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 539, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_on_iteration, __pyx_t_4) < 0) __PYX_ERR(1, 539, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +@@ -13329,7 +13723,7 @@ if (!__Pyx_RefNanny) { + * print(log, end='') + * + */ +- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_17on_optimization_end, 0, __pyx_n_s_Trainer_on_optimization_end, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 542, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_17on_optimization_end, 0, __pyx_n_s_Trainer_on_optimization_end, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 542, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_on_optimization_end, __pyx_t_4) < 0) __PYX_ERR(1, 542, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +@@ -13341,7 +13735,7 @@ if (!__Pyx_RefNanny) { + * print(log, end='') + * + */ +- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_19on_end, 0, __pyx_n_s_Trainer_on_end, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 545, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10pycrfsuite_11_pycrfsuite_7Trainer_19on_end, 0, __pyx_n_s_Trainer_on_end, NULL, __pyx_n_s_pycrfsuite__pycrfsuite, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 545, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_on_end, __pyx_t_4) < 0) __PYX_ERR(1, 545, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +@@ -13516,7 +13910,7 @@ static int __Pyx_ParseOptionalKeywords( + } + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 +- if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { ++ if (likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { +@@ -13543,7 +13937,7 @@ static int __Pyx_ParseOptionalKeywords( + while (*name) { + int cmp = (**name == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 +- (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : ++ (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; +@@ -13559,7 +13953,7 @@ static int __Pyx_ParseOptionalKeywords( + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 +- (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : ++ (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; +@@ -13756,7 +14150,7 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P + #if CYTHON_COMPILING_IN_CPYTHON + static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; +- ternaryfunc call = func->ob_type->tp_call; ++ ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) +@@ -13843,7 +14237,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec + if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { + return __Pyx_PyObject_CallMethO(func, arg); + #if CYTHON_FAST_PYCCALL +- } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { ++ } else if (__Pyx_PyFastCFunction_Check(func)) { + return __Pyx_PyCFunction_FastCall(func, &arg, 1); + #endif + } +@@ -13901,9 +14295,9 @@ static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes( + } + if (stop > length) + stop = length; ++ if (unlikely(stop <= start)) ++ return __Pyx_NewRef(__pyx_empty_unicode); + length = stop - start; +- if (unlikely(length <= 0)) +- return PyUnicode_FromUnicode(NULL, 0); + cstring += start; + if (decode_func) { + return decode_func(cstring, length, errors); +@@ -14809,6 +15203,28 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam + } + #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; +@@ -14854,15 +15270,23 @@ static int __Pyx_setup_reduce(PyObject* type_obj) { + #endif + 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 __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; ++ 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 __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; ++ 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); + } +@@ -14933,7 +15357,7 @@ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { +- if (strchr(__Pyx_MODULE_NAME, '.')) { ++ if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) { + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, 1); + if (!module) { +@@ -15060,7 +15484,7 @@ static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + goto done; + } + +-/* CythonFunction */ ++/* CythonFunctionShared */ + #include + static PyObject * + __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) +@@ -15353,7 +15777,8 @@ static PyObject * + __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) + { + #if PY_MAJOR_VERSION >= 3 +- return PyUnicode_FromString(m->func.m_ml->ml_name); ++ Py_INCREF(m->func_qualname); ++ return m->func_qualname; + #else + return PyString_FromString(m->func.m_ml->ml_name); + #endif +@@ -15367,10 +15792,9 @@ static PyMethodDef __pyx_CyFunction_methods[] = { + #else + #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) + #endif +-static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, +- PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +- __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); +- if (op == NULL) ++static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, ++ PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { ++ if (unlikely(op == NULL)) + return NULL; + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; +@@ -15391,12 +15815,12 @@ static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int f + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; ++ op->defaults_size = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; +- PyObject_GC_Track(op); + return (PyObject *) op; + } + static int +@@ -15459,6 +15883,7 @@ static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, + } + static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) + { ++#if PY_MAJOR_VERSION < 3 + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { + Py_INCREF(func); +@@ -15471,6 +15896,7 @@ static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObj + } + if (obj == Py_None) + obj = NULL; ++#endif + return __Pyx_PyMethod_New(func, obj, type); + } + static PyObject* +@@ -15629,6 +16055,9 @@ static PyTypeObject __pyx_CyFunctionType_type = { + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, + #endif ++#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 ++ 0, ++#endif + }; + static int __pyx_CyFunction_init(void) { + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); +@@ -15644,6 +16073,7 @@ static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t + return PyErr_NoMemory(); + memset(m->defaults, 0, size); + m->defaults_pyobjects = pyobjects; ++ m->defaults_size = size; + return m->defaults; + } + static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { +@@ -15662,6 +16092,19 @@ static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, Py + Py_INCREF(dict); + } + ++/* CythonFunction */ ++static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, ++ PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { ++ PyObject *op = __Pyx_CyFunction_Init( ++ PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), ++ ml, flags, qualname, closure, module, globals, code ++ ); ++ if (likely(op)) { ++ PyObject_GC_Track(op); ++ } ++ return op; ++} ++ + /* Py3ClassCreate */ + static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, + PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { +@@ -15731,7 +16174,7 @@ static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObj + + /* 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 +@@ -15761,7 +16204,7 @@ static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + } + if (!use_cline) { + c_line = 0; +- PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); ++ (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; +@@ -15835,7 +16278,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + 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; + } +@@ -15858,30 +16301,31 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { +- PyCodeObject *py_code = 0; +- PyObject *py_srcfile = 0; +- PyObject *py_funcname = 0; ++ PyCodeObject *py_code = NULL; ++ PyObject *py_funcname = NULL; + #if PY_MAJOR_VERSION < 3 ++ PyObject *py_srcfile = NULL; + py_srcfile = PyString_FromString(filename); +- #else +- py_srcfile = PyUnicode_FromString(filename); +- #endif + if (!py_srcfile) goto bad; ++ #endif + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); ++ if (!py_funcname) goto bad; + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); ++ if (!py_funcname) goto bad; ++ funcname = PyUnicode_AsUTF8(py_funcname); ++ if (!funcname) goto bad; + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); +- #else +- py_funcname = PyUnicode_FromString(funcname); ++ if (!py_funcname) goto bad; + #endif + } +- if (!py_funcname) goto bad; ++ #if PY_MAJOR_VERSION < 3 + py_code = __Pyx_PyCode_New( + 0, + 0, +@@ -15900,11 +16344,16 @@ static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); +- Py_DECREF(py_funcname); ++ #else ++ py_code = PyCode_NewEmpty(filename, funcname, py_line); ++ #endif ++ Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline + return py_code; + bad: +- Py_XDECREF(py_srcfile); + Py_XDECREF(py_funcname); ++ #if PY_MAJOR_VERSION < 3 ++ Py_XDECREF(py_srcfile); ++ #endif + return NULL; + } + static void __Pyx_AddTraceback(const char *funcname, int c_line, +@@ -15936,9 +16385,38 @@ static void __Pyx_AddTraceback(const char *funcname, int c_line, + Py_XDECREF(py_frame); + } + ++/* CIntFromPyVerify */ ++#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ ++ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) ++#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ ++ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) ++#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ ++ {\ ++ func_type value = func_value;\ ++ if (sizeof(target_type) < sizeof(func_type)) {\ ++ if (unlikely(value != (func_type) (target_type) value)) {\ ++ func_type zero = 0;\ ++ if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ ++ return (target_type) -1;\ ++ if (is_unsigned && unlikely(value < zero))\ ++ goto raise_neg_overflow;\ ++ else\ ++ goto raise_overflow;\ ++ }\ ++ }\ ++ return (target_type) value;\ ++ } ++ + /* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { +- const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const int neg_one = (int) -1, const_zero = (int) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(int) < sizeof(long)) { +@@ -15967,31 +16445,16 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { + } + } + +-/* CIntFromPyVerify */ +-#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ +- __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +-#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ +- __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +-#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ +- {\ +- func_type value = func_value;\ +- if (sizeof(target_type) < sizeof(func_type)) {\ +- if (unlikely(value != (func_type) (target_type) value)) {\ +- func_type zero = 0;\ +- if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ +- return (target_type) -1;\ +- if (is_unsigned && unlikely(value < zero))\ +- goto raise_neg_overflow;\ +- else\ +- goto raise_overflow;\ +- }\ +- }\ +- return (target_type) value;\ +- } +- + /* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +- const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const int neg_one = (int) -1, const_zero = (int) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -16180,7 +16643,14 @@ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { + + /* CIntFromPy */ + static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { +- const size_t neg_one = (size_t) ((size_t) 0 - (size_t) 1), const_zero = (size_t) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const size_t neg_one = (size_t) -1, const_zero = (size_t) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -16369,7 +16839,14 @@ static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { + + /* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const long neg_one = (long) -1, const_zero = (long) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { +@@ -16400,7 +16877,14 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { + + /* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const long neg_one = (long) -1, const_zero = (long) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -16975,9 +17459,13 @@ PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, i + if (exc_state->exc_traceback) { + PyTracebackObject *tb = (PyTracebackObject *) exc_state->exc_traceback; + PyFrameObject *f = tb->tb_frame; +- Py_XINCREF(tstate->frame); + assert(f->f_back == NULL); ++ #if PY_VERSION_HEX >= 0x030B00A1 ++ f->f_back = PyThreadState_GetFrame(tstate); ++ #else ++ Py_XINCREF(tstate->frame); + f->f_back = tstate->frame; ++ #endif + } + #endif + } +@@ -17030,6 +17518,30 @@ PyObject *__Pyx_Coroutine_MethodReturn(CYTHON_UNUSED PyObject* gen, PyObject *re + } + return retval; + } ++#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) ++static CYTHON_INLINE ++PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) { ++#if PY_VERSION_HEX <= 0x030A00A1 ++ return _PyGen_Send(gen, arg); ++#else ++ PyObject *result; ++ if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) { ++ if (PyAsyncGen_CheckExact(gen)) { ++ assert(result == Py_None); ++ PyErr_SetNone(PyExc_StopAsyncIteration); ++ } ++ else if (result == Py_None) { ++ PyErr_SetNone(PyExc_StopIteration); ++ } ++ else { ++ _PyGen_SetStopIterationValue(result); ++ } ++ Py_CLEAR(result); ++ } ++ return result; ++#endif ++} ++#endif + static CYTHON_INLINE + PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { + PyObject *ret; +@@ -17066,12 +17578,12 @@ static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { +- ret = _PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); ++ ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyCoro_CheckExact(yf)) { +- ret = _PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); ++ ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + { +@@ -17155,7 +17667,7 @@ static PyObject *__Pyx_Generator_Next(PyObject *self) { + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { +- ret = _PyGen_Send((PyGenObject*)yf, NULL); ++ ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL); + } else + #endif + #ifdef __Pyx_Coroutine_USED +@@ -17315,6 +17827,7 @@ static int __Pyx_Coroutine_clear(PyObject *self) { + } + #endif + Py_CLEAR(gen->gi_code); ++ Py_CLEAR(gen->gi_frame); + Py_CLEAR(gen->gi_name); + Py_CLEAR(gen->gi_qualname); + Py_CLEAR(gen->gi_modulename); +@@ -17331,7 +17844,7 @@ static void __Pyx_Coroutine_dealloc(PyObject *self) { + if (PyObject_CallFinalizerFromDealloc(self)) + #else + Py_TYPE(gen)->tp_del(self); +- if (self->ob_refcnt > 0) ++ if (Py_REFCNT(self) > 0) + #endif + { + return; +@@ -17358,7 +17871,7 @@ static void __Pyx_Coroutine_del(PyObject *self) { + } + #if !CYTHON_USE_TP_FINALIZE + assert(self->ob_refcnt == 0); +- self->ob_refcnt = 1; ++ __Pyx_SET_REFCNT(self, 1); + #endif + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); +@@ -17425,17 +17938,17 @@ static void __Pyx_Coroutine_del(PyObject *self) { + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); + #if !CYTHON_USE_TP_FINALIZE +- assert(self->ob_refcnt > 0); ++ assert(Py_REFCNT(self) > 0); + if (--self->ob_refcnt == 0) { + return; + } + { +- Py_ssize_t refcnt = self->ob_refcnt; ++ Py_ssize_t refcnt = Py_REFCNT(self); + _Py_NewReference(self); +- self->ob_refcnt = refcnt; ++ __Pyx_SET_REFCNT(self, refcnt); + } + #if CYTHON_COMPILING_IN_CPYTHON +- assert(PyType_IS_GC(self->ob_type) && ++ assert(PyType_IS_GC(Py_TYPE(self)) && + _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); + _Py_DEC_REFTOTAL; + #endif +@@ -17501,6 +18014,27 @@ __Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, CYTHO + Py_XDECREF(tmp); + return 0; + } ++static PyObject * ++__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, CYTHON_UNUSED void *context) ++{ ++ PyObject *frame = self->gi_frame; ++ if (!frame) { ++ if (unlikely(!self->gi_code)) { ++ Py_RETURN_NONE; ++ } ++ frame = (PyObject *) PyFrame_New( ++ PyThreadState_Get(), /*PyThreadState *tstate,*/ ++ (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/ ++ __pyx_d, /*PyObject *globals,*/ ++ 0 /*PyObject *locals*/ ++ ); ++ if (unlikely(!frame)) ++ return NULL; ++ self->gi_frame = frame; ++ } ++ Py_INCREF(frame); ++ return frame; ++} + static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { +@@ -17534,6 +18068,7 @@ static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + gen->gi_modulename = module_name; + Py_XINCREF(code); + gen->gi_code = code; ++ gen->gi_frame = NULL; + PyObject_GC_Track(gen); + return gen; + } +@@ -17657,6 +18192,8 @@ static PyGetSetDef __pyx_Generator_getsets[] = { + (char*) PyDoc_STR("name of the generator"), 0}, + {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, + (char*) PyDoc_STR("qualified name of the generator"), 0}, ++ {(char *) "gi_frame", (getter)__Pyx_Coroutine_get_frame, NULL, ++ (char*) PyDoc_STR("Frame of the generator"), 0}, + {0, 0, 0, 0, 0} + }; + static PyTypeObject __pyx_GeneratorType_type = { +@@ -17722,6 +18259,9 @@ static PyTypeObject __pyx_GeneratorType_type = { + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, + #endif ++#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 ++ 0, ++#endif + }; + static int __pyx_Generator_init(void) { + __pyx_GeneratorType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; +@@ -17997,6 +18537,23 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + 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 (Py_hash_t) __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); + }