diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 738c080..0000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/http-parser-0.7.5.tar.gz -/http-parser-0.7.12.tar.gz -/http-parser-0.8.3.tar.gz diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..5204a84 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +Orphaned for 6+ weeks diff --git a/fix-build-on-py3.patch b/fix-build-on-py3.patch deleted file mode 100644 index 5b489a6..0000000 --- a/fix-build-on-py3.patch +++ /dev/null @@ -1,14114 +0,0 @@ -From f4811786a50b95699b315169596a6090f4be3d65 Mon Sep 17 00:00:00 2001 -From: tomis007 -Date: Tue, 3 Jul 2018 20:01:32 -0400 -Subject: [PATCH] regenerated with cython 0.28.3 - ---- - http_parser/parser.c | 10470 ++++++++++++++++++++++++++++++++----------------- - 1 file changed, 6972 insertions(+), 3498 deletions(-) - -diff --git a/http_parser/parser.c b/http_parser/parser.c -index 1c9f6ff..a81e0c4 100644 ---- a/http_parser/parser.c -+++ b/http_parser/parser.c -@@ -1,27 +1,17 @@ --/* Generated by Cython 0.19.1 on Fri Aug 30 13:02:01 2013 */ -+/* Generated by Cython 0.28.3 */ - - #define PY_SSIZE_T_CLEAN --#ifndef CYTHON_USE_PYLONG_INTERNALS --#ifdef PYLONG_BITS_IN_DIGIT --#define CYTHON_USE_PYLONG_INTERNALS 0 --#else --#include "pyconfig.h" --#ifdef PYLONG_BITS_IN_DIGIT --#define CYTHON_USE_PYLONG_INTERNALS 1 --#else --#define CYTHON_USE_PYLONG_INTERNALS 0 --#endif --#endif --#endif - #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 < 0x02040000 -- #error Cython requires Python 2.4+. -+#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) -+ #error Cython requires Python 2.6+ or Python 3.3+. - #else --#include /* For offsetof */ -+#define CYTHON_ABI "0_28_3" -+#define CYTHON_FUTURE_DIVISION 0 -+#include - #ifndef offsetof --#define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -+ #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) - #endif - #if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall -@@ -40,6 +30,12 @@ - #ifndef DL_EXPORT - #define DL_EXPORT(t) t - #endif -+#define __PYX_COMMA , -+#ifndef HAVE_LONG_LONG -+ #if PY_VERSION_HEX >= 0x02070000 -+ #define HAVE_LONG_LONG -+ #endif -+#endif - #ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG - #endif -@@ -47,103 +43,409 @@ - #define Py_HUGE_VAL HUGE_VAL - #endif - #ifdef PYPY_VERSION --#define CYTHON_COMPILING_IN_PYPY 1 --#define CYTHON_COMPILING_IN_CPYTHON 0 -+ #define CYTHON_COMPILING_IN_PYPY 1 -+ #define CYTHON_COMPILING_IN_PYSTON 0 -+ #define CYTHON_COMPILING_IN_CPYTHON 0 -+ #undef CYTHON_USE_TYPE_SLOTS -+ #define CYTHON_USE_TYPE_SLOTS 0 -+ #undef CYTHON_USE_PYTYPE_LOOKUP -+ #define CYTHON_USE_PYTYPE_LOOKUP 0 -+ #if PY_VERSION_HEX < 0x03050000 -+ #undef CYTHON_USE_ASYNC_SLOTS -+ #define CYTHON_USE_ASYNC_SLOTS 0 -+ #elif !defined(CYTHON_USE_ASYNC_SLOTS) -+ #define CYTHON_USE_ASYNC_SLOTS 1 -+ #endif -+ #undef CYTHON_USE_PYLIST_INTERNALS -+ #define CYTHON_USE_PYLIST_INTERNALS 0 -+ #undef CYTHON_USE_UNICODE_INTERNALS -+ #define CYTHON_USE_UNICODE_INTERNALS 0 -+ #undef CYTHON_USE_UNICODE_WRITER -+ #define CYTHON_USE_UNICODE_WRITER 0 -+ #undef CYTHON_USE_PYLONG_INTERNALS -+ #define CYTHON_USE_PYLONG_INTERNALS 0 -+ #undef CYTHON_AVOID_BORROWED_REFS -+ #define CYTHON_AVOID_BORROWED_REFS 1 -+ #undef CYTHON_ASSUME_SAFE_MACROS -+ #define CYTHON_ASSUME_SAFE_MACROS 0 -+ #undef CYTHON_UNPACK_METHODS -+ #define CYTHON_UNPACK_METHODS 0 -+ #undef CYTHON_FAST_THREAD_STATE -+ #define CYTHON_FAST_THREAD_STATE 0 -+ #undef CYTHON_FAST_PYCALL -+ #define CYTHON_FAST_PYCALL 0 -+ #undef CYTHON_PEP489_MULTI_PHASE_INIT -+ #define CYTHON_PEP489_MULTI_PHASE_INIT 0 -+ #undef CYTHON_USE_TP_FINALIZE -+ #define CYTHON_USE_TP_FINALIZE 0 -+#elif defined(PYSTON_VERSION) -+ #define CYTHON_COMPILING_IN_PYPY 0 -+ #define CYTHON_COMPILING_IN_PYSTON 1 -+ #define CYTHON_COMPILING_IN_CPYTHON 0 -+ #ifndef CYTHON_USE_TYPE_SLOTS -+ #define CYTHON_USE_TYPE_SLOTS 1 -+ #endif -+ #undef CYTHON_USE_PYTYPE_LOOKUP -+ #define CYTHON_USE_PYTYPE_LOOKUP 0 -+ #undef CYTHON_USE_ASYNC_SLOTS -+ #define CYTHON_USE_ASYNC_SLOTS 0 -+ #undef CYTHON_USE_PYLIST_INTERNALS -+ #define CYTHON_USE_PYLIST_INTERNALS 0 -+ #ifndef CYTHON_USE_UNICODE_INTERNALS -+ #define CYTHON_USE_UNICODE_INTERNALS 1 -+ #endif -+ #undef CYTHON_USE_UNICODE_WRITER -+ #define CYTHON_USE_UNICODE_WRITER 0 -+ #undef CYTHON_USE_PYLONG_INTERNALS -+ #define CYTHON_USE_PYLONG_INTERNALS 0 -+ #ifndef CYTHON_AVOID_BORROWED_REFS -+ #define CYTHON_AVOID_BORROWED_REFS 0 -+ #endif -+ #ifndef CYTHON_ASSUME_SAFE_MACROS -+ #define CYTHON_ASSUME_SAFE_MACROS 1 -+ #endif -+ #ifndef CYTHON_UNPACK_METHODS -+ #define CYTHON_UNPACK_METHODS 1 -+ #endif -+ #undef CYTHON_FAST_THREAD_STATE -+ #define CYTHON_FAST_THREAD_STATE 0 -+ #undef CYTHON_FAST_PYCALL -+ #define CYTHON_FAST_PYCALL 0 -+ #undef CYTHON_PEP489_MULTI_PHASE_INIT -+ #define CYTHON_PEP489_MULTI_PHASE_INIT 0 -+ #undef CYTHON_USE_TP_FINALIZE -+ #define CYTHON_USE_TP_FINALIZE 0 - #else --#define CYTHON_COMPILING_IN_PYPY 0 --#define CYTHON_COMPILING_IN_CPYTHON 1 --#endif --#if PY_VERSION_HEX < 0x02050000 -- typedef int Py_ssize_t; -- #define PY_SSIZE_T_MAX INT_MAX -- #define PY_SSIZE_T_MIN INT_MIN -- #define PY_FORMAT_SIZE_T "" -- #define CYTHON_FORMAT_SSIZE_T "" -- #define PyInt_FromSsize_t(z) PyInt_FromLong(z) -- #define PyInt_AsSsize_t(o) __Pyx_PyInt_AsInt(o) -- #define PyNumber_Index(o) ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \ -- (PyErr_Format(PyExc_TypeError, \ -- "expected index value, got %.200s", Py_TYPE(o)->tp_name), \ -- (PyObject*)0)) -- #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \ -- !PyComplex_Check(o)) -- #define PyIndex_Check __Pyx_PyIndex_Check -- #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message) -- #define __PYX_BUILD_PY_SSIZE_T "i" -+ #define CYTHON_COMPILING_IN_PYPY 0 -+ #define CYTHON_COMPILING_IN_PYSTON 0 -+ #define CYTHON_COMPILING_IN_CPYTHON 1 -+ #ifndef CYTHON_USE_TYPE_SLOTS -+ #define CYTHON_USE_TYPE_SLOTS 1 -+ #endif -+ #if PY_VERSION_HEX < 0x02070000 -+ #undef CYTHON_USE_PYTYPE_LOOKUP -+ #define CYTHON_USE_PYTYPE_LOOKUP 0 -+ #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) -+ #define CYTHON_USE_PYTYPE_LOOKUP 1 -+ #endif -+ #if PY_MAJOR_VERSION < 3 -+ #undef CYTHON_USE_ASYNC_SLOTS -+ #define CYTHON_USE_ASYNC_SLOTS 0 -+ #elif !defined(CYTHON_USE_ASYNC_SLOTS) -+ #define CYTHON_USE_ASYNC_SLOTS 1 -+ #endif -+ #if PY_VERSION_HEX < 0x02070000 -+ #undef CYTHON_USE_PYLONG_INTERNALS -+ #define CYTHON_USE_PYLONG_INTERNALS 0 -+ #elif !defined(CYTHON_USE_PYLONG_INTERNALS) -+ #define CYTHON_USE_PYLONG_INTERNALS 1 -+ #endif -+ #ifndef CYTHON_USE_PYLIST_INTERNALS -+ #define CYTHON_USE_PYLIST_INTERNALS 1 -+ #endif -+ #ifndef CYTHON_USE_UNICODE_INTERNALS -+ #define CYTHON_USE_UNICODE_INTERNALS 1 -+ #endif -+ #if PY_VERSION_HEX < 0x030300F0 -+ #undef CYTHON_USE_UNICODE_WRITER -+ #define CYTHON_USE_UNICODE_WRITER 0 -+ #elif !defined(CYTHON_USE_UNICODE_WRITER) -+ #define CYTHON_USE_UNICODE_WRITER 1 -+ #endif -+ #ifndef CYTHON_AVOID_BORROWED_REFS -+ #define CYTHON_AVOID_BORROWED_REFS 0 -+ #endif -+ #ifndef CYTHON_ASSUME_SAFE_MACROS -+ #define CYTHON_ASSUME_SAFE_MACROS 1 -+ #endif -+ #ifndef CYTHON_UNPACK_METHODS -+ #define CYTHON_UNPACK_METHODS 1 -+ #endif -+ #ifndef CYTHON_FAST_THREAD_STATE -+ #define CYTHON_FAST_THREAD_STATE 1 -+ #endif -+ #ifndef CYTHON_FAST_PYCALL -+ #define CYTHON_FAST_PYCALL 1 -+ #endif -+ #ifndef CYTHON_PEP489_MULTI_PHASE_INIT -+ #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) -+ #endif -+ #ifndef CYTHON_USE_TP_FINALIZE -+ #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) -+ #endif -+#endif -+#if !defined(CYTHON_FAST_PYCCALL) -+#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -+#endif -+#if CYTHON_USE_PYLONG_INTERNALS -+ #include "longintrepr.h" -+ #undef SHIFT -+ #undef BASE -+ #undef MASK -+#endif -+#ifndef __has_attribute -+ #define __has_attribute(x) 0 -+#endif -+#ifndef __has_cpp_attribute -+ #define __has_cpp_attribute(x) 0 -+#endif -+#ifndef CYTHON_RESTRICT -+ #if defined(__GNUC__) -+ #define CYTHON_RESTRICT __restrict__ -+ #elif defined(_MSC_VER) && _MSC_VER >= 1400 -+ #define CYTHON_RESTRICT __restrict -+ #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -+ #define CYTHON_RESTRICT restrict -+ #else -+ #define CYTHON_RESTRICT -+ #endif -+#endif -+#ifndef CYTHON_UNUSED -+# if defined(__GNUC__) -+# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -+# define CYTHON_UNUSED __attribute__ ((__unused__)) -+# else -+# define CYTHON_UNUSED -+# endif -+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -+# define CYTHON_UNUSED __attribute__ ((__unused__)) -+# else -+# define CYTHON_UNUSED -+# endif -+#endif -+#ifndef CYTHON_MAYBE_UNUSED_VAR -+# if defined(__cplusplus) -+ template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -+# else -+# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -+# endif -+#endif -+#ifndef CYTHON_NCP_UNUSED -+# if CYTHON_COMPILING_IN_CPYTHON -+# define CYTHON_NCP_UNUSED -+# else -+# define CYTHON_NCP_UNUSED CYTHON_UNUSED -+# endif -+#endif -+#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -+#ifdef _MSC_VER -+ #ifndef _MSC_STDINT_H_ -+ #if _MSC_VER < 1300 -+ typedef unsigned char uint8_t; -+ typedef unsigned int uint32_t; -+ #else -+ typedef unsigned __int8 uint8_t; -+ typedef unsigned __int32 uint32_t; -+ #endif -+ #endif - #else -- #define __PYX_BUILD_PY_SSIZE_T "n" -- #define CYTHON_FORMAT_SSIZE_T "z" -- #define __Pyx_PyIndex_Check PyIndex_Check --#endif --#if PY_VERSION_HEX < 0x02060000 -- #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt) -- #define Py_TYPE(ob) (((PyObject*)(ob))->ob_type) -- #define Py_SIZE(ob) (((PyVarObject*)(ob))->ob_size) -- #define PyVarObject_HEAD_INIT(type, size) \ -- PyObject_HEAD_INIT(type) size, -- #define PyType_Modified(t) -- typedef struct { -- void *buf; -- PyObject *obj; -- Py_ssize_t len; -- Py_ssize_t itemsize; -- int readonly; -- int ndim; -- char *format; -- Py_ssize_t *shape; -- Py_ssize_t *strides; -- Py_ssize_t *suboffsets; -- void *internal; -- } Py_buffer; -- #define PyBUF_SIMPLE 0 -- #define PyBUF_WRITABLE 0x0001 -- #define PyBUF_FORMAT 0x0004 -- #define PyBUF_ND 0x0008 -- #define PyBUF_STRIDES (0x0010 | PyBUF_ND) -- #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES) -- #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES) -- #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES) -- #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES) -- #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE) -- #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE) -- typedef int (*getbufferproc)(PyObject *, Py_buffer *, int); -- typedef void (*releasebufferproc)(PyObject *, Py_buffer *); -+ #include -+#endif -+#ifndef CYTHON_FALLTHROUGH -+ #if defined(__cplusplus) && __cplusplus >= 201103L -+ #if __has_cpp_attribute(fallthrough) -+ #define CYTHON_FALLTHROUGH [[fallthrough]] -+ #elif __has_cpp_attribute(clang::fallthrough) -+ #define CYTHON_FALLTHROUGH [[clang::fallthrough]] -+ #elif __has_cpp_attribute(gnu::fallthrough) -+ #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] -+ #endif -+ #endif -+ #ifndef CYTHON_FALLTHROUGH -+ #if __has_attribute(fallthrough) -+ #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) -+ #else -+ #define CYTHON_FALLTHROUGH -+ #endif -+ #endif -+ #if defined(__clang__ ) && defined(__apple_build_version__) -+ #if __apple_build_version__ < 7000000 -+ #undef CYTHON_FALLTHROUGH -+ #define CYTHON_FALLTHROUGH -+ #endif -+ #endif -+#endif -+ -+#ifndef CYTHON_INLINE -+ #if defined(__clang__) -+ #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) -+ #elif defined(__GNUC__) -+ #define CYTHON_INLINE __inline__ -+ #elif defined(_MSC_VER) -+ #define CYTHON_INLINE __inline -+ #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -+ #define CYTHON_INLINE inline -+ #else -+ #define CYTHON_INLINE -+ #endif -+#endif -+ -+#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) -+ #define Py_OptimizeFlag 0 - #endif -+#define __PYX_BUILD_PY_SSIZE_T "n" -+#define CYTHON_FORMAT_SSIZE_T "z" - #if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" -- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \ -- PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -+ #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) -+ #define __Pyx_DefaultClassType PyClass_Type - #else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" -- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \ -+ #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) -+ #define __Pyx_DefaultClassType PyType_Type - #endif --#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6 -- #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict") --#endif --#if PY_MAJOR_VERSION >= 3 -+#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -+#endif -+#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 - #endif --#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3) -+#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 - #endif --#if PY_VERSION_HEX < 0x02060000 -- #define Py_TPFLAGS_HAVE_VERSION_TAG 0 -+#ifndef Py_TPFLAGS_HAVE_FINALIZE -+ #define Py_TPFLAGS_HAVE_FINALIZE 0 -+#endif -+#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) -+ #ifndef METH_FASTCALL -+ #define METH_FASTCALL 0x80 -+ #endif -+ typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); -+ typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, -+ Py_ssize_t nargs, PyObject *kwnames); -+#else -+ #define __Pyx_PyCFunctionFast _PyCFunctionFast -+ #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -+#endif -+#if CYTHON_FAST_PYCCALL -+#define __Pyx_PyFastCFunction_Check(func)\ -+ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) -+#else -+#define __Pyx_PyFastCFunction_Check(func) 0 -+#endif -+#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) -+ #define PyObject_Malloc(s) PyMem_Malloc(s) -+ #define PyObject_Free(p) PyMem_Free(p) -+ #define PyObject_Realloc(p) PyMem_Realloc(p) -+#endif -+#if CYTHON_COMPILING_IN_PYSTON -+ #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) -+ #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -+#else -+ #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) -+ #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -+#endif -+#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 -+ #define __Pyx_PyThreadState_Current PyThreadState_GET() -+#elif PY_VERSION_HEX >= 0x03060000 -+ #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -+#elif PY_VERSION_HEX >= 0x03000000 -+ #define __Pyx_PyThreadState_Current PyThreadState_GET() -+#else -+ #define __Pyx_PyThreadState_Current _PyThreadState_Current -+#endif -+#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -+#include "pythread.h" -+#define Py_tss_NEEDS_INIT 0 -+typedef int Py_tss_t; -+static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { -+ *key = PyThread_create_key(); -+ return 0; // PyThread_create_key reports success always -+} -+static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { -+ Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); -+ *key = Py_tss_NEEDS_INIT; -+ return key; -+} -+static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { -+ PyObject_Free(key); -+} -+static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { -+ return *key != Py_tss_NEEDS_INIT; -+} -+static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { -+ PyThread_delete_key(*key); -+ *key = Py_tss_NEEDS_INIT; -+} -+static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { -+ return PyThread_set_key_value(*key, value); -+} -+static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { -+ return PyThread_get_key_value(*key); -+} -+#endif // TSS (Thread Specific Storage) API -+#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -+#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -+#else -+#define __Pyx_PyDict_NewPresized(n) PyDict_New() -+#endif -+#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION -+ #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) -+ #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -+#else -+ #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) -+ #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -+#endif -+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -+#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -+#else -+#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) - #endif - #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 -- #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ? \ -+ #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #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) -+ #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) -+ #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) -+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) - #else - #define CYTHON_PEP393_ENABLED 0 -+ #define PyUnicode_1BYTE_KIND 1 -+ #define PyUnicode_2BYTE_KIND 2 -+ #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) -- #define __Pyx_PyUnicode_READ(k, d, i) ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i])) -+ #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) -+ #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) -+ #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) -+ #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) -+ #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) -+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -+#endif -+#if CYTHON_COMPILING_IN_PYPY -+ #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) -+ #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -+#else -+ #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) -+ #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ -+ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -+#endif -+#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) -+ #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -+#endif -+#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) -+ #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -+#endif -+#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) -+ #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -+#endif -+#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -+#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -+#if PY_MAJOR_VERSION >= 3 -+ #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -+#else -+ #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -+#endif -+#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) -+ #define PyObject_ASCII(o) PyObject_Repr(o) - #endif - #if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type -@@ -151,41 +453,23 @@ - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact --#endif --#if PY_VERSION_HEX < 0x02060000 -- #define PyBytesObject PyStringObject -- #define PyBytes_Type PyString_Type -- #define PyBytes_Check PyString_Check -- #define PyBytes_CheckExact PyString_CheckExact -- #define PyBytes_FromString PyString_FromString -- #define PyBytes_FromStringAndSize PyString_FromStringAndSize -- #define PyBytes_FromFormat PyString_FromFormat -- #define PyBytes_DecodeEscape PyString_DecodeEscape -- #define PyBytes_AsString PyString_AsString -- #define PyBytes_AsStringAndSize PyString_AsStringAndSize -- #define PyBytes_Size PyString_Size -- #define PyBytes_AS_STRING PyString_AS_STRING -- #define PyBytes_GET_SIZE PyString_GET_SIZE -- #define PyBytes_Repr PyString_Repr -- #define PyBytes_Concat PyString_Concat -- #define PyBytes_ConcatAndDel PyString_ConcatAndDel -+ #define PyObject_Unicode PyObject_Str - #endif - #if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) - #else -- #define __Pyx_PyBaseString_Check(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj) || \ -- PyString_Check(obj) || PyUnicode_Check(obj)) -- #define __Pyx_PyBaseString_CheckExact(obj) (Py_TYPE(obj) == &PyBaseString_Type) --#endif --#if PY_VERSION_HEX < 0x02060000 -- #define PySet_Check(obj) PyObject_TypeCheck(obj, &PySet_Type) -- #define PyFrozenSet_Check(obj) PyObject_TypeCheck(obj, &PyFrozenSet_Type) -+ #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) -+ #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) - #endif - #ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) - #endif --#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -+#if CYTHON_ASSUME_SAFE_MACROS -+ #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -+#else -+ #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -+#endif - #if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type -@@ -201,11 +485,17 @@ - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask -+ #define PyNumber_Int PyNumber_Long - #endif - #if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject - #endif --#if PY_VERSION_HEX < 0x03020000 -+#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY -+ #ifndef PyUnicode_InternFromString -+ #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) -+ #endif -+#endif -+#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -@@ -213,87 +503,54 @@ - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t - #endif --#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300) -- #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b) -- #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value) -- #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b) --#else -- #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \ -- (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \ -- (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \ -- (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0))) -- #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \ -- (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \ -- (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \ -- (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1))) -- #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \ -- (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \ -- (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \ -- (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1))) --#endif - #if PY_MAJOR_VERSION >= 3 -- #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) --#endif --#if PY_VERSION_HEX < 0x02050000 -- #define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),((char *)(n))) -- #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a)) -- #define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),((char *)(n))) --#else -- #define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),(n)) -- #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a)) -- #define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),(n)) --#endif --#if PY_VERSION_HEX < 0x02050000 -- #define __Pyx_NAMESTR(n) ((char *)(n)) -- #define __Pyx_DOCSTR(n) ((char *)(n)) -+ #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) - #else -- #define __Pyx_NAMESTR(n) (n) -- #define __Pyx_DOCSTR(n) (n) -+ #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) - #endif --#ifndef CYTHON_INLINE -- #if defined(__GNUC__) -- #define CYTHON_INLINE __inline__ -- #elif defined(_MSC_VER) -- #define CYTHON_INLINE __inline -- #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -- #define CYTHON_INLINE inline -+#if CYTHON_USE_ASYNC_SLOTS -+ #if PY_VERSION_HEX >= 0x030500B1 -+ #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods -+ #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else -- #define CYTHON_INLINE -+ #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -+#else -+ #define __Pyx_PyType_AsAsync(obj) NULL - #endif --#ifndef CYTHON_RESTRICT -- #if defined(__GNUC__) -- #define CYTHON_RESTRICT __restrict__ -- #elif defined(_MSC_VER) -- #define CYTHON_RESTRICT __restrict -- #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -- #define CYTHON_RESTRICT restrict -- #else -- #define CYTHON_RESTRICT -- #endif -+#ifndef __Pyx_PyAsyncMethodsStruct -+ typedef struct { -+ unaryfunc am_await; -+ unaryfunc am_aiter; -+ unaryfunc am_anext; -+ } __Pyx_PyAsyncMethodsStruct; - #endif -+ -+#if defined(WIN32) || defined(MS_WINDOWS) -+ #define _USE_MATH_DEFINES -+#endif -+#include - #ifdef NAN - #define __PYX_NAN() ((float) NAN) - #else - static CYTHON_INLINE float __PYX_NAN() { -- /* Initialize NaN. The sign is irrelevant, an exponent with all bits 1 and -- a nonzero mantissa means NaN. If the first bit in the mantissa is 1, it is -- a quiet NaN. */ - float value; - memset(&value, 0xFF, sizeof(value)); - return value; - } - #endif -- -- --#if PY_MAJOR_VERSION >= 3 -- #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) -- #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -+#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -+#define __Pyx_truncl trunc - #else -- #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) -- #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -+#define __Pyx_truncl truncl - #endif - -+ -+#define __PYX_ERR(f_index, lineno, Ln_error) \ -+{ \ -+ __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -+} -+ - #ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" -@@ -302,52 +559,66 @@ static CYTHON_INLINE float __PYX_NAN() { - #endif - #endif - --#if defined(WIN32) || defined(MS_WINDOWS) --#define _USE_MATH_DEFINES --#endif --#include - #define __PYX_HAVE__http_parser__parser - #define __PYX_HAVE_API__http_parser__parser --#include "string.h" --#include "stdlib.h" -+/* Early includes */ -+#include -+#include - #include "pyversion_compat.h" --#include "stdio.h" -+#include - #include "pythread.h" - #include "http_parser.h" - #ifdef _OPENMP - #include - #endif /* _OPENMP */ - --#ifdef PYREX_WITHOUT_ASSERTIONS -+#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) - #define CYTHON_WITHOUT_ASSERTIONS - #endif - --#ifndef CYTHON_UNUSED --# if defined(__GNUC__) --# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) --# define CYTHON_UNUSED __attribute__ ((__unused__)) --# else --# define CYTHON_UNUSED --# endif --# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) --# define CYTHON_UNUSED __attribute__ ((__unused__)) --# else --# define CYTHON_UNUSED --# endif --#endif --typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding; -- const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/ -+typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; -+ const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - - #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 - #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 - #define __PYX_DEFAULT_STRING_ENCODING "" - #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize --static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); --static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -+#define __Pyx_uchar_cast(c) ((unsigned char)c) -+#define __Pyx_long_cast(x) ((long)x) -+#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ -+ (sizeof(type) < sizeof(Py_ssize_t)) ||\ -+ (sizeof(type) > sizeof(Py_ssize_t) &&\ -+ likely(v < (type)PY_SSIZE_T_MAX ||\ -+ v == (type)PY_SSIZE_T_MAX) &&\ -+ (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ -+ v == (type)PY_SSIZE_T_MIN))) ||\ -+ (sizeof(type) == sizeof(Py_ssize_t) &&\ -+ (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ -+ v == (type)PY_SSIZE_T_MAX))) ) -+#if defined (__cplusplus) && __cplusplus >= 201103L -+ #include -+ #define __Pyx_sst_abs(value) std::abs(value) -+#elif SIZEOF_INT >= SIZEOF_SIZE_T -+ #define __Pyx_sst_abs(value) abs(value) -+#elif SIZEOF_LONG >= SIZEOF_SIZE_T -+ #define __Pyx_sst_abs(value) labs(value) -+#elif defined (_MSC_VER) -+ #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -+#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -+ #define __Pyx_sst_abs(value) llabs(value) -+#elif defined (__GNUC__) -+ #define __Pyx_sst_abs(value) __builtin_llabs(value) -+#else -+ #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -+#endif -+static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -+static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -+#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -+#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) - #define __Pyx_PyBytes_FromString PyBytes_FromString - #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize --static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char*); -+static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); - #if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -@@ -355,52 +626,69 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char*); - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize - #endif --#define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) --#define __Pyx_PyObject_FromUString(s) __Pyx_PyObject_FromString((char*)s) --#define __Pyx_PyBytes_FromUString(s) __Pyx_PyBytes_FromString((char*)s) --#define __Pyx_PyStr_FromUString(s) __Pyx_PyStr_FromString((char*)s) --#define __Pyx_PyUnicode_FromUString(s) __Pyx_PyUnicode_FromString((char*)s) --#if PY_MAJOR_VERSION < 3 --static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) --{ -+#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -+#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -+#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -+#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -+#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -+#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -+#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -+#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -+#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -+#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -+#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -+#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -+#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -+#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -+#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -+#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -+static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; -- return u_end - u - 1; -+ return (size_t)(u_end - u - 1); - } --#else --#define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen --#endif - #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) - #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode - #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode --#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None) --#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False)) -+#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -+#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -+static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); - static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); --static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x); -+static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -+#define __Pyx_PySequence_Tuple(obj)\ -+ (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 size_t __Pyx_PyInt_AsSize_t(PyObject*); --#if CYTHON_COMPILING_IN_CPYTHON -+#if CYTHON_ASSUME_SAFE_MACROS - #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) - #else - #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) - #endif - #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -+#if PY_MAJOR_VERSION >= 3 -+#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -+#else -+#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -+#endif -+#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) - #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - static int __Pyx_sys_getdefaultencoding_not_ascii; --static int __Pyx_init_sys_getdefaultencoding_params() { -- PyObject* sys = NULL; -+static int __Pyx_init_sys_getdefaultencoding_params(void) { -+ PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; -+ const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); -- if (sys == NULL) goto bad; -- default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); -- if (default_encoding == NULL) goto bad; -- if (strcmp(PyBytes_AsString(default_encoding), "ascii") == 0) { -+ if (!sys) goto bad; -+ default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); -+ Py_DECREF(sys); -+ if (!default_encoding) goto bad; -+ default_encoding_c = PyBytes_AsString(default_encoding); -+ if (!default_encoding_c) goto bad; -+ if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { -- const char* default_encoding_c = PyBytes_AS_STRING(default_encoding); - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { -@@ -408,23 +696,21 @@ static int __Pyx_init_sys_getdefaultencoding_params() { - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); -- if (ascii_chars_u == NULL) goto bad; -+ if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); -- if (ascii_chars_b == NULL || strncmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { -+ if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, -- "This module compiled with c_string_encoding=ascii, but default encoding '%s' is not a superset of ascii.", -+ "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } -+ Py_DECREF(ascii_chars_u); -+ Py_DECREF(ascii_chars_b); - } -- Py_XDECREF(sys); -- Py_XDECREF(default_encoding); -- Py_XDECREF(ascii_chars_u); -- Py_XDECREF(ascii_chars_b); -+ Py_DECREF(default_encoding); - return 0; - bad: -- Py_XDECREF(sys); - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); -@@ -437,22 +723,23 @@ static int __Pyx_init_sys_getdefaultencoding_params() { - #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) - #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - static char* __PYX_DEFAULT_STRING_ENCODING; --static int __Pyx_init_sys_getdefaultencoding_params() { -- PyObject* sys = NULL; -+static int __Pyx_init_sys_getdefaultencoding_params(void) { -+ PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); -- if (sys == NULL) goto bad; -+ if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); -- if (default_encoding == NULL) goto bad; -- default_encoding_c = PyBytes_AS_STRING(default_encoding); -+ Py_DECREF(sys); -+ if (!default_encoding) goto bad; -+ default_encoding_c = PyBytes_AsString(default_encoding); -+ if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); -+ if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); -- Py_DECREF(sys); - Py_DECREF(default_encoding); - return 0; - bad: -- Py_XDECREF(sys); - Py_XDECREF(default_encoding); - return -1; - } -@@ -460,25 +747,23 @@ static int __Pyx_init_sys_getdefaultencoding_params() { - #endif - - --#ifdef __GNUC__ -- /* Test for GCC > 2.95 */ -- #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)) -- #define likely(x) __builtin_expect(!!(x), 1) -- #define unlikely(x) __builtin_expect(!!(x), 0) -- #else /* __GNUC__ > 2 ... */ -- #define likely(x) (x) -- #define unlikely(x) (x) -- #endif /* __GNUC__ > 2 ... */ --#else /* __GNUC__ */ -+/* Test for GCC > 2.95 */ -+#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) -+ #define likely(x) __builtin_expect(!!(x), 1) -+ #define unlikely(x) __builtin_expect(!!(x), 0) -+#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) - #endif /* __GNUC__ */ -+static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - --static PyObject *__pyx_m; -+static PyObject *__pyx_m = NULL; - static PyObject *__pyx_d; - static PyObject *__pyx_b; -+static PyObject *__pyx_cython_runtime = NULL; - static PyObject *__pyx_empty_tuple; - static PyObject *__pyx_empty_bytes; -+static PyObject *__pyx_empty_unicode; - static int __pyx_lineno; - static int __pyx_clineno = 0; - static const char * __pyx_cfilenm= __FILE__; -@@ -486,7 +771,8 @@ static const char *__pyx_filename; - - - static const char *__pyx_f[] = { -- "parser.pyx", -+ "http_parser/parser.pyx", -+ "stringsource", - "type.pxd", - "bool.pxd", - "complex.pxd", -@@ -494,12 +780,6 @@ static const char *__pyx_f[] = { - - /*--- Type declarations ---*/ - struct __pyx_obj_11http_parser_6parser_HttpParser; --struct __pyx_defaults; --typedef struct __pyx_defaults __pyx_defaults; --struct __pyx_defaults { -- PyObject *__pyx_arg_decompress; -- PyObject *__pyx_arg_header_only; --}; - - /* "http_parser/parser.pyx":193 - * self._last_was_value = False -@@ -519,6 +799,9 @@ struct __pyx_obj_11http_parser_6parser_HttpParser { - PyObject *_parsed_url; - }; - -+ -+/* --- Runtime support code (head) --- */ -+/* Refnanny.proto */ - #ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 - #endif -@@ -532,22 +815,22 @@ struct __pyx_obj_11http_parser_6parser_HttpParser { - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; -- static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/ -+ static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; - #ifdef WITH_THREAD -- #define __Pyx_RefNannySetupContext(name, acquire_gil) \ -- if (acquire_gil) { \ -- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \ -- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \ -- PyGILState_Release(__pyx_gilstate_save); \ -- } else { \ -- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \ -+ #define __Pyx_RefNannySetupContext(name, acquire_gil)\ -+ if (acquire_gil) {\ -+ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ -+ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ -+ PyGILState_Release(__pyx_gilstate_save);\ -+ } else {\ -+ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } - #else -- #define __Pyx_RefNannySetupContext(name, acquire_gil) \ -+ #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) - #endif -- #define __Pyx_RefNannyFinishContext() \ -+ #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) -@@ -569,63 +852,215 @@ struct __pyx_obj_11http_parser_6parser_HttpParser { - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) --#endif /* CYTHON_REFNANNY */ -+#endif -+#define __Pyx_XDECREF_SET(r, v) do {\ -+ PyObject *tmp = (PyObject *) r;\ -+ r = v; __Pyx_XDECREF(tmp);\ -+ } while (0) -+#define __Pyx_DECREF_SET(r, v) do {\ -+ PyObject *tmp = (PyObject *) r;\ -+ r = v; __Pyx_DECREF(tmp);\ -+ } while (0) - #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) - #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - --#if CYTHON_COMPILING_IN_CPYTHON --static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { -- PyTypeObject* tp = Py_TYPE(obj); -- if (likely(tp->tp_getattro)) -- return tp->tp_getattro(obj, attr_name); --#if PY_MAJOR_VERSION < 3 -- if (likely(tp->tp_getattr)) -- return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); --#endif -- return PyObject_GetAttr(obj, attr_name); --} -+/* PyObjectGetAttrStr.proto */ -+#if CYTHON_USE_TYPE_SLOTS -+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); - #else - #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) - #endif - --static PyObject *__Pyx_GetBuiltinName(PyObject *name); /*proto*/ -+/* GetBuiltinName.proto */ -+static PyObject *__Pyx_GetBuiltinName(PyObject *name); -+ -+/* GetModuleGlobalName.proto */ -+static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); -+ -+/* PyCFunctionFastCall.proto */ -+#if CYTHON_FAST_PYCCALL -+static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -+#else -+#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -+#endif -+ -+/* PyFunctionFastCall.proto */ -+#if CYTHON_FAST_PYCALL -+#define __Pyx_PyFunction_FastCall(func, args, nargs)\ -+ __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -+#if 1 || PY_VERSION_HEX < 0x030600B1 -+static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -+#else -+#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -+#endif -+#endif - --static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /*proto*/ -+/* PyObjectCall.proto */ -+#if CYTHON_COMPILING_IN_CPYTHON -+static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -+#else -+#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -+#endif - -+/* PyObjectCallMethO.proto */ - #if CYTHON_COMPILING_IN_CPYTHON --#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o,n,NULL) --static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { -- PyTypeObject* tp = Py_TYPE(obj); -- if (likely(tp->tp_setattro)) -- return tp->tp_setattro(obj, attr_name, value); --#if PY_MAJOR_VERSION < 3 -- if (likely(tp->tp_setattr)) -- return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); - #endif -- return PyObject_SetAttr(obj, attr_name, value); --} -+ -+/* PyObjectCallOneArg.proto */ -+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); -+ -+/* PyObjectSetAttrStr.proto */ -+#if CYTHON_USE_TYPE_SLOTS -+#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) -+static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); - #else - #define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) - #define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) - #endif - --static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ --static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ -+/* PyThreadStateGet.proto */ -+#if CYTHON_FAST_THREAD_STATE -+#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -+#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -+#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -+#else -+#define __Pyx_PyThreadState_declare -+#define __Pyx_PyThreadState_assign -+#define __Pyx_PyErr_Occurred() PyErr_Occurred() -+#endif -+ -+/* PyErrFetchRestore.proto */ -+#if CYTHON_FAST_THREAD_STATE -+#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -+#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -+#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -+#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -+#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -+#if CYTHON_COMPILING_IN_CPYTHON -+#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -+#else -+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -+#endif -+#else -+#define __Pyx_PyErr_Clear() PyErr_Clear() -+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -+#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -+#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -+#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -+#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -+#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -+#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -+#endif - -+/* WriteUnraisableException.proto */ - static void __Pyx_WriteUnraisable(const char *name, int clineno, -- int lineno, const char *filename); /*proto*/ -+ int lineno, const char *filename, -+ int full_traceback, int nogil); - --static CYTHON_INLINE int __Pyx_PySequence_Contains(PyObject* item, PyObject* seq, int eq) { -+/* PySequenceContains.proto */ -+static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { - int result = PySequence_Contains(seq, item); - return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); - } - --static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); -+/* GetItemInt.proto */ -+#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ -+ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ -+ __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ -+ (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ -+ __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -+#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ -+ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ -+ __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ -+ (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) -+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, -+ int wraparound, int boundscheck); -+#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ -+ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ -+ __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ -+ (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) -+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, -+ int wraparound, int boundscheck); -+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); -+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, -+ int is_list, int wraparound, int boundscheck); - --static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ -+/* ObjectGetItem.proto */ -+#if CYTHON_USE_TYPE_SLOTS -+static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key); -+#else -+#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) -+#endif - --#if CYTHON_COMPILING_IN_CPYTHON --static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { -+/* IncludeStringH.proto */ -+#include -+ -+/* BytesEquals.proto */ -+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); -+ -+/* UnicodeEquals.proto */ -+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); -+ -+/* StrEquals.proto */ -+#if PY_MAJOR_VERSION >= 3 -+#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals -+#else -+#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals -+#endif -+ -+/* PyIntBinop.proto */ -+#if !CYTHON_COMPILING_IN_PYPY -+static PyObject* __Pyx_PyInt_AddCObj(PyObject *op1, PyObject *op2, long intval, int inplace); -+#else -+#define __Pyx_PyInt_AddCObj(op1, op2, intval, inplace)\ -+ (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) -+#endif -+ -+/* PyObjectCallNoArg.proto */ -+#if CYTHON_COMPILING_IN_CPYTHON -+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -+#else -+#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -+#endif -+ -+/* SaveResetException.proto */ -+#if CYTHON_FAST_THREAD_STATE -+#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -+static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -+#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -+static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -+#else -+#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -+#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -+#endif -+ -+/* FastTypeChecks.proto */ -+#if CYTHON_COMPILING_IN_CPYTHON -+#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -+static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -+static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -+static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -+#else -+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -+#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -+#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -+#endif -+#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) -+ -+/* GetException.proto */ -+#if CYTHON_FAST_THREAD_STATE -+#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -+#else -+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -+#endif -+ -+/* ListAppend.proto */ -+#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -+static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { -@@ -640,118 +1075,175 @@ static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { - #define __Pyx_PyList_Append(L,x) PyList_Append(L,x) - #endif - --static PyObject* __Pyx_PyObject_CallMethodTuple(PyObject* obj, PyObject* method_name, PyObject* args) { -- PyObject *method, *result = NULL; -- if (unlikely(!args)) return NULL; -- method = __Pyx_PyObject_GetAttrStr(obj, method_name); -- if (unlikely(!method)) goto bad; -- result = PyObject_Call(method, args, NULL); -- Py_DECREF(method); --bad: -- Py_DECREF(args); -- return result; --} --#define __Pyx_PyObject_CallMethod3(obj, name, arg1, arg2, arg3) \ -- __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(3, arg1, arg2, arg3)) --#define __Pyx_PyObject_CallMethod2(obj, name, arg1, arg2) \ -- __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(2, arg1, arg2)) --#define __Pyx_PyObject_CallMethod1(obj, name, arg1) \ -- __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(1, arg1)) --#define __Pyx_PyObject_CallMethod0(obj, name) \ -- __Pyx_PyObject_CallMethodTuple(obj, name, (Py_INCREF(__pyx_empty_tuple), __pyx_empty_tuple)) -+/* PyObjectCallMethod1.proto */ -+static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); -+static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg); - --static CYTHON_INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x); /*proto*/ -+/* append.proto */ -+static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x); - --static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/ -+/* RaiseException.proto */ -+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - --static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/ -+/* RaiseDoubleKeywords.proto */ -+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - --static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \ -- PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \ -- const char* function_name); /*proto*/ -+/* ParseKeywords.proto */ -+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ -+ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ -+ const char* function_name); - -+/* RaiseArgTupleInvalid.proto */ - static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, -- Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/ -+ Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); -+ -+/* PyIntBinop.proto */ -+#if !CYTHON_COMPILING_IN_PYPY -+static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace); -+#else -+#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\ -+ PyObject_RichCompare(op1, op2, Py_EQ) -+ #endif - -+/* RaiseTooManyValuesToUnpack.proto */ - static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); - -+/* RaiseNeedMoreValuesToUnpack.proto */ - static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); - --static CYTHON_INLINE int __Pyx_IterFinish(void); /*proto*/ -+/* IterFinish.proto */ -+static CYTHON_INLINE int __Pyx_IterFinish(void); - --static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /*proto*/ -+/* UnpackItemEndCheck.proto */ -+static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); - --#define __Pyx_GetItemInt(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ -- (((size) <= sizeof(Py_ssize_t)) ? \ -- __Pyx_GetItemInt_Fast(o, i, is_list, wraparound, boundscheck) : \ -- __Pyx_GetItemInt_Generic(o, to_py_func(i))) --#define __Pyx_GetItemInt_List(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ -- (((size) <= sizeof(Py_ssize_t)) ? \ -- __Pyx_GetItemInt_List_Fast(o, i, wraparound, boundscheck) : \ -- __Pyx_GetItemInt_Generic(o, to_py_func(i))) --static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, -- int wraparound, int boundscheck); --#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ -- (((size) <= sizeof(Py_ssize_t)) ? \ -- __Pyx_GetItemInt_Tuple_Fast(o, i, wraparound, boundscheck) : \ -- __Pyx_GetItemInt_Generic(o, to_py_func(i))) --static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, -- int wraparound, int boundscheck); --static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); --static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, -- int is_list, int wraparound, int boundscheck); -+/* StringJoin.proto */ -+#if PY_MAJOR_VERSION < 3 -+#define __Pyx_PyString_Join __Pyx_PyBytes_Join -+#define __Pyx_PyBaseString_Join(s, v) (PyUnicode_CheckExact(s) ? PyUnicode_Join(s, v) : __Pyx_PyBytes_Join(s, v)) -+#else -+#define __Pyx_PyString_Join PyUnicode_Join -+#define __Pyx_PyBaseString_Join PyUnicode_Join -+#endif -+#if CYTHON_COMPILING_IN_CPYTHON -+ #if PY_MAJOR_VERSION < 3 -+ #define __Pyx_PyBytes_Join _PyString_Join -+ #else -+ #define __Pyx_PyBytes_Join _PyBytes_Join -+ #endif -+#else -+static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values); -+#endif -+ -+/* UnpackUnboundCMethod.proto */ -+typedef struct { -+ PyObject *type; -+ PyObject **method_name; -+ PyCFunction func; -+ PyObject *method; -+ int flag; -+} __Pyx_CachedCFunction; -+ -+/* CallUnboundCMethod1.proto */ -+static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); -+#if CYTHON_COMPILING_IN_CPYTHON -+static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); -+#else -+#define __Pyx_CallUnboundCMethod1(cfunc, self, arg) __Pyx__CallUnboundCMethod1(cfunc, self, arg) -+#endif - -+/* SliceObject.proto */ - static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( - PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, - PyObject** py_start, PyObject** py_stop, PyObject** py_slice, - int has_cstart, int has_cstop, int wraparound); - --#define __Pyx_PyObject_DelSlice(obj, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound) \ -+/* SliceObject.proto */ -+#define __Pyx_PyObject_DelSlice(obj, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)\ - __Pyx_PyObject_SetSlice(obj, (PyObject*)NULL, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound) - static CYTHON_INLINE int __Pyx_PyObject_SetSlice( - PyObject* obj, PyObject* value, Py_ssize_t cstart, Py_ssize_t cstop, - PyObject** py_start, PyObject** py_stop, PyObject** py_slice, - int has_cstart, int has_cstop, int wraparound); - --static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); /*proto*/ -+/* PyObject_GenericGetAttrNoDict.proto */ -+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -+static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -+#else -+#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -+#endif -+ -+/* PyObject_GenericGetAttr.proto */ -+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -+static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); -+#else -+#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr -+#endif -+ -+/* SetupReduce.proto */ -+static int __Pyx_setup_reduce(PyObject* type_obj); - -+/* Import.proto */ -+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); -+ -+/* ImportFrom.proto */ -+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); -+ -+/* PyErrExceptionMatches.proto */ -+#if CYTHON_FAST_THREAD_STATE -+#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -+static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -+#else -+#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -+#endif -+ -+/* CalculateMetaclass.proto */ -+static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); -+ -+/* FetchCommonType.proto */ -+static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); -+ -+/* CythonFunction.proto */ - #define __Pyx_CyFunction_USED 1 --#include - #define __Pyx_CYFUNCTION_STATICMETHOD 0x01 - #define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 - #define __Pyx_CYFUNCTION_CCLASS 0x04 --#define __Pyx_CyFunction_GetClosure(f) \ -+#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) --#define __Pyx_CyFunction_GetClassObj(f) \ -+#define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) --#define __Pyx_CyFunction_Defaults(type, f) \ -+#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) --#define __Pyx_CyFunction_SetDefaultsGetter(f, g) \ -+#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) - typedef struct { - PyCFunctionObject func; -- int flags; -- PyObject *func_dict; -+#if PY_VERSION_HEX < 0x030500A0 - PyObject *func_weakreflist; -+#endif -+ PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; -+ PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; -- PyObject *func_classobj; /* No-args super() class cell */ -+ PyObject *func_classobj; - void *defaults; - int defaults_pyobjects; -- PyObject *defaults_tuple; /* Const defaults tuple */ -- PyObject *defaults_kwdict; /* Const kwonly defaults dict */ -+ int flags; -+ PyObject *defaults_tuple; -+ PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); -- PyObject *func_annotations; /* function annotations dict */ -+ PyObject *func_annotations; - } __pyx_CyFunctionObject; - static PyTypeObject *__pyx_CyFunctionType = 0; --#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, code) \ -- __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, code) -+#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, - int flags, PyObject* qualname, -- PyObject *self, PyObject *module, -+ PyObject *self, -+ PyObject *module, PyObject *globals, - PyObject* code); - static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, -@@ -762,52 +1254,82 @@ static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); - static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); --static int __Pyx_CyFunction_init(void); -- --static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ --static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ -- --static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/ -- --static PyObject *__Pyx_FindPy2Metaclass(PyObject *bases); /*proto*/ -- --static PyObject *__Pyx_CreateClass(PyObject *bases, PyObject *dict, PyObject *name, -- PyObject *qualname, PyObject *modname); /*proto*/ -- --static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *); -- --static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *); -- --static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *); -+static int __pyx_CyFunction_init(void); -+ -+/* SetNameInClass.proto */ -+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 -+#define __Pyx_SetNameInClass(ns, name, value)\ -+ (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value)) -+#elif CYTHON_COMPILING_IN_CPYTHON -+#define __Pyx_SetNameInClass(ns, name, value)\ -+ (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value)) -+#else -+#define __Pyx_SetNameInClass(ns, name, value) PyObject_SetItem(ns, name, value) -+#endif - --static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *); -+/* Py3ClassCreate.proto */ -+static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, -+ PyObject *mkw, PyObject *modname, PyObject *doc); -+static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, -+ PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); - --static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *); -+/* CLineInTraceback.proto */ -+#ifdef CYTHON_CLINE_IN_TRACEBACK -+#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -+#else -+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -+#endif - --static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *); -+/* CodeObjectCache.proto */ -+typedef struct { -+ PyCodeObject* code_object; -+ int code_line; -+} __Pyx_CodeObjectCacheEntry; -+struct __Pyx_CodeObjectCache { -+ int count; -+ int max_count; -+ __Pyx_CodeObjectCacheEntry* entries; -+}; -+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -+static PyCodeObject *__pyx_find_code_object(int code_line); -+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - --static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *); -+/* AddTraceback.proto */ -+static void __Pyx_AddTraceback(const char *funcname, int c_line, -+ int py_line, const char *filename); - --static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *); -+/* CIntToPy.proto */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - --static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *); -+/* CIntToPy.proto */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__http_errno(enum http_errno value); - --static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *); -+/* CIntToPy.proto */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_char(unsigned char value); - --static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *); -+/* CIntToPy.proto */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_short(unsigned short value); - --static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *); -+/* CIntToPy.proto */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); - --static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *); -+/* CIntFromPy.proto */ -+static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *); - --static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *); -+/* CIntFromPy.proto */ -+static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - --static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *); -+/* CIntFromPy.proto */ -+static CYTHON_INLINE enum http_errno __Pyx_PyInt_As_enum__http_errno(PyObject *); - --static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *); -+/* CIntFromPy.proto */ -+static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -+/* CheckBinaryVersion.proto */ - static int __Pyx_check_binary_version(void); - -+/* PyIdentifierFromString.proto */ - #if !defined(__Pyx_PyIdentifier_FromString) - #if PY_MAJOR_VERSION < 3 - #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) -@@ -816,28 +1338,14 @@ static int __Pyx_check_binary_version(void); - #endif - #endif - --static PyObject *__Pyx_ImportModule(const char *name); /*proto*/ -- --static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); /*proto*/ -- --typedef struct { -- int code_line; -- PyCodeObject* code_object; --} __Pyx_CodeObjectCacheEntry; --struct __Pyx_CodeObjectCache { -- int count; -- int max_count; -- __Pyx_CodeObjectCacheEntry* entries; --}; --static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; --static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); --static PyCodeObject *__pyx_find_code_object(int code_line); --static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); -+/* ModuleImport.proto */ -+static PyObject *__Pyx_ImportModule(const char *name); - --static void __Pyx_AddTraceback(const char *funcname, int c_line, -- int py_line, const char *filename); /*proto*/ -+/* TypeImport.proto */ -+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); - --static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/ -+/* InitStrings.proto */ -+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - - - /* Module declarations from 'libc.string' */ -@@ -846,6 +1354,15 @@ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/ - - /* Module declarations from 'cpython.version' */ - -+/* Module declarations from '__builtin__' */ -+ -+/* Module declarations from 'cpython.type' */ -+static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; -+ -+/* Module declarations from 'libc.stdio' */ -+ -+/* Module declarations from 'cpython.object' */ -+ - /* Module declarations from 'cpython.ref' */ - - /* Module declarations from 'cpython.exc' */ -@@ -858,21 +1375,12 @@ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/ - - /* Module declarations from 'cpython.list' */ - --/* Module declarations from 'libc.stdio' */ -- --/* Module declarations from 'cpython.object' */ -- - /* Module declarations from 'cpython.sequence' */ - - /* Module declarations from 'cpython.mapping' */ - - /* Module declarations from 'cpython.iterator' */ - --/* Module declarations from '__builtin__' */ -- --/* Module declarations from 'cpython.type' */ --static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; -- - /* Module declarations from 'cpython.number' */ - - /* Module declarations from 'cpython.int' */ -@@ -935,6 +1443,7 @@ static int __pyx_f_11http_parser_6parser_on_message_begin_cb(struct http_parser - static int __pyx_f_11http_parser_6parser_on_body_cb(struct http_parser *, char *, size_t); /*proto*/ - static int __pyx_f_11http_parser_6parser_on_message_complete_cb(struct http_parser *); /*proto*/ - #define __Pyx_MODULE_NAME "http_parser.parser" -+extern int __pyx_module_is_main_http_parser__parser; - int __pyx_module_is_main_http_parser__parser = 0; - - /* Implementation of 'http_parser.parser' */ -@@ -942,9 +1451,211 @@ static PyObject *__pyx_builtin_ImportError; - static PyObject *__pyx_builtin_object; - static PyObject *__pyx_builtin_ValueError; - static PyObject *__pyx_builtin_map; -+static PyObject *__pyx_builtin_TypeError; -+static const char __pyx_k_[] = ""; -+static const char __pyx_k_b[] = "b"; -+static const char __pyx_k__6[] = "-"; -+static const char __pyx_k__7[] = "_"; -+static const char __pyx_k__9[] = "."; -+static const char __pyx_k_os[] = "os"; -+static const char __pyx_k_doc[] = "__doc__"; -+static const char __pyx_k_get[] = "get"; -+static const char __pyx_k_map[] = "map"; -+static const char __pyx_k_s_s[] = "%s, %s"; -+static const char __pyx_k_url[] = "url"; -+static const char __pyx_k_body[] = "body"; -+static const char __pyx_k_data[] = "data"; -+static const char __pyx_k_gzip[] = "gzip"; -+static const char __pyx_k_init[] = "__init__"; -+static const char __pyx_k_join[] = "join"; -+static const char __pyx_k_kind[] = "kind"; -+static const char __pyx_k_main[] = "__main__"; -+static const char __pyx_k_name[] = "__name__"; -+static const char __pyx_k_path[] = "path"; -+static const char __pyx_k_self[] = "self"; -+static const char __pyx_k_test[] = "__test__"; -+static const char __pyx_k_zlib[] = "zlib"; -+static const char __pyx_k_errno[] = "errno"; -+static const char __pyx_k_error[] = "error"; -+static const char __pyx_k_items[] = "items"; -+static const char __pyx_k_lower[] = "lower"; -+static const char __pyx_k_query[] = "query"; -+static const char __pyx_k_s_s_2[] = "%s %s"; -+static const char __pyx_k_split[] = "split"; -+static const char __pyx_k_upper[] = "upper"; -+static const char __pyx_k_HTTP_s[] = "HTTP/%s"; -+static const char __pyx_k_append[] = "append"; -+static const char __pyx_k_import[] = "__import__"; -+static const char __pyx_k_length[] = "length"; -+static const char __pyx_k_module[] = "__module__"; -+static const char __pyx_k_object[] = "object"; -+static const char __pyx_k_reduce[] = "__reduce__"; -+static const char __pyx_k_update[] = "update"; -+static const char __pyx_k_HTTP__s[] = "HTTP_%s"; -+static const char __pyx_k_RAW_URI[] = "RAW_URI"; -+static const char __pyx_k_chunked[] = "chunked"; -+static const char __pyx_k_deflate[] = "deflate"; -+static const char __pyx_k_environ[] = "environ"; -+static const char __pyx_k_get_url[] = "get_url"; -+static const char __pyx_k_headers[] = "headers"; -+static const char __pyx_k_prepare[] = "__prepare__"; -+static const char __pyx_k_replace[] = "replace"; -+static const char __pyx_k_unquote[] = "unquote"; -+static const char __pyx_k_fragment[] = "fragment"; -+static const char __pyx_k_getstate[] = "__getstate__"; -+static const char __pyx_k_qualname[] = "__qualname__"; -+static const char __pyx_k_setstate[] = "__setstate__"; -+static const char __pyx_k_urlparse[] = "urlparse"; -+static const char __pyx_k_urlsplit[] = "urlsplit"; -+static const char __pyx_k_MAX_WBITS[] = "MAX_WBITS"; -+static const char __pyx_k_PATH_INFO[] = "PATH_INFO"; -+static const char __pyx_k_TypeError[] = "TypeError"; -+static const char __pyx_k_metaclass[] = "__metaclass__"; -+static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; -+static const char __pyx_k_ParserData[] = "_ParserData"; -+static const char __pyx_k_ValueError[] = "ValueError"; -+static const char __pyx_k_decompress[] = "decompress"; -+static const char __pyx_k_get_method[] = "get_method"; -+static const char __pyx_k_last_field[] = "_last_field"; -+static const char __pyx_k_ImportError[] = "ImportError"; -+static const char __pyx_k_SCRIPT_NAME[] = "SCRIPT_NAME"; -+static const char __pyx_k_get_version[] = "get_version"; -+static const char __pyx_k_header_only[] = "header_only"; -+static const char __pyx_k_CONTENT_TYPE[] = "CONTENT-TYPE"; -+static const char __pyx_k_IOrderedDict[] = "IOrderedDict"; -+static const char __pyx_k_QUERY_STRING[] = "QUERY_STRING"; -+static const char __pyx_k_bytes_to_str[] = "bytes_to_str"; -+static const char __pyx_k_partial_body[] = "partial_body"; -+static const char __pyx_k_urllib_parse[] = "urllib.parse"; -+static const char __pyx_k_decompressobj[] = "decompressobj"; -+static const char __pyx_k_message_begin[] = "message_begin"; -+static const char __pyx_k_reduce_cython[] = "__reduce_cython__"; -+static const char __pyx_k_CONTENT_LENGTH[] = "CONTENT-LENGTH"; -+static const char __pyx_k_CONTENT_TYPE_2[] = "CONTENT_TYPE"; -+static const char __pyx_k_REQUEST_METHOD[] = "REQUEST_METHOD"; -+static const char __pyx_k_get_errno_name[] = "get_errno_name"; -+static const char __pyx_k_last_was_value[] = "_last_was_value"; -+static const char __pyx_k_parser_upgrade[] = "_parser_upgrade"; -+static const char __pyx_k_SERVER_PROTOCOL[] = "SERVER_PROTOCOL"; -+static const char __pyx_k_maybe_parse_url[] = "maybe_parse_url"; -+static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; -+static const char __pyx_k_CONTENT_LENGTH_2[] = "CONTENT_LENGTH"; -+static const char __pyx_k_content_encoding[] = "content-encoding"; -+static const char __pyx_k_headers_complete[] = "headers_complete"; -+static const char __pyx_k_http_parser_util[] = "http_parser.util"; -+static const char __pyx_k_message_complete[] = "message_complete"; -+static const char __pyx_k_ParserData___init[] = "_ParserData.__init__"; -+static const char __pyx_k_transfer_encoding[] = "transfer-encoding"; -+static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -+static const char __pyx_k_errno_out_of_range[] = "errno out of range"; -+static const char __pyx_k_http_parser_parser[] = "http_parser.parser"; -+static const char __pyx_k_decompress_first_try[] = "_decompress_first_try"; -+static const char __pyx_k_get_errno_description[] = "get_errno_description"; -+static const char __pyx_k_http_parser_parser_pyx[] = "http_parser/parser.pyx"; -+static const char __pyx_k_self__parser_self__settings_cann[] = "self._parser,self._settings cannot be converted to a Python object for pickling"; -+static PyObject *__pyx_kp_s_; -+static PyObject *__pyx_kp_s_CONTENT_LENGTH; -+static PyObject *__pyx_n_s_CONTENT_LENGTH_2; -+static PyObject *__pyx_kp_s_CONTENT_TYPE; -+static PyObject *__pyx_n_s_CONTENT_TYPE_2; -+static PyObject *__pyx_kp_s_HTTP__s; -+static PyObject *__pyx_kp_s_HTTP_s; -+static PyObject *__pyx_n_s_IOrderedDict; -+static PyObject *__pyx_n_s_ImportError; -+static PyObject *__pyx_n_s_MAX_WBITS; -+static PyObject *__pyx_n_s_PATH_INFO; -+static PyObject *__pyx_n_s_ParserData; -+static PyObject *__pyx_n_s_ParserData___init; -+static PyObject *__pyx_n_s_QUERY_STRING; -+static PyObject *__pyx_n_s_RAW_URI; -+static PyObject *__pyx_n_s_REQUEST_METHOD; -+static PyObject *__pyx_n_s_SCRIPT_NAME; -+static PyObject *__pyx_n_s_SERVER_PROTOCOL; -+static PyObject *__pyx_n_s_TypeError; -+static PyObject *__pyx_n_s_ValueError; -+static PyObject *__pyx_kp_s__6; -+static PyObject *__pyx_n_s__7; -+static PyObject *__pyx_kp_s__9; -+static PyObject *__pyx_n_s_append; -+static PyObject *__pyx_n_s_b; -+static PyObject *__pyx_n_s_body; -+static PyObject *__pyx_n_s_bytes_to_str; -+static PyObject *__pyx_n_s_chunked; -+static PyObject *__pyx_n_s_cline_in_traceback; -+static PyObject *__pyx_kp_s_content_encoding; -+static PyObject *__pyx_n_s_data; -+static PyObject *__pyx_n_s_decompress; -+static PyObject *__pyx_n_s_decompress_first_try; -+static PyObject *__pyx_n_s_decompressobj; -+static PyObject *__pyx_n_s_deflate; -+static PyObject *__pyx_n_s_doc; -+static PyObject *__pyx_n_s_environ; -+static PyObject *__pyx_n_s_errno; -+static PyObject *__pyx_kp_s_errno_out_of_range; -+static PyObject *__pyx_n_s_error; -+static PyObject *__pyx_n_s_fragment; -+static PyObject *__pyx_n_s_get; -+static PyObject *__pyx_n_s_get_errno_description; -+static PyObject *__pyx_n_s_get_errno_name; -+static PyObject *__pyx_n_s_get_method; -+static PyObject *__pyx_n_s_get_url; -+static PyObject *__pyx_n_s_get_version; -+static PyObject *__pyx_n_s_getstate; -+static PyObject *__pyx_n_s_gzip; -+static PyObject *__pyx_n_s_header_only; -+static PyObject *__pyx_n_s_headers; -+static PyObject *__pyx_n_s_headers_complete; -+static PyObject *__pyx_n_s_http_parser_parser; -+static PyObject *__pyx_kp_s_http_parser_parser_pyx; -+static PyObject *__pyx_n_s_http_parser_util; -+static PyObject *__pyx_n_s_import; -+static PyObject *__pyx_n_s_init; -+static PyObject *__pyx_n_s_items; -+static PyObject *__pyx_n_s_join; -+static PyObject *__pyx_n_s_kind; -+static PyObject *__pyx_n_s_last_field; -+static PyObject *__pyx_n_s_last_was_value; -+static PyObject *__pyx_n_s_length; -+static PyObject *__pyx_n_s_lower; -+static PyObject *__pyx_n_s_main; -+static PyObject *__pyx_n_s_map; -+static PyObject *__pyx_n_s_maybe_parse_url; -+static PyObject *__pyx_n_s_message_begin; -+static PyObject *__pyx_n_s_message_complete; -+static PyObject *__pyx_n_s_metaclass; -+static PyObject *__pyx_n_s_module; -+static PyObject *__pyx_n_s_name; -+static PyObject *__pyx_n_s_object; -+static PyObject *__pyx_n_s_os; -+static PyObject *__pyx_n_s_parser_upgrade; -+static PyObject *__pyx_n_s_partial_body; -+static PyObject *__pyx_n_s_path; -+static PyObject *__pyx_n_s_prepare; -+static PyObject *__pyx_n_s_qualname; -+static PyObject *__pyx_n_s_query; -+static PyObject *__pyx_n_s_reduce; -+static PyObject *__pyx_n_s_reduce_cython; -+static PyObject *__pyx_n_s_reduce_ex; -+static PyObject *__pyx_n_s_replace; -+static PyObject *__pyx_kp_s_s_s; -+static PyObject *__pyx_kp_s_s_s_2; -+static PyObject *__pyx_n_s_self; -+static PyObject *__pyx_kp_s_self__parser_self__settings_cann; -+static PyObject *__pyx_n_s_setstate; -+static PyObject *__pyx_n_s_setstate_cython; -+static PyObject *__pyx_n_s_split; -+static PyObject *__pyx_n_s_test; -+static PyObject *__pyx_kp_s_transfer_encoding; -+static PyObject *__pyx_n_s_unquote; -+static PyObject *__pyx_n_s_update; -+static PyObject *__pyx_n_s_upper; -+static PyObject *__pyx_n_s_url; -+static PyObject *__pyx_n_s_urllib_parse; -+static PyObject *__pyx_n_s_urlparse; -+static PyObject *__pyx_n_s_urlsplit; -+static PyObject *__pyx_n_s_zlib; - static PyObject *__pyx_pf_11http_parser_6parser_get_errno_name(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_errno); /* proto */ - static PyObject *__pyx_pf_11http_parser_6parser_2get_errno_description(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_errno); /* proto */ --static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData_2__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ - static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_decompress, PyObject *__pyx_v_header_only); /* proto */ - static int __pyx_pf_11http_parser_6parser_10HttpParser___init__(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self, PyObject *__pyx_v_kind, PyObject *__pyx_v_decompress, PyObject *__pyx_v_header_only); /* proto */ - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_2execute(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self, char *__pyx_v_data, size_t __pyx_v_length); /* proto */ -@@ -968,207 +1679,33 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_36is_message_begin( - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_38is_message_complete(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self); /* proto */ - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_40is_chunked(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self); /* proto */ - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_42should_keep_alive(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self); /* proto */ -+static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_44__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self); /* proto */ -+static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_46__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ - static PyObject *__pyx_tp_new_11http_parser_6parser_HttpParser(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ --static char __pyx_k_1[] = ""; --static char __pyx_k_2[] = "%s, %s"; --static char __pyx_k_3[] = "%s %s"; --static char __pyx_k_4[] = "content-encoding"; --static char __pyx_k_6[] = "_decompress_first_try"; --static char __pyx_k_7[] = "errno out of range"; --static char __pyx_k_13[] = "CONTENT-TYPE"; --static char __pyx_k_14[] = "CONTENT-LENGTH"; --static char __pyx_k_15[] = "HTTP_%s"; --static char __pyx_k_16[] = "-"; --static char __pyx_k_18[] = "HTTP/%s"; --static char __pyx_k_19[] = "."; --static char __pyx_k_22[] = "transfer-encoding"; --static char __pyx_k_24[] = "urllib.parse"; --static char __pyx_k_25[] = "http_parser.util"; --static char __pyx_k_28[] = "/home/benoitc/work/couchdbkit_env/src/http-parser/http_parser/parser.pyx"; --static char __pyx_k_29[] = "http_parser.parser"; --static char __pyx_k_32[] = "get_errno_description"; --static char __pyx_k_35[] = "_ParserData.__init__"; --static char __pyx_k___[] = "_"; --static char __pyx_k__b[] = "b"; --static char __pyx_k__os[] = "os"; --static char __pyx_k__get[] = "get"; --static char __pyx_k__map[] = "map"; --static char __pyx_k__url[] = "url"; --static char __pyx_k__body[] = "body"; --static char __pyx_k__data[] = "data"; --static char __pyx_k__gzip[] = "gzip"; --static char __pyx_k__join[] = "join"; --static char __pyx_k__kind[] = "kind"; --static char __pyx_k__path[] = "path"; --static char __pyx_k__self[] = "self"; --static char __pyx_k__zlib[] = "zlib"; --static char __pyx_k__errno[] = "errno"; --static char __pyx_k__error[] = "error"; --static char __pyx_k__items[] = "items"; --static char __pyx_k__lower[] = "lower"; --static char __pyx_k__query[] = "query"; --static char __pyx_k__split[] = "split"; --static char __pyx_k__upper[] = "upper"; --static char __pyx_k__append[] = "append"; --static char __pyx_k__length[] = "length"; --static char __pyx_k__object[] = "object"; --static char __pyx_k__update[] = "update"; --static char __pyx_k__RAW_URI[] = "RAW_URI"; --static char __pyx_k__chunked[] = "chunked"; --static char __pyx_k__deflate[] = "deflate"; --static char __pyx_k__environ[] = "environ"; --static char __pyx_k__get_url[] = "get_url"; --static char __pyx_k__headers[] = "headers"; --static char __pyx_k__replace[] = "replace"; --static char __pyx_k__unquote[] = "unquote"; --static char __pyx_k____init__[] = "__init__"; --static char __pyx_k____main__[] = "__main__"; --static char __pyx_k____test__[] = "__test__"; --static char __pyx_k__fragment[] = "fragment"; --static char __pyx_k__urlparse[] = "urlparse"; --static char __pyx_k__urlsplit[] = "urlsplit"; --static char __pyx_k__MAX_WBITS[] = "MAX_WBITS"; --static char __pyx_k__PATH_INFO[] = "PATH_INFO"; --static char __pyx_k____class__[] = "__class__"; --static char __pyx_k__ValueError[] = "ValueError"; --static char __pyx_k____import__[] = "__import__"; --static char __pyx_k____module__[] = "__module__"; --static char __pyx_k__decompress[] = "decompress"; --static char __pyx_k__get_method[] = "get_method"; --static char __pyx_k__ImportError[] = "ImportError"; --static char __pyx_k__SCRIPT_NAME[] = "SCRIPT_NAME"; --static char __pyx_k___ParserData[] = "_ParserData"; --static char __pyx_k___last_field[] = "_last_field"; --static char __pyx_k__get_version[] = "get_version"; --static char __pyx_k__header_only[] = "header_only"; --static char __pyx_k__CONTENT_TYPE[] = "CONTENT_TYPE"; --static char __pyx_k__IOrderedDict[] = "IOrderedDict"; --static char __pyx_k__QUERY_STRING[] = "QUERY_STRING"; --static char __pyx_k____qualname__[] = "__qualname__"; --static char __pyx_k__bytes_to_str[] = "bytes_to_str"; --static char __pyx_k__partial_body[] = "partial_body"; --static char __pyx_k____metaclass__[] = "__metaclass__"; --static char __pyx_k__decompressobj[] = "decompressobj"; --static char __pyx_k__message_begin[] = "message_begin"; --static char __pyx_k__CONTENT_LENGTH[] = "CONTENT_LENGTH"; --static char __pyx_k__REQUEST_METHOD[] = "REQUEST_METHOD"; --static char __pyx_k__get_errno_name[] = "get_errno_name"; --static char __pyx_k__SERVER_PROTOCOL[] = "SERVER_PROTOCOL"; --static char __pyx_k___last_was_value[] = "_last_was_value"; --static char __pyx_k___parser_upgrade[] = "_parser_upgrade"; --static char __pyx_k__maybe_parse_url[] = "maybe_parse_url"; --static char __pyx_k__headers_complete[] = "headers_complete"; --static char __pyx_k__message_complete[] = "message_complete"; --static PyObject *__pyx_kp_s_1; --static PyObject *__pyx_kp_s_13; --static PyObject *__pyx_kp_s_14; --static PyObject *__pyx_kp_s_15; --static PyObject *__pyx_kp_s_16; --static PyObject *__pyx_kp_s_18; --static PyObject *__pyx_kp_s_19; --static PyObject *__pyx_kp_s_2; --static PyObject *__pyx_kp_s_22; --static PyObject *__pyx_n_s_24; --static PyObject *__pyx_n_s_25; --static PyObject *__pyx_kp_s_28; --static PyObject *__pyx_n_s_29; --static PyObject *__pyx_kp_s_3; --static PyObject *__pyx_n_s_32; --static PyObject *__pyx_n_s_35; --static PyObject *__pyx_kp_s_4; --static PyObject *__pyx_n_s_6; --static PyObject *__pyx_kp_s_7; --static PyObject *__pyx_n_s__CONTENT_LENGTH; --static PyObject *__pyx_n_s__CONTENT_TYPE; --static PyObject *__pyx_n_s__IOrderedDict; --static PyObject *__pyx_n_s__ImportError; --static PyObject *__pyx_n_s__MAX_WBITS; --static PyObject *__pyx_n_s__PATH_INFO; --static PyObject *__pyx_n_s__QUERY_STRING; --static PyObject *__pyx_n_s__RAW_URI; --static PyObject *__pyx_n_s__REQUEST_METHOD; --static PyObject *__pyx_n_s__SCRIPT_NAME; --static PyObject *__pyx_n_s__SERVER_PROTOCOL; --static PyObject *__pyx_n_s__ValueError; --static PyObject *__pyx_n_s___; --static PyObject *__pyx_n_s___ParserData; --static PyObject *__pyx_n_s____class__; --static PyObject *__pyx_n_s____import__; --static PyObject *__pyx_n_s____init__; --static PyObject *__pyx_n_s____main__; --static PyObject *__pyx_n_s____metaclass__; --static PyObject *__pyx_n_s____module__; --static PyObject *__pyx_n_s____qualname__; --static PyObject *__pyx_n_s____test__; --static PyObject *__pyx_n_s___last_field; --static PyObject *__pyx_n_s___last_was_value; --static PyObject *__pyx_n_s___parser_upgrade; --static PyObject *__pyx_n_s__append; --static PyObject *__pyx_n_s__b; --static PyObject *__pyx_n_s__body; --static PyObject *__pyx_n_s__bytes_to_str; --static PyObject *__pyx_n_s__chunked; --static PyObject *__pyx_n_s__data; --static PyObject *__pyx_n_s__decompress; --static PyObject *__pyx_n_s__decompressobj; --static PyObject *__pyx_n_s__deflate; --static PyObject *__pyx_n_s__environ; --static PyObject *__pyx_n_s__errno; --static PyObject *__pyx_n_s__error; --static PyObject *__pyx_n_s__fragment; --static PyObject *__pyx_n_s__get; --static PyObject *__pyx_n_s__get_errno_name; --static PyObject *__pyx_n_s__get_method; --static PyObject *__pyx_n_s__get_url; --static PyObject *__pyx_n_s__get_version; --static PyObject *__pyx_n_s__gzip; --static PyObject *__pyx_n_s__header_only; --static PyObject *__pyx_n_s__headers; --static PyObject *__pyx_n_s__headers_complete; --static PyObject *__pyx_n_s__items; --static PyObject *__pyx_n_s__join; --static PyObject *__pyx_n_s__kind; --static PyObject *__pyx_n_s__length; --static PyObject *__pyx_n_s__lower; --static PyObject *__pyx_n_s__map; --static PyObject *__pyx_n_s__maybe_parse_url; --static PyObject *__pyx_n_s__message_begin; --static PyObject *__pyx_n_s__message_complete; --static PyObject *__pyx_n_s__object; --static PyObject *__pyx_n_s__os; --static PyObject *__pyx_n_s__partial_body; --static PyObject *__pyx_n_s__path; --static PyObject *__pyx_n_s__query; --static PyObject *__pyx_n_s__replace; --static PyObject *__pyx_n_s__self; --static PyObject *__pyx_n_s__split; --static PyObject *__pyx_n_s__unquote; --static PyObject *__pyx_n_s__update; --static PyObject *__pyx_n_s__upper; --static PyObject *__pyx_n_s__url; --static PyObject *__pyx_n_s__urlparse; --static PyObject *__pyx_n_s__urlsplit; --static PyObject *__pyx_n_s__zlib; -+static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_update = {0, &__pyx_n_s_update, 0, 0, 0}; - static PyObject *__pyx_int_0; - static PyObject *__pyx_int_1; - static PyObject *__pyx_int_2; - static PyObject *__pyx_int_16; --static PyObject *__pyx_k_10; --static PyObject *__pyx_k_11; --static PyObject *__pyx_k_tuple_5; --static PyObject *__pyx_k_tuple_8; --static PyObject *__pyx_k_tuple_9; --static PyObject *__pyx_k_tuple_12; --static PyObject *__pyx_k_tuple_17; --static PyObject *__pyx_k_tuple_20; --static PyObject *__pyx_k_tuple_21; --static PyObject *__pyx_k_tuple_23; --static PyObject *__pyx_k_tuple_26; --static PyObject *__pyx_k_tuple_30; --static PyObject *__pyx_k_tuple_33; --static PyObject *__pyx_k_codeobj_27; --static PyObject *__pyx_k_codeobj_31; --static PyObject *__pyx_k_codeobj_34; -+static PyObject *__pyx_tuple__2; -+static PyObject *__pyx_tuple__3; -+static PyObject *__pyx_tuple__4; -+static PyObject *__pyx_tuple__5; -+static PyObject *__pyx_tuple__8; -+static PyObject *__pyx_tuple__10; -+static PyObject *__pyx_tuple__11; -+static PyObject *__pyx_tuple__12; -+static PyObject *__pyx_tuple__13; -+static PyObject *__pyx_tuple__14; -+static PyObject *__pyx_tuple__15; -+static PyObject *__pyx_tuple__17; -+static PyObject *__pyx_tuple__19; -+static PyObject *__pyx_tuple__20; -+static PyObject *__pyx_tuple__22; -+static PyObject *__pyx_codeobj__16; -+static PyObject *__pyx_codeobj__18; -+static PyObject *__pyx_codeobj__21; -+/* Late includes */ - - /* "http_parser/parser.pyx":75 - * -@@ -1185,47 +1722,92 @@ static int __pyx_f_11http_parser_6parser_on_url_cb(struct http_parser *__pyx_v_p - 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; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ PyObject *__pyx_t_6 = NULL; - __Pyx_RefNannySetupContext("on_url_cb", 0); - - /* "http_parser/parser.pyx":77 - * cdef int on_url_cb(http_parser *parser, char *at, - * size_t length): - * res = parser.data # <<<<<<<<<<<<<< -- * res.url = bytes_to_str(PyBytes_FromStringAndSize(at, length)) -+ * res.url += bytes_to_str(PyBytes_FromStringAndSize(at, length)) - * return 0 - */ -- __Pyx_INCREF(((PyObject *)__pyx_v_parser->data)); -- __pyx_v_res = ((PyObject *)__pyx_v_parser->data); -+ __pyx_t_1 = ((PyObject *)__pyx_v_parser->data); -+ __Pyx_INCREF(__pyx_t_1); -+ __pyx_v_res = __pyx_t_1; -+ __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":78 - * size_t length): - * res = parser.data -- * res.url = bytes_to_str(PyBytes_FromStringAndSize(at, length)) # <<<<<<<<<<<<<< -+ * res.url += bytes_to_str(PyBytes_FromStringAndSize(at, length)) # <<<<<<<<<<<<<< - * return 0 - * - */ -- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__bytes_to_str); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_url); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 78, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = ((PyObject *)PyBytes_FromStringAndSize(__pyx_v_at, __pyx_v_length)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_bytes_to_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 78, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_4 = PyBytes_FromStringAndSize(__pyx_v_at, __pyx_v_length); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 78, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_3, function); -+ } -+ } -+ if (!__pyx_t_5) { -+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 78, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_GOTREF(__pyx_t_2); -+ } else { -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_3)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4}; -+ __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 78, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4}; -+ __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 78, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ } else -+ #endif -+ { -+ __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 78, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; -+ __Pyx_GIVEREF(__pyx_t_4); -+ PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4); -+ __pyx_t_4 = 0; -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 78, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ } -+ } -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 78, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); -- __Pyx_GIVEREF(__pyx_t_2); -- __pyx_t_2 = 0; -- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s__url, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_url, __pyx_t_3) < 0) __PYX_ERR(0, 78, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "http_parser/parser.pyx":79 - * res = parser.data -- * res.url = bytes_to_str(PyBytes_FromStringAndSize(at, length)) -+ * res.url += bytes_to_str(PyBytes_FromStringAndSize(at, length)) - * return 0 # <<<<<<<<<<<<<< - * - * cdef int on_header_field_cb(http_parser *parser, char *at, -@@ -1233,13 +1815,23 @@ static int __pyx_f_11http_parser_6parser_on_url_cb(struct http_parser *__pyx_v_p - __pyx_r = 0; - goto __pyx_L0; - -- __pyx_r = 0; -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":75 -+ * -+ * -+ * cdef int on_url_cb(http_parser *parser, char *at, # <<<<<<<<<<<<<< -+ * size_t length): -+ * res = parser.data -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); -- __Pyx_WriteUnraisable("http_parser.parser.on_url_cb", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_WriteUnraisable("http_parser.parser.on_url_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_res); -@@ -1265,9 +1857,7 @@ static int __pyx_f_11http_parser_6parser_on_header_field_cb(struct http_parser * - 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; -+ PyObject *__pyx_t_6 = NULL; - __Pyx_RefNannySetupContext("on_header_field_cb", 0); - - /* "http_parser/parser.pyx":83 -@@ -1277,7 +1867,7 @@ static int __pyx_f_11http_parser_6parser_on_header_field_cb(struct http_parser * - * res = parser.data - * - */ -- __pyx_t_1 = ((PyObject *)PyBytes_FromStringAndSize(__pyx_v_at, __pyx_v_length)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = PyBytes_FromStringAndSize(__pyx_v_at, __pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_header_field = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; -@@ -1289,8 +1879,10 @@ static int __pyx_f_11http_parser_6parser_on_header_field_cb(struct http_parser * - * - * if res._last_was_value: - */ -- __Pyx_INCREF(((PyObject *)__pyx_v_parser->data)); -- __pyx_v_res = ((PyObject *)__pyx_v_parser->data); -+ __pyx_t_1 = ((PyObject *)__pyx_v_parser->data); -+ __Pyx_INCREF(__pyx_t_1); -+ __pyx_v_res = __pyx_t_1; -+ __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":86 - * res = parser.data -@@ -1299,9 +1891,9 @@ static int __pyx_f_11http_parser_6parser_on_header_field_cb(struct http_parser * - * res._last_field = "" - * res._last_field += bytes_to_str(header_field) - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s___last_was_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_last_was_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_2) { - -@@ -1312,10 +1904,16 @@ static int __pyx_f_11http_parser_6parser_on_header_field_cb(struct http_parser * - * res._last_field += bytes_to_str(header_field) - * res._last_was_value = False - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s___last_field, ((PyObject *)__pyx_kp_s_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- goto __pyx_L3; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_last_field, __pyx_kp_s_) < 0) __PYX_ERR(0, 87, __pyx_L1_error) -+ -+ /* "http_parser/parser.pyx":86 -+ * res = parser.data -+ * -+ * if res._last_was_value: # <<<<<<<<<<<<<< -+ * res._last_field = "" -+ * res._last_field += bytes_to_str(header_field) -+ */ - } -- __pyx_L3:; - - /* "http_parser/parser.pyx":88 - * if res._last_was_value: -@@ -1324,24 +1922,58 @@ static int __pyx_f_11http_parser_6parser_on_header_field_cb(struct http_parser * - * res._last_was_value = False - * return 0 - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s___last_field); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_last_field); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__bytes_to_str); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_bytes_to_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __Pyx_INCREF(((PyObject *)__pyx_v_header_field)); -- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_header_field)); -- __Pyx_GIVEREF(((PyObject *)__pyx_v_header_field)); -- __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; -- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_4, function); -+ } -+ } -+ if (!__pyx_t_5) { -+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_header_field); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 88, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ } else { -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_4)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_header_field}; -+ __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 88, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_3); -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_header_field}; -+ __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 88, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_3); -+ } else -+ #endif -+ { -+ __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 88, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; -+ __Pyx_INCREF(__pyx_v_header_field); -+ __Pyx_GIVEREF(__pyx_v_header_field); -+ PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_header_field); -+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 88, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ } -+ } -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s___last_field, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_last_field, __pyx_t_4) < 0) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "http_parser/parser.pyx":89 -@@ -1351,10 +1983,7 @@ static int __pyx_f_11http_parser_6parser_on_header_field_cb(struct http_parser * - * return 0 - * - */ -- __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_4); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s___last_was_value, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_last_was_value, Py_False) < 0) __PYX_ERR(0, 89, __pyx_L1_error) - - /* "http_parser/parser.pyx":90 - * res._last_field += bytes_to_str(header_field) -@@ -1366,14 +1995,22 @@ static int __pyx_f_11http_parser_6parser_on_header_field_cb(struct http_parser * - __pyx_r = 0; - goto __pyx_L0; - -- __pyx_r = 0; -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":81 -+ * return 0 -+ * -+ * cdef int on_header_field_cb(http_parser *parser, char *at, # <<<<<<<<<<<<<< -+ * size_t length): -+ * header_field = PyBytes_FromStringAndSize(at, length) -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); -- __Pyx_WriteUnraisable("http_parser.parser.on_header_field_cb", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_WriteUnraisable("http_parser.parser.on_header_field_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_header_field); -@@ -1399,11 +2036,10 @@ static int __pyx_f_11http_parser_6parser_on_header_value_cb(struct http_parser * - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; -- int __pyx_t_4; -- int __pyx_t_5; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ int __pyx_t_6; -+ int __pyx_t_7; - __Pyx_RefNannySetupContext("on_header_value_cb", 0); - - /* "http_parser/parser.pyx":94 -@@ -1413,8 +2049,10 @@ static int __pyx_f_11http_parser_6parser_on_header_value_cb(struct http_parser * - * header_value = bytes_to_str(PyBytes_FromStringAndSize(at, length)) - * - */ -- __Pyx_INCREF(((PyObject *)__pyx_v_parser->data)); -- __pyx_v_res = ((PyObject *)__pyx_v_parser->data); -+ __pyx_t_1 = ((PyObject *)__pyx_v_parser->data); -+ __Pyx_INCREF(__pyx_t_1); -+ __pyx_v_res = __pyx_t_1; -+ __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":95 - * size_t length): -@@ -1423,56 +2061,93 @@ static int __pyx_f_11http_parser_6parser_on_header_value_cb(struct http_parser * - * - * if res._last_field in res.headers: - */ -- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__bytes_to_str); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = ((PyObject *)PyBytes_FromStringAndSize(__pyx_v_at, __pyx_v_length)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_3); -- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); -- __Pyx_GIVEREF(__pyx_t_2); -- __pyx_t_2 = 0; -- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -- __pyx_v_header_value = __pyx_t_2; -- __pyx_t_2 = 0; -- -- /* "http_parser/parser.pyx":97 -- * header_value = bytes_to_str(PyBytes_FromStringAndSize(at, length)) -- * -- * if res._last_field in res.headers: # <<<<<<<<<<<<<< -- * hval = res.headers[res._last_field] -- * if not res._last_was_value: -- */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s___last_field); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_bytes_to_str); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s__headers); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_3 = PyBytes_FromStringAndSize(__pyx_v_at, __pyx_v_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = (__Pyx_PySequence_Contains(__pyx_t_2, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_t_5 = (__pyx_t_4 != 0); -- if (__pyx_t_5) { -- -- /* "http_parser/parser.pyx":98 -- * -- * if res._last_field in res.headers: -- * hval = res.headers[res._last_field] # <<<<<<<<<<<<<< -- * if not res._last_was_value: -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ if (!__pyx_t_4) { -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ } else { -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; -+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; -+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else -+ #endif -+ { -+ __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 95, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; -+ __Pyx_GIVEREF(__pyx_t_3); -+ PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3); -+ __pyx_t_3 = 0; -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ } -+ } -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_v_header_value = __pyx_t_1; -+ __pyx_t_1 = 0; -+ -+ /* "http_parser/parser.pyx":97 -+ * header_value = bytes_to_str(PyBytes_FromStringAndSize(at, length)) -+ * -+ * if res._last_field in res.headers: # <<<<<<<<<<<<<< -+ * hval = res.headers[res._last_field] -+ * if not res._last_was_value: -+ */ -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_last_field); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_headers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 97, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_7 = (__pyx_t_6 != 0); -+ if (__pyx_t_7) { -+ -+ /* "http_parser/parser.pyx":98 -+ * -+ * if res._last_field in res.headers: -+ * hval = res.headers[res._last_field] # <<<<<<<<<<<<<< -+ * if not res._last_was_value: - * header_value = "%s, %s" % (hval, header_value) - */ -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s__headers); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s___last_field); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_headers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_1 = PyObject_GetItem(__pyx_t_3, __pyx_t_2); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_last_field); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 98, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v_hval = __pyx_t_1; -- __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v_hval = __pyx_t_5; -+ __pyx_t_5 = 0; - - /* "http_parser/parser.pyx":99 - * if res._last_field in res.headers: -@@ -1481,12 +2156,12 @@ static int __pyx_f_11http_parser_6parser_on_header_value_cb(struct http_parser * - * header_value = "%s, %s" % (hval, header_value) - * else: - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s___last_was_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_4 = ((!__pyx_t_5) != 0); -- if (__pyx_t_4) { -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_last_was_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 99, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 99, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __pyx_t_6 = ((!__pyx_t_7) != 0); -+ if (__pyx_t_6) { - - /* "http_parser/parser.pyx":100 - * hval = res.headers[res._last_field] -@@ -1495,50 +2170,62 @@ static int __pyx_f_11http_parser_6parser_on_header_value_cb(struct http_parser * - * else: - * header_value = "%s %s" % (hval, header_value) - */ -- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 100, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); - __Pyx_INCREF(__pyx_v_hval); -- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_hval); - __Pyx_GIVEREF(__pyx_v_hval); -+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_hval); - __Pyx_INCREF(__pyx_v_header_value); -- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_header_value); - __Pyx_GIVEREF(__pyx_v_header_value); -- __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_2), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_v_header_value); -- __pyx_v_header_value = ((PyObject *)__pyx_t_2); -- __pyx_t_2 = 0; -+ PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_header_value); -+ __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF_SET(__pyx_v_header_value, __pyx_t_1); -+ __pyx_t_1 = 0; -+ -+ /* "http_parser/parser.pyx":99 -+ * if res._last_field in res.headers: -+ * hval = res.headers[res._last_field] -+ * if not res._last_was_value: # <<<<<<<<<<<<<< -+ * header_value = "%s, %s" % (hval, header_value) -+ * else: -+ */ - goto __pyx_L4; - } -- /*else*/ { - -- /* "http_parser/parser.pyx":102 -+ /* "http_parser/parser.pyx":102 - * header_value = "%s, %s" % (hval, header_value) - * else: - * header_value = "%s %s" % (hval, header_value) # <<<<<<<<<<<<<< - * - * # add to headers - */ -- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -+ /*else*/ { -+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_hval); -- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_hval); - __Pyx_GIVEREF(__pyx_v_hval); -+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_hval); - __Pyx_INCREF(__pyx_v_header_value); -- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_header_value); - __Pyx_GIVEREF(__pyx_v_header_value); -- __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_3), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_v_header_value); -- __pyx_v_header_value = ((PyObject *)__pyx_t_1); -- __pyx_t_1 = 0; -+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_header_value); -+ __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_s_s_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF_SET(__pyx_v_header_value, __pyx_t_5); -+ __pyx_t_5 = 0; - } - __pyx_L4:; -- goto __pyx_L3; -+ -+ /* "http_parser/parser.pyx":97 -+ * header_value = bytes_to_str(PyBytes_FromStringAndSize(at, length)) -+ * -+ * if res._last_field in res.headers: # <<<<<<<<<<<<<< -+ * hval = res.headers[res._last_field] -+ * if not res._last_was_value: -+ */ - } -- __pyx_L3:; - - /* "http_parser/parser.pyx":105 - * -@@ -1547,13 +2234,13 @@ static int __pyx_f_11http_parser_6parser_on_header_value_cb(struct http_parser * - * res._last_was_value = True - * return 0 - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s__headers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_headers); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 105, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_last_field); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s___last_field); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- if (PyObject_SetItem(__pyx_t_1, __pyx_t_2, __pyx_v_header_value) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (unlikely(PyObject_SetItem(__pyx_t_5, __pyx_t_1, __pyx_v_header_value) < 0)) __PYX_ERR(0, 105, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "http_parser/parser.pyx":106 - * # add to headers -@@ -1562,10 +2249,7 @@ static int __pyx_f_11http_parser_6parser_on_header_value_cb(struct http_parser * - * return 0 - * - */ -- __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s___last_was_value, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_last_was_value, Py_True) < 0) __PYX_ERR(0, 106, __pyx_L1_error) - - /* "http_parser/parser.pyx":107 - * res.headers[res._last_field] = header_value -@@ -1577,13 +2261,22 @@ static int __pyx_f_11http_parser_6parser_on_header_value_cb(struct http_parser * - __pyx_r = 0; - goto __pyx_L0; - -- __pyx_r = 0; -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":92 -+ * return 0 -+ * -+ * cdef int on_header_value_cb(http_parser *parser, char *at, # <<<<<<<<<<<<<< -+ * size_t length): -+ * res = parser.data -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); -- __Pyx_WriteUnraisable("http_parser.parser.on_header_value_cb", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_WriteUnraisable("http_parser.parser.on_header_value_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_res); -@@ -1610,10 +2303,9 @@ static int __pyx_f_11http_parser_6parser_on_headers_complete_cb(struct http_pars - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; -- int __pyx_t_5; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -+ PyObject *__pyx_t_5 = NULL; -+ PyObject *__pyx_t_6 = NULL; -+ int __pyx_t_7; - __Pyx_RefNannySetupContext("on_headers_complete_cb", 0); - - /* "http_parser/parser.pyx":110 -@@ -1623,8 +2315,10 @@ static int __pyx_f_11http_parser_6parser_on_headers_complete_cb(struct http_pars - * res.headers_complete = True - * - */ -- __Pyx_INCREF(((PyObject *)__pyx_v_parser->data)); -- __pyx_v_res = ((PyObject *)__pyx_v_parser->data); -+ __pyx_t_1 = ((PyObject *)__pyx_v_parser->data); -+ __Pyx_INCREF(__pyx_t_1); -+ __pyx_v_res = __pyx_t_1; -+ __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":111 - * cdef int on_headers_complete_cb(http_parser *parser): -@@ -1633,10 +2327,7 @@ static int __pyx_f_11http_parser_6parser_on_headers_complete_cb(struct http_pars - * - * if res.decompress: - */ -- __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s__headers_complete, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_headers_complete, Py_True) < 0) __PYX_ERR(0, 111, __pyx_L1_error) - - /* "http_parser/parser.pyx":113 - * res.headers_complete = True -@@ -1645,9 +2336,9 @@ static int __pyx_f_11http_parser_6parser_on_headers_complete_cb(struct http_pars - * encoding = res.headers.get('content-encoding') - * if encoding == 'gzip': - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s__decompress); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_decompress); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_2) { - -@@ -1658,12 +2349,12 @@ static int __pyx_f_11http_parser_6parser_on_headers_complete_cb(struct http_pars - * if encoding == 'gzip': - * res.decompressobj = zlib.decompressobj(16+zlib.MAX_WBITS) - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s__headers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_headers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__get); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_encoding = __pyx_t_1; -@@ -1676,9 +2367,7 @@ static int __pyx_f_11http_parser_6parser_on_headers_complete_cb(struct http_pars - * res.decompressobj = zlib.decompressobj(16+zlib.MAX_WBITS) - * res._decompress_first_try = False - */ -- __pyx_t_1 = PyObject_RichCompare(__pyx_v_encoding, ((PyObject *)__pyx_n_s__gzip), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_encoding, __pyx_n_s_gzip, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 115, __pyx_L1_error) - if (__pyx_t_2) { - - /* "http_parser/parser.pyx":116 -@@ -1688,29 +2377,66 @@ static int __pyx_f_11http_parser_6parser_on_headers_complete_cb(struct http_pars - * res._decompress_first_try = False - * del res.headers['content-encoding'] - */ -- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__zlib); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__decompressobj); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_zlib); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 116, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__zlib); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__MAX_WBITS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = PyNumber_Add(__pyx_int_16, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_decompressobj); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 116, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __pyx_t_1 = 0; -- __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s__decompressobj, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_zlib); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 116, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_MAX_WBITS); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 116, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_t_3 = __Pyx_PyInt_AddCObj(__pyx_int_16, __pyx_t_5, 16, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 116, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_4, function); -+ } -+ } -+ if (!__pyx_t_5) { -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ } else { -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_4)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; -+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; -+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else -+ #endif -+ { -+ __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 116, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; -+ __Pyx_GIVEREF(__pyx_t_3); -+ PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3); -+ __pyx_t_3 = 0; -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ } -+ } -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_decompressobj, __pyx_t_1) < 0) __PYX_ERR(0, 116, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":117 -@@ -1720,10 +2446,7 @@ static int __pyx_f_11http_parser_6parser_on_headers_complete_cb(struct http_pars - * del res.headers['content-encoding'] - * elif encoding == 'deflate': - */ -- __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_6, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_decompress_first_try, Py_False) < 0) __PYX_ERR(0, 117, __pyx_L1_error) - - /* "http_parser/parser.pyx":118 - * res.decompressobj = zlib.decompressobj(16+zlib.MAX_WBITS) -@@ -1732,11 +2455,18 @@ static int __pyx_f_11http_parser_6parser_on_headers_complete_cb(struct http_pars - * elif encoding == 'deflate': - * res.decompressobj = zlib.decompressobj() - */ -- if (unlikely(!__pyx_v_res)) { __Pyx_RaiseUnboundLocalError("res"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s__headers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_headers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (PyObject_DelItem(__pyx_t_1, ((PyObject *)__pyx_kp_s_4)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (unlikely(PyObject_DelItem(__pyx_t_1, __pyx_kp_s_content_encoding) < 0)) __PYX_ERR(0, 118, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "http_parser/parser.pyx":115 -+ * if res.decompress: -+ * encoding = res.headers.get('content-encoding') -+ * if encoding == 'gzip': # <<<<<<<<<<<<<< -+ * res.decompressobj = zlib.decompressobj(16+zlib.MAX_WBITS) -+ * res._decompress_first_try = False -+ */ - goto __pyx_L4; - } - -@@ -1747,9 +2477,7 @@ static int __pyx_f_11http_parser_6parser_on_headers_complete_cb(struct http_pars - * res.decompressobj = zlib.decompressobj() - * del res.headers['content-encoding'] - */ -- __pyx_t_1 = PyObject_RichCompare(__pyx_v_encoding, ((PyObject *)__pyx_n_s__deflate), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_encoding, __pyx_n_s_deflate, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 119, __pyx_L1_error) - if (__pyx_t_2) { - - /* "http_parser/parser.pyx":120 -@@ -1759,15 +2487,30 @@ static int __pyx_f_11http_parser_6parser_on_headers_complete_cb(struct http_pars - * del res.headers['content-encoding'] - * else: - */ -- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__zlib); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__decompressobj); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_zlib); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 120, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_decompressobj); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 120, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s__decompressobj, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); -+ } -+ } -+ if (__pyx_t_4) { -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ } else { -+ __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error) -+ } -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_decompressobj, __pyx_t_1) < 0) __PYX_ERR(0, 120, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":121 -@@ -1777,31 +2520,41 @@ static int __pyx_f_11http_parser_6parser_on_headers_complete_cb(struct http_pars - * else: - * res.decompress = False - */ -- if (unlikely(!__pyx_v_res)) { __Pyx_RaiseUnboundLocalError("res"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s__headers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_headers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (PyObject_DelItem(__pyx_t_1, ((PyObject *)__pyx_kp_s_4)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (unlikely(PyObject_DelItem(__pyx_t_1, __pyx_kp_s_content_encoding) < 0)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "http_parser/parser.pyx":119 -+ * res._decompress_first_try = False -+ * del res.headers['content-encoding'] -+ * elif encoding == 'deflate': # <<<<<<<<<<<<<< -+ * res.decompressobj = zlib.decompressobj() -+ * del res.headers['content-encoding'] -+ */ - goto __pyx_L4; - } -- /*else*/ { - -- /* "http_parser/parser.pyx":123 -+ /* "http_parser/parser.pyx":123 - * del res.headers['content-encoding'] - * else: - * res.decompress = False # <<<<<<<<<<<<<< - * - * return res.header_only and 1 or 0 - */ -- __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s__decompress, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ /*else*/ { -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_decompress, Py_False) < 0) __PYX_ERR(0, 123, __pyx_L1_error) - } - __pyx_L4:; -- goto __pyx_L3; -+ -+ /* "http_parser/parser.pyx":113 -+ * res.headers_complete = True -+ * -+ * if res.decompress: # <<<<<<<<<<<<<< -+ * encoding = res.headers.get('content-encoding') -+ * if encoding == 'gzip': -+ */ - } -- __pyx_L3:; - - /* "http_parser/parser.pyx":125 - * res.decompress = False -@@ -1810,38 +2563,41 @@ static int __pyx_f_11http_parser_6parser_on_headers_complete_cb(struct http_pars - * - * cdef int on_message_begin_cb(http_parser *parser): - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s__header_only); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_header_only); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- if (__pyx_t_2) { -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_INCREF(__pyx_int_1); -- __pyx_t_4 = __pyx_int_1; -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 125, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ if (!__pyx_t_2) { -+ goto __pyx_L6_next_or; - } else { -- __pyx_t_4 = __pyx_t_1; -- __pyx_t_1 = 0; - } -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- if (!__pyx_t_2) { -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_INCREF(__pyx_int_0); -- __pyx_t_1 = __pyx_int_0; -+ if (!1) { - } else { -- __pyx_t_1 = __pyx_t_4; -- __pyx_t_4 = 0; -+ __pyx_t_7 = 1; -+ goto __pyx_L5_bool_binop_done; - } -- __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_r = __pyx_t_5; -+ __pyx_L6_next_or:; -+ __pyx_t_7 = 0; -+ __pyx_L5_bool_binop_done:; -+ __pyx_r = __pyx_t_7; - goto __pyx_L0; - -- __pyx_r = 0; -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":109 -+ * return 0 -+ * -+ * cdef int on_headers_complete_cb(http_parser *parser): # <<<<<<<<<<<<<< -+ * res = parser.data -+ * res.headers_complete = True -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); -- __Pyx_WriteUnraisable("http_parser.parser.on_headers_complete_cb", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_WriteUnraisable("http_parser.parser.on_headers_complete_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_res); -@@ -1863,9 +2619,6 @@ static int __pyx_f_11http_parser_6parser_on_message_begin_cb(struct http_parser - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("on_message_begin_cb", 0); - - /* "http_parser/parser.pyx":128 -@@ -1875,8 +2628,10 @@ static int __pyx_f_11http_parser_6parser_on_message_begin_cb(struct http_parser - * res.message_begin = True - * return 0 - */ -- __Pyx_INCREF(((PyObject *)__pyx_v_parser->data)); -- __pyx_v_res = ((PyObject *)__pyx_v_parser->data); -+ __pyx_t_1 = ((PyObject *)__pyx_v_parser->data); -+ __Pyx_INCREF(__pyx_t_1); -+ __pyx_v_res = __pyx_t_1; -+ __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":129 - * cdef int on_message_begin_cb(http_parser *parser): -@@ -1885,10 +2640,7 @@ static int __pyx_f_11http_parser_6parser_on_message_begin_cb(struct http_parser - * return 0 - * - */ -- __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s__message_begin, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_message_begin, Py_True) < 0) __PYX_ERR(0, 129, __pyx_L1_error) - - /* "http_parser/parser.pyx":130 - * res = parser.data -@@ -1900,11 +2652,18 @@ static int __pyx_f_11http_parser_6parser_on_message_begin_cb(struct http_parser - __pyx_r = 0; - goto __pyx_L0; - -- __pyx_r = 0; -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":127 -+ * return res.header_only and 1 or 0 -+ * -+ * cdef int on_message_begin_cb(http_parser *parser): # <<<<<<<<<<<<<< -+ * res = parser.data -+ * res.message_begin = True -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_WriteUnraisable("http_parser.parser.on_message_begin_cb", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_WriteUnraisable("http_parser.parser.on_message_begin_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_res); -@@ -1933,13 +2692,13 @@ static int __pyx_f_11http_parser_6parser_on_body_cb(struct http_parser *__pyx_v_ - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; -- int __pyx_t_9; -+ PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; -- PyObject *__pyx_t_11 = NULL; -+ int __pyx_t_11; - PyObject *__pyx_t_12 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -+ PyObject *__pyx_t_13 = NULL; -+ PyObject *__pyx_t_14 = NULL; -+ int __pyx_t_15; - __Pyx_RefNannySetupContext("on_body_cb", 0); - - /* "http_parser/parser.pyx":134 -@@ -1949,8 +2708,10 @@ static int __pyx_f_11http_parser_6parser_on_body_cb(struct http_parser *__pyx_v_ - * value = PyBytes_FromStringAndSize(at, length) - * - */ -- __Pyx_INCREF(((PyObject *)__pyx_v_parser->data)); -- __pyx_v_res = ((PyObject *)__pyx_v_parser->data); -+ __pyx_t_1 = ((PyObject *)__pyx_v_parser->data); -+ __Pyx_INCREF(__pyx_t_1); -+ __pyx_v_res = __pyx_t_1; -+ __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":135 - * size_t length): -@@ -1959,7 +2720,7 @@ static int __pyx_f_11http_parser_6parser_on_body_cb(struct http_parser *__pyx_v_ - * - * res.partial_body = True - */ -- __pyx_t_1 = ((PyObject *)PyBytes_FromStringAndSize(__pyx_v_at, __pyx_v_length)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = PyBytes_FromStringAndSize(__pyx_v_at, __pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_value = __pyx_t_1; - __pyx_t_1 = 0; -@@ -1971,10 +2732,7 @@ static int __pyx_f_11http_parser_6parser_on_body_cb(struct http_parser *__pyx_v_ - * - * # decompress the value if needed - */ -- __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s__partial_body, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_partial_body, Py_True) < 0) __PYX_ERR(0, 137, __pyx_L1_error) - - /* "http_parser/parser.pyx":140 - * -@@ -1983,9 +2741,9 @@ static int __pyx_f_11http_parser_6parser_on_body_cb(struct http_parser *__pyx_v_ - * if not res._decompress_first_try: - * value = res.decompressobj.decompress(value) - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s__decompress); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_decompress); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_2) { - -@@ -1996,9 +2754,9 @@ static int __pyx_f_11http_parser_6parser_on_body_cb(struct http_parser *__pyx_v_ - * value = res.decompressobj.decompress(value) - * else: - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_decompress_first_try); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 141, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = ((!__pyx_t_2) != 0); - if (__pyx_t_3) { -@@ -2010,39 +2768,82 @@ static int __pyx_f_11http_parser_6parser_on_body_cb(struct http_parser *__pyx_v_ - * else: - * try: - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s__decompressobj); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__decompress); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_decompressobj); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(__pyx_v_value); -- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_value); -- __Pyx_GIVEREF(__pyx_v_value); -- __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_decompress); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 142, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_v_value); -- __pyx_v_value = __pyx_t_5; -- __pyx_t_5 = 0; -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_5, function); -+ } -+ } -+ if (!__pyx_t_4) { -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ } else { -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_5)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_value}; -+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_value}; -+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ } else -+ #endif -+ { -+ __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 142, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; -+ __Pyx_INCREF(__pyx_v_value); -+ __Pyx_GIVEREF(__pyx_v_value); -+ PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_value); -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ } -+ } -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_1); -+ __pyx_t_1 = 0; -+ -+ /* "http_parser/parser.pyx":141 -+ * # decompress the value if needed -+ * if res.decompress: -+ * if not res._decompress_first_try: # <<<<<<<<<<<<<< -+ * value = res.decompressobj.decompress(value) -+ * else: -+ */ - goto __pyx_L4; - } -- /*else*/ { - -- /* "http_parser/parser.pyx":144 -+ /* "http_parser/parser.pyx":144 - * value = res.decompressobj.decompress(value) - * else: - * try: # <<<<<<<<<<<<<< - * value = res.decompressobj.decompress(value) - * except zlib.error: - */ -+ /*else*/ { - { -- __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); -- __Pyx_XGOTREF(__pyx_t_6); -+ __Pyx_PyThreadState_declare -+ __Pyx_PyThreadState_assign -+ __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_8); -+ __Pyx_XGOTREF(__pyx_t_9); - /*try:*/ { - - /* "http_parser/parser.pyx":145 -@@ -2052,32 +2853,74 @@ static int __pyx_f_11http_parser_6parser_on_body_cb(struct http_parser *__pyx_v_ - * except zlib.error: - * res.decompressobj = zlib.decompressobj(-zlib.MAX_WBITS) - */ -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s__decompressobj); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L5_error;} -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_decompressobj); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 145, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_5); -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s__decompress); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L5_error;} -- __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decompress); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 145, __pyx_L5_error) -+ __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L5_error;} -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_INCREF(__pyx_v_value); -- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_value); -- __Pyx_GIVEREF(__pyx_v_value); -- __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L5_error;} -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_v_value); -- __pyx_v_value = __pyx_t_4; -- __pyx_t_4 = 0; -- } -- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -- goto __pyx_L12_try_end; -- __pyx_L5_error:; -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); -+ } -+ } -+ if (!__pyx_t_5) { -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L5_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ } else { -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_6)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_value}; -+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L5_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_value}; -+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L5_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ } else -+ #endif -+ { -+ __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 145, __pyx_L5_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL; -+ __Pyx_INCREF(__pyx_v_value); -+ __Pyx_GIVEREF(__pyx_v_value); -+ PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value); -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L5_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ } -+ } -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_1); -+ __pyx_t_1 = 0; -+ -+ /* "http_parser/parser.pyx":144 -+ * value = res.decompressobj.decompress(value) -+ * else: -+ * try: # <<<<<<<<<<<<<< -+ * value = res.decompressobj.decompress(value) -+ * except zlib.error: -+ */ -+ } -+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; -+ goto __pyx_L10_try_end; -+ __pyx_L5_error:; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":146 - * try: -@@ -2086,18 +2929,21 @@ static int __pyx_f_11http_parser_6parser_on_body_cb(struct http_parser *__pyx_v_ - * res.decompressobj = zlib.decompressobj(-zlib.MAX_WBITS) - * value = res.decompressobj.decompress(value) - */ -- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__zlib); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s__error); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} -+ __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_6, &__pyx_t_4); -+ __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_zlib); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 146, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_5); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __pyx_t_9 = PyErr_ExceptionMatches(__pyx_t_5); -+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 146, __pyx_L7_except_error) -+ __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (__pyx_t_9) { -+ __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_10); -+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -+ __Pyx_ErrRestore(__pyx_t_1, __pyx_t_6, __pyx_t_4); -+ __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_4 = 0; -+ if (__pyx_t_11) { - __Pyx_AddTraceback("http_parser.parser.on_body_cb", __pyx_clineno, __pyx_lineno, __pyx_filename); -- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} -- __Pyx_GOTREF(__pyx_t_5); -+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_1) < 0) __PYX_ERR(0, 146, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_1); - - /* "http_parser/parser.pyx":147 -@@ -2107,29 +2953,66 @@ static int __pyx_f_11http_parser_6parser_on_body_cb(struct http_parser *__pyx_v_ - * value = res.decompressobj.decompress(value) - * res._decompress_first_try = False - */ -- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s__zlib); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} -- __Pyx_GOTREF(__pyx_t_10); -- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s__decompressobj); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} -- __Pyx_GOTREF(__pyx_t_11); -- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s__zlib); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} -- __Pyx_GOTREF(__pyx_t_10); -- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s__MAX_WBITS); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} -+ __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_zlib); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L7_except_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decompressobj); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 147, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_12); -- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -- __pyx_t_10 = PyNumber_Negative(__pyx_t_12); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} -- __Pyx_GOTREF(__pyx_t_10); -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_zlib); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L7_except_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MAX_WBITS); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 147, __pyx_L7_except_error) -+ __Pyx_GOTREF(__pyx_t_13); -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __pyx_t_5 = PyNumber_Negative(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L7_except_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -+ __pyx_t_13 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { -+ __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12); -+ if (likely(__pyx_t_13)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); -+ __Pyx_INCREF(__pyx_t_13); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_12, function); -+ } -+ } -+ if (!__pyx_t_13) { -+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 147, __pyx_L7_except_error) -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_10); -+ } else { -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_12)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_5}; -+ __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 147, __pyx_L7_except_error) -+ __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; -+ __Pyx_GOTREF(__pyx_t_10); -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_5}; -+ __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 147, __pyx_L7_except_error) -+ __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; -+ __Pyx_GOTREF(__pyx_t_10); -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ } else -+ #endif -+ { -+ __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 147, __pyx_L7_except_error) -+ __Pyx_GOTREF(__pyx_t_14); -+ __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL; -+ __Pyx_GIVEREF(__pyx_t_5); -+ PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_5); -+ __pyx_t_5 = 0; -+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 147, __pyx_L7_except_error) -+ __Pyx_GOTREF(__pyx_t_10); -+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; -+ } -+ } - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -- __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} -- __Pyx_GOTREF(__pyx_t_12); -- PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); -- __Pyx_GIVEREF(__pyx_t_10); -- __pyx_t_10 = 0; -- __pyx_t_10 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} -- __Pyx_GOTREF(__pyx_t_10); -- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0; -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s__decompressobj, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_decompressobj, __pyx_t_10) < 0) __PYX_ERR(0, 147, __pyx_L7_except_error) - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - - /* "http_parser/parser.pyx":148 -@@ -2139,40 +3022,82 @@ static int __pyx_f_11http_parser_6parser_on_body_cb(struct http_parser *__pyx_v_ - * res._decompress_first_try = False - * - */ -- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s__decompressobj); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} -- __Pyx_GOTREF(__pyx_t_10); -- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s__decompress); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} -+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_decompressobj); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 148, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_12); -- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} -- __Pyx_GOTREF(__pyx_t_10); -- __Pyx_INCREF(__pyx_v_value); -- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_value); -- __Pyx_GIVEREF(__pyx_v_value); -- __pyx_t_11 = PyObject_Call(__pyx_t_12, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} -- __Pyx_GOTREF(__pyx_t_11); -+ __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_decompress); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 148, __pyx_L7_except_error) -+ __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0; -- __Pyx_DECREF(__pyx_v_value); -- __pyx_v_value = __pyx_t_11; -- __pyx_t_11 = 0; -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __pyx_t_12 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_14))) { -+ __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_14); -+ if (likely(__pyx_t_12)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); -+ __Pyx_INCREF(__pyx_t_12); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_14, function); -+ } -+ } -+ if (!__pyx_t_12) { -+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_v_value); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 148, __pyx_L7_except_error) -+ __Pyx_GOTREF(__pyx_t_10); -+ } else { -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_14)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_v_value}; -+ __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_14, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 148, __pyx_L7_except_error) -+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; -+ __Pyx_GOTREF(__pyx_t_10); -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_14)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_v_value}; -+ __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_14, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 148, __pyx_L7_except_error) -+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; -+ __Pyx_GOTREF(__pyx_t_10); -+ } else -+ #endif -+ { -+ __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 148, __pyx_L7_except_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_12); __pyx_t_12 = NULL; -+ __Pyx_INCREF(__pyx_v_value); -+ __Pyx_GIVEREF(__pyx_v_value); -+ PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_value); -+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_5, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 148, __pyx_L7_except_error) -+ __Pyx_GOTREF(__pyx_t_10); -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ } -+ } -+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; -+ __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_10); -+ __pyx_t_10 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L6_exception_handled; - } -+ goto __pyx_L7_except_error; - __pyx_L7_except_error:; -- __Pyx_XGIVEREF(__pyx_t_6); -+ -+ /* "http_parser/parser.pyx":144 -+ * value = res.decompressobj.decompress(value) -+ * else: -+ * try: # <<<<<<<<<<<<<< -+ * value = res.decompressobj.decompress(value) -+ * except zlib.error: -+ */ - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); -- __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); -+ __Pyx_XGIVEREF(__pyx_t_9); -+ __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); - goto __pyx_L1_error; - __pyx_L6_exception_handled:; -- __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); -- __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); -- __pyx_L12_try_end:; -+ __Pyx_XGIVEREF(__pyx_t_9); -+ __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); -+ __pyx_L10_try_end:; - } - - /* "http_parser/parser.pyx":149 -@@ -2182,15 +3107,18 @@ static int __pyx_f_11http_parser_6parser_on_body_cb(struct http_parser *__pyx_v_ - * - * res.body.append(value) - */ -- __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_6, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_decompress_first_try, Py_False) < 0) __PYX_ERR(0, 149, __pyx_L1_error) - } - __pyx_L4:; -- goto __pyx_L3; -+ -+ /* "http_parser/parser.pyx":140 -+ * -+ * # decompress the value if needed -+ * if res.decompress: # <<<<<<<<<<<<<< -+ * if not res._decompress_first_try: -+ * value = res.decompressobj.decompress(value) -+ */ - } -- __pyx_L3:; - - /* "http_parser/parser.pyx":151 - * res._decompress_first_try = False -@@ -2199,12 +3127,10 @@ static int __pyx_f_11http_parser_6parser_on_body_cb(struct http_parser *__pyx_v_ - * return 0 - * - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s__body); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_body); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_4 = __Pyx_PyObject_Append(__pyx_t_1, __pyx_v_value); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_15 = __Pyx_PyObject_Append(__pyx_t_1, __pyx_v_value); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 151, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "http_parser/parser.pyx":152 - * -@@ -2216,16 +3142,25 @@ static int __pyx_f_11http_parser_6parser_on_body_cb(struct http_parser *__pyx_v_ - __pyx_r = 0; - goto __pyx_L0; - -- __pyx_r = 0; -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":132 -+ * return 0 -+ * -+ * cdef int on_body_cb(http_parser *parser, char *at, # <<<<<<<<<<<<<< -+ * size_t length): -+ * res = parser.data -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_10); -- __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_12); -- __Pyx_WriteUnraisable("http_parser.parser.on_body_cb", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_13); -+ __Pyx_XDECREF(__pyx_t_14); -+ __Pyx_WriteUnraisable("http_parser.parser.on_body_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_res); -@@ -2247,9 +3182,6 @@ static int __pyx_f_11http_parser_6parser_on_message_complete_cb(struct http_pars - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("on_message_complete_cb", 0); - - /* "http_parser/parser.pyx":155 -@@ -2259,8 +3191,10 @@ static int __pyx_f_11http_parser_6parser_on_message_complete_cb(struct http_pars - * res.message_complete = True - * return 0 - */ -- __Pyx_INCREF(((PyObject *)__pyx_v_parser->data)); -- __pyx_v_res = ((PyObject *)__pyx_v_parser->data); -+ __pyx_t_1 = ((PyObject *)__pyx_v_parser->data); -+ __Pyx_INCREF(__pyx_t_1); -+ __pyx_v_res = __pyx_t_1; -+ __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":156 - * cdef int on_message_complete_cb(http_parser *parser): -@@ -2269,10 +3203,7 @@ static int __pyx_f_11http_parser_6parser_on_message_complete_cb(struct http_pars - * return 0 - * - */ -- __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s__message_complete, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_res, __pyx_n_s_message_complete, Py_True) < 0) __PYX_ERR(0, 156, __pyx_L1_error) - - /* "http_parser/parser.pyx":157 - * res = parser.data -@@ -2284,11 +3215,18 @@ static int __pyx_f_11http_parser_6parser_on_message_complete_cb(struct http_pars - __pyx_r = 0; - goto __pyx_L0; - -- __pyx_r = 0; -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":154 -+ * return 0 -+ * -+ * cdef int on_message_complete_cb(http_parser *parser): # <<<<<<<<<<<<<< -+ * res = parser.data -+ * res.message_complete = True -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_WriteUnraisable("http_parser.parser.on_message_complete_cb", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_WriteUnraisable("http_parser.parser.on_message_complete_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_res); -@@ -2296,26 +3234,28 @@ static int __pyx_f_11http_parser_6parser_on_message_complete_cb(struct http_pars - return __pyx_r; - } - -+/* "http_parser/parser.pyx":160 -+ * -+ * -+ * def get_errno_name(errno): # <<<<<<<<<<<<<< -+ * if not HPE_OK <= errno <= HPE_UNKNOWN: -+ * raise ValueError('errno out of range') -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_1get_errno_name(PyObject *__pyx_self, PyObject *__pyx_v_errno); /*proto*/ --static PyMethodDef __pyx_mdef_11http_parser_6parser_1get_errno_name = {__Pyx_NAMESTR("get_errno_name"), (PyCFunction)__pyx_pw_11http_parser_6parser_1get_errno_name, METH_O, __Pyx_DOCSTR(0)}; -+static PyMethodDef __pyx_mdef_11http_parser_6parser_1get_errno_name = {"get_errno_name", (PyCFunction)__pyx_pw_11http_parser_6parser_1get_errno_name, METH_O, 0}; - static PyObject *__pyx_pw_11http_parser_6parser_1get_errno_name(PyObject *__pyx_self, PyObject *__pyx_v_errno) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_errno_name (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_get_errno_name(__pyx_self, ((PyObject *)__pyx_v_errno)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":160 -- * -- * -- * def get_errno_name(errno): # <<<<<<<<<<<<<< -- * if not HPE_OK <= errno <= HPE_UNKNOWN: -- * raise ValueError('errno out of range') -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_get_errno_name(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_errno) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -@@ -2325,9 +3265,6 @@ static PyObject *__pyx_pf_11http_parser_6parser_get_errno_name(CYTHON_UNUSED PyO - int __pyx_t_4; - int __pyx_t_5; - enum http_errno __pyx_t_6; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("get_errno_name", 0); - - /* "http_parser/parser.pyx":161 -@@ -2337,21 +3274,21 @@ static PyObject *__pyx_pf_11http_parser_6parser_get_errno_name(CYTHON_UNUSED PyO - * raise ValueError('errno out of range') - * return http_errno_name(errno) - */ -- __pyx_t_1 = PyInt_FromLong(HPE_OK); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyInt_From_enum__http_errno(HPE_OK); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_errno, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_errno, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 161, __pyx_L1_error) - if (__Pyx_PyObject_IsTrue(__pyx_t_2)) { - __Pyx_DECREF(__pyx_t_2); -- __pyx_t_3 = PyInt_FromLong(HPE_UNKNOWN); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_3 = __Pyx_PyInt_From_enum__http_errno(HPE_UNKNOWN); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = PyObject_RichCompare(__pyx_v_errno, __pyx_t_3, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = PyObject_RichCompare(__pyx_v_errno, __pyx_t_3, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 161, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 161, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = ((!__pyx_t_4) != 0); -- if (__pyx_t_5) { -+ if (unlikely(__pyx_t_5)) { - - /* "http_parser/parser.pyx":162 - * def get_errno_name(errno): -@@ -2360,14 +3297,20 @@ static PyObject *__pyx_pf_11http_parser_6parser_get_errno_name(CYTHON_UNUSED PyO - * return http_errno_name(errno) - * - */ -- __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 162, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- goto __pyx_L3; -+ __PYX_ERR(0, 162, __pyx_L1_error) -+ -+ /* "http_parser/parser.pyx":161 -+ * -+ * def get_errno_name(errno): -+ * if not HPE_OK <= errno <= HPE_UNKNOWN: # <<<<<<<<<<<<<< -+ * raise ValueError('errno out of range') -+ * return http_errno_name(errno) -+ */ - } -- __pyx_L3:; - - /* "http_parser/parser.pyx":163 - * if not HPE_OK <= errno <= HPE_UNKNOWN: -@@ -2377,15 +3320,22 @@ static PyObject *__pyx_pf_11http_parser_6parser_get_errno_name(CYTHON_UNUSED PyO - * def get_errno_description(errno): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_6 = ((enum http_errno)PyInt_AsLong(__pyx_v_errno)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_2 = __Pyx_PyBytes_FromString(http_errno_name(((enum http_errno)__pyx_t_6))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -- __pyx_r = ((PyObject *)__pyx_t_2); -+ __pyx_t_6 = ((enum http_errno)__Pyx_PyInt_As_enum__http_errno(__pyx_v_errno)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 163, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyBytes_FromString(http_errno_name(((enum http_errno)__pyx_t_6))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 163, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":160 -+ * -+ * -+ * def get_errno_name(errno): # <<<<<<<<<<<<<< -+ * if not HPE_OK <= errno <= HPE_UNKNOWN: -+ * raise ValueError('errno out of range') -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); -@@ -2398,26 +3348,28 @@ static PyObject *__pyx_pf_11http_parser_6parser_get_errno_name(CYTHON_UNUSED PyO - return __pyx_r; - } - -+/* "http_parser/parser.pyx":165 -+ * return http_errno_name(errno) -+ * -+ * def get_errno_description(errno): # <<<<<<<<<<<<<< -+ * if not HPE_OK <= errno <= HPE_UNKNOWN: -+ * raise ValueError('errno out of range') -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_3get_errno_description(PyObject *__pyx_self, PyObject *__pyx_v_errno); /*proto*/ --static PyMethodDef __pyx_mdef_11http_parser_6parser_3get_errno_description = {__Pyx_NAMESTR("get_errno_description"), (PyCFunction)__pyx_pw_11http_parser_6parser_3get_errno_description, METH_O, __Pyx_DOCSTR(0)}; -+static PyMethodDef __pyx_mdef_11http_parser_6parser_3get_errno_description = {"get_errno_description", (PyCFunction)__pyx_pw_11http_parser_6parser_3get_errno_description, METH_O, 0}; - static PyObject *__pyx_pw_11http_parser_6parser_3get_errno_description(PyObject *__pyx_self, PyObject *__pyx_v_errno) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_errno_description (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_2get_errno_description(__pyx_self, ((PyObject *)__pyx_v_errno)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":165 -- * return http_errno_name(errno) -- * -- * def get_errno_description(errno): # <<<<<<<<<<<<<< -- * if not HPE_OK <= errno <= HPE_UNKNOWN: -- * raise ValueError('errno out of range') -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_2get_errno_description(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_errno) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -@@ -2427,9 +3379,6 @@ static PyObject *__pyx_pf_11http_parser_6parser_2get_errno_description(CYTHON_UN - int __pyx_t_4; - int __pyx_t_5; - enum http_errno __pyx_t_6; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("get_errno_description", 0); - - /* "http_parser/parser.pyx":166 -@@ -2439,21 +3388,21 @@ static PyObject *__pyx_pf_11http_parser_6parser_2get_errno_description(CYTHON_UN - * raise ValueError('errno out of range') - * return http_errno_description(errno) - */ -- __pyx_t_1 = PyInt_FromLong(HPE_OK); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyInt_From_enum__http_errno(HPE_OK); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_errno, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_errno, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 166, __pyx_L1_error) - if (__Pyx_PyObject_IsTrue(__pyx_t_2)) { - __Pyx_DECREF(__pyx_t_2); -- __pyx_t_3 = PyInt_FromLong(HPE_UNKNOWN); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_3 = __Pyx_PyInt_From_enum__http_errno(HPE_UNKNOWN); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 166, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = PyObject_RichCompare(__pyx_v_errno, __pyx_t_3, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = PyObject_RichCompare(__pyx_v_errno, __pyx_t_3, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 166, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 166, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = ((!__pyx_t_4) != 0); -- if (__pyx_t_5) { -+ if (unlikely(__pyx_t_5)) { - - /* "http_parser/parser.pyx":167 - * def get_errno_description(errno): -@@ -2462,14 +3411,20 @@ static PyObject *__pyx_pf_11http_parser_6parser_2get_errno_description(CYTHON_UN - * return http_errno_description(errno) - * - */ -- __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_9), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 167, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- goto __pyx_L3; -+ __PYX_ERR(0, 167, __pyx_L1_error) -+ -+ /* "http_parser/parser.pyx":166 -+ * -+ * def get_errno_description(errno): -+ * if not HPE_OK <= errno <= HPE_UNKNOWN: # <<<<<<<<<<<<<< -+ * raise ValueError('errno out of range') -+ * return http_errno_description(errno) -+ */ - } -- __pyx_L3:; - - /* "http_parser/parser.pyx":168 - * if not HPE_OK <= errno <= HPE_UNKNOWN: -@@ -2479,15 +3434,22 @@ static PyObject *__pyx_pf_11http_parser_6parser_2get_errno_description(CYTHON_UN - * - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_6 = ((enum http_errno)PyInt_AsLong(__pyx_v_errno)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_2 = __Pyx_PyBytes_FromString(http_errno_description(((enum http_errno)__pyx_t_6))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -- __pyx_r = ((PyObject *)__pyx_t_2); -+ __pyx_t_6 = ((enum http_errno)__Pyx_PyInt_As_enum__http_errno(__pyx_v_errno)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 168, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyBytes_FromString(http_errno_description(((enum http_errno)__pyx_t_6))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 168, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":165 -+ * return http_errno_name(errno) -+ * -+ * def get_errno_description(errno): # <<<<<<<<<<<<<< -+ * if not HPE_OK <= errno <= HPE_UNKNOWN: -+ * raise ValueError('errno out of range') -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); -@@ -2508,101 +3470,61 @@ static PyObject *__pyx_pf_11http_parser_6parser_2get_errno_description(CYTHON_UN - * self.body = [] - */ - --static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData_2__defaults__(CYTHON_UNUSED PyObject *__pyx_self) { -- 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("__defaults__", 0); -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_decompress); -- PyTuple_SET_ITEM(__pyx_t_1, 0, __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_decompress); -- __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_decompress); -- __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_header_only); -- PyTuple_SET_ITEM(__pyx_t_1, 1, __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_header_only); -- __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_header_only); -- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1)); -- __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); -- __Pyx_INCREF(Py_None); -- PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None); -- __Pyx_GIVEREF(Py_None); -- __pyx_t_1 = 0; -- __pyx_r = ((PyObject *)__pyx_t_2); -- __pyx_t_2 = 0; -- goto __pyx_L0; -- -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_AddTraceback("http_parser.parser._ParserData.__defaults__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_11_ParserData_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyMethodDef __pyx_mdef_11http_parser_6parser_11_ParserData_1__init__ = {__Pyx_NAMESTR("__init__"), (PyCFunction)__pyx_pw_11http_parser_6parser_11_ParserData_1__init__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; -+static PyMethodDef __pyx_mdef_11http_parser_6parser_11_ParserData_1__init__ = {"__init__", (PyCFunction)__pyx_pw_11http_parser_6parser_11_ParserData_1__init__, METH_VARARGS|METH_KEYWORDS, 0}; - static PyObject *__pyx_pw_11http_parser_6parser_11_ParserData_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_self = 0; - PyObject *__pyx_v_decompress = 0; - PyObject *__pyx_v_header_only = 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); - { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,&__pyx_n_s__decompress,&__pyx_n_s__header_only,0}; -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_decompress,&__pyx_n_s_header_only,0}; - PyObject* values[3] = {0,0,0}; -- __pyx_defaults *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self); -- values[1] = __pyx_dynamic_args->__pyx_arg_decompress; -- values[2] = __pyx_dynamic_args->__pyx_arg_header_only; -+ values[1] = ((PyObject *)((PyObject *)Py_False)); -+ values[2] = ((PyObject *)((PyObject *)Py_False)); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: -- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self)) != 0)) kw_args--; -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { -- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__decompress); -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_decompress); - if (value) { values[1] = value; kw_args--; } - } -+ CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { -- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__header_only); -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_header_only); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;} -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 173, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; -@@ -2614,13 +3536,15 @@ static PyObject *__pyx_pw_11http_parser_6parser_11_ParserData_1__init__(PyObject - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;} -+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 173, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("http_parser.parser._ParserData.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_11http_parser_6parser_11_ParserData___init__(__pyx_self, __pyx_v_self, __pyx_v_decompress, __pyx_v_header_only); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } -@@ -2630,9 +3554,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - __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; -+ PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "http_parser/parser.pyx":174 -@@ -2642,7 +3564,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - * self.body = [] - * self.headers = IOrderedDict() - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s__url, ((PyObject *)__pyx_kp_s_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_url, __pyx_kp_s_) < 0) __PYX_ERR(0, 174, __pyx_L1_error) - - /* "http_parser/parser.pyx":175 - * def __init__(self, decompress=False, header_only=False): -@@ -2651,10 +3573,10 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - * self.headers = IOrderedDict() - * self.header_only = header_only - */ -- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s__body, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_body, __pyx_t_1) < 0) __PYX_ERR(0, 175, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":176 - * self.url = "" -@@ -2663,13 +3585,28 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - * self.header_only = header_only - * - */ -- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__IOrderedDict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_IOrderedDict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s__headers, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ if (__pyx_t_3) { -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else { -+ __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error) -+ } -+ __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_headers, __pyx_t_1) < 0) __PYX_ERR(0, 176, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":177 - * self.body = [] -@@ -2678,7 +3615,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - * - * self.decompress = decompress - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s__header_only, __pyx_v_header_only) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_header_only, __pyx_v_header_only) < 0) __PYX_ERR(0, 177, __pyx_L1_error) - - /* "http_parser/parser.pyx":179 - * self.header_only = header_only -@@ -2687,7 +3624,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - * self.decompressobj = None - * self._decompress_first_try = True - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s__decompress, __pyx_v_decompress) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_decompress, __pyx_v_decompress) < 0) __PYX_ERR(0, 179, __pyx_L1_error) - - /* "http_parser/parser.pyx":180 - * -@@ -2696,7 +3633,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - * self._decompress_first_try = True - * - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s__decompressobj, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_decompressobj, Py_None) < 0) __PYX_ERR(0, 180, __pyx_L1_error) - - /* "http_parser/parser.pyx":181 - * self.decompress = decompress -@@ -2705,10 +3642,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - * - * self.chunked = False - */ -- __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_6, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_decompress_first_try, Py_True) < 0) __PYX_ERR(0, 181, __pyx_L1_error) - - /* "http_parser/parser.pyx":183 - * self._decompress_first_try = True -@@ -2717,10 +3651,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - * - * self.headers_complete = False - */ -- __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s__chunked, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_chunked, Py_False) < 0) __PYX_ERR(0, 183, __pyx_L1_error) - - /* "http_parser/parser.pyx":185 - * self.chunked = False -@@ -2729,10 +3660,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - * self.partial_body = False - * self.message_begin = False - */ -- __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s__headers_complete, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_headers_complete, Py_False) < 0) __PYX_ERR(0, 185, __pyx_L1_error) - - /* "http_parser/parser.pyx":186 - * -@@ -2741,10 +3669,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - * self.message_begin = False - * self.message_complete = False - */ -- __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s__partial_body, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_partial_body, Py_False) < 0) __PYX_ERR(0, 186, __pyx_L1_error) - - /* "http_parser/parser.pyx":187 - * self.headers_complete = False -@@ -2753,10 +3678,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - * self.message_complete = False - * - */ -- __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s__message_begin, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_message_begin, Py_False) < 0) __PYX_ERR(0, 187, __pyx_L1_error) - - /* "http_parser/parser.pyx":188 - * self.partial_body = False -@@ -2765,10 +3687,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - * - * self._last_field = "" - */ -- __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s__message_complete, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_message_complete, Py_False) < 0) __PYX_ERR(0, 188, __pyx_L1_error) - - /* "http_parser/parser.pyx":190 - * self.message_complete = False -@@ -2777,7 +3696,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - * self._last_was_value = False - * - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s___last_field, ((PyObject *)__pyx_kp_s_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_last_field, __pyx_kp_s_) < 0) __PYX_ERR(0, 190, __pyx_L1_error) - - /* "http_parser/parser.pyx":191 - * -@@ -2786,16 +3705,23 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - * - * cdef class HttpParser: - */ -- __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s___last_was_value, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_last_was_value, Py_False) < 0) __PYX_ERR(0, 191, __pyx_L1_error) -+ -+ /* "http_parser/parser.pyx":173 -+ * class _ParserData(object): -+ * -+ * def __init__(self, decompress=False, header_only=False): # <<<<<<<<<<<<<< -+ * self.url = "" -+ * self.body = [] -+ */ - -+ /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("http_parser.parser._ParserData.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -@@ -2804,6 +3730,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_11_ParserData___init__(CYTHON_UN - return __pyx_r; - } - -+/* "http_parser/parser.pyx":205 -+ * cdef object _parsed_url -+ * -+ * def __init__(self, kind=2, decompress=False, header_only=False): # <<<<<<<<<<<<<< -+ * """ constructor of HttpParser object. -+ * : -+ */ -+ - /* Python wrapper */ - static int __pyx_pw_11http_parser_6parser_10HttpParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser___init__[] = " constructor of HttpParser object.\n :\n attr kind: Int, could be 0 to parseonly requests,\n 1 to parse only responses or 2 if we want to let\n the parser detect the type.\n "; -@@ -2814,25 +3748,25 @@ static int __pyx_pw_11http_parser_6parser_10HttpParser_1__init__(PyObject *__pyx - PyObject *__pyx_v_kind = 0; - PyObject *__pyx_v_decompress = 0; - PyObject *__pyx_v_header_only = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__kind,&__pyx_n_s__decompress,&__pyx_n_s__header_only,0}; -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_kind,&__pyx_n_s_decompress,&__pyx_n_s_header_only,0}; - PyObject* values[3] = {0,0,0}; - values[0] = ((PyObject *)__pyx_int_2); -- values[1] = __pyx_k_10; -- values[2] = __pyx_k_11; -+ values[1] = ((PyObject *)Py_False); -+ values[2] = ((PyObject *)Py_False); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } -@@ -2840,28 +3774,33 @@ static int __pyx_pw_11http_parser_6parser_10HttpParser_1__init__(PyObject *__pyx - switch (pos_args) { - case 0: - if (kw_args > 0) { -- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__kind); -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kind); - if (value) { values[0] = value; kw_args--; } - } -+ CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { -- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__decompress); -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_decompress); - if (value) { values[1] = value; kw_args--; } - } -+ CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { -- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__header_only); -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_header_only); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L3_error;} -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 205, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } -@@ -2872,37 +3811,27 @@ static int __pyx_pw_11http_parser_6parser_10HttpParser_1__init__(PyObject *__pyx - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L3_error;} -+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 205, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("http_parser.parser.HttpParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser___init__(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self), __pyx_v_kind, __pyx_v_decompress, __pyx_v_header_only); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":205 -- * cdef object _parsed_url -- * -- * def __init__(self, kind=2, decompress=False, header_only=False): # <<<<<<<<<<<<<< -- * """ constructor of HttpParser object. -- * : -- */ -- - static int __pyx_pf_11http_parser_6parser_10HttpParser___init__(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self, PyObject *__pyx_v_kind, PyObject *__pyx_v_decompress, PyObject *__pyx_v_header_only) { -- PyObject *__pyx_v_parser_type = NULL; -+ enum http_parser_type __pyx_v_parser_type; - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; -- enum http_parser_type __pyx_t_3; -+ 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); - - /* "http_parser/parser.pyx":214 -@@ -2912,8 +3841,9 @@ static int __pyx_pf_11http_parser_6parser_10HttpParser___init__(struct __pyx_obj - * parser_type = HTTP_BOTH - * elif kind == 1: - */ -- __pyx_t_1 = PyObject_RichCompare(__pyx_v_kind, __pyx_int_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_kind, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 214, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 214, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_2) { - -@@ -2924,22 +3854,28 @@ static int __pyx_pf_11http_parser_6parser_10HttpParser___init__(struct __pyx_obj - * elif kind == 1: - * parser_type = HTTP_RESPONSE - */ -- __pyx_t_1 = PyInt_FromLong(HTTP_BOTH); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_v_parser_type = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L3; -- } -+ __pyx_v_parser_type = HTTP_BOTH; - -- /* "http_parser/parser.pyx":216 -+ /* "http_parser/parser.pyx":214 -+ * -+ * # set parser type -+ * if kind == 2: # <<<<<<<<<<<<<< -+ * parser_type = HTTP_BOTH -+ * elif kind == 1: -+ */ -+ goto __pyx_L3; -+ } -+ -+ /* "http_parser/parser.pyx":216 - * if kind == 2: - * parser_type = HTTP_BOTH - * elif kind == 1: # <<<<<<<<<<<<<< - * parser_type = HTTP_RESPONSE - * elif kind == 0: - */ -- __pyx_t_1 = PyObject_RichCompare(__pyx_v_kind, __pyx_int_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_kind, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 216, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 216, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_2) { - -@@ -2950,10 +3886,15 @@ static int __pyx_pf_11http_parser_6parser_10HttpParser___init__(struct __pyx_obj - * elif kind == 0: - * parser_type = HTTP_REQUEST - */ -- __pyx_t_1 = PyInt_FromLong(HTTP_RESPONSE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_v_parser_type = __pyx_t_1; -- __pyx_t_1 = 0; -+ __pyx_v_parser_type = HTTP_RESPONSE; -+ -+ /* "http_parser/parser.pyx":216 -+ * if kind == 2: -+ * parser_type = HTTP_BOTH -+ * elif kind == 1: # <<<<<<<<<<<<<< -+ * parser_type = HTTP_RESPONSE -+ * elif kind == 0: -+ */ - goto __pyx_L3; - } - -@@ -2964,8 +3905,9 @@ static int __pyx_pf_11http_parser_6parser_10HttpParser___init__(struct __pyx_obj - * parser_type = HTTP_REQUEST - * - */ -- __pyx_t_1 = PyObject_RichCompare(__pyx_v_kind, __pyx_int_0, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_kind, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 218, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_2) { - -@@ -2976,11 +3918,15 @@ static int __pyx_pf_11http_parser_6parser_10HttpParser___init__(struct __pyx_obj - * - * # initialize parser - */ -- __pyx_t_1 = PyInt_FromLong(HTTP_REQUEST); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_v_parser_type = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L3; -+ __pyx_v_parser_type = HTTP_REQUEST; -+ -+ /* "http_parser/parser.pyx":218 -+ * elif kind == 1: -+ * parser_type = HTTP_RESPONSE -+ * elif kind == 0: # <<<<<<<<<<<<<< -+ * parser_type = HTTP_REQUEST -+ * -+ */ - } - __pyx_L3:; - -@@ -2991,9 +3937,7 @@ static int __pyx_pf_11http_parser_6parser_10HttpParser___init__(struct __pyx_obj - * self._data = _ParserData(decompress=decompress, header_only=header_only) - * self._parser.data = self._data - */ -- if (unlikely(!__pyx_v_parser_type)) { __Pyx_RaiseUnboundLocalError("parser_type"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -- __pyx_t_3 = ((enum http_parser_type)PyInt_AsLong(__pyx_v_parser_type)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- http_parser_init((&__pyx_v_self->_parser), __pyx_t_3); -+ http_parser_init((&__pyx_v_self->_parser), __pyx_v_parser_type); - - /* "http_parser/parser.pyx":223 - * # initialize parser -@@ -3002,21 +3946,21 @@ static int __pyx_pf_11http_parser_6parser_10HttpParser___init__(struct __pyx_obj - * self._parser.data = self._data - * self._parsed_url = None - */ -- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s___ParserData); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ParserData); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(((PyObject *)__pyx_t_4)); -- if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__decompress), __pyx_v_decompress) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__header_only), __pyx_v_header_only) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_5); -+ __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 223, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_decompress, __pyx_v_decompress) < 0) __PYX_ERR(0, 223, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_header_only, __pyx_v_header_only) < 0) __PYX_ERR(0, 223, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 223, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; -- __Pyx_GIVEREF(__pyx_t_5); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_GIVEREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_v_self->_data); - __Pyx_DECREF(__pyx_v_self->_data); -- __pyx_v_self->_data = __pyx_t_5; -- __pyx_t_5 = 0; -+ __pyx_v_self->_data = __pyx_t_4; -+ __pyx_t_4 = 0; - - /* "http_parser/parser.pyx":224 - * http_parser_init(&self._parser, parser_type) -@@ -3047,11 +3991,11 @@ static int __pyx_pf_11http_parser_6parser_10HttpParser___init__(struct __pyx_obj - * self._query_string = "" - * self._fragment = "" - */ -- __Pyx_INCREF(((PyObject *)__pyx_kp_s_1)); -- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_1)); -+ __Pyx_INCREF(__pyx_kp_s_); -+ __Pyx_GIVEREF(__pyx_kp_s_); - __Pyx_GOTREF(__pyx_v_self->_path); -- __Pyx_DECREF(((PyObject *)__pyx_v_self->_path)); -- __pyx_v_self->_path = __pyx_kp_s_1; -+ __Pyx_DECREF(__pyx_v_self->_path); -+ __pyx_v_self->_path = __pyx_kp_s_; - - /* "http_parser/parser.pyx":227 - * self._parsed_url = None -@@ -3060,11 +4004,11 @@ static int __pyx_pf_11http_parser_6parser_10HttpParser___init__(struct __pyx_obj - * self._fragment = "" - * - */ -- __Pyx_INCREF(((PyObject *)__pyx_kp_s_1)); -- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_1)); -+ __Pyx_INCREF(__pyx_kp_s_); -+ __Pyx_GIVEREF(__pyx_kp_s_); - __Pyx_GOTREF(__pyx_v_self->_query_string); -- __Pyx_DECREF(((PyObject *)__pyx_v_self->_query_string)); -- __pyx_v_self->_query_string = __pyx_kp_s_1; -+ __Pyx_DECREF(__pyx_v_self->_query_string); -+ __pyx_v_self->_query_string = __pyx_kp_s_; - - /* "http_parser/parser.pyx":228 - * self._path = "" -@@ -3073,11 +4017,11 @@ static int __pyx_pf_11http_parser_6parser_10HttpParser___init__(struct __pyx_obj - * - * # set callback - */ -- __Pyx_INCREF(((PyObject *)__pyx_kp_s_1)); -- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_1)); -+ __Pyx_INCREF(__pyx_kp_s_); -+ __Pyx_GIVEREF(__pyx_kp_s_); - __Pyx_GOTREF(__pyx_v_self->_fragment); -- __Pyx_DECREF(((PyObject *)__pyx_v_self->_fragment)); -- __pyx_v_self->_fragment = __pyx_kp_s_1; -+ __Pyx_DECREF(__pyx_v_self->_fragment); -+ __pyx_v_self->_fragment = __pyx_kp_s_; - - /* "http_parser/parser.pyx":231 - * -@@ -3142,57 +4086,73 @@ static int __pyx_pf_11http_parser_6parser_10HttpParser___init__(struct __pyx_obj - */ - __pyx_v_self->_settings.on_message_complete = ((http_cb)__pyx_f_11http_parser_6parser_on_message_complete_cb); - -+ /* "http_parser/parser.pyx":205 -+ * cdef object _parsed_url -+ * -+ * def __init__(self, kind=2, decompress=False, header_only=False): # <<<<<<<<<<<<<< -+ * """ constructor of HttpParser object. -+ * : -+ */ -+ -+ /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("http_parser.parser.HttpParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_parser_type); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - -+/* "http_parser/parser.pyx":239 -+ * self._settings.on_message_complete = on_message_complete_cb -+ * -+ * def execute(self, char *data, size_t length): # <<<<<<<<<<<<<< -+ * """ Execute the parser with the last chunk. We pass the length -+ * to let the parser know when EOF has been received. In this case -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_3execute(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_2execute[] = " Execute the parser with the last chunk. We pass the length\n to let the parser know when EOF has been received. In this case\n length == 0.\n\n :return recved: Int, received length of the data parsed. if\n recvd != length you should return an error.\n "; - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_3execute(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - char *__pyx_v_data; - size_t __pyx_v_length; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("execute (wrapper)", 0); - { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__data,&__pyx_n_s__length,0}; -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_length,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: -- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__data)) != 0)) kw_args--; -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; - case 1: -- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__length)) != 0)) kw_args--; -+ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_length)) != 0)) kw_args--; - else { -- __Pyx_RaiseArgtupleInvalid("execute", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L3_error;} -+ __Pyx_RaiseArgtupleInvalid("execute", 1, 2, 2, 1); __PYX_ERR(0, 239, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "execute") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L3_error;} -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "execute") < 0)) __PYX_ERR(0, 239, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; -@@ -3200,37 +4160,28 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_3execute(PyObject * - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } -- __pyx_v_data = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_data) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L3_error;} -- __pyx_v_length = __Pyx_PyInt_AsSize_t(values[1]); if (unlikely((__pyx_v_length == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L3_error;} -+ __pyx_v_data = __Pyx_PyObject_AsWritableString(values[0]); if (unlikely((!__pyx_v_data) && PyErr_Occurred())) __PYX_ERR(0, 239, __pyx_L3_error) -+ __pyx_v_length = __Pyx_PyInt_As_size_t(values[1]); if (unlikely((__pyx_v_length == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 239, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("execute", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L3_error;} -+ __Pyx_RaiseArgtupleInvalid("execute", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 239, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("http_parser.parser.HttpParser.execute", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_2execute(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self), __pyx_v_data, __pyx_v_length); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":239 -- * self._settings.on_message_complete = on_message_complete_cb -- * -- * def execute(self, char *data, size_t length): # <<<<<<<<<<<<<< -- * """ Execute the parser with the last chunk. We pass the length -- * to let the parser know when EOF has been received. In this case -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_2execute(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self, char *__pyx_v_data, size_t __pyx_v_length) { - 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("execute", 0); - - /* "http_parser/parser.pyx":247 -@@ -3249,14 +4200,21 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_2execute(struct __p - * - * def get_errno(self): - */ -- __pyx_t_1 = __Pyx_PyInt_FromSize_t(http_parser_execute((&__pyx_v_self->_parser), (&__pyx_v_self->_settings), __pyx_v_data, __pyx_v_length)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyInt_FromSize_t(http_parser_execute((&__pyx_v_self->_parser), (&__pyx_v_self->_settings), __pyx_v_data, __pyx_v_length)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 247, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":239 -+ * self._settings.on_message_complete = on_message_complete_cb -+ * -+ * def execute(self, char *data, size_t length): # <<<<<<<<<<<<<< -+ * """ Execute the parser with the last chunk. We pass the length -+ * to let the parser know when EOF has been received. In this case -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("http_parser.parser.HttpParser.execute", __pyx_clineno, __pyx_lineno, __pyx_filename); -@@ -3267,6 +4225,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_2execute(struct __p - return __pyx_r; - } - -+/* "http_parser/parser.pyx":250 -+ * data, length) -+ * -+ * def get_errno(self): # <<<<<<<<<<<<<< -+ * """ get error state """ -+ * return self._parser.http_errno -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_5get_errno(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_4get_errno[] = " get error state "; -@@ -3275,25 +4241,16 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_5get_errno(PyObject - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_errno (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_4get_errno(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":250 -- * data, length) -- * -- * def get_errno(self): # <<<<<<<<<<<<<< -- * """ get error state """ -- * return self._parser.http_errno -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_4get_errno(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - 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("get_errno", 0); - - /* "http_parser/parser.pyx":252 -@@ -3304,14 +4261,21 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_4get_errno(struct _ - * def get_version(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = PyInt_FromLong(__pyx_v_self->_parser.http_errno); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyInt_From_unsigned_char(__pyx_v_self->_parser.http_errno); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":250 -+ * data, length) -+ * -+ * def get_errno(self): # <<<<<<<<<<<<<< -+ * """ get error state """ -+ * return self._parser.http_errno -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("http_parser.parser.HttpParser.get_errno", __pyx_clineno, __pyx_lineno, __pyx_filename); -@@ -3322,6 +4286,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_4get_errno(struct _ - return __pyx_r; - } - -+/* "http_parser/parser.pyx":254 -+ * return self._parser.http_errno -+ * -+ * def get_version(self): # <<<<<<<<<<<<<< -+ * """ get HTTP version """ -+ * return (self._parser.http_major, self._parser.http_minor) -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_7get_version(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_6get_version[] = " get HTTP version "; -@@ -3330,27 +4302,18 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_7get_version(PyObje - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_version (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_6get_version(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":254 -- * return self._parser.http_errno -- * -- * def get_version(self): # <<<<<<<<<<<<<< -- * """ get HTTP version """ -- * return (self._parser.http_major, self._parser.http_minor) -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_6get_version(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - 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("get_version", 0); - - /* "http_parser/parser.pyx":256 -@@ -3361,24 +4324,31 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_6get_version(struct - * def get_method(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = PyInt_FromLong(__pyx_v_self->_parser.http_major); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyInt_From_unsigned_short(__pyx_v_self->_parser.http_major); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PyInt_FromLong(__pyx_v_self->_parser.http_minor); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyInt_From_unsigned_short(__pyx_v_self->_parser.http_minor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 256, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); -- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); -+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); -+ PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; -- __pyx_r = ((PyObject *)__pyx_t_3); -+ __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":254 -+ * return self._parser.http_errno -+ * -+ * def get_version(self): # <<<<<<<<<<<<<< -+ * """ get HTTP version """ -+ * return (self._parser.http_major, self._parser.http_minor) -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); -@@ -3391,6 +4361,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_6get_version(struct - return __pyx_r; - } - -+/* "http_parser/parser.pyx":258 -+ * return (self._parser.http_major, self._parser.http_minor) -+ * -+ * def get_method(self): # <<<<<<<<<<<<<< -+ * """ get HTTP method as string""" -+ * return bytes_to_str(http_method_str(self._parser.method)) -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_9get_method(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_8get_method[] = " get HTTP method as string"; -@@ -3399,27 +4377,20 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_9get_method(PyObjec - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_method (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_8get_method(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":258 -- * return (self._parser.http_major, self._parser.http_minor) -- * -- * def get_method(self): # <<<<<<<<<<<<<< -- * """ get HTTP method as string""" -- * return bytes_to_str(http_method_str(self._parser.method)) -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_8get_method(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - 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; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("get_method", 0); - - /* "http_parser/parser.pyx":260 -@@ -3430,29 +4401,75 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_8get_method(struct - * def get_status_code(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__bytes_to_str); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyBytes_FromString(http_method_str(((enum http_method)__pyx_v_self->_parser.method))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_3); -- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2)); -- __Pyx_GIVEREF(((PyObject *)__pyx_t_2)); -- __pyx_t_2 = 0; -- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_bytes_to_str); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 260, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -- __pyx_r = __pyx_t_2; -- __pyx_t_2 = 0; -+ __pyx_t_3 = __Pyx_PyBytes_FromString(http_method_str(((enum http_method)__pyx_v_self->_parser.method))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 260, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ if (!__pyx_t_4) { -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ } else { -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; -+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; -+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else -+ #endif -+ { -+ __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 260, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; -+ __Pyx_GIVEREF(__pyx_t_3); -+ PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3); -+ __pyx_t_3 = 0; -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ } -+ } -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":258 -+ * return (self._parser.http_major, self._parser.http_minor) -+ * -+ * def get_method(self): # <<<<<<<<<<<<<< -+ * """ get HTTP method as string""" -+ * return bytes_to_str(http_method_str(self._parser.method)) -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("http_parser.parser.HttpParser.get_method", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -@@ -3461,6 +4478,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_8get_method(struct - return __pyx_r; - } - -+/* "http_parser/parser.pyx":262 -+ * return bytes_to_str(http_method_str(self._parser.method)) -+ * -+ * def get_status_code(self): # <<<<<<<<<<<<<< -+ * """ get status code of a response as integer """ -+ * return self._parser.status_code -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_11get_status_code(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_10get_status_code[] = " get status code of a response as integer "; -@@ -3469,25 +4494,16 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_11get_status_code(P - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_status_code (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_10get_status_code(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":262 -- * return bytes_to_str(http_method_str(self._parser.method)) -- * -- * def get_status_code(self): # <<<<<<<<<<<<<< -- * """ get status code of a response as integer """ -- * return self._parser.status_code -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_10get_status_code(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - 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("get_status_code", 0); - - /* "http_parser/parser.pyx":264 -@@ -3498,14 +4514,21 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_10get_status_code(s - * def get_url(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = PyInt_FromLong(__pyx_v_self->_parser.status_code); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyInt_From_unsigned_short(__pyx_v_self->_parser.status_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":262 -+ * return bytes_to_str(http_method_str(self._parser.method)) -+ * -+ * def get_status_code(self): # <<<<<<<<<<<<<< -+ * """ get status code of a response as integer """ -+ * return self._parser.status_code -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("http_parser.parser.HttpParser.get_status_code", __pyx_clineno, __pyx_lineno, __pyx_filename); -@@ -3516,6 +4539,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_10get_status_code(s - return __pyx_r; - } - -+/* "http_parser/parser.pyx":266 -+ * return self._parser.status_code -+ * -+ * def get_url(self): # <<<<<<<<<<<<<< -+ * """ get full url of the request """ -+ * return self._data.url -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_13get_url(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_12get_url[] = " get full url of the request "; -@@ -3524,25 +4555,16 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_13get_url(PyObject - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_url (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_12get_url(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":266 -- * return self._parser.status_code -- * -- * def get_url(self): # <<<<<<<<<<<<<< -- * """ get full url of the request """ -- * return self._data.url -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_12get_url(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - 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("get_url", 0); - - /* "http_parser/parser.pyx":268 -@@ -3553,14 +4575,21 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_12get_url(struct __ - * def maybe_parse_url(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s__url); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s_url); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 268, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":266 -+ * return self._parser.status_code -+ * -+ * def get_url(self): # <<<<<<<<<<<<<< -+ * """ get full url of the request """ -+ * return self._data.url -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("http_parser.parser.HttpParser.get_url", __pyx_clineno, __pyx_lineno, __pyx_filename); -@@ -3571,6 +4600,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_12get_url(struct __ - return __pyx_r; - } - -+/* "http_parser/parser.pyx":270 -+ * return self._data.url -+ * -+ * def maybe_parse_url(self): # <<<<<<<<<<<<<< -+ * raw_url = self.get_url() -+ * if not self._parsed_url and raw_url: -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_15maybe_parse_url(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_15maybe_parse_url(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -@@ -3578,31 +4615,23 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_15maybe_parse_url(P - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("maybe_parse_url (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_14maybe_parse_url(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":270 -- * return self._data.url -- * -- * def maybe_parse_url(self): # <<<<<<<<<<<<<< -- * raw_url = self.get_url() -- * if not self._parsed_url and raw_url: -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_14maybe_parse_url(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - PyObject *__pyx_v_raw_url = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; -- int __pyx_t_3; -+ PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_t_5; -- PyObject *__pyx_t_6 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -+ int __pyx_t_6; -+ PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("maybe_parse_url", 0); - - /* "http_parser/parser.pyx":271 -@@ -3612,13 +4641,28 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_14maybe_parse_url(s - * if not self._parsed_url and raw_url: - * self._parsed_url = urlsplit(raw_url) - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_url); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_url); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 271, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_v_raw_url = __pyx_t_2; -- __pyx_t_2 = 0; -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ if (__pyx_t_3) { -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 271, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else { -+ __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 271, __pyx_L1_error) -+ } -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_v_raw_url = __pyx_t_1; -+ __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":272 - * def maybe_parse_url(self): -@@ -3627,15 +4671,17 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_14maybe_parse_url(s - * self._parsed_url = urlsplit(raw_url) - * self._path = self._parsed_url.path or "" - */ -- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_parsed_url); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_4 = (!__pyx_t_3); -- if (__pyx_t_4) { -- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_raw_url); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_5 = __pyx_t_3; -+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_self->_parsed_url); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 272, __pyx_L1_error) -+ __pyx_t_6 = ((!__pyx_t_5) != 0); -+ if (__pyx_t_6) { - } else { -- __pyx_t_5 = __pyx_t_4; -+ __pyx_t_4 = __pyx_t_6; -+ goto __pyx_L4_bool_binop_done; - } -- if (__pyx_t_5) { -+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_raw_url); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 272, __pyx_L1_error) -+ __pyx_t_4 = __pyx_t_6; -+ __pyx_L4_bool_binop_done:; -+ if (__pyx_t_4) { - - /* "http_parser/parser.pyx":273 - * raw_url = self.get_url() -@@ -3644,22 +4690,56 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_14maybe_parse_url(s - * self._path = self._parsed_url.path or "" - * self._query_string = self._parsed_url.query or "" - */ -- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__urlsplit); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_urlsplit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 273, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(__pyx_v_raw_url); -- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_raw_url); -- __Pyx_GIVEREF(__pyx_v_raw_url); -- __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ if (!__pyx_t_3) { -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_raw_url); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 273, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ } else { -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_raw_url}; -+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 273, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_raw_url}; -+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 273, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ } else -+ #endif -+ { -+ __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 273, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL; -+ __Pyx_INCREF(__pyx_v_raw_url); -+ __Pyx_GIVEREF(__pyx_v_raw_url); -+ PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_raw_url); -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 273, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ } -+ } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -- __Pyx_GIVEREF(__pyx_t_6); -+ __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_parsed_url); - __Pyx_DECREF(__pyx_v_self->_parsed_url); -- __pyx_v_self->_parsed_url = __pyx_t_6; -- __pyx_t_6 = 0; -+ __pyx_v_self->_parsed_url = __pyx_t_1; -+ __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":274 - * if not self._parsed_url and raw_url: -@@ -3668,21 +4748,24 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_14maybe_parse_url(s - * self._query_string = self._parsed_url.query or "" - * self._fragment = self._parsed_url.fragment or "" - */ -- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_parsed_url, __pyx_n_s__path); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- if (!__pyx_t_5) { -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_INCREF(((PyObject *)__pyx_kp_s_1)); -- __pyx_t_1 = __pyx_kp_s_1; -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_parsed_url, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 274, __pyx_L1_error) -+ if (!__pyx_t_4) { -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { -- __pyx_t_1 = __pyx_t_6; -- __pyx_t_6 = 0; -+ if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 274, __pyx_L1_error) -+ __Pyx_INCREF(__pyx_t_2); -+ __pyx_t_1 = __pyx_t_2; -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ goto __pyx_L6_bool_binop_done; - } -- if (!(likely(PyString_CheckExact(__pyx_t_1))||(PyErr_Format(PyExc_TypeError, "Expected str, got %.200s", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __Pyx_INCREF(__pyx_kp_s_); -+ __pyx_t_1 = __pyx_kp_s_; -+ __pyx_L6_bool_binop_done:; - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_path); -- __Pyx_DECREF(((PyObject *)__pyx_v_self->_path)); -+ __Pyx_DECREF(__pyx_v_self->_path); - __pyx_v_self->_path = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - -@@ -3693,23 +4776,26 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_14maybe_parse_url(s - * self._fragment = self._parsed_url.fragment or "" - * - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_parsed_url, __pyx_n_s__query); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- if (!__pyx_t_5) { -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_INCREF(((PyObject *)__pyx_kp_s_1)); -- __pyx_t_6 = __pyx_kp_s_1; -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_parsed_url, __pyx_n_s_query); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 275, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 275, __pyx_L1_error) -+ if (!__pyx_t_4) { -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { -- __pyx_t_6 = __pyx_t_1; -- __pyx_t_1 = 0; -+ if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 275, __pyx_L1_error) -+ __Pyx_INCREF(__pyx_t_2); -+ __pyx_t_1 = __pyx_t_2; -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ goto __pyx_L8_bool_binop_done; - } -- if (!(likely(PyString_CheckExact(__pyx_t_6))||(PyErr_Format(PyExc_TypeError, "Expected str, got %.200s", Py_TYPE(__pyx_t_6)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GIVEREF(__pyx_t_6); -+ __Pyx_INCREF(__pyx_kp_s_); -+ __pyx_t_1 = __pyx_kp_s_; -+ __pyx_L8_bool_binop_done:; -+ __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_query_string); -- __Pyx_DECREF(((PyObject *)__pyx_v_self->_query_string)); -- __pyx_v_self->_query_string = ((PyObject*)__pyx_t_6); -- __pyx_t_6 = 0; -+ __Pyx_DECREF(__pyx_v_self->_query_string); -+ __pyx_v_self->_query_string = ((PyObject*)__pyx_t_1); -+ __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":276 - * self._path = self._parsed_url.path or "" -@@ -3718,33 +4804,52 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_14maybe_parse_url(s - * - * def get_path(self): - */ -- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_parsed_url, __pyx_n_s__fragment); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- if (!__pyx_t_5) { -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_INCREF(((PyObject *)__pyx_kp_s_1)); -- __pyx_t_1 = __pyx_kp_s_1; -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_parsed_url, __pyx_n_s_fragment); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 276, __pyx_L1_error) -+ if (!__pyx_t_4) { -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { -- __pyx_t_1 = __pyx_t_6; -- __pyx_t_6 = 0; -+ if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 276, __pyx_L1_error) -+ __Pyx_INCREF(__pyx_t_2); -+ __pyx_t_1 = __pyx_t_2; -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ goto __pyx_L10_bool_binop_done; - } -- if (!(likely(PyString_CheckExact(__pyx_t_1))||(PyErr_Format(PyExc_TypeError, "Expected str, got %.200s", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __Pyx_INCREF(__pyx_kp_s_); -+ __pyx_t_1 = __pyx_kp_s_; -+ __pyx_L10_bool_binop_done:; - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_fragment); -- __Pyx_DECREF(((PyObject *)__pyx_v_self->_fragment)); -+ __Pyx_DECREF(__pyx_v_self->_fragment); - __pyx_v_self->_fragment = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; -- goto __pyx_L3; -+ -+ /* "http_parser/parser.pyx":272 -+ * def maybe_parse_url(self): -+ * raw_url = self.get_url() -+ * if not self._parsed_url and raw_url: # <<<<<<<<<<<<<< -+ * self._parsed_url = urlsplit(raw_url) -+ * self._path = self._parsed_url.path or "" -+ */ - } -- __pyx_L3:; - -+ /* "http_parser/parser.pyx":270 -+ * return self._data.url -+ * -+ * def maybe_parse_url(self): # <<<<<<<<<<<<<< -+ * raw_url = self.get_url() -+ * if not self._parsed_url and raw_url: -+ */ -+ -+ /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("http_parser.parser.HttpParser.maybe_parse_url", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -@@ -3754,6 +4859,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_14maybe_parse_url(s - return __pyx_r; - } - -+/* "http_parser/parser.pyx":278 -+ * self._fragment = self._parsed_url.fragment or "" -+ * -+ * def get_path(self): # <<<<<<<<<<<<<< -+ * """ get path of the request (url without query string and -+ * fragment """ -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_17get_path(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_16get_path[] = " get path of the request (url without query string and\n fragment "; -@@ -3762,26 +4875,18 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_17get_path(PyObject - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_path (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_16get_path(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":278 -- * self._fragment = self._parsed_url.fragment or "" -- * -- * def get_path(self): # <<<<<<<<<<<<<< -- * """ get path of the request (url without query string and -- * fragment """ -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_16get_path(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - 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; -+ PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("get_path", 0); - - /* "http_parser/parser.pyx":281 -@@ -3791,12 +4896,27 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_16get_path(struct _ - * return self._path - * - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__maybe_parse_url); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maybe_parse_url); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 281, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ if (__pyx_t_3) { -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else { -+ __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) -+ } -+ __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":282 - * fragment """ -@@ -3806,15 +4926,23 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_16get_path(struct _ - * def get_query_string(self): - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(((PyObject *)__pyx_v_self->_path)); -- __pyx_r = ((PyObject *)__pyx_v_self->_path); -+ __Pyx_INCREF(__pyx_v_self->_path); -+ __pyx_r = __pyx_v_self->_path; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":278 -+ * self._fragment = self._parsed_url.fragment or "" -+ * -+ * def get_path(self): # <<<<<<<<<<<<<< -+ * """ get path of the request (url without query string and -+ * fragment """ -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("http_parser.parser.HttpParser.get_path", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -@@ -3823,6 +4951,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_16get_path(struct _ - return __pyx_r; - } - -+/* "http_parser/parser.pyx":284 -+ * return self._path -+ * -+ * def get_query_string(self): # <<<<<<<<<<<<<< -+ * """ get query string of the url """ -+ * self.maybe_parse_url() -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_19get_query_string(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_18get_query_string[] = " get query string of the url "; -@@ -3831,26 +4967,18 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_19get_query_string( - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_query_string (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_18get_query_string(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":284 -- * return self._path -- * -- * def get_query_string(self): # <<<<<<<<<<<<<< -- * """ get query string of the url """ -- * self.maybe_parse_url() -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_18get_query_string(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - 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; -+ PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("get_query_string", 0); - - /* "http_parser/parser.pyx":286 -@@ -3860,12 +4988,27 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_18get_query_string( - * return self._query_string - * - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__maybe_parse_url); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maybe_parse_url); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 286, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ if (__pyx_t_3) { -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 286, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else { -+ __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 286, __pyx_L1_error) -+ } -+ __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":287 - * """ get query string of the url """ -@@ -3875,15 +5018,23 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_18get_query_string( - * def get_fragment(self): - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(((PyObject *)__pyx_v_self->_query_string)); -- __pyx_r = ((PyObject *)__pyx_v_self->_query_string); -+ __Pyx_INCREF(__pyx_v_self->_query_string); -+ __pyx_r = __pyx_v_self->_query_string; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":284 -+ * return self._path -+ * -+ * def get_query_string(self): # <<<<<<<<<<<<<< -+ * """ get query string of the url """ -+ * self.maybe_parse_url() -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("http_parser.parser.HttpParser.get_query_string", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -@@ -3892,6 +5043,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_18get_query_string( - return __pyx_r; - } - -+/* "http_parser/parser.pyx":289 -+ * return self._query_string -+ * -+ * def get_fragment(self): # <<<<<<<<<<<<<< -+ * """ get fragment of the url """ -+ * self.maybe_parse_url() -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_21get_fragment(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_20get_fragment[] = " get fragment of the url "; -@@ -3900,26 +5059,18 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_21get_fragment(PyOb - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_fragment (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_20get_fragment(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":289 -- * return self._query_string -- * -- * def get_fragment(self): # <<<<<<<<<<<<<< -- * """ get fragment of the url """ -- * self.maybe_parse_url() -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_20get_fragment(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - 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; -+ PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("get_fragment", 0); - - /* "http_parser/parser.pyx":291 -@@ -3929,12 +5080,27 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_20get_fragment(stru - * return self._fragment - * - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__maybe_parse_url); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maybe_parse_url); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 291, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ if (__pyx_t_3) { -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 291, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else { -+ __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 291, __pyx_L1_error) -+ } -+ __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":292 - * """ get fragment of the url """ -@@ -3944,15 +5110,23 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_20get_fragment(stru - * def get_headers(self): - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(((PyObject *)__pyx_v_self->_fragment)); -- __pyx_r = ((PyObject *)__pyx_v_self->_fragment); -+ __Pyx_INCREF(__pyx_v_self->_fragment); -+ __pyx_r = __pyx_v_self->_fragment; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":289 -+ * return self._query_string -+ * -+ * def get_fragment(self): # <<<<<<<<<<<<<< -+ * """ get fragment of the url """ -+ * self.maybe_parse_url() -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("http_parser.parser.HttpParser.get_fragment", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -@@ -3961,6 +5135,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_20get_fragment(stru - return __pyx_r; - } - -+/* "http_parser/parser.pyx":294 -+ * return self._fragment -+ * -+ * def get_headers(self): # <<<<<<<<<<<<<< -+ * """ get request/response headers, headers are returned in a -+ * OrderedDict that allows you to get value using insensitive keys. """ -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_23get_headers(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_22get_headers[] = " get request/response headers, headers are returned in a\n OrderedDict that allows you to get value using insensitive keys. "; -@@ -3969,25 +5151,16 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_23get_headers(PyObj - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_headers (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_22get_headers(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":294 -- * return self._fragment -- * -- * def get_headers(self): # <<<<<<<<<<<<<< -- * """ get request/response headers, headers are returned in a -- * OrderedDict that allows you to get value using insensitive keys. """ -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_22get_headers(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - 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("get_headers", 0); - - /* "http_parser/parser.pyx":297 -@@ -3998,14 +5171,21 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_22get_headers(struc - * def get_wsgi_environ(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s__headers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s_headers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 297, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":294 -+ * return self._fragment -+ * -+ * def get_headers(self): # <<<<<<<<<<<<<< -+ * """ get request/response headers, headers are returned in a -+ * OrderedDict that allows you to get value using insensitive keys. """ -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("http_parser.parser.HttpParser.get_headers", __pyx_clineno, __pyx_lineno, __pyx_filename); -@@ -4016,6 +5196,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_22get_headers(struc - return __pyx_r; - } - -+/* "http_parser/parser.pyx":299 -+ * return self._data.headers -+ * -+ * def get_wsgi_environ(self): # <<<<<<<<<<<<<< -+ * """ get WSGI environ based on the current request """ -+ * self.maybe_parse_url() -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_25get_wsgi_environ(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_24get_wsgi_environ[] = " get WSGI environ based on the current request "; -@@ -4024,18 +5212,12 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_25get_wsgi_environ( - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_wsgi_environ (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":299 -- * return self._data.headers -- * -- * def get_wsgi_environ(self): # <<<<<<<<<<<<<< -- * """ get WSGI environ based on the current request """ -- * self.maybe_parse_url() -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - PyObject *__pyx_v_environ = NULL; - PyObject *__pyx_v_script_name = NULL; -@@ -4047,16 +5229,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; -- Py_ssize_t __pyx_t_3; -- PyObject *(*__pyx_t_4)(PyObject *); -- PyObject *__pyx_t_5 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ Py_ssize_t __pyx_t_4; -+ PyObject *(*__pyx_t_5)(PyObject *); - PyObject *__pyx_t_6 = NULL; - 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; -+ int __pyx_t_10; - __Pyx_RefNannySetupContext("get_wsgi_environ", 0); - - /* "http_parser/parser.pyx":301 -@@ -4066,12 +5246,27 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * - * environ = dict() - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__maybe_parse_url); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maybe_parse_url); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 301, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ if (__pyx_t_3) { -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 301, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else { -+ __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 301, __pyx_L1_error) -+ } -+ __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":303 - * self.maybe_parse_url() -@@ -4080,10 +5275,10 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * script_name = os.environ.get("SCRIPT_NAME", "") - * for key, val in self._data.headers.items(): - */ -- __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -- __pyx_v_environ = ((PyObject*)__pyx_t_2); -- __pyx_t_2 = 0; -+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 303, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_v_environ = ((PyObject*)__pyx_t_1); -+ __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":304 - * -@@ -4092,19 +5287,19 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * for key, val in self._data.headers.items(): - * ku = key.upper() - */ -- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__os); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__environ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 304, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__get); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_environ); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 304, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_12), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 304, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v_script_name = __pyx_t_1; -- __pyx_t_1 = 0; -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 304, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v_script_name = __pyx_t_2; -+ __pyx_t_2 = 0; - - /* "http_parser/parser.pyx":305 - * environ = dict() -@@ -4113,90 +5308,105 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * ku = key.upper() - * if ku == "CONTENT-TYPE": - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s__headers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s_headers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_items); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 305, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (PyList_CheckExact(__pyx_t_1) || PyTuple_CheckExact(__pyx_t_1)) { -- __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; -- __pyx_t_4 = NULL; -+ __pyx_t_1 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { -+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); -+ if (likely(__pyx_t_1)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_3, function); -+ } -+ } -+ if (__pyx_t_1) { -+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 305, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { -- __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; -+ __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 305, __pyx_L1_error) - } -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) { -+ __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; -+ __pyx_t_5 = NULL; -+ } else { -+ __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 305, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 305, __pyx_L1_error) -+ } -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - for (;;) { -- if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_2)) { -- if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; -- #if CYTHON_COMPILING_IN_CPYTHON -- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- #else -- __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- #endif -- } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_2)) { -- if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -- #if CYTHON_COMPILING_IN_CPYTHON -- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- #else -- __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- #endif -+ if (likely(!__pyx_t_5)) { -+ if (likely(PyList_CheckExact(__pyx_t_3))) { -+ if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break; -+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 305, __pyx_L1_error) -+ #else -+ __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 305, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ #endif -+ } else { -+ if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break; -+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 305, __pyx_L1_error) -+ #else -+ __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 305, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ #endif -+ } - } else { -- __pyx_t_1 = __pyx_t_4(__pyx_t_2); -- if (unlikely(!__pyx_t_1)) { -- if (PyErr_Occurred()) { -- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -- else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __pyx_t_5(__pyx_t_3); -+ if (unlikely(!__pyx_t_2)) { -+ PyObject* exc_type = PyErr_Occurred(); -+ if (exc_type) { -+ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); -+ else __PYX_ERR(0, 305, __pyx_L1_error) - } - break; - } -- __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_t_2); - } -- if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { -- PyObject* sequence = __pyx_t_1; -- #if CYTHON_COMPILING_IN_CPYTHON -- Py_ssize_t size = Py_SIZE(sequence); -- #else -- Py_ssize_t size = PySequence_Size(sequence); -- #endif -+ if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { -+ PyObject* sequence = __pyx_t_2; -+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); -- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __PYX_ERR(0, 305, __pyx_L1_error) - } -- #if CYTHON_COMPILING_IN_CPYTHON -+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { -- __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); -+ __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); - } else { -- __pyx_t_5 = PyList_GET_ITEM(sequence, 0); -+ __pyx_t_1 = PyList_GET_ITEM(sequence, 0); - __pyx_t_6 = PyList_GET_ITEM(sequence, 1); - } -- __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_6); - #else -- __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_5); -- __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 305, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - #endif -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- } else -- { -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ } else { - Py_ssize_t index = -1; -- __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 305, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; -- index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; -- __Pyx_GOTREF(__pyx_t_5); -+ index = 0; __pyx_t_1 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed; -+ __Pyx_GOTREF(__pyx_t_1); - index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 305, __pyx_L1_error) - __pyx_t_8 = NULL; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L6_unpacking_done; -@@ -4204,14 +5414,12 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_8 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); -- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __PYX_ERR(0, 305, __pyx_L1_error) - __pyx_L6_unpacking_done:; - } -- __Pyx_XDECREF(__pyx_v_key); -- __pyx_v_key = __pyx_t_5; -- __pyx_t_5 = 0; -- __Pyx_XDECREF(__pyx_v_val); -- __pyx_v_val = __pyx_t_6; -+ __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_1); -+ __pyx_t_1 = 0; -+ __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_6); - __pyx_t_6 = 0; - - /* "http_parser/parser.pyx":306 -@@ -4221,14 +5429,28 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * if ku == "CONTENT-TYPE": - * environ['CONTENT_TYPE'] = val - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s__upper); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_6 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_upper); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 306, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_XDECREF(__pyx_v_ku); -- __pyx_v_ku = __pyx_t_6; -- __pyx_t_6 = 0; -+ __pyx_t_1 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_1)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); -+ } -+ } -+ if (__pyx_t_1) { -+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 306, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ } else { -+ __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 306, __pyx_L1_error) -+ } -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_XDECREF_SET(__pyx_v_ku, __pyx_t_2); -+ __pyx_t_2 = 0; - - /* "http_parser/parser.pyx":307 - * for key, val in self._data.headers.items(): -@@ -4237,9 +5459,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * environ['CONTENT_TYPE'] = val - * elif ku == "CONTENT-LENGTH": - */ -- __pyx_t_6 = PyObject_RichCompare(__pyx_v_ku, ((PyObject *)__pyx_kp_s_13), Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_ku, __pyx_kp_s_CONTENT_TYPE, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 307, __pyx_L1_error) - if (__pyx_t_9) { - - /* "http_parser/parser.pyx":308 -@@ -4249,7 +5469,15 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * elif ku == "CONTENT-LENGTH": - * environ['CONTENT_LENGTH'] = val - */ -- if (PyDict_SetItem(((PyObject *)__pyx_v_environ), ((PyObject *)__pyx_n_s__CONTENT_TYPE), __pyx_v_val) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (unlikely(PyDict_SetItem(__pyx_v_environ, __pyx_n_s_CONTENT_TYPE_2, __pyx_v_val) < 0)) __PYX_ERR(0, 308, __pyx_L1_error) -+ -+ /* "http_parser/parser.pyx":307 -+ * for key, val in self._data.headers.items(): -+ * ku = key.upper() -+ * if ku == "CONTENT-TYPE": # <<<<<<<<<<<<<< -+ * environ['CONTENT_TYPE'] = val -+ * elif ku == "CONTENT-LENGTH": -+ */ - goto __pyx_L7; - } - -@@ -4260,9 +5488,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * environ['CONTENT_LENGTH'] = val - * elif ku == "SCRIPT_NAME": - */ -- __pyx_t_6 = PyObject_RichCompare(__pyx_v_ku, ((PyObject *)__pyx_kp_s_14), Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_ku, __pyx_kp_s_CONTENT_LENGTH, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 309, __pyx_L1_error) - if (__pyx_t_9) { - - /* "http_parser/parser.pyx":310 -@@ -4272,7 +5498,15 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * elif ku == "SCRIPT_NAME": - * environ['SCRIPT_NAME'] = val - */ -- if (PyDict_SetItem(((PyObject *)__pyx_v_environ), ((PyObject *)__pyx_n_s__CONTENT_LENGTH), __pyx_v_val) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (unlikely(PyDict_SetItem(__pyx_v_environ, __pyx_n_s_CONTENT_LENGTH_2, __pyx_v_val) < 0)) __PYX_ERR(0, 310, __pyx_L1_error) -+ -+ /* "http_parser/parser.pyx":309 -+ * if ku == "CONTENT-TYPE": -+ * environ['CONTENT_TYPE'] = val -+ * elif ku == "CONTENT-LENGTH": # <<<<<<<<<<<<<< -+ * environ['CONTENT_LENGTH'] = val -+ * elif ku == "SCRIPT_NAME": -+ */ - goto __pyx_L7; - } - -@@ -4283,9 +5517,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * environ['SCRIPT_NAME'] = val - * else: - */ -- __pyx_t_6 = PyObject_RichCompare(__pyx_v_ku, ((PyObject *)__pyx_n_s__SCRIPT_NAME), Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_ku, __pyx_n_s_SCRIPT_NAME, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 311, __pyx_L1_error) - if (__pyx_t_9) { - - /* "http_parser/parser.pyx":312 -@@ -4295,32 +5527,48 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * else: - * environ['HTTP_%s' % ku.replace('-','_')] = val - */ -- if (PyDict_SetItem(((PyObject *)__pyx_v_environ), ((PyObject *)__pyx_n_s__SCRIPT_NAME), __pyx_v_val) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (unlikely(PyDict_SetItem(__pyx_v_environ, __pyx_n_s_SCRIPT_NAME, __pyx_v_val) < 0)) __PYX_ERR(0, 312, __pyx_L1_error) -+ -+ /* "http_parser/parser.pyx":311 -+ * elif ku == "CONTENT-LENGTH": -+ * environ['CONTENT_LENGTH'] = val -+ * elif ku == "SCRIPT_NAME": # <<<<<<<<<<<<<< -+ * environ['SCRIPT_NAME'] = val -+ * else: -+ */ - goto __pyx_L7; - } -- /*else*/ { - -- /* "http_parser/parser.pyx":314 -+ /* "http_parser/parser.pyx":314 - * environ['SCRIPT_NAME'] = val - * else: - * environ['HTTP_%s' % ku.replace('-','_')] = val # <<<<<<<<<<<<<< - * - * if script_name: - */ -- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_ku, __pyx_n_s__replace); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ /*else*/ { -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_ku, __pyx_n_s_replace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 314, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 314, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_17), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_HTTP__s, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 314, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_15), __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(((PyObject *)__pyx_t_6)); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- if (PyDict_SetItem(((PyObject *)__pyx_v_environ), ((PyObject *)__pyx_t_6), __pyx_v_val) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; -+ if (unlikely(PyDict_SetItem(__pyx_v_environ, __pyx_t_2, __pyx_v_val) < 0)) __PYX_ERR(0, 314, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __pyx_L7:; -+ -+ /* "http_parser/parser.pyx":305 -+ * environ = dict() -+ * script_name = os.environ.get("SCRIPT_NAME", "") -+ * for key, val in self._data.headers.items(): # <<<<<<<<<<<<<< -+ * ku = key.upper() -+ * if ku == "CONTENT-TYPE": -+ */ - } -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "http_parser/parser.pyx":316 - * environ['HTTP_%s' % ku.replace('-','_')] = val -@@ -4329,7 +5577,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * path_info = self._path.split(script_name, 1)[1] - * else: - */ -- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_script_name); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_script_name); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 316, __pyx_L1_error) - if (__pyx_t_9) { - - /* "http_parser/parser.pyx":317 -@@ -4339,55 +5587,84 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * else: - * path_info = self._path - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_path), __pyx_n_s__split); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_path, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_6); -- __Pyx_INCREF(__pyx_v_script_name); -- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_script_name); -- __Pyx_GIVEREF(__pyx_v_script_name); -- __Pyx_INCREF(__pyx_int_1); -- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_1); -- __Pyx_GIVEREF(__pyx_int_1); -- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_6 = NULL; -+ __pyx_t_10 = 0; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_6)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_6); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ __pyx_t_10 = 1; -+ } -+ } -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_script_name, __pyx_int_1}; -+ __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_GOTREF(__pyx_t_3); -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_script_name, __pyx_int_1}; -+ __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_GOTREF(__pyx_t_3); -+ } else -+ #endif -+ { -+ __pyx_t_1 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (__pyx_t_6) { -+ __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL; -+ } -+ __Pyx_INCREF(__pyx_v_script_name); -+ __Pyx_GIVEREF(__pyx_v_script_name); -+ PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_10, __pyx_v_script_name); -+ __Pyx_INCREF(__pyx_int_1); -+ __Pyx_GIVEREF(__pyx_int_1); -+ PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_10, __pyx_int_1); -+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; -- __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_6); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_v_path_info = __pyx_t_6; -- __pyx_t_6 = 0; -+ __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_v_path_info = __pyx_t_2; -+ __pyx_t_2 = 0; -+ -+ /* "http_parser/parser.pyx":316 -+ * environ['HTTP_%s' % ku.replace('-','_')] = val -+ * -+ * if script_name: # <<<<<<<<<<<<<< -+ * path_info = self._path.split(script_name, 1)[1] -+ * else: -+ */ - goto __pyx_L8; - } -- /*else*/ { - -- /* "http_parser/parser.pyx":319 -+ /* "http_parser/parser.pyx":319 - * path_info = self._path.split(script_name, 1)[1] - * else: - * path_info = self._path # <<<<<<<<<<<<<< - * - * environ.update({ - */ -- __pyx_t_6 = ((PyObject *)__pyx_v_self->_path); -- __Pyx_INCREF(__pyx_t_6); -- __pyx_v_path_info = __pyx_t_6; -- __pyx_t_6 = 0; -+ /*else*/ { -+ __pyx_t_2 = __pyx_v_self->_path; -+ __Pyx_INCREF(__pyx_t_2); -+ __pyx_v_path_info = __pyx_t_2; -+ __pyx_t_2 = 0; - } - __pyx_L8:; - -- /* "http_parser/parser.pyx":321 -- * path_info = self._path -- * -- * environ.update({ # <<<<<<<<<<<<<< -- * 'REQUEST_METHOD': self.get_method(), -- * 'SERVER_PROTOCOL': "HTTP/%s" % ".".join(map(str, -- */ -- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_environ), __pyx_n_s__update); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -- - /* "http_parser/parser.pyx":322 - * - * environ.update({ -@@ -4395,23 +5672,30 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * 'SERVER_PROTOCOL': "HTTP/%s" % ".".join(map(str, - * self.get_version())), - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_method); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__REQUEST_METHOD), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- -- /* "http_parser/parser.pyx":323 -- * environ.update({ -- * 'REQUEST_METHOD': self.get_method(), -- * 'SERVER_PROTOCOL': "HTTP/%s" % ".".join(map(str, # <<<<<<<<<<<<<< -- * self.get_version())), -- * 'PATH_INFO': path_info, -- */ -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_19), __pyx_n_s__join); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_5); -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_6 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { -+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); -+ if (likely(__pyx_t_6)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); -+ __Pyx_INCREF(__pyx_t_6); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_1, function); -+ } -+ } -+ if (__pyx_t_6) { -+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ } else { -+ __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L1_error) -+ } -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_REQUEST_METHOD, __pyx_t_3) < 0) __PYX_ERR(0, 322, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "http_parser/parser.pyx":324 - * 'REQUEST_METHOD': self.get_method(), -@@ -4420,36 +5704,53 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * 'PATH_INFO': path_info, - * 'SCRIPT_NAME': script_name, - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_version); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_7 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_7); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_INCREF(((PyObject *)((PyObject*)(&PyString_Type)))); -- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)((PyObject*)(&PyString_Type)))); -- __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyString_Type)))); -- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_7); -- __Pyx_GIVEREF(__pyx_t_7); -- __pyx_t_7 = 0; -- __pyx_t_7 = PyObject_Call(__pyx_builtin_map, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_7); -- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7); -- __Pyx_GIVEREF(__pyx_t_7); -- __pyx_t_7 = 0; -- __pyx_t_7 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_7); -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -- __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_18), __pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__SERVER_PROTOCOL), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_version); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_6 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { -+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); -+ if (likely(__pyx_t_6)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); -+ __Pyx_INCREF(__pyx_t_6); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_1, function); -+ } -+ } -+ if (__pyx_t_6) { -+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 324, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ } else { -+ __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 324, __pyx_L1_error) -+ } -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "http_parser/parser.pyx":323 -+ * environ.update({ -+ * 'REQUEST_METHOD': self.get_method(), -+ * 'SERVER_PROTOCOL': "HTTP/%s" % ".".join(map(str, # <<<<<<<<<<<<<< -+ * self.get_version())), -+ * 'PATH_INFO': path_info, -+ */ -+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_INCREF(((PyObject *)(&PyString_Type))); -+ __Pyx_GIVEREF(((PyObject *)(&PyString_Type))); -+ PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)(&PyString_Type))); -+ __Pyx_GIVEREF(__pyx_t_3); -+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3); -+ __pyx_t_3 = 0; -+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_1 = __Pyx_PyString_Join(__pyx_kp_s__9, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_HTTP_s, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_SERVER_PROTOCOL, __pyx_t_3) < 0) __PYX_ERR(0, 322, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "http_parser/parser.pyx":325 - * 'SERVER_PROTOCOL': "HTTP/%s" % ".".join(map(str, -@@ -4458,7 +5759,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * 'SCRIPT_NAME': script_name, - * 'QUERY_STRING': self._query_string, - */ -- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__PATH_INFO), __pyx_v_path_info) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_PATH_INFO, __pyx_v_path_info) < 0) __PYX_ERR(0, 322, __pyx_L1_error) - - /* "http_parser/parser.pyx":326 - * self.get_version())), -@@ -4467,7 +5768,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * 'QUERY_STRING': self._query_string, - * 'RAW_URI': self._data.url}) - */ -- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__SCRIPT_NAME), __pyx_v_script_name) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_SCRIPT_NAME, __pyx_v_script_name) < 0) __PYX_ERR(0, 322, __pyx_L1_error) - - /* "http_parser/parser.pyx":327 - * 'PATH_INFO': path_info, -@@ -4476,7 +5777,7 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * 'RAW_URI': self._data.url}) - * - */ -- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__QUERY_STRING), ((PyObject *)__pyx_v_self->_query_string)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_QUERY_STRING, __pyx_v_self->_query_string) < 0) __PYX_ERR(0, 322, __pyx_L1_error) - - /* "http_parser/parser.pyx":328 - * 'SCRIPT_NAME': script_name, -@@ -4485,20 +5786,22 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * - * return environ - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s__url); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__RAW_URI), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s_url); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 328, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_RAW_URI, __pyx_t_3) < 0) __PYX_ERR(0, 322, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ -+ /* "http_parser/parser.pyx":321 -+ * path_info = self._path -+ * -+ * environ.update({ # <<<<<<<<<<<<<< -+ * 'REQUEST_METHOD': self.get_method(), -+ * 'SERVER_PROTOCOL': "HTTP/%s" % ".".join(map(str, -+ */ -+ __pyx_t_3 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_update, __pyx_v_environ, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1)); -- __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); -- __pyx_t_1 = 0; -- __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "http_parser/parser.pyx":330 - * 'RAW_URI': self._data.url}) -@@ -4508,16 +5811,23 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - * def recv_body(self): - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(((PyObject *)__pyx_v_environ)); -- __pyx_r = ((PyObject *)__pyx_v_environ); -+ __Pyx_INCREF(__pyx_v_environ); -+ __pyx_r = __pyx_v_environ; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":299 -+ * return self._data.headers -+ * -+ * def get_wsgi_environ(self): # <<<<<<<<<<<<<< -+ * """ get WSGI environ based on the current request """ -+ * self.maybe_parse_url() -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("http_parser.parser.HttpParser.get_wsgi_environ", __pyx_clineno, __pyx_lineno, __pyx_filename); -@@ -4534,6 +5844,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_24get_wsgi_environ( - return __pyx_r; - } - -+/* "http_parser/parser.pyx":332 -+ * return environ -+ * -+ * def recv_body(self): # <<<<<<<<<<<<<< -+ * """ return last chunk of the parsed body""" -+ * body = b("").join(self._data.body) -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_27recv_body(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_26recv_body[] = " return last chunk of the parsed body"; -@@ -4542,18 +5860,12 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_27recv_body(PyObjec - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("recv_body (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_26recv_body(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":332 -- * return environ -- * -- * def recv_body(self): # <<<<<<<<<<<<<< -- * """ return last chunk of the parsed body""" -- * body = b("").join(self._data.body) -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_26recv_body(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - PyObject *__pyx_v_body = NULL; - PyObject *__pyx_r = NULL; -@@ -4561,9 +5873,8 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_26recv_body(struct - 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; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("recv_body", 0); - - /* "http_parser/parser.pyx":334 -@@ -4573,52 +5884,86 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_26recv_body(struct - * self._data.body = [] - * self._data.partial_body = False - */ -- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__b); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_20), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_b); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 334, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 334, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s__body); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_join); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 334, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s_body); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 334, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); -- __Pyx_GIVEREF(__pyx_t_2); -- __pyx_t_2 = 0; -- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -- __pyx_v_body = __pyx_t_2; -- __pyx_t_2 = 0; -- -- /* "http_parser/parser.pyx":335 -- * """ return last chunk of the parsed body""" -- * body = b("").join(self._data.body) -- * self._data.body = [] # <<<<<<<<<<<<<< -- * self._data.partial_body = False -- * return body -- */ -- __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self->_data, __pyx_n_s__body, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -- -- /* "http_parser/parser.pyx":336 -- * body = b("").join(self._data.body) -- * self._data.body = [] -- * self._data.partial_body = False # <<<<<<<<<<<<<< -- * return body -- * -- */ -- __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self->_data, __pyx_n_s__partial_body, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ if (!__pyx_t_4) { -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ } else { -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; -+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; -+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else -+ #endif -+ { -+ __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 334, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; -+ __Pyx_GIVEREF(__pyx_t_3); -+ PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3); -+ __pyx_t_3 = 0; -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ } -+ } -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_v_body = __pyx_t_1; -+ __pyx_t_1 = 0; -+ -+ /* "http_parser/parser.pyx":335 -+ * """ return last chunk of the parsed body""" -+ * body = b("").join(self._data.body) -+ * self._data.body = [] # <<<<<<<<<<<<<< -+ * self._data.partial_body = False -+ * return body -+ */ -+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self->_data, __pyx_n_s_body, __pyx_t_1) < 0) __PYX_ERR(0, 335, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "http_parser/parser.pyx":336 -+ * body = b("").join(self._data.body) -+ * self._data.body = [] -+ * self._data.partial_body = False # <<<<<<<<<<<<<< -+ * return body -+ * -+ */ -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self->_data, __pyx_n_s_partial_body, Py_False) < 0) __PYX_ERR(0, 336, __pyx_L1_error) -+ - /* "http_parser/parser.pyx":337 - * self._data.body = [] - * self._data.partial_body = False -@@ -4631,12 +5976,21 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_26recv_body(struct - __pyx_r = __pyx_v_body; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":332 -+ * return environ -+ * -+ * def recv_body(self): # <<<<<<<<<<<<<< -+ * """ return last chunk of the parsed body""" -+ * body = b("").join(self._data.body) -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("http_parser.parser.HttpParser.recv_body", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -@@ -4646,6 +6000,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_26recv_body(struct - return __pyx_r; - } - -+/* "http_parser/parser.pyx":339 -+ * return body -+ * -+ * def recv_body_into(self, barray): # <<<<<<<<<<<<<< -+ * """ Receive the last chunk of the parsed bodyand store the data -+ * in a buffer rather than creating a new string. """ -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_29recv_body_into(PyObject *__pyx_v_self, PyObject *__pyx_v_barray); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_28recv_body_into[] = " Receive the last chunk of the parsed bodyand store the data\n in a buffer rather than creating a new string. "; -@@ -4654,22 +6016,16 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_29recv_body_into(Py - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("recv_body_into (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_28recv_body_into(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self), ((PyObject *)__pyx_v_barray)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":339 -- * return body -- * -- * def recv_body_into(self, barray): # <<<<<<<<<<<<<< -- * """ Receive the last chunk of the parsed bodyand store the data -- * in a buffer rather than creating a new string. """ -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_28recv_body_into(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self, PyObject *__pyx_v_barray) { -- PyObject *__pyx_v_l = NULL; -+ Py_ssize_t __pyx_v_l; - PyObject *__pyx_v_body = NULL; -- PyObject *__pyx_v_m = NULL; -+ Py_ssize_t __pyx_v_m; - PyObject *__pyx_v_data = NULL; - PyObject *__pyx_v_rest = NULL; - PyObject *__pyx_r = NULL; -@@ -4679,11 +6035,11 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_28recv_body_into(st - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; -- int __pyx_t_6; -- int __pyx_t_7; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -+ PyObject *__pyx_t_6 = NULL; -+ Py_ssize_t __pyx_t_7; -+ Py_ssize_t __pyx_t_8; -+ int __pyx_t_9; -+ int __pyx_t_10; - __Pyx_RefNannySetupContext("recv_body_into", 0); - - /* "http_parser/parser.pyx":342 -@@ -4693,11 +6049,8 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_28recv_body_into(st - * body = b("").join(self._data.body) - * m = min(len(body), l) - */ -- __pyx_t_1 = PyObject_Length(__pyx_v_barray); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_v_l = __pyx_t_2; -- __pyx_t_2 = 0; -+ __pyx_t_1 = PyObject_Length(__pyx_v_barray); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 342, __pyx_L1_error) -+ __pyx_v_l = __pyx_t_1; - - /* "http_parser/parser.pyx":343 - * in a buffer rather than creating a new string. """ -@@ -4706,27 +6059,64 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_28recv_body_into(st - * m = min(len(body), l) - * data, rest = body[:m], body[m:] - */ -- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__b); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_21), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_b); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 343, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__join); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 343, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s__body); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_join); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 343, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s_body); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 343, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); -- __Pyx_GIVEREF(__pyx_t_3); -- __pyx_t_3 = 0; -- __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; -- __pyx_v_body = __pyx_t_3; -- __pyx_t_3 = 0; -+ __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_3, function); -+ } -+ } -+ if (!__pyx_t_5) { -+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 343, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_GOTREF(__pyx_t_2); -+ } else { -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_3)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4}; -+ __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 343, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { -+ PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4}; -+ __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 343, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ } else -+ #endif -+ { -+ __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 343, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; -+ __Pyx_GIVEREF(__pyx_t_4); -+ PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4); -+ __pyx_t_4 = 0; -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 343, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ } -+ } -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_v_body = __pyx_t_2; -+ __pyx_t_2 = 0; - - /* "http_parser/parser.pyx":344 - * l = len(barray) -@@ -4735,30 +6125,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_28recv_body_into(st - * data, rest = body[:m], body[m:] - * barray[0:m] = bytes(data) - */ -- __Pyx_INCREF(__pyx_v_l); -- __pyx_t_3 = __pyx_v_l; -- __pyx_t_1 = PyObject_Length(__pyx_v_body); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (__pyx_t_6) { -- __Pyx_INCREF(__pyx_t_3); -- __pyx_t_4 = __pyx_t_3; -+ __pyx_t_1 = __pyx_v_l; -+ __pyx_t_7 = PyObject_Length(__pyx_v_body); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 344, __pyx_L1_error) -+ if (((__pyx_t_1 < __pyx_t_7) != 0)) { -+ __pyx_t_8 = __pyx_t_1; - } else { -- __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_5); -- __pyx_t_4 = __pyx_t_5; -- __pyx_t_5 = 0; -+ __pyx_t_8 = __pyx_t_7; - } -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_t_3 = __pyx_t_4; -- __Pyx_INCREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __pyx_v_m = __pyx_t_3; -- __pyx_t_3 = 0; -+ __pyx_v_m = __pyx_t_8; - - /* "http_parser/parser.pyx":345 - * body = b("").join(self._data.body) -@@ -4767,14 +6141,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_28recv_body_into(st - * barray[0:m] = bytes(data) - * if not rest: - */ -- __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_body, 0, 0, NULL, &__pyx_v_m, NULL, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_body, 0, __pyx_v_m, NULL, NULL, NULL, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 345, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_body, __pyx_v_m, 0, NULL, NULL, NULL, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_body, 0, 0, &__pyx_v_m, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_v_data = __pyx_t_3; -+ __pyx_v_data = __pyx_t_2; -+ __pyx_t_2 = 0; -+ __pyx_v_rest = __pyx_t_3; - __pyx_t_3 = 0; -- __pyx_v_rest = __pyx_t_4; -- __pyx_t_4 = 0; - - /* "http_parser/parser.pyx":346 - * m = min(len(body), l) -@@ -4783,15 +6157,9 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_28recv_body_into(st - * if not rest: - * self._data.body = [] - */ -- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_INCREF(__pyx_v_data); -- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_data); -- __Pyx_GIVEREF(__pyx_v_data); -- __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyBytes_Type))), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 346, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; -- if (__Pyx_PyObject_SetSlice(__pyx_v_barray, __pyx_t_3, 0, 0, NULL, &__pyx_v_m, NULL, 1, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (__Pyx_PyObject_SetSlice(__pyx_v_barray, __pyx_t_3, 0, __pyx_v_m, NULL, NULL, NULL, 1, 1, 1) < 0) __PYX_ERR(0, 346, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "http_parser/parser.pyx":347 -@@ -4801,9 +6169,9 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_28recv_body_into(st - * self._data.body = [] - * self._data.partial_body = False - */ -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_rest); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_7 = ((!__pyx_t_6) != 0); -- if (__pyx_t_7) { -+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_rest); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 347, __pyx_L1_error) -+ __pyx_t_10 = ((!__pyx_t_9) != 0); -+ if (__pyx_t_10) { - - /* "http_parser/parser.pyx":348 - * barray[0:m] = bytes(data) -@@ -4812,10 +6180,10 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_28recv_body_into(st - * self._data.partial_body = False - * else: - */ -- __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 348, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self->_data, __pyx_n_s__body, ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self->_data, __pyx_n_s_body, __pyx_t_3) < 0) __PYX_ERR(0, 348, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "http_parser/parser.pyx":349 - * if not rest: -@@ -4824,28 +6192,33 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_28recv_body_into(st - * else: - * self._data.body = [rest] - */ -- __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_3); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self->_data, __pyx_n_s__partial_body, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self->_data, __pyx_n_s_partial_body, Py_False) < 0) __PYX_ERR(0, 349, __pyx_L1_error) -+ -+ /* "http_parser/parser.pyx":347 -+ * data, rest = body[:m], body[m:] -+ * barray[0:m] = bytes(data) -+ * if not rest: # <<<<<<<<<<<<<< -+ * self._data.body = [] -+ * self._data.partial_body = False -+ */ - goto __pyx_L3; - } -- /*else*/ { - -- /* "http_parser/parser.pyx":351 -+ /* "http_parser/parser.pyx":351 - * self._data.partial_body = False - * else: - * self._data.body = [rest] # <<<<<<<<<<<<<< - * return m - * - */ -- __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ /*else*/ { -+ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 351, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_v_rest); -- PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_rest); - __Pyx_GIVEREF(__pyx_v_rest); -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self->_data, __pyx_n_s__body, ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -+ PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_rest); -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self->_data, __pyx_n_s_body, __pyx_t_3) < 0) __PYX_ERR(0, 351, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __pyx_L3:; - -@@ -4857,23 +6230,31 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_28recv_body_into(st - * def is_upgrade(self): - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_m); -- __pyx_r = __pyx_v_m; -+ __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_m); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 352, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_r = __pyx_t_3; -+ __pyx_t_3 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":339 -+ * return body -+ * -+ * def recv_body_into(self, barray): # <<<<<<<<<<<<<< -+ * """ Receive the last chunk of the parsed bodyand store the data -+ * in a buffer rather than creating a new string. """ -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("http_parser.parser.HttpParser.recv_body_into", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_l); - __Pyx_XDECREF(__pyx_v_body); -- __Pyx_XDECREF(__pyx_v_m); - __Pyx_XDECREF(__pyx_v_data); - __Pyx_XDECREF(__pyx_v_rest); - __Pyx_XGIVEREF(__pyx_r); -@@ -4881,6 +6262,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_28recv_body_into(st - return __pyx_r; - } - -+/* "http_parser/parser.pyx":354 -+ * return m -+ * -+ * def is_upgrade(self): # <<<<<<<<<<<<<< -+ * """ Do we get upgrade header in the request. Useful for -+ * websockets """ -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_31is_upgrade(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_30is_upgrade[] = " Do we get upgrade header in the request. Useful for\n websockets "; -@@ -4889,25 +6278,16 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_31is_upgrade(PyObje - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("is_upgrade (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_30is_upgrade(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":354 -- * return m -- * -- * def is_upgrade(self): # <<<<<<<<<<<<<< -- * """ Do we get upgrade header in the request. Useful for -- * websockets """ -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_30is_upgrade(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - 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("is_upgrade", 0); - - /* "http_parser/parser.pyx":357 -@@ -4918,14 +6298,21 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_30is_upgrade(struct - * def is_headers_complete(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s___parser_upgrade); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parser_upgrade); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 357, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":354 -+ * return m -+ * -+ * def is_upgrade(self): # <<<<<<<<<<<<<< -+ * """ Do we get upgrade header in the request. Useful for -+ * websockets """ -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("http_parser.parser.HttpParser.is_upgrade", __pyx_clineno, __pyx_lineno, __pyx_filename); -@@ -4936,6 +6323,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_30is_upgrade(struct - return __pyx_r; - } - -+/* "http_parser/parser.pyx":359 -+ * return self._parser_upgrade -+ * -+ * def is_headers_complete(self): # <<<<<<<<<<<<<< -+ * """ return True if all headers have been parsed. """ -+ * return self._data.headers_complete -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_33is_headers_complete(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_32is_headers_complete[] = " return True if all headers have been parsed. "; -@@ -4944,25 +6339,16 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_33is_headers_comple - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("is_headers_complete (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_32is_headers_complete(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":359 -- * return self._parser_upgrade -- * -- * def is_headers_complete(self): # <<<<<<<<<<<<<< -- * """ return True if all headers have been parsed. """ -- * return self._data.headers_complete -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_32is_headers_complete(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - 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("is_headers_complete", 0); - - /* "http_parser/parser.pyx":361 -@@ -4973,14 +6359,21 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_32is_headers_comple - * def is_partial_body(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s__headers_complete); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s_headers_complete); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 361, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":359 -+ * return self._parser_upgrade -+ * -+ * def is_headers_complete(self): # <<<<<<<<<<<<<< -+ * """ return True if all headers have been parsed. """ -+ * return self._data.headers_complete -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("http_parser.parser.HttpParser.is_headers_complete", __pyx_clineno, __pyx_lineno, __pyx_filename); -@@ -4991,6 +6384,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_32is_headers_comple - return __pyx_r; - } - -+/* "http_parser/parser.pyx":363 -+ * return self._data.headers_complete -+ * -+ * def is_partial_body(self): # <<<<<<<<<<<<<< -+ * """ return True if a chunk of body have been parsed """ -+ * return self._data.partial_body -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_35is_partial_body(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_34is_partial_body[] = " return True if a chunk of body have been parsed "; -@@ -4999,25 +6400,16 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_35is_partial_body(P - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("is_partial_body (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_34is_partial_body(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":363 -- * return self._data.headers_complete -- * -- * def is_partial_body(self): # <<<<<<<<<<<<<< -- * """ return True if a chunk of body have been parsed """ -- * return self._data.partial_body -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_34is_partial_body(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - 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("is_partial_body", 0); - - /* "http_parser/parser.pyx":365 -@@ -5028,14 +6420,21 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_34is_partial_body(s - * def is_message_begin(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s__partial_body); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s_partial_body); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 365, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":363 -+ * return self._data.headers_complete -+ * -+ * def is_partial_body(self): # <<<<<<<<<<<<<< -+ * """ return True if a chunk of body have been parsed """ -+ * return self._data.partial_body -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("http_parser.parser.HttpParser.is_partial_body", __pyx_clineno, __pyx_lineno, __pyx_filename); -@@ -5046,6 +6445,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_34is_partial_body(s - return __pyx_r; - } - -+/* "http_parser/parser.pyx":367 -+ * return self._data.partial_body -+ * -+ * def is_message_begin(self): # <<<<<<<<<<<<<< -+ * """ return True if the parsing start """ -+ * return self._data.message_begin -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_37is_message_begin(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_36is_message_begin[] = " return True if the parsing start "; -@@ -5054,25 +6461,16 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_37is_message_begin( - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("is_message_begin (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_36is_message_begin(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":367 -- * return self._data.partial_body -- * -- * def is_message_begin(self): # <<<<<<<<<<<<<< -- * """ return True if the parsing start """ -- * return self._data.message_begin -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_36is_message_begin(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - 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("is_message_begin", 0); - - /* "http_parser/parser.pyx":369 -@@ -5083,14 +6481,21 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_36is_message_begin( - * def is_message_complete(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s__message_begin); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s_message_begin); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":367 -+ * return self._data.partial_body -+ * -+ * def is_message_begin(self): # <<<<<<<<<<<<<< -+ * """ return True if the parsing start """ -+ * return self._data.message_begin -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("http_parser.parser.HttpParser.is_message_begin", __pyx_clineno, __pyx_lineno, __pyx_filename); -@@ -5101,33 +6506,32 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_36is_message_begin( - return __pyx_r; - } - --/* Python wrapper */ --static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_39is_message_complete(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static char __pyx_doc_11http_parser_6parser_10HttpParser_38is_message_complete[] = " return True if the parsing is done (we get EOF) "; -+/* "http_parser/parser.pyx":371 -+ * return self._data.message_begin -+ * -+ * def is_message_complete(self): # <<<<<<<<<<<<<< -+ * """ return True if the parsing is done (we get EOF) """ -+ * return self._data.message_complete -+ */ -+ -+/* Python wrapper */ -+static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_39is_message_complete(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static char __pyx_doc_11http_parser_6parser_10HttpParser_38is_message_complete[] = " return True if the parsing is done (we get EOF) "; - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_39is_message_complete(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("is_message_complete (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_38is_message_complete(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":371 -- * return self._data.message_begin -- * -- * def is_message_complete(self): # <<<<<<<<<<<<<< -- * """ return True if the parsing is done (we get EOF) """ -- * return self._data.message_complete -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_38is_message_complete(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - 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("is_message_complete", 0); - - /* "http_parser/parser.pyx":373 -@@ -5138,14 +6542,21 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_38is_message_comple - * def is_chunked(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s__message_complete); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s_message_complete); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 373, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":371 -+ * return self._data.message_begin -+ * -+ * def is_message_complete(self): # <<<<<<<<<<<<<< -+ * """ return True if the parsing is done (we get EOF) """ -+ * return self._data.message_complete -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("http_parser.parser.HttpParser.is_message_complete", __pyx_clineno, __pyx_lineno, __pyx_filename); -@@ -5156,6 +6567,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_38is_message_comple - return __pyx_r; - } - -+/* "http_parser/parser.pyx":375 -+ * return self._data.message_complete -+ * -+ * def is_chunked(self): # <<<<<<<<<<<<<< -+ * """ return True if Transfer-Encoding header value is chunked""" -+ * te = self._data.headers.get('transfer-encoding', '').lower() -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_41is_chunked(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_40is_chunked[] = " return True if Transfer-Encoding header value is chunked"; -@@ -5164,27 +6583,19 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_41is_chunked(PyObje - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("is_chunked (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_40is_chunked(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":375 -- * return self._data.message_complete -- * -- * def is_chunked(self): # <<<<<<<<<<<<<< -- * """ return True if Transfer-Encoding header value is chunked""" -- * te = self._data.headers.get('transfer-encoding', '').lower() -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_40is_chunked(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - PyObject *__pyx_v_te = NULL; - 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; -+ PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("is_chunked", 0); - - /* "http_parser/parser.pyx":377 -@@ -5194,20 +6605,35 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_40is_chunked(struct - * return te == 'chunked' - * - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s__headers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__get); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_data, __pyx_n_s_headers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 377, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_23), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 377, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__lower); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 377, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_lower); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 377, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_2 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { -+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); -+ if (likely(__pyx_t_2)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_2); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_3, function); -+ } -+ } -+ if (__pyx_t_2) { -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 377, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ } else { -+ __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 377, __pyx_L1_error) -+ } -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_te = __pyx_t_1; - __pyx_t_1 = 0; - -@@ -5219,16 +6645,24 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_40is_chunked(struct - * def should_keep_alive(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = PyObject_RichCompare(__pyx_v_te, ((PyObject *)__pyx_n_s__chunked), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = PyObject_RichCompare(__pyx_v_te, __pyx_n_s_chunked, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 378, __pyx_L1_error) - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":375 -+ * return self._data.message_complete -+ * -+ * def is_chunked(self): # <<<<<<<<<<<<<< -+ * """ return True if Transfer-Encoding header value is chunked""" -+ * te = self._data.headers.get('transfer-encoding', '').lower() -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("http_parser.parser.HttpParser.is_chunked", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -@@ -5238,6 +6672,14 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_40is_chunked(struct - return __pyx_r; - } - -+/* "http_parser/parser.pyx":380 -+ * return te == 'chunked' -+ * -+ * def should_keep_alive(self): # <<<<<<<<<<<<<< -+ * """ return True if the connection should be kept alive -+ * """ -+ */ -+ - /* Python wrapper */ - static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_43should_keep_alive(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ - static char __pyx_doc_11http_parser_6parser_10HttpParser_42should_keep_alive[] = " return True if the connection should be kept alive\n "; -@@ -5246,25 +6688,16 @@ static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_43should_keep_alive - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("should_keep_alive (wrapper)", 0); - __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_42should_keep_alive(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "http_parser/parser.pyx":380 -- * return te == 'chunked' -- * -- * def should_keep_alive(self): # <<<<<<<<<<<<<< -- * """ return True if the connection should be kept alive -- * """ -- */ -- - static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_42should_keep_alive(struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { - 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("should_keep_alive", 0); - - /* "http_parser/parser.pyx":383 -@@ -5273,14 +6706,21 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_42should_keep_alive - * return http_should_keep_alive(&self._parser) # <<<<<<<<<<<<<< - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = PyInt_FromLong(http_should_keep_alive((&__pyx_v_self->_parser))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_PyInt_From_int(http_should_keep_alive((&__pyx_v_self->_parser))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 383, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ /* "http_parser/parser.pyx":380 -+ * return te == 'chunked' -+ * -+ * def should_keep_alive(self): # <<<<<<<<<<<<<< -+ * """ return True if the connection should be kept alive -+ * """ -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("http_parser.parser.HttpParser.should_keep_alive", __pyx_clineno, __pyx_lineno, __pyx_filename); -@@ -5291,10 +6731,121 @@ static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_42should_keep_alive - return __pyx_r; - } - -+/* "(tree fragment)":1 -+ * def __reduce_cython__(self): # <<<<<<<<<<<<<< -+ * raise TypeError("self._parser,self._settings cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): -+ */ -+ -+/* Python wrapper */ -+static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_45__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_45__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_44__reduce_cython__(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_44__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ __Pyx_RefNannySetupContext("__reduce_cython__", 0); -+ -+ /* "(tree fragment)":2 -+ * def __reduce_cython__(self): -+ * raise TypeError("self._parser,self._settings cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("self._parser,self._settings cannot be converted to a Python object for pickling") -+ */ -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_Raise(__pyx_t_1, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __PYX_ERR(1, 2, __pyx_L1_error) -+ -+ /* "(tree fragment)":1 -+ * def __reduce_cython__(self): # <<<<<<<<<<<<<< -+ * raise TypeError("self._parser,self._settings cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): -+ */ -+ -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_AddTraceback("http_parser.parser.HttpParser.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* "(tree fragment)":3 -+ * def __reduce_cython__(self): -+ * raise TypeError("self._parser,self._settings cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -+ * raise TypeError("self._parser,self._settings cannot be converted to a Python object for pickling") -+ */ -+ -+/* Python wrapper */ -+static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_47__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ -+static PyObject *__pyx_pw_11http_parser_6parser_10HttpParser_47__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_11http_parser_6parser_10HttpParser_46__setstate_cython__(((struct __pyx_obj_11http_parser_6parser_HttpParser *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_11http_parser_6parser_10HttpParser_46__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_11http_parser_6parser_HttpParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ __Pyx_RefNannySetupContext("__setstate_cython__", 0); -+ -+ /* "(tree fragment)":4 -+ * raise TypeError("self._parser,self._settings cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("self._parser,self._settings cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -+ */ -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_Raise(__pyx_t_1, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __PYX_ERR(1, 4, __pyx_L1_error) -+ -+ /* "(tree fragment)":3 -+ * def __reduce_cython__(self): -+ * raise TypeError("self._parser,self._settings cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -+ * raise TypeError("self._parser,self._settings cannot be converted to a Python object for pickling") -+ */ -+ -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_AddTraceback("http_parser.parser.HttpParser.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ - static PyObject *__pyx_tp_new_11http_parser_6parser_HttpParser(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_11http_parser_6parser_HttpParser *p; - PyObject *o; -- o = (*t->tp_alloc)(t, 0); -+ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -+ o = (*t->tp_alloc)(t, 0); -+ } else { -+ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); -+ } - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_11http_parser_6parser_HttpParser *)o); - p->_data = Py_None; Py_INCREF(Py_None); -@@ -5307,6 +6858,11 @@ static PyObject *__pyx_tp_new_11http_parser_6parser_HttpParser(PyTypeObject *t, - - static void __pyx_tp_dealloc_11http_parser_6parser_HttpParser(PyObject *o) { - struct __pyx_obj_11http_parser_6parser_HttpParser *p = (struct __pyx_obj_11http_parser_6parser_HttpParser *)o; -+ #if CYTHON_USE_TP_FINALIZE -+ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -+ if (PyObject_CallFinalizerFromDealloc(o)) return; -+ } -+ #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->_data); - Py_CLEAR(p->_path); -@@ -5322,15 +6878,6 @@ static int __pyx_tp_traverse_11http_parser_6parser_HttpParser(PyObject *o, visit - if (p->_data) { - e = (*v)(p->_data, a); if (e) return e; - } -- if (p->_path) { -- e = (*v)(p->_path, a); if (e) return e; -- } -- if (p->_query_string) { -- e = (*v)(p->_query_string, a); if (e) return e; -- } -- if (p->_fragment) { -- e = (*v)(p->_fragment, a); if (e) return e; -- } - if (p->_parsed_url) { - e = (*v)(p->_parsed_url, a); if (e) return e; - } -@@ -5338,20 +6885,11 @@ static int __pyx_tp_traverse_11http_parser_6parser_HttpParser(PyObject *o, visit - } - - static int __pyx_tp_clear_11http_parser_6parser_HttpParser(PyObject *o) { -- struct __pyx_obj_11http_parser_6parser_HttpParser *p = (struct __pyx_obj_11http_parser_6parser_HttpParser *)o; - PyObject* tmp; -+ struct __pyx_obj_11http_parser_6parser_HttpParser *p = (struct __pyx_obj_11http_parser_6parser_HttpParser *)o; - tmp = ((PyObject*)p->_data); - p->_data = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); -- tmp = ((PyObject*)p->_path); -- p->_path = ((PyObject*)Py_None); Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- tmp = ((PyObject*)p->_query_string); -- p->_query_string = ((PyObject*)Py_None); Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- tmp = ((PyObject*)p->_fragment); -- p->_fragment = ((PyObject*)Py_None); Py_INCREF(Py_None); -- Py_XDECREF(tmp); - tmp = ((PyObject*)p->_parsed_url); - p->_parsed_url = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); -@@ -5359,33 +6897,35 @@ static int __pyx_tp_clear_11http_parser_6parser_HttpParser(PyObject *o) { - } - - static PyMethodDef __pyx_methods_11http_parser_6parser_HttpParser[] = { -- {__Pyx_NAMESTR("execute"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_3execute, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_2execute)}, -- {__Pyx_NAMESTR("get_errno"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_5get_errno, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_4get_errno)}, -- {__Pyx_NAMESTR("get_version"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_7get_version, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_6get_version)}, -- {__Pyx_NAMESTR("get_method"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_9get_method, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_8get_method)}, -- {__Pyx_NAMESTR("get_status_code"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_11get_status_code, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_10get_status_code)}, -- {__Pyx_NAMESTR("get_url"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_13get_url, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_12get_url)}, -- {__Pyx_NAMESTR("maybe_parse_url"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_15maybe_parse_url, METH_NOARGS, __Pyx_DOCSTR(0)}, -- {__Pyx_NAMESTR("get_path"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_17get_path, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_16get_path)}, -- {__Pyx_NAMESTR("get_query_string"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_19get_query_string, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_18get_query_string)}, -- {__Pyx_NAMESTR("get_fragment"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_21get_fragment, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_20get_fragment)}, -- {__Pyx_NAMESTR("get_headers"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_23get_headers, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_22get_headers)}, -- {__Pyx_NAMESTR("get_wsgi_environ"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_25get_wsgi_environ, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_24get_wsgi_environ)}, -- {__Pyx_NAMESTR("recv_body"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_27recv_body, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_26recv_body)}, -- {__Pyx_NAMESTR("recv_body_into"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_29recv_body_into, METH_O, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_28recv_body_into)}, -- {__Pyx_NAMESTR("is_upgrade"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_31is_upgrade, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_30is_upgrade)}, -- {__Pyx_NAMESTR("is_headers_complete"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_33is_headers_complete, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_32is_headers_complete)}, -- {__Pyx_NAMESTR("is_partial_body"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_35is_partial_body, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_34is_partial_body)}, -- {__Pyx_NAMESTR("is_message_begin"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_37is_message_begin, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_36is_message_begin)}, -- {__Pyx_NAMESTR("is_message_complete"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_39is_message_complete, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_38is_message_complete)}, -- {__Pyx_NAMESTR("is_chunked"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_41is_chunked, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_40is_chunked)}, -- {__Pyx_NAMESTR("should_keep_alive"), (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_43should_keep_alive, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_11http_parser_6parser_10HttpParser_42should_keep_alive)}, -+ {"execute", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_3execute, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11http_parser_6parser_10HttpParser_2execute}, -+ {"get_errno", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_5get_errno, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_4get_errno}, -+ {"get_version", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_7get_version, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_6get_version}, -+ {"get_method", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_9get_method, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_8get_method}, -+ {"get_status_code", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_11get_status_code, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_10get_status_code}, -+ {"get_url", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_13get_url, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_12get_url}, -+ {"maybe_parse_url", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_15maybe_parse_url, METH_NOARGS, 0}, -+ {"get_path", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_17get_path, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_16get_path}, -+ {"get_query_string", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_19get_query_string, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_18get_query_string}, -+ {"get_fragment", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_21get_fragment, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_20get_fragment}, -+ {"get_headers", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_23get_headers, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_22get_headers}, -+ {"get_wsgi_environ", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_25get_wsgi_environ, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_24get_wsgi_environ}, -+ {"recv_body", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_27recv_body, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_26recv_body}, -+ {"recv_body_into", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_29recv_body_into, METH_O, __pyx_doc_11http_parser_6parser_10HttpParser_28recv_body_into}, -+ {"is_upgrade", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_31is_upgrade, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_30is_upgrade}, -+ {"is_headers_complete", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_33is_headers_complete, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_32is_headers_complete}, -+ {"is_partial_body", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_35is_partial_body, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_34is_partial_body}, -+ {"is_message_begin", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_37is_message_begin, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_36is_message_begin}, -+ {"is_message_complete", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_39is_message_complete, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_38is_message_complete}, -+ {"is_chunked", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_41is_chunked, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_40is_chunked}, -+ {"should_keep_alive", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_43should_keep_alive, METH_NOARGS, __pyx_doc_11http_parser_6parser_10HttpParser_42should_keep_alive}, -+ {"__reduce_cython__", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_45__reduce_cython__, METH_NOARGS, 0}, -+ {"__setstate_cython__", (PyCFunction)__pyx_pw_11http_parser_6parser_10HttpParser_47__setstate_cython__, METH_O, 0}, - {0, 0, 0, 0} - }; - - static PyTypeObject __pyx_type_11http_parser_6parser_HttpParser = { - PyVarObject_HEAD_INIT(0, 0) -- __Pyx_NAMESTR("http_parser.parser.HttpParser"), /*tp_name*/ -+ "http_parser.parser.HttpParser", /*tp_name*/ - sizeof(struct __pyx_obj_11http_parser_6parser_HttpParser), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_11http_parser_6parser_HttpParser, /*tp_dealloc*/ -@@ -5394,8 +6934,9 @@ static PyTypeObject __pyx_type_11http_parser_6parser_HttpParser = { - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ -- #else -- 0, /*reserved*/ -+ #endif -+ #if PY_MAJOR_VERSION >= 3 -+ 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ -@@ -5408,7 +6949,7 @@ static PyTypeObject __pyx_type_11http_parser_6parser_HttpParser = { - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -- __Pyx_DOCSTR(" Low level HTTP parser. "), /*tp_doc*/ -+ " Low level HTTP parser. ", /*tp_doc*/ - __pyx_tp_traverse_11http_parser_6parser_HttpParser, /*tp_traverse*/ - __pyx_tp_clear_11http_parser_6parser_HttpParser, /*tp_clear*/ - 0, /*tp_richcompare*/ -@@ -5434,8 +6975,9 @@ static PyTypeObject __pyx_type_11http_parser_6parser_HttpParser = { - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ -- #if PY_VERSION_HEX >= 0x02060000 - 0, /*tp_version_tag*/ -+ #if PY_VERSION_HEX >= 0x030400a1 -+ 0, /*tp_finalize*/ - #endif - }; - -@@ -5444,17 +6986,31 @@ static PyMethodDef __pyx_methods[] = { - }; - - #if PY_MAJOR_VERSION >= 3 -+#if CYTHON_PEP489_MULTI_PHASE_INIT -+static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -+static int __pyx_pymod_exec_parser(PyObject* module); /*proto*/ -+static PyModuleDef_Slot __pyx_moduledef_slots[] = { -+ {Py_mod_create, (void*)__pyx_pymod_create}, -+ {Py_mod_exec, (void*)__pyx_pymod_exec_parser}, -+ {0, NULL} -+}; -+#endif -+ - static struct PyModuleDef __pyx_moduledef = { -- #if PY_VERSION_HEX < 0x03020000 -- { PyObject_HEAD_INIT(NULL) NULL, 0, NULL }, -- #else - PyModuleDef_HEAD_INIT, -- #endif -- __Pyx_NAMESTR("parser"), -+ "parser", - 0, /* m_doc */ -+ #if CYTHON_PEP489_MULTI_PHASE_INIT -+ 0, /* m_size */ -+ #else - -1, /* m_size */ -+ #endif - __pyx_methods /* m_methods */, -+ #if CYTHON_PEP489_MULTI_PHASE_INIT -+ __pyx_moduledef_slots, /* m_slots */ -+ #else - NULL, /* m_reload */ -+ #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -@@ -5462,103 +7018,115 @@ static struct PyModuleDef __pyx_moduledef = { - #endif - - static __Pyx_StringTabEntry __pyx_string_tab[] = { -- {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0}, -- {&__pyx_kp_s_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 0, 1, 0}, -- {&__pyx_kp_s_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 0, 1, 0}, -- {&__pyx_kp_s_15, __pyx_k_15, sizeof(__pyx_k_15), 0, 0, 1, 0}, -- {&__pyx_kp_s_16, __pyx_k_16, sizeof(__pyx_k_16), 0, 0, 1, 0}, -- {&__pyx_kp_s_18, __pyx_k_18, sizeof(__pyx_k_18), 0, 0, 1, 0}, -- {&__pyx_kp_s_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 0, 1, 0}, -- {&__pyx_kp_s_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 1, 0}, -- {&__pyx_kp_s_22, __pyx_k_22, sizeof(__pyx_k_22), 0, 0, 1, 0}, -- {&__pyx_n_s_24, __pyx_k_24, sizeof(__pyx_k_24), 0, 0, 1, 1}, -- {&__pyx_n_s_25, __pyx_k_25, sizeof(__pyx_k_25), 0, 0, 1, 1}, -- {&__pyx_kp_s_28, __pyx_k_28, sizeof(__pyx_k_28), 0, 0, 1, 0}, -- {&__pyx_n_s_29, __pyx_k_29, sizeof(__pyx_k_29), 0, 0, 1, 1}, -- {&__pyx_kp_s_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 1, 0}, -- {&__pyx_n_s_32, __pyx_k_32, sizeof(__pyx_k_32), 0, 0, 1, 1}, -- {&__pyx_n_s_35, __pyx_k_35, sizeof(__pyx_k_35), 0, 0, 1, 1}, -- {&__pyx_kp_s_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 0, 1, 0}, -- {&__pyx_n_s_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 0, 1, 1}, -- {&__pyx_kp_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 0}, -- {&__pyx_n_s__CONTENT_LENGTH, __pyx_k__CONTENT_LENGTH, sizeof(__pyx_k__CONTENT_LENGTH), 0, 0, 1, 1}, -- {&__pyx_n_s__CONTENT_TYPE, __pyx_k__CONTENT_TYPE, sizeof(__pyx_k__CONTENT_TYPE), 0, 0, 1, 1}, -- {&__pyx_n_s__IOrderedDict, __pyx_k__IOrderedDict, sizeof(__pyx_k__IOrderedDict), 0, 0, 1, 1}, -- {&__pyx_n_s__ImportError, __pyx_k__ImportError, sizeof(__pyx_k__ImportError), 0, 0, 1, 1}, -- {&__pyx_n_s__MAX_WBITS, __pyx_k__MAX_WBITS, sizeof(__pyx_k__MAX_WBITS), 0, 0, 1, 1}, -- {&__pyx_n_s__PATH_INFO, __pyx_k__PATH_INFO, sizeof(__pyx_k__PATH_INFO), 0, 0, 1, 1}, -- {&__pyx_n_s__QUERY_STRING, __pyx_k__QUERY_STRING, sizeof(__pyx_k__QUERY_STRING), 0, 0, 1, 1}, -- {&__pyx_n_s__RAW_URI, __pyx_k__RAW_URI, sizeof(__pyx_k__RAW_URI), 0, 0, 1, 1}, -- {&__pyx_n_s__REQUEST_METHOD, __pyx_k__REQUEST_METHOD, sizeof(__pyx_k__REQUEST_METHOD), 0, 0, 1, 1}, -- {&__pyx_n_s__SCRIPT_NAME, __pyx_k__SCRIPT_NAME, sizeof(__pyx_k__SCRIPT_NAME), 0, 0, 1, 1}, -- {&__pyx_n_s__SERVER_PROTOCOL, __pyx_k__SERVER_PROTOCOL, sizeof(__pyx_k__SERVER_PROTOCOL), 0, 0, 1, 1}, -- {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1}, -- {&__pyx_n_s___, __pyx_k___, sizeof(__pyx_k___), 0, 0, 1, 1}, -- {&__pyx_n_s___ParserData, __pyx_k___ParserData, sizeof(__pyx_k___ParserData), 0, 0, 1, 1}, -- {&__pyx_n_s____class__, __pyx_k____class__, sizeof(__pyx_k____class__), 0, 0, 1, 1}, -- {&__pyx_n_s____import__, __pyx_k____import__, sizeof(__pyx_k____import__), 0, 0, 1, 1}, -- {&__pyx_n_s____init__, __pyx_k____init__, sizeof(__pyx_k____init__), 0, 0, 1, 1}, -- {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1}, -- {&__pyx_n_s____metaclass__, __pyx_k____metaclass__, sizeof(__pyx_k____metaclass__), 0, 0, 1, 1}, -- {&__pyx_n_s____module__, __pyx_k____module__, sizeof(__pyx_k____module__), 0, 0, 1, 1}, -- {&__pyx_n_s____qualname__, __pyx_k____qualname__, sizeof(__pyx_k____qualname__), 0, 0, 1, 1}, -- {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1}, -- {&__pyx_n_s___last_field, __pyx_k___last_field, sizeof(__pyx_k___last_field), 0, 0, 1, 1}, -- {&__pyx_n_s___last_was_value, __pyx_k___last_was_value, sizeof(__pyx_k___last_was_value), 0, 0, 1, 1}, -- {&__pyx_n_s___parser_upgrade, __pyx_k___parser_upgrade, sizeof(__pyx_k___parser_upgrade), 0, 0, 1, 1}, -- {&__pyx_n_s__append, __pyx_k__append, sizeof(__pyx_k__append), 0, 0, 1, 1}, -- {&__pyx_n_s__b, __pyx_k__b, sizeof(__pyx_k__b), 0, 0, 1, 1}, -- {&__pyx_n_s__body, __pyx_k__body, sizeof(__pyx_k__body), 0, 0, 1, 1}, -- {&__pyx_n_s__bytes_to_str, __pyx_k__bytes_to_str, sizeof(__pyx_k__bytes_to_str), 0, 0, 1, 1}, -- {&__pyx_n_s__chunked, __pyx_k__chunked, sizeof(__pyx_k__chunked), 0, 0, 1, 1}, -- {&__pyx_n_s__data, __pyx_k__data, sizeof(__pyx_k__data), 0, 0, 1, 1}, -- {&__pyx_n_s__decompress, __pyx_k__decompress, sizeof(__pyx_k__decompress), 0, 0, 1, 1}, -- {&__pyx_n_s__decompressobj, __pyx_k__decompressobj, sizeof(__pyx_k__decompressobj), 0, 0, 1, 1}, -- {&__pyx_n_s__deflate, __pyx_k__deflate, sizeof(__pyx_k__deflate), 0, 0, 1, 1}, -- {&__pyx_n_s__environ, __pyx_k__environ, sizeof(__pyx_k__environ), 0, 0, 1, 1}, -- {&__pyx_n_s__errno, __pyx_k__errno, sizeof(__pyx_k__errno), 0, 0, 1, 1}, -- {&__pyx_n_s__error, __pyx_k__error, sizeof(__pyx_k__error), 0, 0, 1, 1}, -- {&__pyx_n_s__fragment, __pyx_k__fragment, sizeof(__pyx_k__fragment), 0, 0, 1, 1}, -- {&__pyx_n_s__get, __pyx_k__get, sizeof(__pyx_k__get), 0, 0, 1, 1}, -- {&__pyx_n_s__get_errno_name, __pyx_k__get_errno_name, sizeof(__pyx_k__get_errno_name), 0, 0, 1, 1}, -- {&__pyx_n_s__get_method, __pyx_k__get_method, sizeof(__pyx_k__get_method), 0, 0, 1, 1}, -- {&__pyx_n_s__get_url, __pyx_k__get_url, sizeof(__pyx_k__get_url), 0, 0, 1, 1}, -- {&__pyx_n_s__get_version, __pyx_k__get_version, sizeof(__pyx_k__get_version), 0, 0, 1, 1}, -- {&__pyx_n_s__gzip, __pyx_k__gzip, sizeof(__pyx_k__gzip), 0, 0, 1, 1}, -- {&__pyx_n_s__header_only, __pyx_k__header_only, sizeof(__pyx_k__header_only), 0, 0, 1, 1}, -- {&__pyx_n_s__headers, __pyx_k__headers, sizeof(__pyx_k__headers), 0, 0, 1, 1}, -- {&__pyx_n_s__headers_complete, __pyx_k__headers_complete, sizeof(__pyx_k__headers_complete), 0, 0, 1, 1}, -- {&__pyx_n_s__items, __pyx_k__items, sizeof(__pyx_k__items), 0, 0, 1, 1}, -- {&__pyx_n_s__join, __pyx_k__join, sizeof(__pyx_k__join), 0, 0, 1, 1}, -- {&__pyx_n_s__kind, __pyx_k__kind, sizeof(__pyx_k__kind), 0, 0, 1, 1}, -- {&__pyx_n_s__length, __pyx_k__length, sizeof(__pyx_k__length), 0, 0, 1, 1}, -- {&__pyx_n_s__lower, __pyx_k__lower, sizeof(__pyx_k__lower), 0, 0, 1, 1}, -- {&__pyx_n_s__map, __pyx_k__map, sizeof(__pyx_k__map), 0, 0, 1, 1}, -- {&__pyx_n_s__maybe_parse_url, __pyx_k__maybe_parse_url, sizeof(__pyx_k__maybe_parse_url), 0, 0, 1, 1}, -- {&__pyx_n_s__message_begin, __pyx_k__message_begin, sizeof(__pyx_k__message_begin), 0, 0, 1, 1}, -- {&__pyx_n_s__message_complete, __pyx_k__message_complete, sizeof(__pyx_k__message_complete), 0, 0, 1, 1}, -- {&__pyx_n_s__object, __pyx_k__object, sizeof(__pyx_k__object), 0, 0, 1, 1}, -- {&__pyx_n_s__os, __pyx_k__os, sizeof(__pyx_k__os), 0, 0, 1, 1}, -- {&__pyx_n_s__partial_body, __pyx_k__partial_body, sizeof(__pyx_k__partial_body), 0, 0, 1, 1}, -- {&__pyx_n_s__path, __pyx_k__path, sizeof(__pyx_k__path), 0, 0, 1, 1}, -- {&__pyx_n_s__query, __pyx_k__query, sizeof(__pyx_k__query), 0, 0, 1, 1}, -- {&__pyx_n_s__replace, __pyx_k__replace, sizeof(__pyx_k__replace), 0, 0, 1, 1}, -- {&__pyx_n_s__self, __pyx_k__self, sizeof(__pyx_k__self), 0, 0, 1, 1}, -- {&__pyx_n_s__split, __pyx_k__split, sizeof(__pyx_k__split), 0, 0, 1, 1}, -- {&__pyx_n_s__unquote, __pyx_k__unquote, sizeof(__pyx_k__unquote), 0, 0, 1, 1}, -- {&__pyx_n_s__update, __pyx_k__update, sizeof(__pyx_k__update), 0, 0, 1, 1}, -- {&__pyx_n_s__upper, __pyx_k__upper, sizeof(__pyx_k__upper), 0, 0, 1, 1}, -- {&__pyx_n_s__url, __pyx_k__url, sizeof(__pyx_k__url), 0, 0, 1, 1}, -- {&__pyx_n_s__urlparse, __pyx_k__urlparse, sizeof(__pyx_k__urlparse), 0, 0, 1, 1}, -- {&__pyx_n_s__urlsplit, __pyx_k__urlsplit, sizeof(__pyx_k__urlsplit), 0, 0, 1, 1}, -- {&__pyx_n_s__zlib, __pyx_k__zlib, sizeof(__pyx_k__zlib), 0, 0, 1, 1}, -+ {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0}, -+ {&__pyx_kp_s_CONTENT_LENGTH, __pyx_k_CONTENT_LENGTH, sizeof(__pyx_k_CONTENT_LENGTH), 0, 0, 1, 0}, -+ {&__pyx_n_s_CONTENT_LENGTH_2, __pyx_k_CONTENT_LENGTH_2, sizeof(__pyx_k_CONTENT_LENGTH_2), 0, 0, 1, 1}, -+ {&__pyx_kp_s_CONTENT_TYPE, __pyx_k_CONTENT_TYPE, sizeof(__pyx_k_CONTENT_TYPE), 0, 0, 1, 0}, -+ {&__pyx_n_s_CONTENT_TYPE_2, __pyx_k_CONTENT_TYPE_2, sizeof(__pyx_k_CONTENT_TYPE_2), 0, 0, 1, 1}, -+ {&__pyx_kp_s_HTTP__s, __pyx_k_HTTP__s, sizeof(__pyx_k_HTTP__s), 0, 0, 1, 0}, -+ {&__pyx_kp_s_HTTP_s, __pyx_k_HTTP_s, sizeof(__pyx_k_HTTP_s), 0, 0, 1, 0}, -+ {&__pyx_n_s_IOrderedDict, __pyx_k_IOrderedDict, sizeof(__pyx_k_IOrderedDict), 0, 0, 1, 1}, -+ {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, -+ {&__pyx_n_s_MAX_WBITS, __pyx_k_MAX_WBITS, sizeof(__pyx_k_MAX_WBITS), 0, 0, 1, 1}, -+ {&__pyx_n_s_PATH_INFO, __pyx_k_PATH_INFO, sizeof(__pyx_k_PATH_INFO), 0, 0, 1, 1}, -+ {&__pyx_n_s_ParserData, __pyx_k_ParserData, sizeof(__pyx_k_ParserData), 0, 0, 1, 1}, -+ {&__pyx_n_s_ParserData___init, __pyx_k_ParserData___init, sizeof(__pyx_k_ParserData___init), 0, 0, 1, 1}, -+ {&__pyx_n_s_QUERY_STRING, __pyx_k_QUERY_STRING, sizeof(__pyx_k_QUERY_STRING), 0, 0, 1, 1}, -+ {&__pyx_n_s_RAW_URI, __pyx_k_RAW_URI, sizeof(__pyx_k_RAW_URI), 0, 0, 1, 1}, -+ {&__pyx_n_s_REQUEST_METHOD, __pyx_k_REQUEST_METHOD, sizeof(__pyx_k_REQUEST_METHOD), 0, 0, 1, 1}, -+ {&__pyx_n_s_SCRIPT_NAME, __pyx_k_SCRIPT_NAME, sizeof(__pyx_k_SCRIPT_NAME), 0, 0, 1, 1}, -+ {&__pyx_n_s_SERVER_PROTOCOL, __pyx_k_SERVER_PROTOCOL, sizeof(__pyx_k_SERVER_PROTOCOL), 0, 0, 1, 1}, -+ {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, -+ {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, -+ {&__pyx_kp_s__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 0, 1, 0}, -+ {&__pyx_n_s__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 0, 1, 1}, -+ {&__pyx_kp_s__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 0, 1, 0}, -+ {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, -+ {&__pyx_n_s_b, __pyx_k_b, sizeof(__pyx_k_b), 0, 0, 1, 1}, -+ {&__pyx_n_s_body, __pyx_k_body, sizeof(__pyx_k_body), 0, 0, 1, 1}, -+ {&__pyx_n_s_bytes_to_str, __pyx_k_bytes_to_str, sizeof(__pyx_k_bytes_to_str), 0, 0, 1, 1}, -+ {&__pyx_n_s_chunked, __pyx_k_chunked, sizeof(__pyx_k_chunked), 0, 0, 1, 1}, -+ {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, -+ {&__pyx_kp_s_content_encoding, __pyx_k_content_encoding, sizeof(__pyx_k_content_encoding), 0, 0, 1, 0}, -+ {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, -+ {&__pyx_n_s_decompress, __pyx_k_decompress, sizeof(__pyx_k_decompress), 0, 0, 1, 1}, -+ {&__pyx_n_s_decompress_first_try, __pyx_k_decompress_first_try, sizeof(__pyx_k_decompress_first_try), 0, 0, 1, 1}, -+ {&__pyx_n_s_decompressobj, __pyx_k_decompressobj, sizeof(__pyx_k_decompressobj), 0, 0, 1, 1}, -+ {&__pyx_n_s_deflate, __pyx_k_deflate, sizeof(__pyx_k_deflate), 0, 0, 1, 1}, -+ {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, -+ {&__pyx_n_s_environ, __pyx_k_environ, sizeof(__pyx_k_environ), 0, 0, 1, 1}, -+ {&__pyx_n_s_errno, __pyx_k_errno, sizeof(__pyx_k_errno), 0, 0, 1, 1}, -+ {&__pyx_kp_s_errno_out_of_range, __pyx_k_errno_out_of_range, sizeof(__pyx_k_errno_out_of_range), 0, 0, 1, 0}, -+ {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, -+ {&__pyx_n_s_fragment, __pyx_k_fragment, sizeof(__pyx_k_fragment), 0, 0, 1, 1}, -+ {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, -+ {&__pyx_n_s_get_errno_description, __pyx_k_get_errno_description, sizeof(__pyx_k_get_errno_description), 0, 0, 1, 1}, -+ {&__pyx_n_s_get_errno_name, __pyx_k_get_errno_name, sizeof(__pyx_k_get_errno_name), 0, 0, 1, 1}, -+ {&__pyx_n_s_get_method, __pyx_k_get_method, sizeof(__pyx_k_get_method), 0, 0, 1, 1}, -+ {&__pyx_n_s_get_url, __pyx_k_get_url, sizeof(__pyx_k_get_url), 0, 0, 1, 1}, -+ {&__pyx_n_s_get_version, __pyx_k_get_version, sizeof(__pyx_k_get_version), 0, 0, 1, 1}, -+ {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, -+ {&__pyx_n_s_gzip, __pyx_k_gzip, sizeof(__pyx_k_gzip), 0, 0, 1, 1}, -+ {&__pyx_n_s_header_only, __pyx_k_header_only, sizeof(__pyx_k_header_only), 0, 0, 1, 1}, -+ {&__pyx_n_s_headers, __pyx_k_headers, sizeof(__pyx_k_headers), 0, 0, 1, 1}, -+ {&__pyx_n_s_headers_complete, __pyx_k_headers_complete, sizeof(__pyx_k_headers_complete), 0, 0, 1, 1}, -+ {&__pyx_n_s_http_parser_parser, __pyx_k_http_parser_parser, sizeof(__pyx_k_http_parser_parser), 0, 0, 1, 1}, -+ {&__pyx_kp_s_http_parser_parser_pyx, __pyx_k_http_parser_parser_pyx, sizeof(__pyx_k_http_parser_parser_pyx), 0, 0, 1, 0}, -+ {&__pyx_n_s_http_parser_util, __pyx_k_http_parser_util, sizeof(__pyx_k_http_parser_util), 0, 0, 1, 1}, -+ {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, -+ {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, -+ {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1}, -+ {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1}, -+ {&__pyx_n_s_kind, __pyx_k_kind, sizeof(__pyx_k_kind), 0, 0, 1, 1}, -+ {&__pyx_n_s_last_field, __pyx_k_last_field, sizeof(__pyx_k_last_field), 0, 0, 1, 1}, -+ {&__pyx_n_s_last_was_value, __pyx_k_last_was_value, sizeof(__pyx_k_last_was_value), 0, 0, 1, 1}, -+ {&__pyx_n_s_length, __pyx_k_length, sizeof(__pyx_k_length), 0, 0, 1, 1}, -+ {&__pyx_n_s_lower, __pyx_k_lower, sizeof(__pyx_k_lower), 0, 0, 1, 1}, -+ {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, -+ {&__pyx_n_s_map, __pyx_k_map, sizeof(__pyx_k_map), 0, 0, 1, 1}, -+ {&__pyx_n_s_maybe_parse_url, __pyx_k_maybe_parse_url, sizeof(__pyx_k_maybe_parse_url), 0, 0, 1, 1}, -+ {&__pyx_n_s_message_begin, __pyx_k_message_begin, sizeof(__pyx_k_message_begin), 0, 0, 1, 1}, -+ {&__pyx_n_s_message_complete, __pyx_k_message_complete, sizeof(__pyx_k_message_complete), 0, 0, 1, 1}, -+ {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, -+ {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, -+ {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, -+ {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1}, -+ {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1}, -+ {&__pyx_n_s_parser_upgrade, __pyx_k_parser_upgrade, sizeof(__pyx_k_parser_upgrade), 0, 0, 1, 1}, -+ {&__pyx_n_s_partial_body, __pyx_k_partial_body, sizeof(__pyx_k_partial_body), 0, 0, 1, 1}, -+ {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1}, -+ {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, -+ {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, -+ {&__pyx_n_s_query, __pyx_k_query, sizeof(__pyx_k_query), 0, 0, 1, 1}, -+ {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, -+ {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, -+ {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, -+ {&__pyx_n_s_replace, __pyx_k_replace, sizeof(__pyx_k_replace), 0, 0, 1, 1}, -+ {&__pyx_kp_s_s_s, __pyx_k_s_s, sizeof(__pyx_k_s_s), 0, 0, 1, 0}, -+ {&__pyx_kp_s_s_s_2, __pyx_k_s_s_2, sizeof(__pyx_k_s_s_2), 0, 0, 1, 0}, -+ {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, -+ {&__pyx_kp_s_self__parser_self__settings_cann, __pyx_k_self__parser_self__settings_cann, sizeof(__pyx_k_self__parser_self__settings_cann), 0, 0, 1, 0}, -+ {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, -+ {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, -+ {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, -+ {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, -+ {&__pyx_kp_s_transfer_encoding, __pyx_k_transfer_encoding, sizeof(__pyx_k_transfer_encoding), 0, 0, 1, 0}, -+ {&__pyx_n_s_unquote, __pyx_k_unquote, sizeof(__pyx_k_unquote), 0, 0, 1, 1}, -+ {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1}, -+ {&__pyx_n_s_upper, __pyx_k_upper, sizeof(__pyx_k_upper), 0, 0, 1, 1}, -+ {&__pyx_n_s_url, __pyx_k_url, sizeof(__pyx_k_url), 0, 0, 1, 1}, -+ {&__pyx_n_s_urllib_parse, __pyx_k_urllib_parse, sizeof(__pyx_k_urllib_parse), 0, 0, 1, 1}, -+ {&__pyx_n_s_urlparse, __pyx_k_urlparse, sizeof(__pyx_k_urlparse), 0, 0, 1, 1}, -+ {&__pyx_n_s_urlsplit, __pyx_k_urlsplit, sizeof(__pyx_k_urlsplit), 0, 0, 1, 1}, -+ {&__pyx_n_s_zlib, __pyx_k_zlib, sizeof(__pyx_k_zlib), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} - }; - static int __Pyx_InitCachedBuiltins(void) { -- __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s__ImportError); if (!__pyx_builtin_ImportError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s__object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_builtin_map = __Pyx_GetBuiltinName(__pyx_n_s__map); if (!__pyx_builtin_map) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(0, 10, __pyx_L1_error) -+ __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 171, __pyx_L1_error) -+ __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 162, __pyx_L1_error) -+ __pyx_builtin_map = __Pyx_GetBuiltinName(__pyx_n_s_map); if (!__pyx_builtin_map) __PYX_ERR(0, 323, __pyx_L1_error) -+ __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -@@ -5575,9 +7143,9 @@ static int __Pyx_InitCachedConstants(void) { - * if encoding == 'gzip': - * res.decompressobj = zlib.decompressobj(16+zlib.MAX_WBITS) - */ -- __pyx_k_tuple_5 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_4)); if (unlikely(!__pyx_k_tuple_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_k_tuple_5); -- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_5)); -+ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_content_encoding); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 114, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__2); -+ __Pyx_GIVEREF(__pyx_tuple__2); - - /* "http_parser/parser.pyx":162 - * def get_errno_name(errno): -@@ -5586,9 +7154,9 @@ static int __Pyx_InitCachedConstants(void) { - * return http_errno_name(errno) - * - */ -- __pyx_k_tuple_8 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_7)); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_k_tuple_8); -- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8)); -+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_errno_out_of_range); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 162, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__3); -+ __Pyx_GIVEREF(__pyx_tuple__3); - - /* "http_parser/parser.pyx":167 - * def get_errno_description(errno): -@@ -5597,9 +7165,9 @@ static int __Pyx_InitCachedConstants(void) { - * return http_errno_description(errno) - * - */ -- __pyx_k_tuple_9 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_7)); if (unlikely(!__pyx_k_tuple_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_k_tuple_9); -- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_9)); -+ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_errno_out_of_range); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 167, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__4); -+ __Pyx_GIVEREF(__pyx_tuple__4); - - /* "http_parser/parser.pyx":304 - * -@@ -5608,9 +7176,9 @@ static int __Pyx_InitCachedConstants(void) { - * for key, val in self._data.headers.items(): - * ku = key.upper() - */ -- __pyx_k_tuple_12 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__SCRIPT_NAME), ((PyObject *)__pyx_kp_s_1)); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_k_tuple_12); -- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12)); -+ __pyx_tuple__5 = PyTuple_Pack(2, __pyx_n_s_SCRIPT_NAME, __pyx_kp_s_); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 304, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__5); -+ __Pyx_GIVEREF(__pyx_tuple__5); - - /* "http_parser/parser.pyx":314 - * environ['SCRIPT_NAME'] = val -@@ -5619,9 +7187,9 @@ static int __Pyx_InitCachedConstants(void) { - * - * if script_name: - */ -- __pyx_k_tuple_17 = PyTuple_Pack(2, ((PyObject *)__pyx_kp_s_16), ((PyObject *)__pyx_n_s___)); if (unlikely(!__pyx_k_tuple_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_k_tuple_17); -- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_17)); -+ __pyx_tuple__8 = PyTuple_Pack(2, __pyx_kp_s__6, __pyx_n_s__7); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 314, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__8); -+ __Pyx_GIVEREF(__pyx_tuple__8); - - /* "http_parser/parser.pyx":334 - * def recv_body(self): -@@ -5630,9 +7198,9 @@ static int __Pyx_InitCachedConstants(void) { - * self._data.body = [] - * self._data.partial_body = False - */ -- __pyx_k_tuple_20 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_1)); if (unlikely(!__pyx_k_tuple_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_k_tuple_20); -- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_20)); -+ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 334, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__10); -+ __Pyx_GIVEREF(__pyx_tuple__10); - - /* "http_parser/parser.pyx":343 - * in a buffer rather than creating a new string. """ -@@ -5641,9 +7209,9 @@ static int __Pyx_InitCachedConstants(void) { - * m = min(len(body), l) - * data, rest = body[:m], body[m:] - */ -- __pyx_k_tuple_21 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_1)); if (unlikely(!__pyx_k_tuple_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_k_tuple_21); -- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_21)); -+ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 343, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__11); -+ __Pyx_GIVEREF(__pyx_tuple__11); - - /* "http_parser/parser.pyx":377 - * def is_chunked(self): -@@ -5652,9 +7220,28 @@ static int __Pyx_InitCachedConstants(void) { - * return te == 'chunked' - * - */ -- __pyx_k_tuple_23 = PyTuple_Pack(2, ((PyObject *)__pyx_kp_s_22), ((PyObject *)__pyx_kp_s_1)); if (unlikely(!__pyx_k_tuple_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_k_tuple_23); -- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_23)); -+ __pyx_tuple__12 = PyTuple_Pack(2, __pyx_kp_s_transfer_encoding, __pyx_kp_s_); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 377, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__12); -+ __Pyx_GIVEREF(__pyx_tuple__12); -+ -+ /* "(tree fragment)":2 -+ * def __reduce_cython__(self): -+ * raise TypeError("self._parser,self._settings cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("self._parser,self._settings cannot be converted to a Python object for pickling") -+ */ -+ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_self__parser_self__settings_cann); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 2, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__13); -+ __Pyx_GIVEREF(__pyx_tuple__13); -+ -+ /* "(tree fragment)":4 -+ * raise TypeError("self._parser,self._settings cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("self._parser,self._settings cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -+ */ -+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_self__parser_self__settings_cann); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 4, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__14); -+ __Pyx_GIVEREF(__pyx_tuple__14); - - /* "http_parser/parser.pyx":160 - * -@@ -5663,10 +7250,10 @@ static int __Pyx_InitCachedConstants(void) { - * if not HPE_OK <= errno <= HPE_UNKNOWN: - * raise ValueError('errno out of range') - */ -- __pyx_k_tuple_26 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__errno)); if (unlikely(!__pyx_k_tuple_26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_k_tuple_26); -- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_26)); -- __pyx_k_codeobj_27 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_28, __pyx_n_s__get_errno_name, 160, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_n_s_errno); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 160, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__15); -+ __Pyx_GIVEREF(__pyx_tuple__15); -+ __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_http_parser_parser_pyx, __pyx_n_s_get_errno_name, 160, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 160, __pyx_L1_error) - - /* "http_parser/parser.pyx":165 - * return http_errno_name(errno) -@@ -5675,10 +7262,21 @@ static int __Pyx_InitCachedConstants(void) { - * if not HPE_OK <= errno <= HPE_UNKNOWN: - * raise ValueError('errno out of range') - */ -- __pyx_k_tuple_30 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__errno)); if (unlikely(!__pyx_k_tuple_30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_k_tuple_30); -- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_30)); -- __pyx_k_codeobj_31 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_28, __pyx_n_s_32, 165, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_n_s_errno); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 165, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__17); -+ __Pyx_GIVEREF(__pyx_tuple__17); -+ __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_http_parser_parser_pyx, __pyx_n_s_get_errno_description, 165, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 165, __pyx_L1_error) -+ -+ /* "http_parser/parser.pyx":171 -+ * -+ * -+ * class _ParserData(object): # <<<<<<<<<<<<<< -+ * -+ * def __init__(self, decompress=False, header_only=False): -+ */ -+ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 171, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__19); -+ __Pyx_GIVEREF(__pyx_tuple__19); - - /* "http_parser/parser.pyx":173 - * class _ParserData(object): -@@ -5687,10 +7285,13 @@ static int __Pyx_InitCachedConstants(void) { - * self.url = "" - * self.body = [] - */ -- __pyx_k_tuple_33 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__self), ((PyObject *)__pyx_n_s__decompress), ((PyObject *)__pyx_n_s__header_only)); if (unlikely(!__pyx_k_tuple_33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_k_tuple_33); -- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_33)); -- __pyx_k_codeobj_34 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_28, __pyx_n_s____init__, 173, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_tuple__20 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_decompress, __pyx_n_s_header_only); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 173, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__20); -+ __Pyx_GIVEREF(__pyx_tuple__20); -+ __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_http_parser_parser_pyx, __pyx_n_s_init, 173, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(0, 173, __pyx_L1_error) -+ __pyx_tuple__22 = PyTuple_Pack(2, ((PyObject *)Py_False), ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 173, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__22); -+ __Pyx_GIVEREF(__pyx_tuple__22); - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; -@@ -5699,130 +7300,294 @@ static int __Pyx_InitCachedConstants(void) { - } - - static int __Pyx_InitGlobals(void) { -- if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; -- __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; -- __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; -- __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; -- __pyx_int_16 = PyInt_FromLong(16); if (unlikely(!__pyx_int_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; -+ __pyx_umethod_PyDict_Type_update.type = (PyObject*)&PyDict_Type; -+ if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); -+ __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_int_16 = PyInt_FromLong(16); if (unlikely(!__pyx_int_16)) __PYX_ERR(0, 1, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; - } - --#if PY_MAJOR_VERSION < 3 --PyMODINIT_FUNC initparser(void); /*proto*/ --PyMODINIT_FUNC initparser(void) --#else --PyMODINIT_FUNC PyInit_parser(void); /*proto*/ --PyMODINIT_FUNC PyInit_parser(void) --#endif --{ -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- int __pyx_t_6; -- PyObject *__pyx_t_7 = NULL; -- PyObject *__pyx_t_8 = NULL; -- PyObject *__pyx_t_9 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -+static int __Pyx_modinit_global_init_code(void); /*proto*/ -+static int __Pyx_modinit_variable_export_code(void); /*proto*/ -+static int __Pyx_modinit_function_export_code(void); /*proto*/ -+static int __Pyx_modinit_type_init_code(void); /*proto*/ -+static int __Pyx_modinit_type_import_code(void); /*proto*/ -+static int __Pyx_modinit_variable_import_code(void); /*proto*/ -+static int __Pyx_modinit_function_import_code(void); /*proto*/ -+ -+static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations -- #if CYTHON_REFNANNY -- __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -- if (!__Pyx_RefNanny) { -- PyErr_Clear(); -- __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); -- if (!__Pyx_RefNanny) -- Py_FatalError("failed to import 'refnanny' module"); -+ __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); -+ /*--- Global init code ---*/ -+ __Pyx_RefNannyFinishContext(); -+ return 0; -+} -+ -+static int __Pyx_modinit_variable_export_code(void) { -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); -+ /*--- Variable export code ---*/ -+ __Pyx_RefNannyFinishContext(); -+ return 0; -+} -+ -+static int __Pyx_modinit_function_export_code(void) { -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); -+ /*--- Function export code ---*/ -+ __Pyx_RefNannyFinishContext(); -+ return 0; -+} -+ -+static int __Pyx_modinit_type_init_code(void) { -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); -+ /*--- Type init code ---*/ -+ if (PyType_Ready(&__pyx_type_11http_parser_6parser_HttpParser) < 0) __PYX_ERR(0, 193, __pyx_L1_error) -+ __pyx_type_11http_parser_6parser_HttpParser.tp_print = 0; -+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_11http_parser_6parser_HttpParser.tp_dictoffset && __pyx_type_11http_parser_6parser_HttpParser.tp_getattro == PyObject_GenericGetAttr)) { -+ __pyx_type_11http_parser_6parser_HttpParser.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } -- #endif -- __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_parser(void)", 0); -- if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- #ifdef __Pyx_CyFunction_USED -- if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- #endif -- #ifdef __Pyx_FusedFunction_USED -- if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- #endif -- #ifdef __Pyx_Generator_USED -- if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- #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? */ -- PyEval_InitThreads(); -- #endif -- #endif -- /*--- Module creation code ---*/ -- #if PY_MAJOR_VERSION < 3 -- __pyx_m = Py_InitModule4(__Pyx_NAMESTR("parser"), __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); -- #else -- __pyx_m = PyModule_Create(&__pyx_moduledef); -- #endif -- if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- Py_INCREF(__pyx_d); -- #if PY_MAJOR_VERSION >= 3 -+ #if CYTHON_COMPILING_IN_CPYTHON - { -- PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- if (!PyDict_GetItemString(modules, "http_parser.parser")) { -- if (unlikely(PyDict_SetItemString(modules, "http_parser.parser", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_11http_parser_6parser_HttpParser, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 193, __pyx_L1_error) -+ if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { -+ __pyx_wrapperbase_11http_parser_6parser_10HttpParser___init__ = *((PyWrapperDescrObject *)wrapper)->d_base; -+ __pyx_wrapperbase_11http_parser_6parser_10HttpParser___init__.doc = __pyx_doc_11http_parser_6parser_10HttpParser___init__; -+ ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_11http_parser_6parser_10HttpParser___init__; - } - } - #endif -- __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (PyObject_SetAttrString(__pyx_m, "HttpParser", (PyObject *)&__pyx_type_11http_parser_6parser_HttpParser) < 0) __PYX_ERR(0, 193, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_11http_parser_6parser_HttpParser) < 0) __PYX_ERR(0, 193, __pyx_L1_error) -+ __pyx_ptype_11http_parser_6parser_HttpParser = &__pyx_type_11http_parser_6parser_HttpParser; -+ __Pyx_RefNannyFinishContext(); -+ return 0; -+ __pyx_L1_error:; -+ __Pyx_RefNannyFinishContext(); -+ return -1; -+} -+ -+static int __Pyx_modinit_type_import_code(void) { -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); -+ /*--- Type import code ---*/ -+ __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", -+ #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 -+ sizeof(PyTypeObject), -+ #else -+ sizeof(PyHeapTypeObject), -+ #endif -+ 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(2, 9, __pyx_L1_error) -+ __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), 0); if (unlikely(!__pyx_ptype_7cpython_4bool_bool)) __PYX_ERR(3, 8, __pyx_L1_error) -+ __pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "complex", sizeof(PyComplexObject), 0); if (unlikely(!__pyx_ptype_7cpython_7complex_complex)) __PYX_ERR(4, 15, __pyx_L1_error) -+ __Pyx_RefNannyFinishContext(); -+ return 0; -+ __pyx_L1_error:; -+ __Pyx_RefNannyFinishContext(); -+ return -1; -+} -+ -+static int __Pyx_modinit_variable_import_code(void) { -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); -+ /*--- Variable import code ---*/ -+ __Pyx_RefNannyFinishContext(); -+ return 0; -+} -+ -+static int __Pyx_modinit_function_import_code(void) { -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); -+ /*--- Function import code ---*/ -+ __Pyx_RefNannyFinishContext(); -+ return 0; -+} -+ -+ -+#if PY_MAJOR_VERSION < 3 -+#ifdef CYTHON_NO_PYINIT_EXPORT -+#define __Pyx_PyMODINIT_FUNC void -+#else -+#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -+#endif -+#else -+#ifdef CYTHON_NO_PYINIT_EXPORT -+#define __Pyx_PyMODINIT_FUNC PyObject * -+#else -+#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -+#endif -+#endif -+#ifndef CYTHON_SMALL_CODE -+#if defined(__clang__) -+ #define CYTHON_SMALL_CODE -+#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) -+ #define CYTHON_SMALL_CODE __attribute__((optimize("Os"))) -+#else -+ #define CYTHON_SMALL_CODE -+#endif -+#endif -+ -+ -+#if PY_MAJOR_VERSION < 3 -+__Pyx_PyMODINIT_FUNC initparser(void) CYTHON_SMALL_CODE; /*proto*/ -+__Pyx_PyMODINIT_FUNC initparser(void) -+#else -+__Pyx_PyMODINIT_FUNC PyInit_parser(void) CYTHON_SMALL_CODE; /*proto*/ -+__Pyx_PyMODINIT_FUNC PyInit_parser(void) -+#if CYTHON_PEP489_MULTI_PHASE_INIT -+{ -+ return PyModuleDef_Init(&__pyx_moduledef); -+} -+static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { -+ PyObject *value = PyObject_GetAttrString(spec, from_name); -+ int result = 0; -+ if (likely(value)) { -+ result = PyDict_SetItemString(moddict, to_name, value); -+ Py_DECREF(value); -+ } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { -+ PyErr_Clear(); -+ } else { -+ result = -1; -+ } -+ return result; -+} -+static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { -+ PyObject *module = NULL, *moddict, *modname; -+ if (__pyx_m) -+ return __Pyx_NewRef(__pyx_m); -+ modname = PyObject_GetAttrString(spec, "name"); -+ if (unlikely(!modname)) goto bad; -+ module = PyModule_NewObject(modname); -+ Py_DECREF(modname); -+ if (unlikely(!module)) goto bad; -+ moddict = PyModule_GetDict(module); -+ if (unlikely(!moddict)) goto bad; -+ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; -+ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; -+ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; -+ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; -+ return module; -+bad: -+ Py_XDECREF(module); -+ return NULL; -+} -+ -+ -+static int __pyx_pymod_exec_parser(PyObject *__pyx_pyinit_module) -+#endif -+#endif -+{ -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ int __pyx_t_6; -+ PyObject *__pyx_t_7 = NULL; -+ PyObject *__pyx_t_8 = NULL; -+ PyObject *__pyx_t_9 = NULL; -+ __Pyx_RefNannyDeclarations -+ #if CYTHON_PEP489_MULTI_PHASE_INIT -+ if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; -+ #elif PY_MAJOR_VERSION >= 3 -+ if (__pyx_m) return __Pyx_NewRef(__pyx_m); -+ #endif -+ #if CYTHON_REFNANNY -+__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -+if (!__Pyx_RefNanny) { -+ PyErr_Clear(); -+ __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); -+ if (!__Pyx_RefNanny) -+ Py_FatalError("failed to import 'refnanny' module"); -+} -+#endif -+ __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_parser(void)", 0); -+ if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) -+ #ifdef __Pyx_CyFunction_USED -+ if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif -+ #ifdef __Pyx_FusedFunction_USED -+ if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif -+ #ifdef __Pyx_Coroutine_USED -+ if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif -+ #ifdef __Pyx_Generator_USED -+ if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif -+ #ifdef __Pyx_AsyncGen_USED -+ if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif -+ #ifdef __Pyx_StopAsyncIteration_USED -+ if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #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? */ -+ PyEval_InitThreads(); -+ #endif -+ #endif -+ /*--- Module creation code ---*/ -+ #if CYTHON_PEP489_MULTI_PHASE_INIT -+ __pyx_m = __pyx_pyinit_module; -+ Py_INCREF(__pyx_m); -+ #else -+ #if PY_MAJOR_VERSION < 3 -+ __pyx_m = Py_InitModule4("parser", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); -+ #else -+ __pyx_m = PyModule_Create(&__pyx_moduledef); -+ #endif -+ if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif -+ __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) -+ Py_INCREF(__pyx_d); -+ __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_COMPILING_IN_PYPY - Py_INCREF(__pyx_b); - #endif -- if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; -+ if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ -- if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) -- if (__Pyx_init_sys_getdefaultencoding_params() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_http_parser__parser) { -- if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; -+ if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } -- /*--- Builtin init code ---*/ -- if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- /*--- Constants init code ---*/ -- if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- /*--- Global init code ---*/ -- /*--- Variable export code ---*/ -- /*--- Function export code ---*/ -- /*--- Type init code ---*/ -- if (PyType_Ready(&__pyx_type_11http_parser_6parser_HttpParser) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- #if CYTHON_COMPILING_IN_CPYTHON -+ #if PY_MAJOR_VERSION >= 3 - { -- PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_11http_parser_6parser_HttpParser, "__init__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { -- __pyx_wrapperbase_11http_parser_6parser_10HttpParser___init__ = *((PyWrapperDescrObject *)wrapper)->d_base; -- __pyx_wrapperbase_11http_parser_6parser_10HttpParser___init__.doc = __pyx_doc_11http_parser_6parser_10HttpParser___init__; -- ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_11http_parser_6parser_10HttpParser___init__; -+ PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) -+ if (!PyDict_GetItemString(modules, "http_parser.parser")) { -+ if (unlikely(PyDict_SetItemString(modules, "http_parser.parser", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif -- if (__Pyx_SetAttrString(__pyx_m, "HttpParser", (PyObject *)&__pyx_type_11http_parser_6parser_HttpParser) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_ptype_11http_parser_6parser_HttpParser = &__pyx_type_11http_parser_6parser_HttpParser; -- /*--- Type import code ---*/ -- __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", -- #if CYTHON_COMPILING_IN_PYPY -- sizeof(PyTypeObject), -- #else -- sizeof(PyHeapTypeObject), -- #endif -- 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), 0); if (unlikely(!__pyx_ptype_7cpython_4bool_bool)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "complex", sizeof(PyComplexObject), 0); if (unlikely(!__pyx_ptype_7cpython_7complex_complex)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- /*--- Variable import code ---*/ -- /*--- Function import code ---*/ -+ /*--- Builtin init code ---*/ -+ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ /*--- Constants init code ---*/ -+ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 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_import_code() != 0)) goto __pyx_L1_error; -+ (void)__Pyx_modinit_variable_import_code(); -+ (void)__Pyx_modinit_function_import_code(); - /*--- Execution code ---*/ -+ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) -+ if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif - - /* "http_parser/parser.pyx":7 - * -@@ -5831,9 +7596,9 @@ PyMODINIT_FUNC PyInit_parser(void) - * try: - * from urllib.parse import urlsplit - */ -- __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__os), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = __Pyx_Import(__pyx_n_s_os, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s__os, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_1) < 0) __PYX_ERR(0, 7, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":8 -@@ -5844,6 +7609,8 @@ PyMODINIT_FUNC PyInit_parser(void) - * except ImportError: - */ - { -+ __Pyx_PyThreadState_declare -+ __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); -@@ -5857,24 +7624,32 @@ PyMODINIT_FUNC PyInit_parser(void) - * except ImportError: - * from urlparse import urlsplit - */ -- __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L2_error;} -+ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L2_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(((PyObject *)__pyx_n_s__urlsplit)); -- PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_s__urlsplit)); -- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__urlsplit)); -- __pyx_t_5 = __Pyx_Import(((PyObject *)__pyx_n_s_24), ((PyObject *)__pyx_t_1), -1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L2_error;} -+ __Pyx_INCREF(__pyx_n_s_urlsplit); -+ __Pyx_GIVEREF(__pyx_n_s_urlsplit); -+ PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_urlsplit); -+ __pyx_t_5 = __Pyx_Import(__pyx_n_s_urllib_parse, __pyx_t_1, -1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9, __pyx_L2_error) - __Pyx_GOTREF(__pyx_t_5); -- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_5, __pyx_n_s__urlsplit); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L2_error;} -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_5, __pyx_n_s_urlsplit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L2_error) - __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s__urlsplit, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L2_error;} -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_urlsplit, __pyx_t_1) < 0) __PYX_ERR(0, 9, __pyx_L2_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ -+ /* "http_parser/parser.pyx":8 -+ * from libc.stdlib cimport * -+ * import os -+ * try: # <<<<<<<<<<<<<< -+ * from urllib.parse import urlsplit -+ * except ImportError: -+ */ - } - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- goto __pyx_L9_try_end; -+ goto __pyx_L7_try_end; - __pyx_L2_error:; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -@@ -5886,10 +7661,10 @@ PyMODINIT_FUNC PyInit_parser(void) - * from urlparse import urlsplit - * - */ -- __pyx_t_6 = PyErr_ExceptionMatches(__pyx_builtin_ImportError); -+ __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError); - if (__pyx_t_6) { - __Pyx_AddTraceback("http_parser.parser", __pyx_clineno, __pyx_lineno, __pyx_filename); -- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;} -+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_7) < 0) __PYX_ERR(0, 10, __pyx_L4_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_7); -@@ -5901,17 +7676,17 @@ PyMODINIT_FUNC PyInit_parser(void) - * - * import zlib - */ -- __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;} -+ __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11, __pyx_L4_except_error) - __Pyx_GOTREF(__pyx_t_8); -- __Pyx_INCREF(((PyObject *)__pyx_n_s__urlsplit)); -- PyList_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_n_s__urlsplit)); -- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__urlsplit)); -- __pyx_t_9 = __Pyx_Import(((PyObject *)__pyx_n_s__urlparse), ((PyObject *)__pyx_t_8), -1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;} -+ __Pyx_INCREF(__pyx_n_s_urlsplit); -+ __Pyx_GIVEREF(__pyx_n_s_urlsplit); -+ PyList_SET_ITEM(__pyx_t_8, 0, __pyx_n_s_urlsplit); -+ __pyx_t_9 = __Pyx_Import(__pyx_n_s_urlparse, __pyx_t_8, -1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11, __pyx_L4_except_error) - __Pyx_GOTREF(__pyx_t_9); -- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; -- __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_9, __pyx_n_s__urlsplit); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;} -+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -+ __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_9, __pyx_n_s_urlsplit); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11, __pyx_L4_except_error) - __Pyx_GOTREF(__pyx_t_8); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s__urlsplit, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;} -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_urlsplit, __pyx_t_8) < 0) __PYX_ERR(0, 11, __pyx_L4_except_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -@@ -5919,7 +7694,16 @@ PyMODINIT_FUNC PyInit_parser(void) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L3_exception_handled; - } -+ goto __pyx_L4_except_error; - __pyx_L4_except_error:; -+ -+ /* "http_parser/parser.pyx":8 -+ * from libc.stdlib cimport * -+ * import os -+ * try: # <<<<<<<<<<<<<< -+ * from urllib.parse import urlsplit -+ * except ImportError: -+ */ - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); -@@ -5930,7 +7714,7 @@ PyMODINIT_FUNC PyInit_parser(void) - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); -- __pyx_L9_try_end:; -+ __pyx_L7_try_end:; - } - - /* "http_parser/parser.pyx":13 -@@ -5940,9 +7724,9 @@ PyMODINIT_FUNC PyInit_parser(void) - * - * from http_parser.util import b, bytes_to_str, IOrderedDict, unquote - */ -- __pyx_t_7 = __Pyx_Import(((PyObject *)__pyx_n_s__zlib), 0, -1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_7 = __Pyx_Import(__pyx_n_s_zlib, 0, -1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s__zlib, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_zlib, __pyx_t_7) < 0) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "http_parser/parser.pyx":15 -@@ -5952,38 +7736,38 @@ PyMODINIT_FUNC PyInit_parser(void) - * - * cdef extern from "pyversion_compat.h": - */ -- __pyx_t_7 = PyList_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_7 = PyList_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- __Pyx_INCREF(((PyObject *)__pyx_n_s__b)); -- PyList_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_n_s__b)); -- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__b)); -- __Pyx_INCREF(((PyObject *)__pyx_n_s__bytes_to_str)); -- PyList_SET_ITEM(__pyx_t_7, 1, ((PyObject *)__pyx_n_s__bytes_to_str)); -- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bytes_to_str)); -- __Pyx_INCREF(((PyObject *)__pyx_n_s__IOrderedDict)); -- PyList_SET_ITEM(__pyx_t_7, 2, ((PyObject *)__pyx_n_s__IOrderedDict)); -- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__IOrderedDict)); -- __Pyx_INCREF(((PyObject *)__pyx_n_s__unquote)); -- PyList_SET_ITEM(__pyx_t_7, 3, ((PyObject *)__pyx_n_s__unquote)); -- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__unquote)); -- __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s_25), ((PyObject *)__pyx_t_7), -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __Pyx_INCREF(__pyx_n_s_b); -+ __Pyx_GIVEREF(__pyx_n_s_b); -+ PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_b); -+ __Pyx_INCREF(__pyx_n_s_bytes_to_str); -+ __Pyx_GIVEREF(__pyx_n_s_bytes_to_str); -+ PyList_SET_ITEM(__pyx_t_7, 1, __pyx_n_s_bytes_to_str); -+ __Pyx_INCREF(__pyx_n_s_IOrderedDict); -+ __Pyx_GIVEREF(__pyx_n_s_IOrderedDict); -+ PyList_SET_ITEM(__pyx_t_7, 2, __pyx_n_s_IOrderedDict); -+ __Pyx_INCREF(__pyx_n_s_unquote); -+ __Pyx_GIVEREF(__pyx_n_s_unquote); -+ PyList_SET_ITEM(__pyx_t_7, 3, __pyx_n_s_unquote); -+ __pyx_t_1 = __Pyx_Import(__pyx_n_s_http_parser_util, __pyx_t_7, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; -- __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s__b); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_b); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s__b, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_b, __pyx_t_7) < 0) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s__bytes_to_str); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_bytes_to_str); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s__bytes_to_str, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_bytes_to_str, __pyx_t_7) < 0) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s__IOrderedDict); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_IOrderedDict); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s__IOrderedDict, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_IOrderedDict, __pyx_t_7) < 0) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s__unquote); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_unquote); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s__unquote, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_unquote, __pyx_t_7) < 0) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -@@ -5994,9 +7778,9 @@ PyMODINIT_FUNC PyInit_parser(void) - * if not HPE_OK <= errno <= HPE_UNKNOWN: - * raise ValueError('errno out of range') - */ -- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11http_parser_6parser_1get_errno_name, NULL, __pyx_n_s_29); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11http_parser_6parser_1get_errno_name, NULL, __pyx_n_s_http_parser_parser); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s__get_errno_name, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_errno_name, __pyx_t_1) < 0) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":165 -@@ -6006,9 +7790,9 @@ PyMODINIT_FUNC PyInit_parser(void) - * if not HPE_OK <= errno <= HPE_UNKNOWN: - * raise ValueError('errno out of range') - */ -- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11http_parser_6parser_3get_errno_description, NULL, __pyx_n_s_29); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11http_parser_6parser_3get_errno_description, NULL, __pyx_n_s_http_parser_parser); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_32, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_errno_description, __pyx_t_1) < 0) __PYX_ERR(0, 165, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":171 -@@ -6018,8 +7802,10 @@ PyMODINIT_FUNC PyInit_parser(void) - * - * def __init__(self, decompress=False, header_only=False): - */ -- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -+ __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__19); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_tuple__19, __pyx_n_s_ParserData, __pyx_n_s_ParserData, (PyObject *) NULL, __pyx_n_s_http_parser_parser, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 171, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); - - /* "http_parser/parser.pyx":173 - * class _ParserData(object): -@@ -6028,22 +7814,11 @@ PyMODINIT_FUNC PyInit_parser(void) - * self.url = "" - * self.body = [] - */ -- __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_11http_parser_6parser_11_ParserData_1__init__, 0, __pyx_n_s_35, NULL, __pyx_n_s_29, ((PyObject *)__pyx_k_codeobj_34)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_7); -- if (!__Pyx_CyFunction_InitDefaults(__pyx_t_7, sizeof(__pyx_defaults), 2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_11http_parser_6parser_11_ParserData_1__init__, 0, __pyx_n_s_ParserData___init, NULL, __pyx_n_s_http_parser_parser, __pyx_d, ((PyObject *)__pyx_codeobj__21)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 173, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); -- __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_7)->__pyx_arg_decompress = __pyx_t_5; -- __Pyx_GIVEREF(__pyx_t_5); -- __pyx_t_5 = 0; -- __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_7)->__pyx_arg_header_only = __pyx_t_5; -- __Pyx_GIVEREF(__pyx_t_5); -- __pyx_t_5 = 0; -- __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_7, __pyx_pf_11http_parser_6parser_11_ParserData_2__defaults__); -- if (PyObject_SetItem(__pyx_t_1, __pyx_n_s____init__, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_tuple__22); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_init, __pyx_t_5) < 0) __PYX_ERR(0, 173, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "http_parser/parser.pyx":171 - * -@@ -6052,45 +7827,25 @@ PyMODINIT_FUNC PyInit_parser(void) - * - * def __init__(self, decompress=False, header_only=False): - */ -- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_7); -- __Pyx_INCREF(__pyx_builtin_object); -- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_builtin_object); -- __Pyx_GIVEREF(__pyx_builtin_object); -- __pyx_t_5 = __Pyx_CreateClass(((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_1), __pyx_n_s___ParserData, __pyx_n_s___ParserData, __pyx_n_s_29); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_ParserData, __pyx_tuple__19, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 171, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); -- __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; -- if (PyDict_SetItem(__pyx_d, __pyx_n_s___ParserData, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_ParserData, __pyx_t_5) < 0) __PYX_ERR(0, 171, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -- -- /* "http_parser/parser.pyx":205 -- * cdef object _parsed_url -- * -- * def __init__(self, kind=2, decompress=False, header_only=False): # <<<<<<<<<<<<<< -- * """ constructor of HttpParser object. -- * : -- */ -- __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_k_10 = __pyx_t_1; -- __Pyx_GIVEREF(__pyx_t_1); -- __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_k_11 = __pyx_t_1; -- __Pyx_GIVEREF(__pyx_t_1); -- __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "http_parser/parser.pyx":1 - * # -*- coding: utf-8 - # <<<<<<<<<<<<<< - * # - * # This file is part of http-parser released under the MIT license. - */ -- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s____test__, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /*--- Wrapped vars code ---*/ -+ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -@@ -6099,21 +7854,26 @@ PyMODINIT_FUNC PyInit_parser(void) - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - if (__pyx_m) { -- __Pyx_AddTraceback("init http_parser.parser", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ if (__pyx_d) { -+ __Pyx_AddTraceback("init http_parser.parser", 0, __pyx_lineno, __pyx_filename); -+ } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init http_parser.parser"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); -- #if PY_MAJOR_VERSION < 3 -- return; -- #else -+ #if CYTHON_PEP489_MULTI_PHASE_INIT -+ return (__pyx_m != NULL) ? 0 : -1; -+ #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; -+ #else -+ return; - #endif - } - --/* Runtime support code */ -+/* --- Runtime support code --- */ -+/* Refnanny */ - #if CYTHON_REFNANNY - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; -@@ -6128,8 +7888,23 @@ static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; - } --#endif /* CYTHON_REFNANNY */ -+#endif -+ -+/* PyObjectGetAttrStr */ -+#if CYTHON_USE_TYPE_SLOTS -+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { -+ PyTypeObject* tp = Py_TYPE(obj); -+ if (likely(tp->tp_getattro)) -+ return tp->tp_getattro(obj, attr_name); -+#if PY_MAJOR_VERSION < 3 -+ if (likely(tp->tp_getattr)) -+ return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -+#endif -+ return PyObject_GetAttr(obj, attr_name); -+} -+#endif - -+/* GetBuiltinName */ - static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { -@@ -6137,19 +7912,29 @@ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - #if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); - #else -- "name '%s' is not defined", PyString_AS_STRING(name)); -+ "name '%.200s' is not defined", PyString_AS_STRING(name)); - #endif - } - return result; - } - -+/* GetModuleGlobalName */ - static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - PyObject *result; --#if CYTHON_COMPILING_IN_CPYTHON -+#if !CYTHON_AVOID_BORROWED_REFS -+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 -+ result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); -+ if (likely(result)) { -+ Py_INCREF(result); -+ } else if (unlikely(PyErr_Occurred())) { -+ result = NULL; -+ } else { -+#else - result = PyDict_GetItem(__pyx_d, name); -- if (result) { -+ if (likely(result)) { - Py_INCREF(result); - } else { -+#endif - #else - result = PyObject_GetItem(__pyx_d, name); - if (!result) { -@@ -6160,100 +7945,878 @@ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - return result; - } - --static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { --#if CYTHON_COMPILING_IN_CPYTHON -- PyObject *tmp_type, *tmp_value, *tmp_tb; -- PyThreadState *tstate = PyThreadState_GET(); -- tmp_type = tstate->curexc_type; -- tmp_value = tstate->curexc_value; -- tmp_tb = tstate->curexc_traceback; -- tstate->curexc_type = type; -- tstate->curexc_value = value; -- tstate->curexc_traceback = tb; -- Py_XDECREF(tmp_type); -- Py_XDECREF(tmp_value); -- Py_XDECREF(tmp_tb); --#else -- PyErr_Restore(type, value, tb); --#endif --} --static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) { --#if CYTHON_COMPILING_IN_CPYTHON -- PyThreadState *tstate = PyThreadState_GET(); -- *type = tstate->curexc_type; -- *value = tstate->curexc_value; -- *tb = tstate->curexc_traceback; -- tstate->curexc_type = 0; -- tstate->curexc_value = 0; -- tstate->curexc_traceback = 0; --#else -- PyErr_Fetch(type, value, tb); --#endif --} -- --static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, -- CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename) { -- PyObject *old_exc, *old_val, *old_tb; -- PyObject *ctx; -- __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); -- #if PY_MAJOR_VERSION < 3 -- ctx = PyString_FromString(name); -- #else -- ctx = PyUnicode_FromString(name); -- #endif -- __Pyx_ErrRestore(old_exc, old_val, old_tb); -- if (!ctx) { -- PyErr_WriteUnraisable(Py_None); -+/* PyCFunctionFastCall */ -+ #if CYTHON_FAST_PYCCALL -+static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { -+ PyCFunctionObject *func = (PyCFunctionObject*)func_obj; -+ PyCFunction meth = PyCFunction_GET_FUNCTION(func); -+ PyObject *self = PyCFunction_GET_SELF(func); -+ int flags = PyCFunction_GET_FLAGS(func); -+ assert(PyCFunction_Check(func)); -+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); -+ assert(nargs >= 0); -+ assert(nargs == 0 || args != NULL); -+ /* _PyCFunction_FastCallDict() must not be called with an exception set, -+ because it may clear it (directly or indirectly) and so the -+ caller loses its exception */ -+ assert(!PyErr_Occurred()); -+ if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { -+ return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { -- PyErr_WriteUnraisable(ctx); -- Py_DECREF(ctx); -+ return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } - } -+#endif - --static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { -- PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); -+/* PyFunctionFastCall */ -+ #if CYTHON_FAST_PYCALL -+#include "frameobject.h" -+static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, -+ PyObject *globals) { -+ PyFrameObject *f; -+ PyThreadState *tstate = __Pyx_PyThreadState_Current; -+ PyObject **fastlocals; -+ Py_ssize_t i; -+ PyObject *result; -+ assert(globals != NULL); -+ /* XXX Perhaps we should create a specialized -+ PyFrame_New() that doesn't take locals, but does -+ take builtins without sanity checking them. -+ */ -+ assert(tstate != NULL); -+ f = PyFrame_New(tstate, co, globals, NULL); -+ if (f == NULL) { -+ return NULL; -+ } -+ fastlocals = f->f_localsplus; -+ for (i = 0; i < na; i++) { -+ Py_INCREF(*args); -+ fastlocals[i] = *args++; -+ } -+ result = PyEval_EvalFrameEx(f,0); -+ ++tstate->recursion_depth; -+ Py_DECREF(f); -+ --tstate->recursion_depth; -+ return result; - } -- --static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { -- PyObject *local_type, *local_value, *local_tb; --#if CYTHON_COMPILING_IN_CPYTHON -- PyObject *tmp_type, *tmp_value, *tmp_tb; -- PyThreadState *tstate = PyThreadState_GET(); -- local_type = tstate->curexc_type; -- local_value = tstate->curexc_value; -- local_tb = tstate->curexc_traceback; -- tstate->curexc_type = 0; -- tstate->curexc_value = 0; -- tstate->curexc_traceback = 0; --#else -- PyErr_Fetch(&local_type, &local_value, &local_tb); -+#if 1 || PY_VERSION_HEX < 0x030600B1 -+static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { -+ PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); -+ PyObject *globals = PyFunction_GET_GLOBALS(func); -+ PyObject *argdefs = PyFunction_GET_DEFAULTS(func); -+ PyObject *closure; -+#if PY_MAJOR_VERSION >= 3 -+ PyObject *kwdefs; - #endif -- PyErr_NormalizeException(&local_type, &local_value, &local_tb); --#if CYTHON_COMPILING_IN_CPYTHON -+ PyObject *kwtuple, **k; -+ PyObject **d; -+ Py_ssize_t nd; -+ Py_ssize_t nk; -+ PyObject *result; -+ assert(kwargs == NULL || PyDict_Check(kwargs)); -+ nk = kwargs ? PyDict_Size(kwargs) : 0; -+ if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { -+ return NULL; -+ } -+ if ( -+#if PY_MAJOR_VERSION >= 3 -+ co->co_kwonlyargcount == 0 && -+#endif -+ likely(kwargs == NULL || nk == 0) && -+ co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { -+ if (argdefs == NULL && co->co_argcount == nargs) { -+ result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); -+ goto done; -+ } -+ else if (nargs == 0 && argdefs != NULL -+ && co->co_argcount == Py_SIZE(argdefs)) { -+ /* function called with no arguments, but all parameters have -+ a default value: use default values as arguments .*/ -+ args = &PyTuple_GET_ITEM(argdefs, 0); -+ result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); -+ goto done; -+ } -+ } -+ if (kwargs != NULL) { -+ Py_ssize_t pos, i; -+ kwtuple = PyTuple_New(2 * nk); -+ if (kwtuple == NULL) { -+ result = NULL; -+ goto done; -+ } -+ k = &PyTuple_GET_ITEM(kwtuple, 0); -+ pos = i = 0; -+ while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { -+ Py_INCREF(k[i]); -+ Py_INCREF(k[i+1]); -+ i += 2; -+ } -+ nk = i / 2; -+ } -+ else { -+ kwtuple = NULL; -+ k = NULL; -+ } -+ closure = PyFunction_GET_CLOSURE(func); -+#if PY_MAJOR_VERSION >= 3 -+ kwdefs = PyFunction_GET_KW_DEFAULTS(func); -+#endif -+ if (argdefs != NULL) { -+ d = &PyTuple_GET_ITEM(argdefs, 0); -+ nd = Py_SIZE(argdefs); -+ } -+ else { -+ d = NULL; -+ nd = 0; -+ } -+#if PY_MAJOR_VERSION >= 3 -+ result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, -+ args, nargs, -+ k, (int)nk, -+ d, (int)nd, kwdefs, closure); -+#else -+ result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, -+ args, nargs, -+ k, (int)nk, -+ d, (int)nd, closure); -+#endif -+ Py_XDECREF(kwtuple); -+done: -+ Py_LeaveRecursiveCall(); -+ return result; -+} -+#endif -+#endif -+ -+/* PyObjectCall */ -+ #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; -+ if (unlikely(!call)) -+ return PyObject_Call(func, arg, kw); -+ if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) -+ return NULL; -+ result = (*call)(func, arg, kw); -+ Py_LeaveRecursiveCall(); -+ if (unlikely(!result) && unlikely(!PyErr_Occurred())) { -+ PyErr_SetString( -+ PyExc_SystemError, -+ "NULL result without error in PyObject_Call"); -+ } -+ return result; -+} -+#endif -+ -+/* PyObjectCallMethO */ -+ #if CYTHON_COMPILING_IN_CPYTHON -+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { -+ PyObject *self, *result; -+ PyCFunction cfunc; -+ cfunc = PyCFunction_GET_FUNCTION(func); -+ self = PyCFunction_GET_SELF(func); -+ if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) -+ return NULL; -+ result = cfunc(self, arg); -+ Py_LeaveRecursiveCall(); -+ if (unlikely(!result) && unlikely(!PyErr_Occurred())) { -+ PyErr_SetString( -+ PyExc_SystemError, -+ "NULL result without error in PyObject_Call"); -+ } -+ return result; -+} -+#endif -+ -+/* PyObjectCallOneArg */ -+ #if CYTHON_COMPILING_IN_CPYTHON -+static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { -+ PyObject *result; -+ PyObject *args = PyTuple_New(1); -+ if (unlikely(!args)) return NULL; -+ Py_INCREF(arg); -+ PyTuple_SET_ITEM(args, 0, arg); -+ result = __Pyx_PyObject_Call(func, args, NULL); -+ Py_DECREF(args); -+ return result; -+} -+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -+#if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(func)) { -+ return __Pyx_PyFunction_FastCall(func, &arg, 1); -+ } -+#endif -+ if (likely(PyCFunction_Check(func))) { -+ 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) { -+ return __Pyx_PyCFunction_FastCall(func, &arg, 1); -+#endif -+ } -+ } -+ return __Pyx__PyObject_CallOneArg(func, arg); -+} -+#else -+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -+ PyObject *result; -+ PyObject *args = PyTuple_Pack(1, arg); -+ if (unlikely(!args)) return NULL; -+ result = __Pyx_PyObject_Call(func, args, NULL); -+ Py_DECREF(args); -+ return result; -+} -+#endif -+ -+/* PyObjectSetAttrStr */ -+ #if CYTHON_USE_TYPE_SLOTS -+static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { -+ PyTypeObject* tp = Py_TYPE(obj); -+ if (likely(tp->tp_setattro)) -+ return tp->tp_setattro(obj, attr_name, value); -+#if PY_MAJOR_VERSION < 3 -+ if (likely(tp->tp_setattr)) -+ return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -+#endif -+ return PyObject_SetAttr(obj, attr_name, value); -+} -+#endif -+ -+/* PyErrFetchRestore */ -+ #if CYTHON_FAST_THREAD_STATE -+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { -+ PyObject *tmp_type, *tmp_value, *tmp_tb; -+ tmp_type = tstate->curexc_type; -+ tmp_value = tstate->curexc_value; -+ tmp_tb = tstate->curexc_traceback; -+ tstate->curexc_type = type; -+ tstate->curexc_value = value; -+ tstate->curexc_traceback = tb; -+ Py_XDECREF(tmp_type); -+ Py_XDECREF(tmp_value); -+ Py_XDECREF(tmp_tb); -+} -+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -+ *type = tstate->curexc_type; -+ *value = tstate->curexc_value; -+ *tb = tstate->curexc_traceback; -+ tstate->curexc_type = 0; -+ tstate->curexc_value = 0; -+ tstate->curexc_traceback = 0; -+} -+#endif -+ -+/* WriteUnraisableException */ -+ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, -+ CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, -+ int full_traceback, CYTHON_UNUSED int nogil) { -+ PyObject *old_exc, *old_val, *old_tb; -+ PyObject *ctx; -+ __Pyx_PyThreadState_declare -+#ifdef WITH_THREAD -+ PyGILState_STATE state; -+ if (nogil) -+ state = PyGILState_Ensure(); -+#ifdef _MSC_VER -+ else state = (PyGILState_STATE)-1; -+#endif -+#endif -+ __Pyx_PyThreadState_assign -+ __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); -+ if (full_traceback) { -+ Py_XINCREF(old_exc); -+ Py_XINCREF(old_val); -+ Py_XINCREF(old_tb); -+ __Pyx_ErrRestore(old_exc, old_val, old_tb); -+ PyErr_PrintEx(1); -+ } -+ #if PY_MAJOR_VERSION < 3 -+ ctx = PyString_FromString(name); -+ #else -+ ctx = PyUnicode_FromString(name); -+ #endif -+ __Pyx_ErrRestore(old_exc, old_val, old_tb); -+ if (!ctx) { -+ PyErr_WriteUnraisable(Py_None); -+ } else { -+ PyErr_WriteUnraisable(ctx); -+ Py_DECREF(ctx); -+ } -+#ifdef WITH_THREAD -+ if (nogil) -+ PyGILState_Release(state); -+#endif -+} -+ -+/* GetItemInt */ -+ static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { -+ PyObject *r; -+ if (!j) return NULL; -+ r = PyObject_GetItem(o, j); -+ Py_DECREF(j); -+ return r; -+} -+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, -+ CYTHON_NCP_UNUSED int wraparound, -+ CYTHON_NCP_UNUSED int boundscheck) { -+#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ Py_ssize_t wrapped_i = i; -+ if (wraparound & unlikely(i < 0)) { -+ wrapped_i += PyList_GET_SIZE(o); -+ } -+ if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) { -+ PyObject *r = PyList_GET_ITEM(o, wrapped_i); -+ Py_INCREF(r); -+ return r; -+ } -+ return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -+#else -+ return PySequence_GetItem(o, i); -+#endif -+} -+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, -+ CYTHON_NCP_UNUSED int wraparound, -+ CYTHON_NCP_UNUSED int boundscheck) { -+#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ Py_ssize_t wrapped_i = i; -+ if (wraparound & unlikely(i < 0)) { -+ wrapped_i += PyTuple_GET_SIZE(o); -+ } -+ if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) { -+ PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); -+ Py_INCREF(r); -+ return r; -+ } -+ return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -+#else -+ return PySequence_GetItem(o, i); -+#endif -+} -+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, -+ CYTHON_NCP_UNUSED int wraparound, -+ CYTHON_NCP_UNUSED int boundscheck) { -+#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS -+ if (is_list || PyList_CheckExact(o)) { -+ Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); -+ if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { -+ PyObject *r = PyList_GET_ITEM(o, n); -+ Py_INCREF(r); -+ return r; -+ } -+ } -+ else if (PyTuple_CheckExact(o)) { -+ Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); -+ if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { -+ PyObject *r = PyTuple_GET_ITEM(o, n); -+ Py_INCREF(r); -+ return r; -+ } -+ } else { -+ PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; -+ if (likely(m && m->sq_item)) { -+ if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { -+ Py_ssize_t l = m->sq_length(o); -+ if (likely(l >= 0)) { -+ i += l; -+ } else { -+ if (!PyErr_ExceptionMatches(PyExc_OverflowError)) -+ return NULL; -+ PyErr_Clear(); -+ } -+ } -+ return m->sq_item(o, i); -+ } -+ } -+#else -+ if (is_list || PySequence_Check(o)) { -+ return PySequence_GetItem(o, i); -+ } -+#endif -+ return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -+} -+ -+/* ObjectGetItem */ -+ #if CYTHON_USE_TYPE_SLOTS -+static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { -+ PyObject *runerr; -+ Py_ssize_t key_value; -+ PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence; -+ if (unlikely(!(m && m->sq_item))) { -+ PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name); -+ return NULL; -+ } -+ key_value = __Pyx_PyIndex_AsSsize_t(index); -+ if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { -+ return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); -+ } -+ if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { -+ PyErr_Clear(); -+ PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name); -+ } -+ return NULL; -+} -+static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) { -+ PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping; -+ if (likely(m && m->mp_subscript)) { -+ return m->mp_subscript(obj, key); -+ } -+ return __Pyx_PyObject_GetIndex(obj, key); -+} -+#endif -+ -+/* BytesEquals */ -+ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { -+#if CYTHON_COMPILING_IN_PYPY -+ return PyObject_RichCompareBool(s1, s2, equals); -+#else -+ if (s1 == s2) { -+ return (equals == Py_EQ); -+ } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { -+ const char *ps1, *ps2; -+ Py_ssize_t length = PyBytes_GET_SIZE(s1); -+ if (length != PyBytes_GET_SIZE(s2)) -+ return (equals == Py_NE); -+ ps1 = PyBytes_AS_STRING(s1); -+ ps2 = PyBytes_AS_STRING(s2); -+ if (ps1[0] != ps2[0]) { -+ return (equals == Py_NE); -+ } else if (length == 1) { -+ return (equals == Py_EQ); -+ } else { -+ int result; -+#if CYTHON_USE_UNICODE_INTERNALS -+ Py_hash_t hash1, hash2; -+ hash1 = ((PyBytesObject*)s1)->ob_shash; -+ hash2 = ((PyBytesObject*)s2)->ob_shash; -+ if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { -+ return (equals == Py_NE); -+ } -+#endif -+ result = memcmp(ps1, ps2, (size_t)length); -+ return (equals == Py_EQ) ? (result == 0) : (result != 0); -+ } -+ } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { -+ return (equals == Py_NE); -+ } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { -+ return (equals == Py_NE); -+ } else { -+ int result; -+ PyObject* py_result = PyObject_RichCompare(s1, s2, equals); -+ if (!py_result) -+ return -1; -+ result = __Pyx_PyObject_IsTrue(py_result); -+ Py_DECREF(py_result); -+ return result; -+ } -+#endif -+} -+ -+/* UnicodeEquals */ -+ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { -+#if CYTHON_COMPILING_IN_PYPY -+ return PyObject_RichCompareBool(s1, s2, equals); -+#else -+#if PY_MAJOR_VERSION < 3 -+ PyObject* owned_ref = NULL; -+#endif -+ int s1_is_unicode, s2_is_unicode; -+ if (s1 == s2) { -+ goto return_eq; -+ } -+ s1_is_unicode = PyUnicode_CheckExact(s1); -+ s2_is_unicode = PyUnicode_CheckExact(s2); -+#if PY_MAJOR_VERSION < 3 -+ if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { -+ owned_ref = PyUnicode_FromObject(s2); -+ if (unlikely(!owned_ref)) -+ return -1; -+ s2 = owned_ref; -+ s2_is_unicode = 1; -+ } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { -+ owned_ref = PyUnicode_FromObject(s1); -+ if (unlikely(!owned_ref)) -+ return -1; -+ s1 = owned_ref; -+ s1_is_unicode = 1; -+ } else if (((!s2_is_unicode) & (!s1_is_unicode))) { -+ return __Pyx_PyBytes_Equals(s1, s2, equals); -+ } -+#endif -+ if (s1_is_unicode & s2_is_unicode) { -+ Py_ssize_t length; -+ int kind; -+ void *data1, *data2; -+ if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) -+ return -1; -+ length = __Pyx_PyUnicode_GET_LENGTH(s1); -+ if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { -+ goto return_ne; -+ } -+#if CYTHON_USE_UNICODE_INTERNALS -+ { -+ Py_hash_t hash1, hash2; -+ #if CYTHON_PEP393_ENABLED -+ hash1 = ((PyASCIIObject*)s1)->hash; -+ hash2 = ((PyASCIIObject*)s2)->hash; -+ #else -+ hash1 = ((PyUnicodeObject*)s1)->hash; -+ hash2 = ((PyUnicodeObject*)s2)->hash; -+ #endif -+ if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { -+ goto return_ne; -+ } -+ } -+#endif -+ kind = __Pyx_PyUnicode_KIND(s1); -+ if (kind != __Pyx_PyUnicode_KIND(s2)) { -+ goto return_ne; -+ } -+ data1 = __Pyx_PyUnicode_DATA(s1); -+ data2 = __Pyx_PyUnicode_DATA(s2); -+ if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { -+ goto return_ne; -+ } else if (length == 1) { -+ goto return_eq; -+ } else { -+ int result = memcmp(data1, data2, (size_t)(length * kind)); -+ #if PY_MAJOR_VERSION < 3 -+ Py_XDECREF(owned_ref); -+ #endif -+ return (equals == Py_EQ) ? (result == 0) : (result != 0); -+ } -+ } else if ((s1 == Py_None) & s2_is_unicode) { -+ goto return_ne; -+ } else if ((s2 == Py_None) & s1_is_unicode) { -+ goto return_ne; -+ } else { -+ int result; -+ PyObject* py_result = PyObject_RichCompare(s1, s2, equals); -+ if (!py_result) -+ return -1; -+ result = __Pyx_PyObject_IsTrue(py_result); -+ Py_DECREF(py_result); -+ return result; -+ } -+return_eq: -+ #if PY_MAJOR_VERSION < 3 -+ Py_XDECREF(owned_ref); -+ #endif -+ return (equals == Py_EQ); -+return_ne: -+ #if PY_MAJOR_VERSION < 3 -+ Py_XDECREF(owned_ref); -+ #endif -+ return (equals == Py_NE); -+#endif -+} -+ -+/* PyIntBinop */ -+ #if !CYTHON_COMPILING_IN_PYPY -+static PyObject* __Pyx_PyInt_AddCObj(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { -+ #if PY_MAJOR_VERSION < 3 -+ if (likely(PyInt_CheckExact(op2))) { -+ const long a = intval; -+ long x; -+ long b = PyInt_AS_LONG(op2); -+ x = (long)((unsigned long)a + b); -+ if (likely((x^a) >= 0 || (x^b) >= 0)) -+ return PyInt_FromLong(x); -+ return PyLong_Type.tp_as_number->nb_add(op1, op2); -+ } -+ #endif -+ #if CYTHON_USE_PYLONG_INTERNALS -+ if (likely(PyLong_CheckExact(op2))) { -+ const long a = intval; -+ long b, x; -+#ifdef HAVE_LONG_LONG -+ const PY_LONG_LONG lla = intval; -+ PY_LONG_LONG llb, llx; -+#endif -+ const digit* digits = ((PyLongObject*)op2)->ob_digit; -+ const Py_ssize_t size = Py_SIZE(op2); -+ if (likely(__Pyx_sst_abs(size) <= 1)) { -+ b = likely(size) ? digits[0] : 0; -+ if (size == -1) b = -b; -+ } else { -+ switch (size) { -+ case -2: -+ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { -+ b = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { -+ llb = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ case 2: -+ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { -+ b = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { -+ llb = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ case -3: -+ if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { -+ b = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { -+ llb = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ case 3: -+ if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { -+ b = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { -+ llb = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ case -4: -+ if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { -+ b = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { -+ llb = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ case 4: -+ if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { -+ b = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { -+ llb = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ default: return PyLong_Type.tp_as_number->nb_add(op1, op2); -+ } -+ } -+ x = a + b; -+ return PyLong_FromLong(x); -+#ifdef HAVE_LONG_LONG -+ long_long: -+ llx = lla + llb; -+ return PyLong_FromLongLong(llx); -+#endif -+ -+ -+ } -+ #endif -+ if (PyFloat_CheckExact(op2)) { -+ const long a = intval; -+ double b = PyFloat_AS_DOUBLE(op2); -+ double result; -+ PyFPE_START_PROTECT("add", return NULL) -+ result = ((double)a) + (double)b; -+ PyFPE_END_PROTECT(result) -+ return PyFloat_FromDouble(result); -+ } -+ return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); -+} -+#endif -+ -+/* PyObjectCallNoArg */ -+ #if CYTHON_COMPILING_IN_CPYTHON -+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -+#if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(func)) { -+ return __Pyx_PyFunction_FastCall(func, NULL, 0); -+ } -+#endif -+#ifdef __Pyx_CyFunction_USED -+ if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { -+#else -+ if (likely(PyCFunction_Check(func))) { -+#endif -+ if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { -+ return __Pyx_PyObject_CallMethO(func, NULL); -+ } -+ } -+ return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -+} -+#endif -+ -+/* SaveResetException */ -+ #if CYTHON_FAST_THREAD_STATE -+static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -+ #if PY_VERSION_HEX >= 0x030700A2 -+ *type = tstate->exc_state.exc_type; -+ *value = tstate->exc_state.exc_value; -+ *tb = tstate->exc_state.exc_traceback; -+ #else -+ *type = tstate->exc_type; -+ *value = tstate->exc_value; -+ *tb = tstate->exc_traceback; -+ #endif -+ Py_XINCREF(*type); -+ Py_XINCREF(*value); -+ Py_XINCREF(*tb); -+} -+static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { -+ PyObject *tmp_type, *tmp_value, *tmp_tb; -+ #if PY_VERSION_HEX >= 0x030700A2 -+ tmp_type = tstate->exc_state.exc_type; -+ tmp_value = tstate->exc_state.exc_value; -+ tmp_tb = tstate->exc_state.exc_traceback; -+ tstate->exc_state.exc_type = type; -+ tstate->exc_state.exc_value = value; -+ tstate->exc_state.exc_traceback = tb; -+ #else -+ tmp_type = tstate->exc_type; -+ tmp_value = tstate->exc_value; -+ tmp_tb = tstate->exc_traceback; -+ tstate->exc_type = type; -+ tstate->exc_value = value; -+ tstate->exc_traceback = tb; -+ #endif -+ Py_XDECREF(tmp_type); -+ Py_XDECREF(tmp_value); -+ Py_XDECREF(tmp_tb); -+} -+#endif -+ -+/* FastTypeChecks */ -+ #if CYTHON_COMPILING_IN_CPYTHON -+static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { -+ while (a) { -+ a = a->tp_base; -+ if (a == b) -+ return 1; -+ } -+ return b == &PyBaseObject_Type; -+} -+static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { -+ PyObject *mro; -+ if (a == b) return 1; -+ mro = a->tp_mro; -+ if (likely(mro)) { -+ Py_ssize_t i, n; -+ n = PyTuple_GET_SIZE(mro); -+ for (i = 0; i < n; i++) { -+ if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) -+ return 1; -+ } -+ return 0; -+ } -+ return __Pyx_InBases(a, b); -+} -+#if PY_MAJOR_VERSION == 2 -+static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { -+ PyObject *exception, *value, *tb; -+ int res; -+ __Pyx_PyThreadState_declare -+ __Pyx_PyThreadState_assign -+ __Pyx_ErrFetch(&exception, &value, &tb); -+ res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; -+ if (unlikely(res == -1)) { -+ PyErr_WriteUnraisable(err); -+ res = 0; -+ } -+ if (!res) { -+ res = PyObject_IsSubclass(err, exc_type2); -+ if (unlikely(res == -1)) { -+ PyErr_WriteUnraisable(err); -+ res = 0; -+ } -+ } -+ __Pyx_ErrRestore(exception, value, tb); -+ return res; -+} -+#else -+static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { -+ int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; -+ if (!res) { -+ res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); -+ } -+ return res; -+} -+#endif -+static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { -+ if (likely(err == exc_type)) return 1; -+ if (likely(PyExceptionClass_Check(err))) { -+ return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); -+ } -+ return PyErr_GivenExceptionMatches(err, exc_type); -+} -+static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { -+ if (likely(err == exc_type1 || err == exc_type2)) return 1; -+ if (likely(PyExceptionClass_Check(err))) { -+ return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); -+ } -+ return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -+} -+#endif -+ -+/* GetException */ -+ #if CYTHON_FAST_THREAD_STATE -+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -+#else -+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { -+#endif -+ PyObject *local_type, *local_value, *local_tb; -+#if CYTHON_FAST_THREAD_STATE -+ PyObject *tmp_type, *tmp_value, *tmp_tb; -+ local_type = tstate->curexc_type; -+ local_value = tstate->curexc_value; -+ local_tb = tstate->curexc_traceback; -+ tstate->curexc_type = 0; -+ tstate->curexc_value = 0; -+ tstate->curexc_traceback = 0; -+#else -+ PyErr_Fetch(&local_type, &local_value, &local_tb); -+#endif -+ PyErr_NormalizeException(&local_type, &local_value, &local_tb); -+#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) - #else - if (unlikely(PyErr_Occurred())) - #endif - goto bad; - #if PY_MAJOR_VERSION >= 3 -- if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) -- goto bad; -+ if (local_tb) { -+ if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) -+ goto bad; -+ } - #endif -- Py_INCREF(local_type); -- Py_INCREF(local_value); -- Py_INCREF(local_tb); -+ Py_XINCREF(local_tb); -+ Py_XINCREF(local_type); -+ Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; --#if CYTHON_COMPILING_IN_CPYTHON -+#if CYTHON_FAST_THREAD_STATE -+ #if PY_VERSION_HEX >= 0x030700A2 -+ tmp_type = tstate->exc_state.exc_type; -+ tmp_value = tstate->exc_state.exc_value; -+ tmp_tb = tstate->exc_state.exc_traceback; -+ tstate->exc_state.exc_type = local_type; -+ tstate->exc_state.exc_value = local_value; -+ tstate->exc_state.exc_traceback = local_tb; -+ #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; -- /* Make sure tstate is in a consistent state when we XDECREF -- these objects (DECREF may run arbitrary code). */ -+ #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -@@ -6271,19 +8834,75 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) - return -1; - } - --static CYTHON_INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x) { -+/* PyObjectCallMethod1 */ -+ static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { -+ PyObject *result = NULL; -+#if CYTHON_UNPACK_METHODS -+ if (likely(PyMethod_Check(method))) { -+ PyObject *self = PyMethod_GET_SELF(method); -+ if (likely(self)) { -+ PyObject *args; -+ PyObject *function = PyMethod_GET_FUNCTION(method); -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(function)) { -+ PyObject *args[2] = {self, arg}; -+ result = __Pyx_PyFunction_FastCall(function, args, 2); -+ goto done; -+ } -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(function)) { -+ PyObject *args[2] = {self, arg}; -+ result = __Pyx_PyCFunction_FastCall(function, args, 2); -+ goto done; -+ } -+ #endif -+ args = PyTuple_New(2); -+ if (unlikely(!args)) goto done; -+ Py_INCREF(self); -+ PyTuple_SET_ITEM(args, 0, self); -+ Py_INCREF(arg); -+ PyTuple_SET_ITEM(args, 1, arg); -+ Py_INCREF(function); -+ result = __Pyx_PyObject_Call(function, args, NULL); -+ Py_DECREF(args); -+ Py_DECREF(function); -+ return result; -+ } -+ } -+#endif -+ result = __Pyx_PyObject_CallOneArg(method, arg); -+ goto done; -+done: -+ return result; -+} -+static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { -+ PyObject *method, *result; -+ method = __Pyx_PyObject_GetAttrStr(obj, method_name); -+ if (unlikely(!method)) return NULL; -+ result = __Pyx__PyObject_CallMethod1(method, arg); -+ Py_DECREF(method); -+ return result; -+} -+ -+/* append */ -+ static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { - if (likely(PyList_CheckExact(L))) { -- if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return NULL; -- Py_INCREF(Py_None); -- return Py_None; /* this is just to have an accurate signature */ -+ if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; - } else { -- return __Pyx_PyObject_CallMethod1(L, __pyx_n_s__append, x); -+ PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x); -+ if (unlikely(!retval)) -+ return -1; -+ Py_DECREF(retval); - } -+ return 0; - } - --#if PY_MAJOR_VERSION < 3 -+/* RaiseException */ -+ #if PY_MAJOR_VERSION < 3 - static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { -+ __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; -@@ -6299,11 +8918,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - goto raise_error; - } - } -- #if PY_VERSION_HEX < 0x02050000 -- if (PyClass_Check(type)) { -- #else - if (PyType_Check(type)) { -- #endif - #if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); -@@ -6318,17 +8933,6 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - goto raise_error; - } - value = type; -- #if PY_VERSION_HEX < 0x02050000 -- if (PyInstance_Check(type)) { -- type = (PyObject*) ((PyInstanceObject*)type)->in_class; -- Py_INCREF(type); -- } else { -- type = 0; -- PyErr_SetString(PyExc_TypeError, -- "raise: exception must be an old-style class or instance"); -- goto raise_error; -- } -- #else - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { -@@ -6336,8 +8940,8 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } -- #endif - } -+ __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; - raise_error: -@@ -6346,7 +8950,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - Py_XDECREF(tb); - return; - } --#else /* Python 3+ */ -+#else - static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { -@@ -6365,40 +8969,52 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject - goto bad; - } - value = type; -- type = (PyObject*) Py_TYPE(value); -- } else if (PyExceptionClass_Check(type)) { -- PyObject *args; -- if (!value) -- args = PyTuple_New(0); -- else if (PyTuple_Check(value)) { -- Py_INCREF(value); -- args = value; -- } else -- args = PyTuple_Pack(1, value); -- if (!args) -- goto bad; -- owned_instance = PyEval_CallObject(type, args); -- Py_DECREF(args); -- if (!owned_instance) -- goto bad; -- value = owned_instance; -- if (!PyExceptionInstance_Check(value)) { -- PyErr_Format(PyExc_TypeError, -- "calling %R should have returned an instance of " -- "BaseException, not %R", -- type, Py_TYPE(value)); -- goto bad; -+ type = (PyObject*) Py_TYPE(value); -+ } else if (PyExceptionClass_Check(type)) { -+ PyObject *instance_class = NULL; -+ if (value && PyExceptionInstance_Check(value)) { -+ instance_class = (PyObject*) Py_TYPE(value); -+ if (instance_class != type) { -+ int is_subclass = PyObject_IsSubclass(instance_class, type); -+ if (!is_subclass) { -+ instance_class = NULL; -+ } else if (unlikely(is_subclass == -1)) { -+ goto bad; -+ } else { -+ type = instance_class; -+ } -+ } -+ } -+ if (!instance_class) { -+ PyObject *args; -+ if (!value) -+ args = PyTuple_New(0); -+ else if (PyTuple_Check(value)) { -+ Py_INCREF(value); -+ args = value; -+ } else -+ args = PyTuple_Pack(1, value); -+ if (!args) -+ goto bad; -+ owned_instance = PyObject_Call(type, args, NULL); -+ Py_DECREF(args); -+ if (!owned_instance) -+ goto bad; -+ value = owned_instance; -+ if (!PyExceptionInstance_Check(value)) { -+ PyErr_Format(PyExc_TypeError, -+ "calling %R should have returned an instance of " -+ "BaseException, not %R", -+ type, Py_TYPE(value)); -+ goto bad; -+ } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } --#if PY_VERSION_HEX >= 0x03030000 - if (cause) { --#else -- if (cause && cause != Py_None) { --#endif - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; -@@ -6419,13 +9035,21 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject - } - PyErr_SetObject(type, value); - if (tb) { -- PyThreadState *tstate = PyThreadState_GET(); -+#if CYTHON_COMPILING_IN_PYPY -+ PyObject *tmp_type, *tmp_value, *tmp_tb; -+ PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); -+ Py_INCREF(tb); -+ PyErr_Restore(tmp_type, tmp_value, tb); -+ Py_XDECREF(tmp_tb); -+#else -+ PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -+#endif - } - bad: - Py_XDECREF(owned_instance); -@@ -6433,7 +9057,8 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject - } - #endif - --static void __Pyx_RaiseDoubleKeywordsError( -+/* RaiseDoubleKeywords */ -+ static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) - { -@@ -6446,7 +9071,8 @@ static void __Pyx_RaiseDoubleKeywordsError( - #endif - } - --static int __Pyx_ParseOptionalKeywords( -+/* ParseKeywords */ -+ static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, -@@ -6532,12 +9158,12 @@ static int __Pyx_ParseOptionalKeywords( - goto bad; - invalid_keyword_type: - PyErr_Format(PyExc_TypeError, -- "%s() keywords must be strings", function_name); -+ "%.200s() keywords must be strings", function_name); - goto bad; - invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 -- "%s() got an unexpected keyword argument '%s'", -+ "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", -@@ -6547,7 +9173,8 @@ static int __Pyx_ParseOptionalKeywords( - return -1; - } - --static void __Pyx_RaiseArgtupleInvalid( -+/* RaiseArgTupleInvalid */ -+ static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, -@@ -6567,28 +9194,122 @@ static void __Pyx_RaiseArgtupleInvalid( - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, -- "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)", -+ "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); - } - --static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { -+/* PyIntBinop */ -+ #if !CYTHON_COMPILING_IN_PYPY -+static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { -+ if (op1 == op2) { -+ Py_RETURN_TRUE; -+ } -+ #if PY_MAJOR_VERSION < 3 -+ if (likely(PyInt_CheckExact(op1))) { -+ const long b = intval; -+ long a = PyInt_AS_LONG(op1); -+ if (a == b) { -+ Py_RETURN_TRUE; -+ } else { -+ Py_RETURN_FALSE; -+ } -+ } -+ #endif -+ #if CYTHON_USE_PYLONG_INTERNALS -+ if (likely(PyLong_CheckExact(op1))) { -+ const long b = intval; -+ long a; -+ const digit* digits = ((PyLongObject*)op1)->ob_digit; -+ const Py_ssize_t size = Py_SIZE(op1); -+ if (likely(__Pyx_sst_abs(size) <= 1)) { -+ a = likely(size) ? digits[0] : 0; -+ if (size == -1) a = -a; -+ } else { -+ switch (size) { -+ case -2: -+ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { -+ a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+ } -+ CYTHON_FALLTHROUGH; -+ case 2: -+ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { -+ a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+ } -+ CYTHON_FALLTHROUGH; -+ case -3: -+ if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { -+ a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+ } -+ CYTHON_FALLTHROUGH; -+ case 3: -+ if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { -+ a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+ } -+ CYTHON_FALLTHROUGH; -+ case -4: -+ if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { -+ a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+ } -+ CYTHON_FALLTHROUGH; -+ case 4: -+ if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { -+ a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+ } -+ CYTHON_FALLTHROUGH; -+ #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15 -+ default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ); -+ #else -+ default: Py_RETURN_FALSE; -+ #endif -+ } -+ } -+ if (a == b) { -+ Py_RETURN_TRUE; -+ } else { -+ Py_RETURN_FALSE; -+ } -+ } -+ #endif -+ if (PyFloat_CheckExact(op1)) { -+ const long b = intval; -+ double a = PyFloat_AS_DOUBLE(op1); -+ if ((double)a == (double)b) { -+ Py_RETURN_TRUE; -+ } else { -+ Py_RETURN_FALSE; -+ } -+ } -+ return PyObject_RichCompare(op1, op2, Py_EQ); -+} -+#endif -+ -+/* RaiseTooManyValuesToUnpack */ -+ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { - PyErr_Format(PyExc_ValueError, - "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); - } - --static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { -+/* RaiseNeedMoreValuesToUnpack */ -+ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { - PyErr_Format(PyExc_ValueError, -- "need more than %" CYTHON_FORMAT_SSIZE_T "d value%s to unpack", -+ "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", - index, (index == 1) ? "" : "s"); - } - --static CYTHON_INLINE int __Pyx_IterFinish(void) { --#if CYTHON_COMPILING_IN_CPYTHON -- PyThreadState *tstate = PyThreadState_GET(); -+/* IterFinish */ -+ static CYTHON_INLINE int __Pyx_IterFinish(void) { -+#if CYTHON_FAST_THREAD_STATE -+ PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* exc_type = tstate->curexc_type; - if (unlikely(exc_type)) { -- if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) { -+ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) { - PyObject *exc_value, *exc_tb; - exc_value = tstate->curexc_value; - exc_tb = tstate->curexc_traceback; -@@ -6617,7 +9338,8 @@ static CYTHON_INLINE int __Pyx_IterFinish(void) { - #endif - } - --static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { -+/* UnpackItemEndCheck */ -+ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { - if (unlikely(retval)) { - Py_DECREF(retval); - __Pyx_RaiseTooManyValuesError(expected); -@@ -6628,89 +9350,91 @@ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { - return 0; - } - --static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { -- PyObject *r; -- if (!j) return NULL; -- r = PyObject_GetItem(o, j); -- Py_DECREF(j); -- return r; -+/* StringJoin */ -+ #if !CYTHON_COMPILING_IN_CPYTHON -+static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values) { -+ return PyObject_CallMethodObjArgs(sep, __pyx_n_s_join, values, NULL); - } --static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, -- int wraparound, int boundscheck) { --#if CYTHON_COMPILING_IN_CPYTHON -- if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o); -- if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { -- PyObject *r = PyList_GET_ITEM(o, i); -- Py_INCREF(r); -- return r; -- } -- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); --#else -- return PySequence_GetItem(o, i); - #endif --} --static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, -- int wraparound, int boundscheck) { -+ -+/* UnpackUnboundCMethod */ -+ static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { -+ PyObject *method; -+ method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name); -+ if (unlikely(!method)) -+ return -1; -+ target->method = method; - #if CYTHON_COMPILING_IN_CPYTHON -- if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o); -- if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { -- PyObject *r = PyTuple_GET_ITEM(o, i); -- Py_INCREF(r); -- return r; -+ #if PY_MAJOR_VERSION >= 3 -+ if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type))) -+ #endif -+ { -+ PyMethodDescrObject *descr = (PyMethodDescrObject*) method; -+ target->func = descr->d_method->ml_meth; -+ target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST); - } -- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); --#else -- return PySequence_GetItem(o, i); - #endif -+ return 0; - } --static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, -- int is_list, int wraparound, int boundscheck) { --#if CYTHON_COMPILING_IN_CPYTHON -- if (is_list || PyList_CheckExact(o)) { -- Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); -- if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { -- PyObject *r = PyList_GET_ITEM(o, n); -- Py_INCREF(r); -- return r; -+ -+/* CallUnboundCMethod1 */ -+ #if CYTHON_COMPILING_IN_CPYTHON -+static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) { -+ if (likely(cfunc->func)) { -+ int flag = cfunc->flag; -+ if (flag == METH_O) { -+ return (*(cfunc->func))(self, arg); -+ } else if (PY_VERSION_HEX >= 0x030600B1 && flag == METH_FASTCALL) { -+ if (PY_VERSION_HEX >= 0x030700A0) { -+ return (*(__Pyx_PyCFunctionFast)cfunc->func)(self, &arg, 1); -+ } else { -+ return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, &arg, 1, NULL); -+ } -+ } else if (PY_VERSION_HEX >= 0x030700A0 && flag == (METH_FASTCALL | METH_KEYWORDS)) { -+ return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, &arg, 1, NULL); - } - } -- else if (PyTuple_CheckExact(o)) { -- Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); -- if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { -- PyObject *r = PyTuple_GET_ITEM(o, n); -- Py_INCREF(r); -- return r; -- } -+ return __Pyx__CallUnboundCMethod1(cfunc, self, arg); -+} -+#endif -+static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){ -+ PyObject *args, *result = NULL; -+ if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -+#if CYTHON_COMPILING_IN_CPYTHON -+ if (cfunc->func && (cfunc->flag & METH_VARARGS)) { -+ args = PyTuple_New(1); -+ if (unlikely(!args)) goto bad; -+ Py_INCREF(arg); -+ PyTuple_SET_ITEM(args, 0, arg); -+ if (cfunc->flag & METH_KEYWORDS) -+ result = (*(PyCFunctionWithKeywords)cfunc->func)(self, args, NULL); -+ else -+ result = (*cfunc->func)(self, args); - } else { -- PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; -- if (likely(m && m->sq_item)) { -- if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { -- Py_ssize_t l = m->sq_length(o); -- if (likely(l >= 0)) { -- i += l; -- } else { -- if (PyErr_ExceptionMatches(PyExc_OverflowError)) -- PyErr_Clear(); -- else -- return NULL; -- } -- } -- return m->sq_item(o, i); -- } -+ args = PyTuple_New(2); -+ if (unlikely(!args)) goto bad; -+ Py_INCREF(self); -+ PyTuple_SET_ITEM(args, 0, self); -+ Py_INCREF(arg); -+ PyTuple_SET_ITEM(args, 1, arg); -+ result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - } - #else -- if (is_list || PySequence_Check(o)) { -- return PySequence_GetItem(o, i); -- } -+ args = PyTuple_Pack(2, self, arg); -+ if (unlikely(!args)) goto bad; -+ result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - #endif -- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -+bad: -+ Py_XDECREF(args); -+ return result; - } - --static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( -- PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, -+/* SliceObject */ -+ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, -+ Py_ssize_t cstart, Py_ssize_t cstop, - PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, - int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) { --#if CYTHON_COMPILING_IN_CPYTHON -+#if CYTHON_USE_TYPE_SLOTS - PyMappingMethods* mp; - #if PY_MAJOR_VERSION < 3 - PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence; -@@ -6741,10 +9465,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( - if (cstart < 0) cstart = 0; - } - } else { -- if (PyErr_ExceptionMatches(PyExc_OverflowError)) -- PyErr_Clear(); -- else -+ if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - goto bad; -+ PyErr_Clear(); - } - } - return ms->sq_slice(obj, cstart, cstop); -@@ -6787,7 +9510,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( - Py_XDECREF(owned_stop); - if (unlikely(!py_slice)) goto bad; - } --#if CYTHON_COMPILING_IN_CPYTHON -+#if CYTHON_USE_TYPE_SLOTS - result = mp->mp_subscript(obj, py_slice); - #else - result = PyObject_GetItem(obj, py_slice); -@@ -6803,11 +9526,12 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( - return NULL; - } - --static CYTHON_INLINE int __Pyx_PyObject_SetSlice( -- PyObject* obj, PyObject* value, Py_ssize_t cstart, Py_ssize_t cstop, -+/* SliceObject */ -+ static CYTHON_INLINE int __Pyx_PyObject_SetSlice(PyObject* obj, PyObject* value, -+ Py_ssize_t cstart, Py_ssize_t cstop, - PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, - int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) { --#if CYTHON_COMPILING_IN_CPYTHON -+#if CYTHON_USE_TYPE_SLOTS - PyMappingMethods* mp; - #if PY_MAJOR_VERSION < 3 - PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence; -@@ -6838,10 +9562,9 @@ static CYTHON_INLINE int __Pyx_PyObject_SetSlice( - if (cstart < 0) cstart = 0; - } - } else { -- if (PyErr_ExceptionMatches(PyExc_OverflowError)) -- PyErr_Clear(); -- else -+ if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - goto bad; -+ PyErr_Clear(); - } - } - return ms->sq_ass_slice(obj, cstart, cstop, value); -@@ -6884,7 +9607,7 @@ static CYTHON_INLINE int __Pyx_PyObject_SetSlice( - Py_XDECREF(owned_stop); - if (unlikely(!py_slice)) goto bad; - } --#if CYTHON_COMPILING_IN_CPYTHON -+#if CYTHON_USE_TYPE_SLOTS - result = mp->mp_ass_subscript(obj, py_slice, value); - #else - result = value ? PyObject_SetItem(obj, py_slice, value) : PyObject_DelItem(obj, py_slice); -@@ -6895,13 +9618,205 @@ static CYTHON_INLINE int __Pyx_PyObject_SetSlice( - return result; - } - PyErr_Format(PyExc_TypeError, -- "'%.200s' object does not support slice %s", -+ "'%.200s' object does not support slice %.10s", - Py_TYPE(obj)->tp_name, value ? "assignment" : "deletion"); - bad: - return -1; - } - --static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { -+/* PyObject_GenericGetAttrNoDict */ -+ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -+static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { -+ PyErr_Format(PyExc_AttributeError, -+#if PY_MAJOR_VERSION >= 3 -+ "'%.50s' object has no attribute '%U'", -+ tp->tp_name, attr_name); -+#else -+ "'%.50s' object has no attribute '%.400s'", -+ tp->tp_name, PyString_AS_STRING(attr_name)); -+#endif -+ return NULL; -+} -+static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { -+ PyObject *descr; -+ PyTypeObject *tp = Py_TYPE(obj); -+ if (unlikely(!PyString_Check(attr_name))) { -+ return PyObject_GenericGetAttr(obj, attr_name); -+ } -+ assert(!tp->tp_dictoffset); -+ descr = _PyType_Lookup(tp, attr_name); -+ if (unlikely(!descr)) { -+ return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); -+ } -+ Py_INCREF(descr); -+ #if PY_MAJOR_VERSION < 3 -+ if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) -+ #endif -+ { -+ descrgetfunc f = Py_TYPE(descr)->tp_descr_get; -+ if (unlikely(f)) { -+ PyObject *res = f(descr, obj, (PyObject *)tp); -+ Py_DECREF(descr); -+ return res; -+ } -+ } -+ return descr; -+} -+#endif -+ -+/* PyObject_GenericGetAttr */ -+ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -+static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { -+ if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { -+ return PyObject_GenericGetAttr(obj, attr_name); -+ } -+ return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -+} -+#endif -+ -+/* SetupReduce */ -+ static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { -+ int ret; -+ PyObject *name_attr; -+ name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name); -+ if (likely(name_attr)) { -+ ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); -+ } else { -+ ret = -1; -+ } -+ if (unlikely(ret < 0)) { -+ PyErr_Clear(); -+ ret = 0; -+ } -+ Py_XDECREF(name_attr); -+ return ret; -+} -+static int __Pyx_setup_reduce(PyObject* type_obj) { -+ int ret = 0; -+ PyObject *object_reduce = NULL; -+ PyObject *object_reduce_ex = NULL; -+ PyObject *reduce = NULL; -+ PyObject *reduce_ex = NULL; -+ PyObject *reduce_cython = NULL; -+ PyObject *setstate = NULL; -+ PyObject *setstate_cython = NULL; -+#if CYTHON_USE_PYTYPE_LOOKUP -+ if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto GOOD; -+#else -+ if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto GOOD; -+#endif -+#if CYTHON_USE_PYTYPE_LOOKUP -+ object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto BAD; -+#else -+ object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto BAD; -+#endif -+ reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto BAD; -+ if (reduce_ex == object_reduce_ex) { -+#if CYTHON_USE_PYTYPE_LOOKUP -+ object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto BAD; -+#else -+ object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto BAD; -+#endif -+ reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto BAD; -+ if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { -+ reduce_cython = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_cython); if (unlikely(!reduce_cython)) goto BAD; -+ ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto BAD; -+ ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto BAD; -+ setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate); -+ if (!setstate) PyErr_Clear(); -+ if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { -+ setstate_cython = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate_cython); if (unlikely(!setstate_cython)) goto BAD; -+ ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto BAD; -+ ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto BAD; -+ } -+ PyType_Modified((PyTypeObject*)type_obj); -+ } -+ } -+ goto GOOD; -+BAD: -+ if (!PyErr_Occurred()) -+ PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name); -+ ret = -1; -+GOOD: -+#if !CYTHON_USE_PYTYPE_LOOKUP -+ Py_XDECREF(object_reduce); -+ Py_XDECREF(object_reduce_ex); -+#endif -+ Py_XDECREF(reduce); -+ Py_XDECREF(reduce_ex); -+ Py_XDECREF(reduce_cython); -+ Py_XDECREF(setstate); -+ Py_XDECREF(setstate_cython); -+ return ret; -+} -+ -+/* Import */ -+ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { -+ PyObject *empty_list = 0; -+ PyObject *module = 0; -+ PyObject *global_dict = 0; -+ PyObject *empty_dict = 0; -+ PyObject *list; -+ #if PY_MAJOR_VERSION < 3 -+ PyObject *py_import; -+ py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); -+ if (!py_import) -+ goto bad; -+ #endif -+ if (from_list) -+ list = from_list; -+ else { -+ empty_list = PyList_New(0); -+ if (!empty_list) -+ goto bad; -+ list = empty_list; -+ } -+ global_dict = PyModule_GetDict(__pyx_m); -+ if (!global_dict) -+ goto bad; -+ empty_dict = PyDict_New(); -+ if (!empty_dict) -+ goto bad; -+ { -+ #if PY_MAJOR_VERSION >= 3 -+ if (level == -1) { -+ if (strchr(__Pyx_MODULE_NAME, '.')) { -+ module = PyImport_ImportModuleLevelObject( -+ name, global_dict, empty_dict, list, 1); -+ if (!module) { -+ if (!PyErr_ExceptionMatches(PyExc_ImportError)) -+ goto bad; -+ PyErr_Clear(); -+ } -+ } -+ level = 0; -+ } -+ #endif -+ if (!module) { -+ #if PY_MAJOR_VERSION < 3 -+ PyObject *py_level = PyInt_FromLong(level); -+ if (!py_level) -+ goto bad; -+ module = PyObject_CallFunctionObjArgs(py_import, -+ name, global_dict, empty_dict, list, py_level, NULL); -+ Py_DECREF(py_level); -+ #else -+ module = PyImport_ImportModuleLevelObject( -+ name, global_dict, empty_dict, list, level); -+ #endif -+ } -+ } -+bad: -+ #if PY_MAJOR_VERSION < 3 -+ Py_XDECREF(py_import); -+ #endif -+ Py_XDECREF(empty_list); -+ Py_XDECREF(empty_dict); -+ return module; -+} -+ -+/* ImportFrom */ -+ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, -@@ -6914,6 +9829,111 @@ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - return value; - } - -+/* PyErrExceptionMatches */ -+ #if CYTHON_FAST_THREAD_STATE -+static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { -+ Py_ssize_t i, n; -+ n = PyTuple_GET_SIZE(tuple); -+#if PY_MAJOR_VERSION >= 3 -+ for (i=0; icurexc_type; -+ if (exc_type == err) return 1; -+ if (unlikely(!exc_type)) return 0; -+ if (unlikely(PyTuple_Check(err))) -+ return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); -+ return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -+} -+#endif -+ -+/* CalculateMetaclass */ -+ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { -+ Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases); -+ for (i=0; i < nbases; i++) { -+ PyTypeObject *tmptype; -+ PyObject *tmp = PyTuple_GET_ITEM(bases, i); -+ tmptype = Py_TYPE(tmp); -+#if PY_MAJOR_VERSION < 3 -+ if (tmptype == &PyClass_Type) -+ continue; -+#endif -+ if (!metaclass) { -+ metaclass = tmptype; -+ continue; -+ } -+ if (PyType_IsSubtype(metaclass, tmptype)) -+ continue; -+ if (PyType_IsSubtype(tmptype, metaclass)) { -+ metaclass = tmptype; -+ continue; -+ } -+ PyErr_SetString(PyExc_TypeError, -+ "metaclass conflict: " -+ "the metaclass of a derived class " -+ "must be a (non-strict) subclass " -+ "of the metaclasses of all its bases"); -+ return NULL; -+ } -+ if (!metaclass) { -+#if PY_MAJOR_VERSION < 3 -+ metaclass = &PyClass_Type; -+#else -+ metaclass = &PyType_Type; -+#endif -+ } -+ Py_INCREF((PyObject*) metaclass); -+ return (PyObject*) metaclass; -+} -+ -+/* FetchCommonType */ -+ static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { -+ PyObject* fake_module; -+ PyTypeObject* cached_type = NULL; -+ fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); -+ if (!fake_module) return NULL; -+ Py_INCREF(fake_module); -+ cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); -+ if (cached_type) { -+ if (!PyType_Check((PyObject*)cached_type)) { -+ PyErr_Format(PyExc_TypeError, -+ "Shared Cython type %.200s is not a type object", -+ type->tp_name); -+ goto bad; -+ } -+ if (cached_type->tp_basicsize != type->tp_basicsize) { -+ PyErr_Format(PyExc_TypeError, -+ "Shared Cython type %.200s has the wrong size, try recompiling", -+ type->tp_name); -+ goto bad; -+ } -+ } else { -+ if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; -+ PyErr_Clear(); -+ if (PyType_Ready(type) < 0) goto bad; -+ if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) -+ goto bad; -+ Py_INCREF(type); -+ cached_type = type; -+ } -+done: -+ Py_DECREF(fake_module); -+ return cached_type; -+bad: -+ Py_XDECREF(cached_type); -+ cached_type = NULL; -+ goto done; -+} -+ -+/* CythonFunction */ -+ #include - static PyObject * - __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) - { -@@ -6938,8 +9958,9 @@ static int - __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) - { - PyObject *tmp = op->func_doc; -- if (value == NULL) -- value = Py_None; /* Mark as deleted */ -+ if (value == NULL) { -+ value = Py_None; -+ } - Py_INCREF(value); - op->func_doc = value; - Py_XDECREF(tmp); -@@ -7046,11 +10067,10 @@ __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) - return 0; - } - static PyObject * --__Pyx_CyFunction_get_globals(CYTHON_UNUSED __pyx_CyFunctionObject *op) -+__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) - { -- PyObject* dict = PyModule_GetDict(__pyx_m); -- Py_XINCREF(dict); -- return dict; -+ Py_INCREF(op->func_globals); -+ return op->func_globals; - } - static PyObject * - __Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) -@@ -7067,15 +10087,25 @@ __Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) - } - static int - __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { -+ int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; -+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); -+ #else -+ op->defaults_tuple = PySequence_ITEM(res, 0); -+ if (unlikely(!op->defaults_tuple)) result = -1; -+ else { -+ op->defaults_kwdict = PySequence_ITEM(res, 1); -+ if (unlikely(!op->defaults_kwdict)) result = -1; -+ } -+ #endif - Py_DECREF(res); -- return 0; -+ return result; - } - static int - __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { -@@ -7185,11 +10215,8 @@ static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {0, 0, 0, 0, 0} - }; --#ifndef PY_WRITE_RESTRICTED /* < Py2.5 */ --#define PY_WRITE_RESTRICTED WRITE_RESTRICTED --#endif - static PyMemberDef __pyx_CyFunction_members[] = { -- {(char *) "__module__", T_OBJECT, offsetof(__pyx_CyFunctionObject, func.m_module), PY_WRITE_RESTRICTED, 0}, -+ {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, - {0, 0, 0, 0, 0} - }; - static PyObject * -@@ -7202,16 +10229,21 @@ __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) - #endif - } - static PyMethodDef __pyx_CyFunction_methods[] = { -- {__Pyx_NAMESTR("__reduce__"), (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, -+ {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} - }; -+#if PY_VERSION_HEX < 0x030500A0 -+#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -+#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* code) { -+ PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); - if (op == NULL) - return NULL; - op->flags = flags; -- op->func_weakreflist = NULL; -+ __Pyx_CyFunction_weakreflist(op) = NULL; - op->func.m_ml = ml; - op->func.m_self = (PyObject *) op; - Py_XINCREF(closure); -@@ -7224,6 +10256,8 @@ static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int f - op->func_qualname = qualname; - op->func_doc = NULL; - op->func_classobj = NULL; -+ op->func_globals = globals; -+ Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; -@@ -7244,6 +10278,7 @@ __Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); -+ Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - Py_CLEAR(m->func_classobj); - Py_CLEAR(m->defaults_tuple); -@@ -7254,19 +10289,23 @@ __Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); -- PyMem_Free(m->defaults); -+ PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; - } --static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -+static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) - { -- PyObject_GC_UnTrack(m); -- if (m->func_weakreflist != NULL) -+ if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - PyObject_GC_Del(m); - } -+static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -+{ -+ PyObject_GC_UnTrack(m); -+ __Pyx__CyFunction_dealloc(m); -+} - static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) - { - Py_VISIT(m->func_closure); -@@ -7275,6 +10314,7 @@ static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); -+ Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); - Py_VISIT(m->func_classobj); - Py_VISIT(m->defaults_tuple); -@@ -7297,12 +10337,11 @@ static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObj - if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { - if (type == NULL) - type = (PyObject *)(Py_TYPE(obj)); -- return PyMethod_New(func, -- type, (PyObject *)(Py_TYPE(type))); -+ return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); - } - if (obj == Py_None) - obj = NULL; -- return PyMethod_New(func, obj, type); -+ return __Pyx_PyMethod_New(func, obj, type); - } - static PyObject* - __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -@@ -7315,37 +10354,46 @@ __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) - PyString_AsString(op->func_qualname), (void *)op); - #endif - } --#if CYTHON_COMPILING_IN_PYPY --static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { -+static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - PyCFunctionObject* f = (PyCFunctionObject*)func; -- PyCFunction meth = PyCFunction_GET_FUNCTION(func); -- PyObject *self = PyCFunction_GET_SELF(func); -+ PyCFunction meth = f->m_ml->ml_meth; - Py_ssize_t size; -- switch (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST)) { -+ switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: -- if (likely(kw == NULL) || PyDict_Size(kw) == 0) -+ if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); - case METH_NOARGS: -- if (likely(kw == NULL) || PyDict_Size(kw) == 0) { -+ if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); -- if (size == 0) -+ if (likely(size == 0)) - return (*meth)(self, NULL); - PyErr_Format(PyExc_TypeError, -- "%.200s() takes no arguments (%zd given)", -+ "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - case METH_O: -- if (likely(kw == NULL) || PyDict_Size(kw) == 0) { -+ if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); -- if (size == 1) -- return (*meth)(self, PyTuple_GET_ITEM(arg, 0)); -+ if (likely(size == 1)) { -+ PyObject *result, *arg0; -+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ arg0 = PyTuple_GET_ITEM(arg, 0); -+ #else -+ arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; -+ #endif -+ result = (*meth)(self, arg0); -+ #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) -+ Py_DECREF(arg0); -+ #endif -+ return result; -+ } - PyErr_Format(PyExc_TypeError, -- "%.200s() takes exactly one argument (%zd given)", -+ "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } -@@ -7360,79 +10408,103 @@ static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject - f->m_ml->ml_name); - return NULL; - } --#else --static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { -- return PyCFunction_Call(func, arg, kw); -+static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { -+ return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -+} -+static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { -+ PyObject *result; -+ __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; -+ if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { -+ Py_ssize_t argc; -+ PyObject *new_args; -+ PyObject *self; -+ argc = PyTuple_GET_SIZE(args); -+ new_args = PyTuple_GetSlice(args, 1, argc); -+ if (unlikely(!new_args)) -+ return NULL; -+ self = PyTuple_GetItem(args, 0); -+ if (unlikely(!self)) { -+ Py_DECREF(new_args); -+ return NULL; -+ } -+ result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); -+ Py_DECREF(new_args); -+ } else { -+ result = __Pyx_CyFunction_Call(func, args, kw); -+ } -+ return result; - } --#endif - static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) -- __Pyx_NAMESTR("cython_function_or_method"), /*tp_name*/ -- sizeof(__pyx_CyFunctionObject), /*tp_basicsize*/ -- 0, /*tp_itemsize*/ -- (destructor) __Pyx_CyFunction_dealloc, /*tp_dealloc*/ -- 0, /*tp_print*/ -- 0, /*tp_getattr*/ -- 0, /*tp_setattr*/ -+ "cython_function_or_method", -+ sizeof(__pyx_CyFunctionObject), -+ 0, -+ (destructor) __Pyx_CyFunction_dealloc, -+ 0, -+ 0, -+ 0, - #if PY_MAJOR_VERSION < 3 -- 0, /*tp_compare*/ -+ 0, -+#else -+ 0, -+#endif -+ (reprfunc) __Pyx_CyFunction_repr, -+ 0, -+ 0, -+ 0, -+ 0, -+ __Pyx_CyFunction_CallAsMethod, -+ 0, -+ 0, -+ 0, -+ 0, -+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, -+ 0, -+ (traverseproc) __Pyx_CyFunction_traverse, -+ (inquiry) __Pyx_CyFunction_clear, -+ 0, -+#if PY_VERSION_HEX < 0x030500A0 -+ offsetof(__pyx_CyFunctionObject, func_weakreflist), - #else -- 0, /*reserved*/ --#endif -- (reprfunc) __Pyx_CyFunction_repr, /*tp_repr*/ -- 0, /*tp_as_number*/ -- 0, /*tp_as_sequence*/ -- 0, /*tp_as_mapping*/ -- 0, /*tp_hash*/ -- __Pyx_CyFunction_Call, /*tp_call*/ -- 0, /*tp_str*/ -- 0, /*tp_getattro*/ -- 0, /*tp_setattro*/ -- 0, /*tp_as_buffer*/ -- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags*/ -- 0, /*tp_doc*/ -- (traverseproc) __Pyx_CyFunction_traverse, /*tp_traverse*/ -- (inquiry) __Pyx_CyFunction_clear, /*tp_clear*/ -- 0, /*tp_richcompare*/ -- offsetof(__pyx_CyFunctionObject, func_weakreflist), /* tp_weaklistoffse */ -- 0, /*tp_iter*/ -- 0, /*tp_iternext*/ -- __pyx_CyFunction_methods, /*tp_methods*/ -- __pyx_CyFunction_members, /*tp_members*/ -- __pyx_CyFunction_getsets, /*tp_getset*/ -- 0, /*tp_base*/ -- 0, /*tp_dict*/ -- __Pyx_CyFunction_descr_get, /*tp_descr_get*/ -- 0, /*tp_descr_set*/ -- offsetof(__pyx_CyFunctionObject, func_dict),/*tp_dictoffset*/ -- 0, /*tp_init*/ -- 0, /*tp_alloc*/ -- 0, /*tp_new*/ -- 0, /*tp_free*/ -- 0, /*tp_is_gc*/ -- 0, /*tp_bases*/ -- 0, /*tp_mro*/ -- 0, /*tp_cache*/ -- 0, /*tp_subclasses*/ -- 0, /*tp_weaklist*/ -- 0, /*tp_del*/ --#if PY_VERSION_HEX >= 0x02060000 -- 0, /*tp_version_tag*/ -+ offsetof(PyCFunctionObject, m_weakreflist), -+#endif -+ 0, -+ 0, -+ __pyx_CyFunction_methods, -+ __pyx_CyFunction_members, -+ __pyx_CyFunction_getsets, -+ 0, -+ 0, -+ __Pyx_CyFunction_descr_get, -+ 0, -+ offsetof(__pyx_CyFunctionObject, func_dict), -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+#if PY_VERSION_HEX >= 0x030400a1 -+ 0, - #endif - }; --static int __Pyx_CyFunction_init(void) { --#if !CYTHON_COMPILING_IN_PYPY -- __pyx_CyFunctionType_type.tp_call = PyCFunction_Call; --#endif -- if (PyType_Ready(&__pyx_CyFunctionType_type) < 0) -+static int __pyx_CyFunction_init(void) { -+ __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); -+ if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; -- __pyx_CyFunctionType = &__pyx_CyFunctionType_type; -+ } - return 0; - } - static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; -- m->defaults = PyMem_Malloc(size); -- if (!m->defaults) -+ m->defaults = PyObject_Malloc(size); -+ if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; -@@ -7454,720 +10526,1213 @@ static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, Py - Py_INCREF(dict); - } - --static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) { -+/* Py3ClassCreate */ -+ static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, -+ PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { -+ PyObject *ns; -+ if (metaclass) { -+ PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare); -+ if (prep) { -+ PyObject *pargs = PyTuple_Pack(2, name, bases); -+ if (unlikely(!pargs)) { -+ Py_DECREF(prep); -+ return NULL; -+ } -+ ns = PyObject_Call(prep, pargs, mkw); -+ Py_DECREF(prep); -+ Py_DECREF(pargs); -+ } else { -+ if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError))) -+ return NULL; -+ PyErr_Clear(); -+ ns = PyDict_New(); -+ } -+ } else { -+ ns = PyDict_New(); -+ } -+ if (unlikely(!ns)) -+ return NULL; -+ if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; -+ if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; -+ if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; -+ return ns; -+bad: -+ Py_DECREF(ns); -+ return NULL; -+} -+static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, -+ PyObject *dict, PyObject *mkw, -+ int calculate_metaclass, int allow_py2_metaclass) { -+ PyObject *result, *margs; -+ PyObject *owned_metaclass = NULL; -+ if (allow_py2_metaclass) { -+ owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); -+ if (owned_metaclass) { -+ metaclass = owned_metaclass; -+ } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { -+ PyErr_Clear(); -+ } else { -+ return NULL; -+ } -+ } -+ if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { -+ metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); -+ Py_XDECREF(owned_metaclass); -+ if (unlikely(!metaclass)) -+ return NULL; -+ owned_metaclass = metaclass; -+ } -+ margs = PyTuple_Pack(3, name, bases, dict); -+ if (unlikely(!margs)) { -+ result = NULL; -+ } else { -+ result = PyObject_Call(metaclass, margs, mkw); -+ Py_DECREF(margs); -+ } -+ Py_XDECREF(owned_metaclass); -+ return result; -+} -+ -+/* CLineInTraceback */ -+ #ifndef CYTHON_CLINE_IN_TRACEBACK -+static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { -+ PyObject *use_cline; -+ PyObject *ptype, *pvalue, *ptraceback; - #if CYTHON_COMPILING_IN_CPYTHON -- PyThreadState *tstate = PyThreadState_GET(); -- *type = tstate->exc_type; -- *value = tstate->exc_value; -- *tb = tstate->exc_traceback; -- Py_XINCREF(*type); -- Py_XINCREF(*value); -- Py_XINCREF(*tb); --#else -- PyErr_GetExcInfo(type, value, tb); -+ PyObject **cython_runtime_dict; - #endif --} --static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) { -+ if (unlikely(!__pyx_cython_runtime)) { -+ return c_line; -+ } -+ __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); - #if CYTHON_COMPILING_IN_CPYTHON -- PyObject *tmp_type, *tmp_value, *tmp_tb; -- PyThreadState *tstate = PyThreadState_GET(); -- tmp_type = tstate->exc_type; -- tmp_value = tstate->exc_value; -- tmp_tb = tstate->exc_traceback; -- tstate->exc_type = type; -- tstate->exc_value = value; -- tstate->exc_traceback = tb; -- Py_XDECREF(tmp_type); -- Py_XDECREF(tmp_value); -- Py_XDECREF(tmp_tb); --#else -- PyErr_SetExcInfo(type, value, tb); -+ cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); -+ if (likely(cython_runtime_dict)) { -+ use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); -+ } else - #endif -+ { -+ PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); -+ if (use_cline_obj) { -+ use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; -+ Py_DECREF(use_cline_obj); -+ } else { -+ PyErr_Clear(); -+ use_cline = NULL; -+ } -+ } -+ if (!use_cline) { -+ c_line = 0; -+ PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); -+ } -+ else if (PyObject_Not(use_cline) != 0) { -+ c_line = 0; -+ } -+ __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); -+ return c_line; - } -+#endif - --static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { -- PyObject *empty_list = 0; -- PyObject *module = 0; -- PyObject *global_dict = 0; -- PyObject *empty_dict = 0; -- PyObject *list; -- #if PY_VERSION_HEX < 0x03030000 -- PyObject *py_import; -- py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s____import__); -- if (!py_import) -- goto bad; -- #endif -- if (from_list) -- list = from_list; -- else { -- empty_list = PyList_New(0); -- if (!empty_list) -- goto bad; -- list = empty_list; -+/* CodeObjectCache */ -+ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { -+ int start = 0, mid = 0, end = count - 1; -+ if (end >= 0 && code_line > entries[end].code_line) { -+ return count; - } -- global_dict = PyModule_GetDict(__pyx_m); -- if (!global_dict) -- goto bad; -- empty_dict = PyDict_New(); -- if (!empty_dict) -- goto bad; -- #if PY_VERSION_HEX >= 0x02050000 -- { -- #if PY_MAJOR_VERSION >= 3 -- if (level == -1) { -- if (strchr(__Pyx_MODULE_NAME, '.')) { -- #if PY_VERSION_HEX < 0x03030000 -- PyObject *py_level = PyInt_FromLong(1); -- if (!py_level) -- goto bad; -- module = PyObject_CallFunctionObjArgs(py_import, -- name, global_dict, empty_dict, list, py_level, NULL); -- Py_DECREF(py_level); -- #else -- module = PyImport_ImportModuleLevelObject( -- name, global_dict, empty_dict, list, 1); -- #endif -- if (!module) { -- if (!PyErr_ExceptionMatches(PyExc_ImportError)) -- goto bad; -- PyErr_Clear(); -- } -- } -- level = 0; /* try absolute import on failure */ -+ while (start < end) { -+ mid = start + (end - start) / 2; -+ if (code_line < entries[mid].code_line) { -+ end = mid; -+ } else if (code_line > entries[mid].code_line) { -+ start = mid + 1; -+ } else { -+ return mid; - } -- #endif -- if (!module) { -- #if PY_VERSION_HEX < 0x03030000 -- PyObject *py_level = PyInt_FromLong(level); -- if (!py_level) -- goto bad; -- module = PyObject_CallFunctionObjArgs(py_import, -- name, global_dict, empty_dict, list, py_level, NULL); -- Py_DECREF(py_level); -- #else -- module = PyImport_ImportModuleLevelObject( -- name, global_dict, empty_dict, list, level); -- #endif -+ } -+ if (code_line <= entries[mid].code_line) { -+ return mid; -+ } else { -+ return mid + 1; -+ } -+} -+static PyCodeObject *__pyx_find_code_object(int code_line) { -+ PyCodeObject* code_object; -+ int pos; -+ if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { -+ return NULL; -+ } -+ pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); -+ if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { -+ return NULL; -+ } -+ code_object = __pyx_code_cache.entries[pos].code_object; -+ Py_INCREF(code_object); -+ return code_object; -+} -+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { -+ int pos, i; -+ __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; -+ if (unlikely(!code_line)) { -+ return; -+ } -+ if (unlikely(!entries)) { -+ entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); -+ if (likely(entries)) { -+ __pyx_code_cache.entries = entries; -+ __pyx_code_cache.max_count = 64; -+ __pyx_code_cache.count = 1; -+ entries[0].code_line = code_line; -+ entries[0].code_object = code_object; -+ Py_INCREF(code_object); - } -+ return; - } -- #else -- if (level>0) { -- PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4."); -- goto bad; -+ pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); -+ if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { -+ PyCodeObject* tmp = entries[pos].code_object; -+ entries[pos].code_object = code_object; -+ Py_DECREF(tmp); -+ return; - } -- module = PyObject_CallFunctionObjArgs(py_import, -- name, global_dict, empty_dict, list, NULL); -- #endif --bad: -- #if PY_VERSION_HEX < 0x03030000 -- Py_XDECREF(py_import); -+ 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)); -+ if (unlikely(!entries)) { -+ return; -+ } -+ __pyx_code_cache.entries = entries; -+ __pyx_code_cache.max_count = new_max; -+ } -+ for (i=__pyx_code_cache.count; i>pos; i--) { -+ entries[i] = entries[i-1]; -+ } -+ entries[pos].code_line = code_line; -+ entries[pos].code_object = code_object; -+ __pyx_code_cache.count++; -+ Py_INCREF(code_object); -+} -+ -+/* AddTraceback */ -+ #include "compile.h" -+#include "frameobject.h" -+#include "traceback.h" -+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; -+ #if PY_MAJOR_VERSION < 3 -+ py_srcfile = PyString_FromString(filename); -+ #else -+ py_srcfile = PyUnicode_FromString(filename); - #endif -- Py_XDECREF(empty_list); -- Py_XDECREF(empty_dict); -- return module; -+ if (!py_srcfile) goto bad; -+ if (c_line) { -+ #if PY_MAJOR_VERSION < 3 -+ py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); -+ #else -+ py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); -+ #endif -+ } -+ else { -+ #if PY_MAJOR_VERSION < 3 -+ py_funcname = PyString_FromString(funcname); -+ #else -+ py_funcname = PyUnicode_FromString(funcname); -+ #endif -+ } -+ if (!py_funcname) goto bad; -+ py_code = __Pyx_PyCode_New( -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ __pyx_empty_bytes, /*PyObject *code,*/ -+ __pyx_empty_tuple, /*PyObject *consts,*/ -+ __pyx_empty_tuple, /*PyObject *names,*/ -+ __pyx_empty_tuple, /*PyObject *varnames,*/ -+ __pyx_empty_tuple, /*PyObject *freevars,*/ -+ __pyx_empty_tuple, /*PyObject *cellvars,*/ -+ py_srcfile, /*PyObject *filename,*/ -+ py_funcname, /*PyObject *name,*/ -+ py_line, -+ __pyx_empty_bytes /*PyObject *lnotab*/ -+ ); -+ Py_DECREF(py_srcfile); -+ Py_DECREF(py_funcname); -+ return py_code; -+bad: -+ Py_XDECREF(py_srcfile); -+ Py_XDECREF(py_funcname); -+ return NULL; - } -- --static PyObject *__Pyx_FindPy2Metaclass(PyObject *bases) { -- PyObject *metaclass; --#if PY_MAJOR_VERSION < 3 -- if (PyTuple_Check(bases) && PyTuple_GET_SIZE(bases) > 0) { -- PyObject *base = PyTuple_GET_ITEM(bases, 0); -- metaclass = __Pyx_PyObject_GetAttrStr(base, __pyx_n_s____class__); -- if (!metaclass) { -- PyErr_Clear(); -- metaclass = (PyObject*) Py_TYPE(base); -- } -- } else { -- metaclass = (PyObject *) &PyClass_Type; -+static void __Pyx_AddTraceback(const char *funcname, int c_line, -+ int py_line, const char *filename) { -+ PyCodeObject *py_code = 0; -+ PyFrameObject *py_frame = 0; -+ PyThreadState *tstate = __Pyx_PyThreadState_Current; -+ if (c_line) { -+ c_line = __Pyx_CLineForTraceback(tstate, c_line); - } --#else -- if (PyTuple_Check(bases) && PyTuple_GET_SIZE(bases) > 0) { -- PyObject *base = PyTuple_GET_ITEM(bases, 0); -- metaclass = (PyObject*) Py_TYPE(base); -- } else { -- metaclass = (PyObject *) &PyType_Type; -+ py_code = __pyx_find_code_object(c_line ? -c_line : py_line); -+ if (!py_code) { -+ py_code = __Pyx_CreateCodeObjectForTraceback( -+ funcname, c_line, py_line, filename); -+ if (!py_code) goto bad; -+ __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } --#endif -- Py_INCREF(metaclass); -- return metaclass; -+ py_frame = PyFrame_New( -+ tstate, /*PyThreadState *tstate,*/ -+ py_code, /*PyCodeObject *code,*/ -+ __pyx_d, /*PyObject *globals,*/ -+ 0 /*PyObject *locals*/ -+ ); -+ if (!py_frame) goto bad; -+ __Pyx_PyFrame_SetLineNumber(py_frame, py_line); -+ PyTraceBack_Here(py_frame); -+bad: -+ Py_XDECREF(py_code); -+ Py_XDECREF(py_frame); - } - --static PyObject *__Pyx_CreateClass(PyObject *bases, PyObject *dict, PyObject *name, -- PyObject *qualname, PyObject *modname) { -- PyObject *result; -- PyObject *metaclass; -- if (PyDict_SetItem(dict, __pyx_n_s____module__, modname) < 0) -- return NULL; -- if (PyDict_SetItem(dict, __pyx_n_s____qualname__, qualname) < 0) -- return NULL; -- metaclass = PyDict_GetItem(dict, __pyx_n_s____metaclass__); -- if (metaclass) { -- Py_INCREF(metaclass); -- } else { -- metaclass = __Pyx_FindPy2Metaclass(bases); -+/* 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;\ - } -- result = PyObject_CallFunctionObjArgs(metaclass, name, bases, dict, NULL); -- Py_DECREF(metaclass); -- return result; --} - --static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) { -- const unsigned char neg_one = (unsigned char)-1, const_zero = 0; -+/* CIntToPy */ -+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { -+ const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; -- if (sizeof(unsigned char) < sizeof(long)) { -- long val = __Pyx_PyInt_AsLong(x); -- if (unlikely(val != (long)(unsigned char)val)) { -- if (!unlikely(val == -1 && PyErr_Occurred())) { -- PyErr_SetString(PyExc_OverflowError, -- (is_unsigned && unlikely(val < 0)) ? -- "can't convert negative value to unsigned char" : -- "value too large to convert to unsigned char"); -- } -- return (unsigned char)-1; -+ if (is_unsigned) { -+ if (sizeof(long) < sizeof(long)) { -+ return PyInt_FromLong((long) value); -+ } else if (sizeof(long) <= sizeof(unsigned long)) { -+ return PyLong_FromUnsignedLong((unsigned long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { -+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+#endif - } -- return (unsigned char)val; -- } -- return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x); --} -- --static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) { -- const unsigned short neg_one = (unsigned short)-1, const_zero = 0; -- const int is_unsigned = neg_one > const_zero; -- if (sizeof(unsigned short) < sizeof(long)) { -- long val = __Pyx_PyInt_AsLong(x); -- if (unlikely(val != (long)(unsigned short)val)) { -- if (!unlikely(val == -1 && PyErr_Occurred())) { -- PyErr_SetString(PyExc_OverflowError, -- (is_unsigned && unlikely(val < 0)) ? -- "can't convert negative value to unsigned short" : -- "value too large to convert to unsigned short"); -- } -- return (unsigned short)-1; -+ } else { -+ if (sizeof(long) <= sizeof(long)) { -+ return PyInt_FromLong((long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { -+ return PyLong_FromLongLong((PY_LONG_LONG) value); -+#endif - } -- return (unsigned short)val; - } -- return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x); --} -- --static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) { -- const unsigned int neg_one = (unsigned int)-1, const_zero = 0; -- const int is_unsigned = neg_one > const_zero; -- if (sizeof(unsigned int) < sizeof(long)) { -- long val = __Pyx_PyInt_AsLong(x); -- if (unlikely(val != (long)(unsigned int)val)) { -- if (!unlikely(val == -1 && PyErr_Occurred())) { -- PyErr_SetString(PyExc_OverflowError, -- (is_unsigned && unlikely(val < 0)) ? -- "can't convert negative value to unsigned int" : -- "value too large to convert to unsigned int"); -- } -- return (unsigned int)-1; -- } -- return (unsigned int)val; -+ { -+ int one = 1; int little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&value; -+ return _PyLong_FromByteArray(bytes, sizeof(long), -+ little, !is_unsigned); - } -- return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x); - } - --static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) { -- const char neg_one = (char)-1, const_zero = 0; -+/* CIntToPy */ -+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__http_errno(enum http_errno value) { -+ const enum http_errno neg_one = (enum http_errno) -1, const_zero = (enum http_errno) 0; - const int is_unsigned = neg_one > const_zero; -- if (sizeof(char) < sizeof(long)) { -- long val = __Pyx_PyInt_AsLong(x); -- if (unlikely(val != (long)(char)val)) { -- if (!unlikely(val == -1 && PyErr_Occurred())) { -- PyErr_SetString(PyExc_OverflowError, -- (is_unsigned && unlikely(val < 0)) ? -- "can't convert negative value to char" : -- "value too large to convert to char"); -- } -- return (char)-1; -+ if (is_unsigned) { -+ if (sizeof(enum http_errno) < sizeof(long)) { -+ return PyInt_FromLong((long) value); -+ } else if (sizeof(enum http_errno) <= sizeof(unsigned long)) { -+ return PyLong_FromUnsignedLong((unsigned long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum http_errno) <= sizeof(unsigned PY_LONG_LONG)) { -+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+#endif - } -- return (char)val; -- } -- return (char)__Pyx_PyInt_AsLong(x); --} -- --static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) { -- const short neg_one = (short)-1, const_zero = 0; -- const int is_unsigned = neg_one > const_zero; -- if (sizeof(short) < sizeof(long)) { -- long val = __Pyx_PyInt_AsLong(x); -- if (unlikely(val != (long)(short)val)) { -- if (!unlikely(val == -1 && PyErr_Occurred())) { -- PyErr_SetString(PyExc_OverflowError, -- (is_unsigned && unlikely(val < 0)) ? -- "can't convert negative value to short" : -- "value too large to convert to short"); -- } -- return (short)-1; -+ } else { -+ if (sizeof(enum http_errno) <= sizeof(long)) { -+ return PyInt_FromLong((long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum http_errno) <= sizeof(PY_LONG_LONG)) { -+ return PyLong_FromLongLong((PY_LONG_LONG) value); -+#endif - } -- return (short)val; - } -- return (short)__Pyx_PyInt_AsLong(x); --} -- --static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) { -- const int neg_one = (int)-1, const_zero = 0; -- const int is_unsigned = neg_one > const_zero; -- if (sizeof(int) < sizeof(long)) { -- long val = __Pyx_PyInt_AsLong(x); -- if (unlikely(val != (long)(int)val)) { -- if (!unlikely(val == -1 && PyErr_Occurred())) { -- PyErr_SetString(PyExc_OverflowError, -- (is_unsigned && unlikely(val < 0)) ? -- "can't convert negative value to int" : -- "value too large to convert to int"); -- } -- return (int)-1; -- } -- return (int)val; -+ { -+ int one = 1; int little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&value; -+ return _PyLong_FromByteArray(bytes, sizeof(enum http_errno), -+ little, !is_unsigned); - } -- return (int)__Pyx_PyInt_AsLong(x); - } - --static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) { -- const signed char neg_one = (signed char)-1, const_zero = 0; -+/* CIntToPy */ -+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_char(unsigned char value) { -+ const unsigned char neg_one = (unsigned char) -1, const_zero = (unsigned char) 0; - const int is_unsigned = neg_one > const_zero; -- if (sizeof(signed char) < sizeof(long)) { -- long val = __Pyx_PyInt_AsLong(x); -- if (unlikely(val != (long)(signed char)val)) { -- if (!unlikely(val == -1 && PyErr_Occurred())) { -- PyErr_SetString(PyExc_OverflowError, -- (is_unsigned && unlikely(val < 0)) ? -- "can't convert negative value to signed char" : -- "value too large to convert to signed char"); -- } -- return (signed char)-1; -+ if (is_unsigned) { -+ if (sizeof(unsigned char) < sizeof(long)) { -+ return PyInt_FromLong((long) value); -+ } else if (sizeof(unsigned char) <= sizeof(unsigned long)) { -+ return PyLong_FromUnsignedLong((unsigned long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(unsigned char) <= sizeof(unsigned PY_LONG_LONG)) { -+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+#endif - } -- return (signed char)val; -- } -- return (signed char)__Pyx_PyInt_AsSignedLong(x); --} -- --static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) { -- const signed short neg_one = (signed short)-1, const_zero = 0; -- const int is_unsigned = neg_one > const_zero; -- if (sizeof(signed short) < sizeof(long)) { -- long val = __Pyx_PyInt_AsLong(x); -- if (unlikely(val != (long)(signed short)val)) { -- if (!unlikely(val == -1 && PyErr_Occurred())) { -- PyErr_SetString(PyExc_OverflowError, -- (is_unsigned && unlikely(val < 0)) ? -- "can't convert negative value to signed short" : -- "value too large to convert to signed short"); -- } -- return (signed short)-1; -+ } else { -+ if (sizeof(unsigned char) <= sizeof(long)) { -+ return PyInt_FromLong((long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(unsigned char) <= sizeof(PY_LONG_LONG)) { -+ return PyLong_FromLongLong((PY_LONG_LONG) value); -+#endif - } -- return (signed short)val; - } -- return (signed short)__Pyx_PyInt_AsSignedLong(x); -+ { -+ int one = 1; int little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&value; -+ return _PyLong_FromByteArray(bytes, sizeof(unsigned char), -+ little, !is_unsigned); -+ } - } - --static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) { -- const signed int neg_one = (signed int)-1, const_zero = 0; -+/* CIntToPy */ -+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_short(unsigned short value) { -+ const unsigned short neg_one = (unsigned short) -1, const_zero = (unsigned short) 0; - const int is_unsigned = neg_one > const_zero; -- if (sizeof(signed int) < sizeof(long)) { -- long val = __Pyx_PyInt_AsLong(x); -- if (unlikely(val != (long)(signed int)val)) { -- if (!unlikely(val == -1 && PyErr_Occurred())) { -- PyErr_SetString(PyExc_OverflowError, -- (is_unsigned && unlikely(val < 0)) ? -- "can't convert negative value to signed int" : -- "value too large to convert to signed int"); -- } -- return (signed int)-1; -+ if (is_unsigned) { -+ if (sizeof(unsigned short) < sizeof(long)) { -+ return PyInt_FromLong((long) value); -+ } else if (sizeof(unsigned short) <= sizeof(unsigned long)) { -+ return PyLong_FromUnsignedLong((unsigned long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(unsigned short) <= sizeof(unsigned PY_LONG_LONG)) { -+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+#endif - } -- return (signed int)val; -+ } else { -+ if (sizeof(unsigned short) <= sizeof(long)) { -+ return PyInt_FromLong((long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(unsigned short) <= sizeof(PY_LONG_LONG)) { -+ return PyLong_FromLongLong((PY_LONG_LONG) value); -+#endif -+ } -+ } -+ { -+ int one = 1; int little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&value; -+ return _PyLong_FromByteArray(bytes, sizeof(unsigned short), -+ little, !is_unsigned); - } -- return (signed int)__Pyx_PyInt_AsSignedLong(x); - } - --static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) { -- const int neg_one = (int)-1, const_zero = 0; -+/* CIntToPy */ -+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { -+ const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; -- if (sizeof(int) < sizeof(long)) { -- long val = __Pyx_PyInt_AsLong(x); -- if (unlikely(val != (long)(int)val)) { -- if (!unlikely(val == -1 && PyErr_Occurred())) { -- PyErr_SetString(PyExc_OverflowError, -- (is_unsigned && unlikely(val < 0)) ? -- "can't convert negative value to int" : -- "value too large to convert to int"); -- } -- return (int)-1; -+ if (is_unsigned) { -+ if (sizeof(int) < sizeof(long)) { -+ return PyInt_FromLong((long) value); -+ } else if (sizeof(int) <= sizeof(unsigned long)) { -+ return PyLong_FromUnsignedLong((unsigned long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { -+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+#endif -+ } -+ } else { -+ if (sizeof(int) <= sizeof(long)) { -+ return PyInt_FromLong((long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { -+ return PyLong_FromLongLong((PY_LONG_LONG) value); -+#endif - } -- return (int)val; - } -- return (int)__Pyx_PyInt_AsLong(x); -+ { -+ int one = 1; int little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&value; -+ return _PyLong_FromByteArray(bytes, sizeof(int), -+ little, !is_unsigned); -+ } - } - --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 --#if CYTHON_USE_PYLONG_INTERNALS --#include "longintrepr.h" --#endif --#endif --static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) { -- const unsigned long neg_one = (unsigned long)-1, const_zero = 0; -+/* CIntFromPy */ -+ static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { -+ const size_t neg_one = (size_t) -1, const_zero = (size_t) 0; - const int is_unsigned = neg_one > const_zero; - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { -- long val = PyInt_AS_LONG(x); -- if (is_unsigned && unlikely(val < 0)) { -- PyErr_SetString(PyExc_OverflowError, -- "can't convert negative value to unsigned long"); -- return (unsigned long)-1; -+ if (sizeof(size_t) < sizeof(long)) { -+ __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x)) -+ } else { -+ long val = PyInt_AS_LONG(x); -+ if (is_unsigned && unlikely(val < 0)) { -+ goto raise_neg_overflow; -+ } -+ return (size_t) val; - } -- return (unsigned long)val; - } else - #endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 - #if CYTHON_USE_PYLONG_INTERNALS -- if (sizeof(digit) <= sizeof(unsigned long)) { -- switch (Py_SIZE(x)) { -- case 0: return 0; -- case 1: return (unsigned long) ((PyLongObject*)x)->ob_digit[0]; -- } -+ const digit* digits = ((PyLongObject*)x)->ob_digit; -+ switch (Py_SIZE(x)) { -+ case 0: return (size_t) 0; -+ case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, digits[0]) -+ case 2: -+ if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(size_t) >= 2 * PyLong_SHIFT) { -+ return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); -+ } -+ } -+ break; -+ case 3: -+ if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(size_t) >= 3 * PyLong_SHIFT) { -+ return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); -+ } -+ } -+ break; -+ case 4: -+ if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(size_t) >= 4 * PyLong_SHIFT) { -+ return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); -+ } -+ } -+ break; - } - #endif --#endif -+#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { -- PyErr_SetString(PyExc_OverflowError, -- "can't convert negative value to unsigned long"); -- return (unsigned long)-1; -+ goto raise_neg_overflow; - } -- return (unsigned long)PyLong_AsUnsignedLong(x); -- } else { --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 --#if CYTHON_USE_PYLONG_INTERNALS -- if (sizeof(digit) <= sizeof(unsigned long)) { -- switch (Py_SIZE(x)) { -- case 0: return 0; -- case 1: return +(unsigned long) ((PyLongObject*)x)->ob_digit[0]; -- case -1: return -(unsigned long) ((PyLongObject*)x)->ob_digit[0]; -- } -+#else -+ { -+ int result = PyObject_RichCompareBool(x, Py_False, Py_LT); -+ if (unlikely(result < 0)) -+ return (size_t) -1; -+ if (unlikely(result == 1)) -+ goto raise_neg_overflow; - } - #endif -+ if (sizeof(size_t) <= sizeof(unsigned long)) { -+ __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x)) -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG)) { -+ __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) - #endif -- return (unsigned long)PyLong_AsLong(x); -- } -- } else { -- unsigned long val; -- PyObject *tmp = __Pyx_PyNumber_Int(x); -- if (!tmp) return (unsigned long)-1; -- val = __Pyx_PyInt_AsUnsignedLong(tmp); -- Py_DECREF(tmp); -- return val; -- } --} -- --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 --#if CYTHON_USE_PYLONG_INTERNALS --#include "longintrepr.h" --#endif --#endif --static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) { -- const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0; -- const int is_unsigned = neg_one > const_zero; --#if PY_MAJOR_VERSION < 3 -- if (likely(PyInt_Check(x))) { -- long val = PyInt_AS_LONG(x); -- if (is_unsigned && unlikely(val < 0)) { -- PyErr_SetString(PyExc_OverflowError, -- "can't convert negative value to unsigned PY_LONG_LONG"); -- return (unsigned PY_LONG_LONG)-1; -- } -- return (unsigned PY_LONG_LONG)val; -- } else --#endif -- if (likely(PyLong_Check(x))) { -- if (is_unsigned) { --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -+ } -+ } else { - #if CYTHON_USE_PYLONG_INTERNALS -- if (sizeof(digit) <= sizeof(unsigned PY_LONG_LONG)) { -- switch (Py_SIZE(x)) { -- case 0: return 0; -- case 1: return (unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; -- } -+ const digit* digits = ((PyLongObject*)x)->ob_digit; -+ switch (Py_SIZE(x)) { -+ case 0: return (size_t) 0; -+ case -1: __PYX_VERIFY_RETURN_INT(size_t, sdigit, (sdigit) (-(sdigit)digits[0])) -+ case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, +digits[0]) -+ case -2: -+ if (8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { -+ return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); -+ } -+ } -+ break; -+ case 2: -+ if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { -+ return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); -+ } -+ } -+ break; -+ case -3: -+ if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { -+ return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); -+ } -+ } -+ break; -+ case 3: -+ if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { -+ return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); -+ } -+ } -+ break; -+ case -4: -+ if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) { -+ return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); -+ } -+ } -+ break; -+ case 4: -+ if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) { -+ return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); -+ } -+ } -+ break; - } - #endif -+ if (sizeof(size_t) <= sizeof(long)) { -+ __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x)) -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(size_t) <= sizeof(PY_LONG_LONG)) { -+ __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x)) - #endif -- if (unlikely(Py_SIZE(x) < 0)) { -- PyErr_SetString(PyExc_OverflowError, -- "can't convert negative value to unsigned PY_LONG_LONG"); -- return (unsigned PY_LONG_LONG)-1; - } -- return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); -- } else { --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 --#if CYTHON_USE_PYLONG_INTERNALS -- if (sizeof(digit) <= sizeof(unsigned PY_LONG_LONG)) { -- switch (Py_SIZE(x)) { -- case 0: return 0; -- case 1: return +(unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; -- case -1: return -(unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; -- } -+ } -+ { -+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) -+ PyErr_SetString(PyExc_RuntimeError, -+ "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -+#else -+ size_t val; -+ PyObject *v = __Pyx_PyNumber_IntOrLong(x); -+ #if PY_MAJOR_VERSION < 3 -+ if (likely(v) && !PyLong_Check(v)) { -+ PyObject *tmp = v; -+ v = PyNumber_Long(tmp); -+ Py_DECREF(tmp); -+ } -+ #endif -+ if (likely(v)) { -+ int one = 1; int is_little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&val; -+ int ret = _PyLong_AsByteArray((PyLongObject *)v, -+ bytes, sizeof(val), -+ is_little, !is_unsigned); -+ Py_DECREF(v); -+ if (likely(!ret)) -+ return val; - } - #endif --#endif -- return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x); -+ return (size_t) -1; - } - } else { -- unsigned PY_LONG_LONG val; -- PyObject *tmp = __Pyx_PyNumber_Int(x); -- if (!tmp) return (unsigned PY_LONG_LONG)-1; -- val = __Pyx_PyInt_AsUnsignedLongLong(tmp); -+ size_t val; -+ PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); -+ if (!tmp) return (size_t) -1; -+ val = __Pyx_PyInt_As_size_t(tmp); - Py_DECREF(tmp); - return val; - } --} -- --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 --#if CYTHON_USE_PYLONG_INTERNALS --#include "longintrepr.h" --#endif --#endif --static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) { -- const long neg_one = (long)-1, const_zero = 0; -+raise_overflow: -+ PyErr_SetString(PyExc_OverflowError, -+ "value too large to convert to size_t"); -+ return (size_t) -1; -+raise_neg_overflow: -+ PyErr_SetString(PyExc_OverflowError, -+ "can't convert negative value to size_t"); -+ return (size_t) -1; -+} -+ -+/* CIntFromPy */ -+ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { -+ const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { -- long val = PyInt_AS_LONG(x); -- if (is_unsigned && unlikely(val < 0)) { -- PyErr_SetString(PyExc_OverflowError, -- "can't convert negative value to long"); -- return (long)-1; -+ if (sizeof(int) < sizeof(long)) { -+ __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) -+ } else { -+ long val = PyInt_AS_LONG(x); -+ if (is_unsigned && unlikely(val < 0)) { -+ goto raise_neg_overflow; -+ } -+ return (int) val; - } -- return (long)val; - } else - #endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 - #if CYTHON_USE_PYLONG_INTERNALS -- if (sizeof(digit) <= sizeof(long)) { -- switch (Py_SIZE(x)) { -- case 0: return 0; -- case 1: return (long) ((PyLongObject*)x)->ob_digit[0]; -- } -+ const digit* digits = ((PyLongObject*)x)->ob_digit; -+ switch (Py_SIZE(x)) { -+ case 0: return (int) 0; -+ case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) -+ case 2: -+ if (8 * sizeof(int) > 1 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { -+ return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); -+ } -+ } -+ break; -+ case 3: -+ if (8 * sizeof(int) > 2 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { -+ return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); -+ } -+ } -+ break; -+ case 4: -+ if (8 * sizeof(int) > 3 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { -+ return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); -+ } -+ } -+ break; - } - #endif --#endif -+#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { -- PyErr_SetString(PyExc_OverflowError, -- "can't convert negative value to long"); -- return (long)-1; -+ goto raise_neg_overflow; - } -- return (long)PyLong_AsUnsignedLong(x); -- } else { --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 --#if CYTHON_USE_PYLONG_INTERNALS -- if (sizeof(digit) <= sizeof(long)) { -- switch (Py_SIZE(x)) { -- case 0: return 0; -- case 1: return +(long) ((PyLongObject*)x)->ob_digit[0]; -- case -1: return -(long) ((PyLongObject*)x)->ob_digit[0]; -- } -+#else -+ { -+ int result = PyObject_RichCompareBool(x, Py_False, Py_LT); -+ if (unlikely(result < 0)) -+ return (int) -1; -+ if (unlikely(result == 1)) -+ goto raise_neg_overflow; - } - #endif -+ if (sizeof(int) <= sizeof(unsigned long)) { -+ __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { -+ __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) - #endif -- return (long)PyLong_AsLong(x); -- } -- } else { -- long val; -- PyObject *tmp = __Pyx_PyNumber_Int(x); -- if (!tmp) return (long)-1; -- val = __Pyx_PyInt_AsLong(tmp); -- Py_DECREF(tmp); -- return val; -- } --} -- --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 --#if CYTHON_USE_PYLONG_INTERNALS --#include "longintrepr.h" --#endif --#endif --static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) { -- const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0; -- const int is_unsigned = neg_one > const_zero; --#if PY_MAJOR_VERSION < 3 -- if (likely(PyInt_Check(x))) { -- long val = PyInt_AS_LONG(x); -- if (is_unsigned && unlikely(val < 0)) { -- PyErr_SetString(PyExc_OverflowError, -- "can't convert negative value to PY_LONG_LONG"); -- return (PY_LONG_LONG)-1; -- } -- return (PY_LONG_LONG)val; -- } else --#endif -- if (likely(PyLong_Check(x))) { -- if (is_unsigned) { --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -+ } -+ } else { - #if CYTHON_USE_PYLONG_INTERNALS -- if (sizeof(digit) <= sizeof(PY_LONG_LONG)) { -- switch (Py_SIZE(x)) { -- case 0: return 0; -- case 1: return (PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; -- } -+ const digit* digits = ((PyLongObject*)x)->ob_digit; -+ switch (Py_SIZE(x)) { -+ case 0: return (int) 0; -+ case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) -+ case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) -+ case -2: -+ if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { -+ return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); -+ } -+ } -+ break; -+ case 2: -+ if (8 * sizeof(int) > 1 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { -+ return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); -+ } -+ } -+ break; -+ case -3: -+ if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { -+ return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); -+ } -+ } -+ break; -+ case 3: -+ if (8 * sizeof(int) > 2 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { -+ return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); -+ } -+ } -+ break; -+ case -4: -+ if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { -+ return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); -+ } -+ } -+ break; -+ case 4: -+ if (8 * sizeof(int) > 3 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { -+ return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); -+ } -+ } -+ break; - } - #endif -+ if (sizeof(int) <= sizeof(long)) { -+ __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { -+ __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) - #endif -- if (unlikely(Py_SIZE(x) < 0)) { -- PyErr_SetString(PyExc_OverflowError, -- "can't convert negative value to PY_LONG_LONG"); -- return (PY_LONG_LONG)-1; - } -- return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); -- } else { --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 --#if CYTHON_USE_PYLONG_INTERNALS -- if (sizeof(digit) <= sizeof(PY_LONG_LONG)) { -- switch (Py_SIZE(x)) { -- case 0: return 0; -- case 1: return +(PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; -- case -1: return -(PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; -- } -+ } -+ { -+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) -+ PyErr_SetString(PyExc_RuntimeError, -+ "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -+#else -+ int val; -+ PyObject *v = __Pyx_PyNumber_IntOrLong(x); -+ #if PY_MAJOR_VERSION < 3 -+ if (likely(v) && !PyLong_Check(v)) { -+ PyObject *tmp = v; -+ v = PyNumber_Long(tmp); -+ Py_DECREF(tmp); -+ } -+ #endif -+ if (likely(v)) { -+ int one = 1; int is_little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&val; -+ int ret = _PyLong_AsByteArray((PyLongObject *)v, -+ bytes, sizeof(val), -+ is_little, !is_unsigned); -+ Py_DECREF(v); -+ if (likely(!ret)) -+ return val; - } - #endif --#endif -- return (PY_LONG_LONG)PyLong_AsLongLong(x); -+ return (int) -1; - } - } else { -- PY_LONG_LONG val; -- PyObject *tmp = __Pyx_PyNumber_Int(x); -- if (!tmp) return (PY_LONG_LONG)-1; -- val = __Pyx_PyInt_AsLongLong(tmp); -+ int val; -+ PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); -+ if (!tmp) return (int) -1; -+ val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } --} -- --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 --#if CYTHON_USE_PYLONG_INTERNALS --#include "longintrepr.h" --#endif --#endif --static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) { -- const signed long neg_one = (signed long)-1, const_zero = 0; -+raise_overflow: -+ PyErr_SetString(PyExc_OverflowError, -+ "value too large to convert to int"); -+ return (int) -1; -+raise_neg_overflow: -+ PyErr_SetString(PyExc_OverflowError, -+ "can't convert negative value to int"); -+ return (int) -1; -+} -+ -+/* CIntFromPy */ -+ static CYTHON_INLINE enum http_errno __Pyx_PyInt_As_enum__http_errno(PyObject *x) { -+ const enum http_errno neg_one = (enum http_errno) -1, const_zero = (enum http_errno) 0; - const int is_unsigned = neg_one > const_zero; - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { -- long val = PyInt_AS_LONG(x); -- if (is_unsigned && unlikely(val < 0)) { -- PyErr_SetString(PyExc_OverflowError, -- "can't convert negative value to signed long"); -- return (signed long)-1; -+ if (sizeof(enum http_errno) < sizeof(long)) { -+ __PYX_VERIFY_RETURN_INT(enum http_errno, long, PyInt_AS_LONG(x)) -+ } else { -+ long val = PyInt_AS_LONG(x); -+ if (is_unsigned && unlikely(val < 0)) { -+ goto raise_neg_overflow; -+ } -+ return (enum http_errno) val; - } -- return (signed long)val; - } else - #endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 - #if CYTHON_USE_PYLONG_INTERNALS -- if (sizeof(digit) <= sizeof(signed long)) { -- switch (Py_SIZE(x)) { -- case 0: return 0; -- case 1: return (signed long) ((PyLongObject*)x)->ob_digit[0]; -- } -+ const digit* digits = ((PyLongObject*)x)->ob_digit; -+ switch (Py_SIZE(x)) { -+ case 0: return (enum http_errno) 0; -+ case 1: __PYX_VERIFY_RETURN_INT(enum http_errno, digit, digits[0]) -+ case 2: -+ if (8 * sizeof(enum http_errno) > 1 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(enum http_errno, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(enum http_errno) >= 2 * PyLong_SHIFT) { -+ return (enum http_errno) (((((enum http_errno)digits[1]) << PyLong_SHIFT) | (enum http_errno)digits[0])); -+ } -+ } -+ break; -+ case 3: -+ if (8 * sizeof(enum http_errno) > 2 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(enum http_errno, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(enum http_errno) >= 3 * PyLong_SHIFT) { -+ return (enum http_errno) (((((((enum http_errno)digits[2]) << PyLong_SHIFT) | (enum http_errno)digits[1]) << PyLong_SHIFT) | (enum http_errno)digits[0])); -+ } -+ } -+ break; -+ case 4: -+ if (8 * sizeof(enum http_errno) > 3 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(enum http_errno, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(enum http_errno) >= 4 * PyLong_SHIFT) { -+ return (enum http_errno) (((((((((enum http_errno)digits[3]) << PyLong_SHIFT) | (enum http_errno)digits[2]) << PyLong_SHIFT) | (enum http_errno)digits[1]) << PyLong_SHIFT) | (enum http_errno)digits[0])); -+ } -+ } -+ break; - } - #endif --#endif -+#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { -- PyErr_SetString(PyExc_OverflowError, -- "can't convert negative value to signed long"); -- return (signed long)-1; -+ goto raise_neg_overflow; -+ } -+#else -+ { -+ int result = PyObject_RichCompareBool(x, Py_False, Py_LT); -+ if (unlikely(result < 0)) -+ return (enum http_errno) -1; -+ if (unlikely(result == 1)) -+ goto raise_neg_overflow; -+ } -+#endif -+ if (sizeof(enum http_errno) <= sizeof(unsigned long)) { -+ __PYX_VERIFY_RETURN_INT_EXC(enum http_errno, unsigned long, PyLong_AsUnsignedLong(x)) -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum http_errno) <= sizeof(unsigned PY_LONG_LONG)) { -+ __PYX_VERIFY_RETURN_INT_EXC(enum http_errno, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -+#endif - } -- return (signed long)PyLong_AsUnsignedLong(x); - } else { --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 - #if CYTHON_USE_PYLONG_INTERNALS -- if (sizeof(digit) <= sizeof(signed long)) { -- switch (Py_SIZE(x)) { -- case 0: return 0; -- case 1: return +(signed long) ((PyLongObject*)x)->ob_digit[0]; -- case -1: return -(signed long) ((PyLongObject*)x)->ob_digit[0]; -- } -+ const digit* digits = ((PyLongObject*)x)->ob_digit; -+ switch (Py_SIZE(x)) { -+ case 0: return (enum http_errno) 0; -+ case -1: __PYX_VERIFY_RETURN_INT(enum http_errno, sdigit, (sdigit) (-(sdigit)digits[0])) -+ case 1: __PYX_VERIFY_RETURN_INT(enum http_errno, digit, +digits[0]) -+ case -2: -+ if (8 * sizeof(enum http_errno) - 1 > 1 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(enum http_errno, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(enum http_errno) - 1 > 2 * PyLong_SHIFT) { -+ return (enum http_errno) (((enum http_errno)-1)*(((((enum http_errno)digits[1]) << PyLong_SHIFT) | (enum http_errno)digits[0]))); -+ } -+ } -+ break; -+ case 2: -+ if (8 * sizeof(enum http_errno) > 1 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(enum http_errno, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(enum http_errno) - 1 > 2 * PyLong_SHIFT) { -+ return (enum http_errno) ((((((enum http_errno)digits[1]) << PyLong_SHIFT) | (enum http_errno)digits[0]))); -+ } -+ } -+ break; -+ case -3: -+ if (8 * sizeof(enum http_errno) - 1 > 2 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(enum http_errno, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(enum http_errno) - 1 > 3 * PyLong_SHIFT) { -+ return (enum http_errno) (((enum http_errno)-1)*(((((((enum http_errno)digits[2]) << PyLong_SHIFT) | (enum http_errno)digits[1]) << PyLong_SHIFT) | (enum http_errno)digits[0]))); -+ } -+ } -+ break; -+ case 3: -+ if (8 * sizeof(enum http_errno) > 2 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(enum http_errno, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(enum http_errno) - 1 > 3 * PyLong_SHIFT) { -+ return (enum http_errno) ((((((((enum http_errno)digits[2]) << PyLong_SHIFT) | (enum http_errno)digits[1]) << PyLong_SHIFT) | (enum http_errno)digits[0]))); -+ } -+ } -+ break; -+ case -4: -+ if (8 * sizeof(enum http_errno) - 1 > 3 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(enum http_errno, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(enum http_errno) - 1 > 4 * PyLong_SHIFT) { -+ return (enum http_errno) (((enum http_errno)-1)*(((((((((enum http_errno)digits[3]) << PyLong_SHIFT) | (enum http_errno)digits[2]) << PyLong_SHIFT) | (enum http_errno)digits[1]) << PyLong_SHIFT) | (enum http_errno)digits[0]))); -+ } -+ } -+ break; -+ case 4: -+ if (8 * sizeof(enum http_errno) > 3 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(enum http_errno, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(enum http_errno) - 1 > 4 * PyLong_SHIFT) { -+ return (enum http_errno) ((((((((((enum http_errno)digits[3]) << PyLong_SHIFT) | (enum http_errno)digits[2]) << PyLong_SHIFT) | (enum http_errno)digits[1]) << PyLong_SHIFT) | (enum http_errno)digits[0]))); -+ } -+ } -+ break; - } - #endif -+ if (sizeof(enum http_errno) <= sizeof(long)) { -+ __PYX_VERIFY_RETURN_INT_EXC(enum http_errno, long, PyLong_AsLong(x)) -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum http_errno) <= sizeof(PY_LONG_LONG)) { -+ __PYX_VERIFY_RETURN_INT_EXC(enum http_errno, PY_LONG_LONG, PyLong_AsLongLong(x)) -+#endif -+ } -+ } -+ { -+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) -+ PyErr_SetString(PyExc_RuntimeError, -+ "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -+#else -+ enum http_errno val; -+ PyObject *v = __Pyx_PyNumber_IntOrLong(x); -+ #if PY_MAJOR_VERSION < 3 -+ if (likely(v) && !PyLong_Check(v)) { -+ PyObject *tmp = v; -+ v = PyNumber_Long(tmp); -+ Py_DECREF(tmp); -+ } -+ #endif -+ if (likely(v)) { -+ int one = 1; int is_little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&val; -+ int ret = _PyLong_AsByteArray((PyLongObject *)v, -+ bytes, sizeof(val), -+ is_little, !is_unsigned); -+ Py_DECREF(v); -+ if (likely(!ret)) -+ return val; -+ } - #endif -- return (signed long)PyLong_AsLong(x); -+ return (enum http_errno) -1; - } - } else { -- signed long val; -- PyObject *tmp = __Pyx_PyNumber_Int(x); -- if (!tmp) return (signed long)-1; -- val = __Pyx_PyInt_AsSignedLong(tmp); -+ enum http_errno val; -+ PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); -+ if (!tmp) return (enum http_errno) -1; -+ val = __Pyx_PyInt_As_enum__http_errno(tmp); - Py_DECREF(tmp); - return val; - } --} -- --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 --#if CYTHON_USE_PYLONG_INTERNALS --#include "longintrepr.h" --#endif --#endif --static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) { -- const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0; -+raise_overflow: -+ PyErr_SetString(PyExc_OverflowError, -+ "value too large to convert to enum http_errno"); -+ return (enum http_errno) -1; -+raise_neg_overflow: -+ PyErr_SetString(PyExc_OverflowError, -+ "can't convert negative value to enum http_errno"); -+ return (enum http_errno) -1; -+} -+ -+/* CIntFromPy */ -+ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { -+ const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { -- long val = PyInt_AS_LONG(x); -- if (is_unsigned && unlikely(val < 0)) { -- PyErr_SetString(PyExc_OverflowError, -- "can't convert negative value to signed PY_LONG_LONG"); -- return (signed PY_LONG_LONG)-1; -+ if (sizeof(long) < sizeof(long)) { -+ __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) -+ } else { -+ long val = PyInt_AS_LONG(x); -+ if (is_unsigned && unlikely(val < 0)) { -+ goto raise_neg_overflow; -+ } -+ return (long) val; - } -- return (signed PY_LONG_LONG)val; - } else - #endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 - #if CYTHON_USE_PYLONG_INTERNALS -- if (sizeof(digit) <= sizeof(signed PY_LONG_LONG)) { -- switch (Py_SIZE(x)) { -- case 0: return 0; -- case 1: return (signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; -- } -+ const digit* digits = ((PyLongObject*)x)->ob_digit; -+ switch (Py_SIZE(x)) { -+ case 0: return (long) 0; -+ case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) -+ case 2: -+ if (8 * sizeof(long) > 1 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { -+ return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); -+ } -+ } -+ break; -+ case 3: -+ if (8 * sizeof(long) > 2 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { -+ return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); -+ } -+ } -+ break; -+ case 4: -+ if (8 * sizeof(long) > 3 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { -+ return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); -+ } -+ } -+ break; - } - #endif --#endif -+#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { -- PyErr_SetString(PyExc_OverflowError, -- "can't convert negative value to signed PY_LONG_LONG"); -- return (signed PY_LONG_LONG)-1; -+ goto raise_neg_overflow; -+ } -+#else -+ { -+ int result = PyObject_RichCompareBool(x, Py_False, Py_LT); -+ if (unlikely(result < 0)) -+ return (long) -1; -+ if (unlikely(result == 1)) -+ goto raise_neg_overflow; -+ } -+#endif -+ if (sizeof(long) <= sizeof(unsigned long)) { -+ __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { -+ __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -+#endif - } -- return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); - } else { --#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 - #if CYTHON_USE_PYLONG_INTERNALS -- if (sizeof(digit) <= sizeof(signed PY_LONG_LONG)) { -- switch (Py_SIZE(x)) { -- case 0: return 0; -- case 1: return +(signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; -- case -1: return -(signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; -- } -+ const digit* digits = ((PyLongObject*)x)->ob_digit; -+ switch (Py_SIZE(x)) { -+ case 0: return (long) 0; -+ case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) -+ case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) -+ case -2: -+ if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { -+ return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); -+ } -+ } -+ break; -+ case 2: -+ if (8 * sizeof(long) > 1 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { -+ return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); -+ } -+ } -+ break; -+ case -3: -+ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { -+ return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); -+ } -+ } -+ break; -+ case 3: -+ if (8 * sizeof(long) > 2 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { -+ return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); -+ } -+ } -+ break; -+ case -4: -+ if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { -+ return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); -+ } -+ } -+ break; -+ case 4: -+ if (8 * sizeof(long) > 3 * PyLong_SHIFT) { -+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { -+ __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) -+ } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { -+ return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); -+ } -+ } -+ break; - } - #endif -+ if (sizeof(long) <= sizeof(long)) { -+ __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { -+ __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -+#endif -+ } -+ } -+ { -+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) -+ PyErr_SetString(PyExc_RuntimeError, -+ "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -+#else -+ long val; -+ PyObject *v = __Pyx_PyNumber_IntOrLong(x); -+ #if PY_MAJOR_VERSION < 3 -+ if (likely(v) && !PyLong_Check(v)) { -+ PyObject *tmp = v; -+ v = PyNumber_Long(tmp); -+ Py_DECREF(tmp); -+ } -+ #endif -+ if (likely(v)) { -+ int one = 1; int is_little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&val; -+ int ret = _PyLong_AsByteArray((PyLongObject *)v, -+ bytes, sizeof(val), -+ is_little, !is_unsigned); -+ Py_DECREF(v); -+ if (likely(!ret)) -+ return val; -+ } - #endif -- return (signed PY_LONG_LONG)PyLong_AsLongLong(x); -+ return (long) -1; - } - } else { -- signed PY_LONG_LONG val; -- PyObject *tmp = __Pyx_PyNumber_Int(x); -- if (!tmp) return (signed PY_LONG_LONG)-1; -- val = __Pyx_PyInt_AsSignedLongLong(tmp); -+ long val; -+ PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); -+ if (!tmp) return (long) -1; -+ val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } --} -- --static int __Pyx_check_binary_version(void) { -+raise_overflow: -+ PyErr_SetString(PyExc_OverflowError, -+ "value too large to convert to long"); -+ return (long) -1; -+raise_neg_overflow: -+ PyErr_SetString(PyExc_OverflowError, -+ "can't convert negative value to long"); -+ return (long) -1; -+} -+ -+/* CheckBinaryVersion */ -+ static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); -@@ -8177,16 +11742,13 @@ static int __Pyx_check_binary_version(void) { - "compiletime version %s of module '%.100s' " - "does not match runtime version %s", - ctversion, __Pyx_MODULE_NAME, rtversion); -- #if PY_VERSION_HEX < 0x02050000 -- return PyErr_Warn(NULL, message); -- #else - return PyErr_WarnEx(NULL, message, 1); -- #endif - } - return 0; - } - --#ifndef __PYX_HAVE_RT_ImportModule -+/* ModuleImport */ -+ #ifndef __PYX_HAVE_RT_ImportModule - #define __PYX_HAVE_RT_ImportModule - static PyObject *__Pyx_ImportModule(const char *name) { - PyObject *py_name = 0; -@@ -8203,7 +11765,8 @@ static PyObject *__Pyx_ImportModule(const char *name) { - } - #endif - --#ifndef __PYX_HAVE_RT_ImportType -+/* TypeImport */ -+ #ifndef __PYX_HAVE_RT_ImportType - #define __PYX_HAVE_RT_ImportType - static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, - size_t size, int strict) -@@ -8231,7 +11794,7 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, -- "%s.%s is not a type object", -+ "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -@@ -8249,18 +11812,14 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class - #endif - if (!strict && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), -- "%s.%s size changed, may indicate binary incompatibility", -- module_name, class_name); -- #if PY_VERSION_HEX < 0x02050000 -- if (PyErr_Warn(NULL, warning) < 0) goto bad; -- #else -+ "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", -+ module_name, class_name, basicsize, size); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; -- #endif - } - else if ((size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, -- "%s.%s has the wrong size, try recompiling", -- module_name, class_name); -+ "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", -+ module_name, class_name, basicsize, size); - goto bad; - } - return (PyTypeObject *)result; -@@ -8271,169 +11830,8 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class - } - #endif - --static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { -- int start = 0, mid = 0, end = count - 1; -- if (end >= 0 && code_line > entries[end].code_line) { -- return count; -- } -- while (start < end) { -- mid = (start + end) / 2; -- if (code_line < entries[mid].code_line) { -- end = mid; -- } else if (code_line > entries[mid].code_line) { -- start = mid + 1; -- } else { -- return mid; -- } -- } -- if (code_line <= entries[mid].code_line) { -- return mid; -- } else { -- return mid + 1; -- } --} --static PyCodeObject *__pyx_find_code_object(int code_line) { -- PyCodeObject* code_object; -- int pos; -- if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { -- return NULL; -- } -- pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); -- if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { -- return NULL; -- } -- code_object = __pyx_code_cache.entries[pos].code_object; -- Py_INCREF(code_object); -- return code_object; --} --static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { -- int pos, i; -- __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; -- if (unlikely(!code_line)) { -- return; -- } -- if (unlikely(!entries)) { -- entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); -- if (likely(entries)) { -- __pyx_code_cache.entries = entries; -- __pyx_code_cache.max_count = 64; -- __pyx_code_cache.count = 1; -- entries[0].code_line = code_line; -- entries[0].code_object = code_object; -- Py_INCREF(code_object); -- } -- return; -- } -- pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); -- if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { -- PyCodeObject* tmp = entries[pos].code_object; -- entries[pos].code_object = code_object; -- Py_DECREF(tmp); -- return; -- } -- 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, new_max*sizeof(__Pyx_CodeObjectCacheEntry)); -- if (unlikely(!entries)) { -- return; -- } -- __pyx_code_cache.entries = entries; -- __pyx_code_cache.max_count = new_max; -- } -- for (i=__pyx_code_cache.count; i>pos; i--) { -- entries[i] = entries[i-1]; -- } -- entries[pos].code_line = code_line; -- entries[pos].code_object = code_object; -- __pyx_code_cache.count++; -- Py_INCREF(code_object); --} -- --#include "compile.h" --#include "frameobject.h" --#include "traceback.h" --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; -- #if PY_MAJOR_VERSION < 3 -- py_srcfile = PyString_FromString(filename); -- #else -- py_srcfile = PyUnicode_FromString(filename); -- #endif -- if (!py_srcfile) goto bad; -- if (c_line) { -- #if PY_MAJOR_VERSION < 3 -- py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); -- #else -- py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); -- #endif -- } -- else { -- #if PY_MAJOR_VERSION < 3 -- py_funcname = PyString_FromString(funcname); -- #else -- py_funcname = PyUnicode_FromString(funcname); -- #endif -- } -- if (!py_funcname) goto bad; -- py_code = __Pyx_PyCode_New( -- 0, /*int argcount,*/ -- 0, /*int kwonlyargcount,*/ -- 0, /*int nlocals,*/ -- 0, /*int stacksize,*/ -- 0, /*int flags,*/ -- __pyx_empty_bytes, /*PyObject *code,*/ -- __pyx_empty_tuple, /*PyObject *consts,*/ -- __pyx_empty_tuple, /*PyObject *names,*/ -- __pyx_empty_tuple, /*PyObject *varnames,*/ -- __pyx_empty_tuple, /*PyObject *freevars,*/ -- __pyx_empty_tuple, /*PyObject *cellvars,*/ -- py_srcfile, /*PyObject *filename,*/ -- py_funcname, /*PyObject *name,*/ -- py_line, /*int firstlineno,*/ -- __pyx_empty_bytes /*PyObject *lnotab*/ -- ); -- Py_DECREF(py_srcfile); -- Py_DECREF(py_funcname); -- return py_code; --bad: -- Py_XDECREF(py_srcfile); -- Py_XDECREF(py_funcname); -- return NULL; --} --static void __Pyx_AddTraceback(const char *funcname, int c_line, -- int py_line, const char *filename) { -- PyCodeObject *py_code = 0; -- PyObject *py_globals = 0; -- PyFrameObject *py_frame = 0; -- py_code = __pyx_find_code_object(c_line ? c_line : py_line); -- if (!py_code) { -- py_code = __Pyx_CreateCodeObjectForTraceback( -- funcname, c_line, py_line, filename); -- if (!py_code) goto bad; -- __pyx_insert_code_object(c_line ? c_line : py_line, py_code); -- } -- py_globals = PyModule_GetDict(__pyx_m); -- if (!py_globals) goto bad; -- py_frame = PyFrame_New( -- PyThreadState_GET(), /*PyThreadState *tstate,*/ -- py_code, /*PyCodeObject *code,*/ -- py_globals, /*PyObject *globals,*/ -- 0 /*PyObject *locals*/ -- ); -- if (!py_frame) goto bad; -- py_frame->f_lineno = py_line; -- PyTraceBack_Here(py_frame); --bad: -- Py_XDECREF(py_code); -- Py_XDECREF(py_frame); --} -- --static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { -+/* InitStrings */ -+ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { -@@ -8443,7 +11841,7 @@ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } -- #else /* Python 3+ has unicode identifiers */ -+ #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); -@@ -8458,64 +11856,79 @@ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - #endif - if (!*t->p) - return -1; -+ if (PyObject_Hash(*t->p) == -1) -+ return -1; - ++t; - } - return 0; - } - --static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char* c_str) { -- return __Pyx_PyUnicode_FromStringAndSize(c_str, strlen(c_str)); -+static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { -+ return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); - } --static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { -+static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); - } --static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -+#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -+#if !CYTHON_PEP393_ENABLED -+static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -+ char* defenc_c; -+ PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); -+ if (!defenc) return NULL; -+ defenc_c = PyBytes_AS_STRING(defenc); -+#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -+ { -+ char* end = defenc_c + PyBytes_GET_SIZE(defenc); -+ char* c; -+ for (c = defenc_c; c < end; c++) { -+ if ((unsigned char) (*c) >= 128) { -+ PyUnicode_AsASCIIString(o); -+ return NULL; -+ } -+ } -+ } -+#endif -+ *length = PyBytes_GET_SIZE(defenc); -+ return defenc_c; -+} -+#else -+static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -+ if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -+#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -+ if (likely(PyUnicode_IS_ASCII(o))) { -+ *length = PyUnicode_GET_LENGTH(o); -+ return PyUnicode_AsUTF8(o); -+ } else { -+ PyUnicode_AsASCIIString(o); -+ return NULL; -+ } -+#else -+ return PyUnicode_AsUTF8AndSize(o, length); -+#endif -+} -+#endif -+#endif -+static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( - #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && - #endif - PyUnicode_Check(o)) { --#if PY_VERSION_HEX < 0x03030000 -- char* defenc_c; -- PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); -- if (!defenc) return NULL; -- defenc_c = PyBytes_AS_STRING(defenc); --#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -- { -- char* end = defenc_c + PyBytes_GET_SIZE(defenc); -- char* c; -- for (c = defenc_c; c < end; c++) { -- if ((unsigned char) (*c) >= 128) { -- PyUnicode_AsASCIIString(o); -- return NULL; -- } -- } -- } --#endif /*__PYX_DEFAULT_STRING_ENCODING_IS_ASCII*/ -- *length = PyBytes_GET_SIZE(defenc); -- return defenc_c; --#else /* PY_VERSION_HEX < 0x03030000 */ -- if (PyUnicode_READY(o) == -1) return NULL; --#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -- if (PyUnicode_IS_ASCII(o)) { -- *length = PyUnicode_GET_DATA_SIZE(o); -- return PyUnicode_AsUTF8(o); -- } else { -- PyUnicode_AsASCIIString(o); -- return NULL; -- } --#else /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */ -- return PyUnicode_AsUTF8AndSize(o, length); --#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */ --#endif /* PY_VERSION_HEX < 0x03030000 */ -+ return __Pyx_PyUnicode_AsStringAndSize(o, length); -+ } else -+#endif -+#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) -+ if (PyByteArray_Check(o)) { -+ *length = PyByteArray_GET_SIZE(o); -+ return PyByteArray_AS_STRING(o); - } else --#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT */ -+#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); -- if (r < 0) { -+ if (unlikely(r < 0)) { - return NULL; - } else { - return result; -@@ -8527,43 +11940,67 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); - } --static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) { -+static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -+#if PY_MAJOR_VERSION >= 3 -+ if (PyLong_Check(result)) { -+ if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, -+ "__int__ returned non-int (type %.200s). " -+ "The ability to return an instance of a strict subclass of int " -+ "is deprecated, and may be removed in a future version of Python.", -+ Py_TYPE(result)->tp_name)) { -+ Py_DECREF(result); -+ return NULL; -+ } -+ return result; -+ } -+#endif -+ PyErr_Format(PyExc_TypeError, -+ "__%.4s__ returned non-%.4s (type %.200s)", -+ type_name, type_name, Py_TYPE(result)->tp_name); -+ Py_DECREF(result); -+ return NULL; -+} -+static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -+#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -+#endif - const char *name = NULL; - PyObject *res = NULL; - #if PY_MAJOR_VERSION < 3 -- if (PyInt_Check(x) || PyLong_Check(x)) -+ if (likely(PyInt_Check(x) || PyLong_Check(x))) - #else -- if (PyLong_Check(x)) -+ if (likely(PyLong_Check(x))) - #endif -- return Py_INCREF(x), x; -+ return __Pyx_NewRef(x); -+#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; --#if PY_MAJOR_VERSION < 3 -+ #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; -- res = PyNumber_Int(x); -+ res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; -- res = PyNumber_Long(x); -+ res = m->nb_long(x); - } --#else -- if (m && m->nb_int) { -+ #else -+ if (likely(m && m->nb_int)) { - name = "int"; -- res = PyNumber_Long(x); -+ res = m->nb_int(x); -+ } -+ #endif -+#else -+ if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { -+ res = PyNumber_Int(x); - } - #endif -- if (res) { -+ if (likely(res)) { - #if PY_MAJOR_VERSION < 3 -- if (!PyInt_Check(res) && !PyLong_Check(res)) { -+ if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { - #else -- if (!PyLong_Check(res)) { -+ if (unlikely(!PyLong_CheckExact(res))) { - #endif -- PyErr_Format(PyExc_TypeError, -- "__%s__ returned non-%s (type %.200s)", -- name, name, Py_TYPE(res)->tp_name); -- Py_DECREF(res); -- return NULL; -+ return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { -@@ -8574,34 +12011,71 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) { - } - static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; -- PyObject* x = PyNumber_Index(b); -+ PyObject *x; -+#if PY_MAJOR_VERSION < 3 -+ if (likely(PyInt_CheckExact(b))) { -+ if (sizeof(Py_ssize_t) >= sizeof(long)) -+ return PyInt_AS_LONG(b); -+ else -+ return PyInt_AsSsize_t(x); -+ } -+#endif -+ if (likely(PyLong_CheckExact(b))) { -+ #if CYTHON_USE_PYLONG_INTERNALS -+ const digit* digits = ((PyLongObject*)b)->ob_digit; -+ const Py_ssize_t size = Py_SIZE(b); -+ if (likely(__Pyx_sst_abs(size) <= 1)) { -+ ival = likely(size) ? digits[0] : 0; -+ if (size == -1) ival = -ival; -+ return ival; -+ } else { -+ switch (size) { -+ case 2: -+ if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { -+ return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); -+ } -+ break; -+ case -2: -+ if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { -+ return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); -+ } -+ break; -+ case 3: -+ if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { -+ return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); -+ } -+ break; -+ case -3: -+ if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { -+ return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); -+ } -+ break; -+ case 4: -+ if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { -+ return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); -+ } -+ break; -+ case -4: -+ if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { -+ return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); -+ } -+ break; -+ } -+ } -+ #endif -+ return PyLong_AsSsize_t(b); -+ } -+ x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(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); -+} - static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { --#if PY_VERSION_HEX < 0x02050000 -- if (ival <= LONG_MAX) -- return PyInt_FromLong((long)ival); -- else { -- unsigned char *bytes = (unsigned char *) &ival; -- int one = 1; int little = (int)*(unsigned char*)&one; -- return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0); -- } --#else -- return PyInt_FromSize_t(ival); --#endif --} --static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) { -- unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x); -- if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) { -- if ((val != (unsigned PY_LONG_LONG)-1) || !PyErr_Occurred()) -- PyErr_SetString(PyExc_OverflowError, -- "value too large to convert to size_t"); -- return (size_t)-1; -- } -- return (size_t)val; -+ return PyInt_FromSize_t(ival); - } - - diff --git a/python-http-parser.spec b/python-http-parser.spec deleted file mode 100644 index de501d8..0000000 --- a/python-http-parser.spec +++ /dev/null @@ -1,170 +0,0 @@ -%global with_python3 1 - -Name: python-http-parser -Version: 0.8.3 -Release: 22%{?dist} -Summary: HTTP request/response parser for Python - -License: MIT -URL: https://github.com/benoitc/http-parser/ -Source0: http://pypi.python.org/packages/source/h/http-parser/http-parser-%{version}.tar.gz -# already upstream: https://github.com/benoitc/http-parser/commit/6c7430649a8d1263181c000f5b5c6480c6efce6e -Patch0: fix-build-on-py3.patch - -BuildRequires: gcc -BuildRequires: python2-devel -BuildRequires: python2-setuptools - -%filter_provides_in %{python_sitearch}/http_parser/parser.so -%filter_setup - -%global _description\ -HTTP request/response parser for Python compatible with Python 2.x\ -(>=2.5.4), Python 3 and Pypy. If possible a C parser based on\ -http-parser_ from Ryan Dahl will be used. - -%description %_description - -%package -n python2-http-parser -Summary: %summary -%{?python_provide:%python_provide python2-http-parser} - -%description -n python2-http-parser %_description - -%if 0%{?with_python3} -%package -n python3-http-parser -Summary: HTTP request/response parser for Python 3 - -BuildRequires: python3-devel -BuildRequires: python3-setuptools -BuildRequires: python3-Cython - -%description -n python3-http-parser -HTTP request/response parser for Python compatible with Python 2.x -(>=2.5.4), Python 3 and Pypy. If possible a C parser based on -http-parser_ from Ryan Dahl will be used. -This package contains Python 3 build of http-parser. -%endif - -%prep -%setup -q -n http-parser-%{version} -%patch0 -p1 - -# Rename the Makefile so it can be used to rebuild the Cython files. -mv Makefile.ext Makefile - -# Remove the cythonized files in order to regenerate them during build. -rm $(grep -rl '/\* Generated by Cython') - -%build -%py3_build -%py2_build - - - -%install -%py3_install -%py2_install - - -%files -n python2-http-parser -%doc LICENSE README.rst -%{python2_sitearch}/http_parser* - - -%if 0%{?with_python3} -%files -n python3-http-parser -%doc LICENSE README.rst -%{python3_sitearch}/http_parser* -%endif - - -%changelog -* Mon Aug 19 2019 Miro Hrončok - 0.8.3-22 -- Rebuilt for Python 3.8 - -* Fri Jul 26 2019 Fedora Release Engineering - 0.8.3-21 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Sat Jun 01 2019 Charalampos Stratakis - 0.8.3-20 -- Recythonize the sources - -* Sat Feb 02 2019 Fedora Release Engineering - 0.8.3-19 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Sat Jul 14 2018 Fedora Release Engineering - 0.8.3-18 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Wed Jul 11 2018 Slavek Kabrda - 0.8.3-17 -- Fix building with Python 3.7 - -* Tue Jun 19 2018 Miro Hrončok - 0.8.3-16 -- Rebuilt for Python 3.7 - -* Fri Feb 09 2018 Fedora Release Engineering - 0.8.3-15 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Thu Jan 25 2018 Iryna Shcherbina - 0.8.3-14 -- Update Python 2 dependency declarations to new packaging standards - (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) - -* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek - 0.8.3-13 -- Python 2 binary package renamed to python2-http-parser - See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3 - -* Thu Aug 03 2017 Fedora Release Engineering - 0.8.3-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 0.8.3-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Fri Jul 07 2017 Igor Gnatenko - 0.8.3-10 -- Rebuild due to bug in RPM (RHBZ #1468476) - -* Sat Feb 11 2017 Fedora Release Engineering - 0.8.3-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Mon Dec 19 2016 Miro Hrončok - 0.8.3-8 -- Rebuild for Python 3.6 - -* Tue Jul 19 2016 Fedora Release Engineering - 0.8.3-7 -- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages - -* Thu Feb 04 2016 Fedora Release Engineering - 0.8.3-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Sun Nov 15 2015 Slavek Kabrda - 0.8.3-5 -- Introduced python3 subpackage - -* Thu Jun 18 2015 Fedora Release Engineering - 0.8.3-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Sun Aug 17 2014 Fedora Release Engineering - 0.8.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Sat Jun 07 2014 Fedora Release Engineering - 0.8.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Thu Sep 26 2013 Bohuslav Kabrda - 0.8.3-1 -- Update to 0.8.3. - -* Sun Aug 04 2013 Fedora Release Engineering - 0.7.12-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Thu Feb 14 2013 Fedora Release Engineering - 0.7.12-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Mon Nov 05 2012 Bohuslav Kabrda - 0.7.12-1 -- Update to 0.7.12. - -* Sat Jul 21 2012 Fedora Release Engineering - 0.7.5-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Thu Mar 15 2012 Bohuslav Kabrda - 0.7.5-2 -- Removed unneeded rm -rf %%{buildroot}. -- Placed all files under the %%{python_sitearch}. -- Filtered provide of the .so file. - -* Thu Mar 15 2012 Bohuslav Kabrda - 0.7.5-1 -- Initial package. - diff --git a/sources b/sources deleted file mode 100644 index dca1dde..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -751967e2785c829dffebdc9a511e0eec http-parser-0.8.3.tar.gz