Browse Source

Remove C source files. Hopefully for good.

Stefano Cossu 5 years ago
parent
commit
e374e35d56
5 changed files with 13 additions and 61909 deletions
  1. 5 3
      .gitignore
  2. 0 17469
      lakesuperior/store/base_lmdb_store.c
  3. 0 39269
      lakesuperior/store/ldp_rs/lmdb_triplestore.c
  4. 0 5165
      lakesuperior/store/ldp_rs/term.c
  5. 8 3
      setup.py

+ 5 - 3
.gitignore

@@ -106,8 +106,10 @@ venv.bak/
 # Pytest
 .pytest_cache/
 
-# Default LAKEsuperior data directories
+# Default Lakesuperior data directories
 /data
-#/lakesuperior/store/base_lmdb_store.c
-#/lakesuperior/store/ldp_rs/lmdb_triplestore.c
+
+# Cython business.
+/lakesuperior/store/*.c
+/lakesuperior/store/ldp_rs/*.c
 !ext/lib

+ 0 - 17469
lakesuperior/store/base_lmdb_store.c

@@ -1,17469 +0,0 @@
-/* Generated by Cython 0.28.4 */
-
-/* BEGIN: Cython Metadata
-{
-    "distutils": {
-        "depends": [
-            "/home/scossu/code/lsup/src/ext/include/lmdb.h"
-        ],
-        "include_dirs": [
-            "/home/scossu/code/lsup/src/ext/include",
-            "/home/scossu/code/lsup/src/lakesuperior/cy_include"
-        ],
-        "name": "lakesuperior.store.base_lmdb_store",
-        "sources": [
-            "/home/scossu/code/lsup/src/lakesuperior/store/base_lmdb_store.pyx",
-            "/home/scossu/code/lsup/src/ext/lib/mdb.c",
-            "/home/scossu/code/lsup/src/ext/lib/midl.c"
-        ]
-    },
-    "module_name": "lakesuperior.store.base_lmdb_store"
-}
-END: Cython Metadata */
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#ifndef Py_PYTHON_H
-    #error Python headers needed to compile C extensions, please install development version of Python.
-#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
-    #error Cython requires Python 2.6+ or Python 3.3+.
-#else
-#define CYTHON_ABI "0_28_4"
-#define CYTHON_FUTURE_DIVISION 1
-#include <stddef.h>
-#ifndef offsetof
-  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
-#endif
-#if !defined(WIN32) && !defined(MS_WINDOWS)
-  #ifndef __stdcall
-    #define __stdcall
-  #endif
-  #ifndef __cdecl
-    #define __cdecl
-  #endif
-  #ifndef __fastcall
-    #define __fastcall
-  #endif
-#endif
-#ifndef DL_IMPORT
-  #define DL_IMPORT(t) t
-#endif
-#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
-#ifndef Py_HUGE_VAL
-  #define Py_HUGE_VAL HUGE_VAL
-#endif
-#ifdef PYPY_VERSION
-  #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_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<class T> 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
-   #include <stdint.h>
-#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+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)\
-          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
-  #define __Pyx_DefaultClassType PyType_Type
-#endif
-#ifndef Py_TPFLAGS_CHECKTYPES
-  #define Py_TPFLAGS_CHECKTYPES 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_INDEX
-  #define Py_TPFLAGS_HAVE_INDEX 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
-  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
-#endif
-#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)) ?\
-                                              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_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
-  #define PyStringObject               PyUnicodeObject
-  #define PyString_Type                PyUnicode_Type
-  #define PyString_Check               PyUnicode_Check
-  #define PyString_CheckExact          PyUnicode_CheckExact
-  #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_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
-#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
-  #define PyInt_Check(op)              PyLong_Check(op)
-  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
-  #define PyInt_FromString             PyLong_FromString
-  #define PyInt_FromUnicode            PyLong_FromUnicode
-  #define PyInt_FromLong               PyLong_FromLong
-  #define PyInt_FromSize_t             PyLong_FromSize_t
-  #define PyInt_FromSsize_t            PyLong_FromSsize_t
-  #define PyInt_AsLong                 PyLong_AsLong
-  #define PyInt_AS_LONG                PyLong_AS_LONG
-  #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_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
-#else
-  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
-  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
-#endif
-#if PY_MAJOR_VERSION >= 3
-  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func))
-#else
-  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
-#endif
-#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 __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
-  #endif
-#else
-  #define __Pyx_PyType_AsAsync(obj) NULL
-#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 <math.h>
-#ifdef NAN
-#define __PYX_NAN() ((float) NAN)
-#else
-static CYTHON_INLINE float __PYX_NAN() {
-  float value;
-  memset(&value, 0xFF, sizeof(value));
-  return value;
-}
-#endif
-#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
-#define __Pyx_truncl trunc
-#else
-#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"
-  #else
-    #define __PYX_EXTERN_C extern
-  #endif
-#endif
-
-#define __PYX_HAVE__lakesuperior__store__base_lmdb_store
-#define __PYX_HAVE_API__lakesuperior__store__base_lmdb_store
-/* Early includes */
-#include <stdint.h>
-#include <sys/types.h>
-#include "lmdb.h"
-#include <errno.h>
-#ifdef _OPENMP
-#include <omp.h>
-#endif /* _OPENMP */
-
-#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
-#define CYTHON_WITHOUT_ASSERTIONS
-#endif
-
-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
-#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 <cstdlib>
-    #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(const char*);
-#if PY_MAJOR_VERSION < 3
-    #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
-    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
-#else
-    #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
-    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
-#endif
-#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 (size_t)(u_end - u - 1);
-}
-#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_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_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);
-#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(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) 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 {
-        char ascii_chars[128];
-        int c;
-        for (c = 0; c < 128; c++) {
-            ascii_chars[c] = c;
-        }
-        __Pyx_sys_getdefaultencoding_not_ascii = 1;
-        ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
-        if (!ascii_chars_u) goto bad;
-        ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
-        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 '%.200s' is not a superset of ascii.",
-                default_encoding_c);
-            goto bad;
-        }
-        Py_DECREF(ascii_chars_u);
-        Py_DECREF(ascii_chars_b);
-    }
-    Py_DECREF(default_encoding);
-    return 0;
-bad:
-    Py_XDECREF(default_encoding);
-    Py_XDECREF(ascii_chars_u);
-    Py_XDECREF(ascii_chars_b);
-    return -1;
-}
-#endif
-#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
-#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
-#else
-#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(void) {
-    PyObject* sys;
-    PyObject* default_encoding = NULL;
-    char* default_encoding_c;
-    sys = PyImport_ImportModule("sys");
-    if (!sys) goto bad;
-    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
-    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(default_encoding);
-    return 0;
-bad:
-    Py_XDECREF(default_encoding);
-    return -1;
-}
-#endif
-#endif
-
-
-/* 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 = 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__;
-static const char *__pyx_filename;
-
-
-static const char *__pyx_f[] = {
-  "lakesuperior/store/base_lmdb_store.pyx",
-  "stringsource",
-  "lakesuperior/store/base_lmdb_store.pxd",
-};
-
-/*--- Type declarations ---*/
-struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore;
-struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__init_dbis;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_begin;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__put;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__get_data;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__delete;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_close_env;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_destroy;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_data;
-
-/* "lakesuperior/store/base_lmdb_store.pxd":10
- *     lmdb.MDB_dbi dbi
- * 
- *     void _check(int rc, str message=*) except *             # <<<<<<<<<<<<<<
- * 
- * 
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check {
-  int __pyx_n;
-  PyObject *message;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":26
- *         void _clear_stale_readers(self) except *
- *         void _cur_close(self, lmdb.MDB_cursor *cur) except *
- *         void _init_dbis(self, create=*) except *             # <<<<<<<<<<<<<<
- *         void _txn_begin(self, write=*, lmdb.MDB_txn *parent=*) except *
- *         void _txn_commit(self) except *
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__init_dbis {
-  int __pyx_n;
-  PyObject *create;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":27
- *         void _cur_close(self, lmdb.MDB_cursor *cur) except *
- *         void _init_dbis(self, create=*) except *
- *         void _txn_begin(self, write=*, lmdb.MDB_txn *parent=*) except *             # <<<<<<<<<<<<<<
- *         void _txn_commit(self) except *
- *         void _txn_abort(self) except *
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_begin {
-  int __pyx_n;
-  PyObject *write;
-  MDB_txn *parent;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":30
- *         void _txn_commit(self) except *
- *         void _txn_abort(self) except *
- *         inline bint _key_exists(             # <<<<<<<<<<<<<<
- *             self, unsigned char *key, unsigned char klen,
- *             unsigned char *dblabel=*) except -1
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists {
-  int __pyx_n;
-  unsigned char *dblabel;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":35
- * 
- *         size_t _txn_id(self) except -1
- *         lmdb.MDB_cursor *_cur_open(             # <<<<<<<<<<<<<<
- *                 self, unsigned char *dblabel=*, lmdb.MDB_txn *txn=*) except *
- * 
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open {
-  int __pyx_n;
-  unsigned char *dblabel;
-  MDB_txn *txn;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":38
- *                 self, unsigned char *dblabel=*, lmdb.MDB_txn *txn=*) except *
- * 
- *         lmdb.MDB_dbi get_dbi(             # <<<<<<<<<<<<<<
- *                 self, unsigned char *dblabel=*, lmdb.MDB_txn *txn=*)
- * 
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi {
-  int __pyx_n;
-  unsigned char *dblabel;
-  MDB_txn *txn;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":41
- *                 self, unsigned char *dblabel=*, lmdb.MDB_txn *txn=*)
- * 
- *         void _put(             # <<<<<<<<<<<<<<
- *                 self, unsigned char *key, size_t key_size, unsigned char *data,
- *                 size_t data_size, unsigned char *dblabel=*,
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__put {
-  int __pyx_n;
-  unsigned char *dblabel;
-  MDB_txn *txn;
-  unsigned int flags;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":46
- *                 lmdb.MDB_txn *txn=*, unsigned int flags=*) except *
- * 
- *         void _get_data(             # <<<<<<<<<<<<<<
- *                 self, unsigned char *key, size_t klen, lmdb.MDB_val *rv,
- *                 unsigned char *dblabel=*) except *
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__get_data {
-  int __pyx_n;
-  unsigned char *dblabel;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":50
- *                 unsigned char *dblabel=*) except *
- * 
- *         void _delete(             # <<<<<<<<<<<<<<
- *                 self, unsigned char *key, size_t klen,
- *                 unsigned char *dblabel=*) except *
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__delete {
-  int __pyx_n;
-  unsigned char *dblabel;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":57
- *         #int _reader_list_callback(self, const unsigned char *msg, void *str_)
- * 
- *     cpdef void close_env(self, bint commit_pending_transaction=*) except *             # <<<<<<<<<<<<<<
- *     cpdef void destroy(self, _path=*) except *
- *     #cpdef get_dup_data(self, unsigned char *key, db=*)
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_close_env {
-  int __pyx_n;
-  int commit_pending_transaction;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":58
- * 
- *     cpdef void close_env(self, bint commit_pending_transaction=*) except *
- *     cpdef void destroy(self, _path=*) except *             # <<<<<<<<<<<<<<
- *     #cpdef get_dup_data(self, unsigned char *key, db=*)
- *     #cpdef get_all_pairs(self, db=*)
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_destroy {
-  int __pyx_n;
-  PyObject *_path;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":61
- *     #cpdef get_dup_data(self, unsigned char *key, db=*)
- *     #cpdef get_all_pairs(self, db=*)
- *     cpdef bytes get_data(self, key, dblabel=*)             # <<<<<<<<<<<<<<
- *     cpdef dict stats(self)
- *     cpdef int txn_id(self)
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_data {
-  int __pyx_n;
-  PyObject *dblabel;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":13
- * 
- * 
- * cdef class BaseLmdbStore:             # <<<<<<<<<<<<<<
- *     cdef:
- *         readonly bint is_txn_open
- */
-struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore {
-  PyObject_HEAD
-  struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_vtab;
-  int is_txn_open;
-  int _open;
-  unsigned int _readers;
-  PyObject *env_path;
-  MDB_dbi *dbis;
-  MDB_env *dbenv;
-  MDB_txn *txn;
-  MDB_cursor **curs;
-};
-
-
-/* "lakesuperior/store/base_lmdb_store.pyx":334
- * 
- *     @contextmanager
- *     def txn_ctx(self, write=False):             # <<<<<<<<<<<<<<
- *         """
- *         Transaction context manager.
- */
-struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx {
-  PyObject_HEAD
-  struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self;
-  PyObject *__pyx_v_write;
-  PyObject *__pyx_t_0;
-  PyObject *__pyx_t_1;
-  PyObject *__pyx_t_2;
-};
-
-
-
-/* "lakesuperior/store/base_lmdb_store.pyx":49
- * 
- * 
- * cdef class BaseLmdbStore:             # <<<<<<<<<<<<<<
- *     """
- *     Generic LMDB store abstract class.
- */
-
-struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore {
-  void (*_clear_stale_readers)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *);
-  void (*_cur_close)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, MDB_cursor *);
-  void (*_init_dbis)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__init_dbis *__pyx_optional_args);
-  void (*_txn_begin)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_begin *__pyx_optional_args);
-  void (*_txn_commit)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *);
-  void (*_txn_abort)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *);
-  int (*_key_exists)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, unsigned char *, unsigned char, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists *__pyx_optional_args);
-  size_t (*_txn_id)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *);
-  MDB_cursor *(*_cur_open)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open *__pyx_optional_args);
-  MDB_dbi (*get_dbi)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi *__pyx_optional_args);
-  void (*_put)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, unsigned char *, size_t, unsigned char *, size_t, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__put *__pyx_optional_args);
-  void (*_get_data)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, unsigned char *, size_t, struct MDB_val *, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__get_data *__pyx_optional_args);
-  void (*_delete)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, unsigned char *, size_t, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__delete *__pyx_optional_args);
-  PyObject *(*_stats)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *);
-  void (*close_env)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_close_env *__pyx_optional_args);
-  void (*destroy)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_destroy *__pyx_optional_args);
-  PyObject *(*get_data)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_data *__pyx_optional_args);
-  PyObject *(*stats)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, int __pyx_skip_dispatch);
-  int (*txn_id)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, int __pyx_skip_dispatch);
-};
-static struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_vtabptr_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore;
-static CYTHON_INLINE int __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, unsigned char *, unsigned char, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists *__pyx_optional_args);
-
-/* --- Runtime support code (head) --- */
-/* Refnanny.proto */
-#ifndef CYTHON_REFNANNY
-  #define CYTHON_REFNANNY 0
-#endif
-#if CYTHON_REFNANNY
-  typedef struct {
-    void (*INCREF)(void*, PyObject*, int);
-    void (*DECREF)(void*, PyObject*, int);
-    void (*GOTREF)(void*, PyObject*, int);
-    void (*GIVEREF)(void*, PyObject*, int);
-    void* (*SetupContext)(const char*, int, const char*);
-    void (*FinishContext)(void**);
-  } __Pyx_RefNannyAPIStruct;
-  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
-  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__);\
-          }
-#else
-  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
-          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
-#endif
-  #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__)
-  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
-  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
-  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
-  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
-  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
-  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
-#else
-  #define __Pyx_RefNannyDeclarations
-  #define __Pyx_RefNannySetupContext(name, acquire_gil)
-  #define __Pyx_RefNannyFinishContext()
-  #define __Pyx_INCREF(r) Py_INCREF(r)
-  #define __Pyx_DECREF(r) Py_DECREF(r)
-  #define __Pyx_GOTREF(r)
-  #define __Pyx_GIVEREF(r)
-  #define __Pyx_XINCREF(r) Py_XINCREF(r)
-  #define __Pyx_XDECREF(r) Py_XDECREF(r)
-  #define __Pyx_XGOTREF(r)
-  #define __Pyx_XGIVEREF(r)
-#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)
-
-/* 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
-
-/* GetBuiltinName.proto */
-static PyObject *__Pyx_GetBuiltinName(PyObject *name);
-
-/* 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
-
-/* Profile.proto */
-#ifndef CYTHON_PROFILE
-#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
-  #define CYTHON_PROFILE 0
-#else
-  #define CYTHON_PROFILE 1
-#endif
-#endif
-#ifndef CYTHON_TRACE_NOGIL
-  #define CYTHON_TRACE_NOGIL 0
-#else
-  #if CYTHON_TRACE_NOGIL && !defined(CYTHON_TRACE)
-    #define CYTHON_TRACE 1
-  #endif
-#endif
-#ifndef CYTHON_TRACE
-  #define CYTHON_TRACE 0
-#endif
-#if CYTHON_TRACE
-  #undef CYTHON_PROFILE_REUSE_FRAME
-#endif
-#ifndef CYTHON_PROFILE_REUSE_FRAME
-  #define CYTHON_PROFILE_REUSE_FRAME 0
-#endif
-#if CYTHON_PROFILE || CYTHON_TRACE
-  #include "compile.h"
-  #include "frameobject.h"
-  #include "traceback.h"
-  #if CYTHON_PROFILE_REUSE_FRAME
-    #define CYTHON_FRAME_MODIFIER static
-    #define CYTHON_FRAME_DEL(frame)
-  #else
-    #define CYTHON_FRAME_MODIFIER
-    #define CYTHON_FRAME_DEL(frame) Py_CLEAR(frame)
-  #endif
-  #define __Pyx_TraceDeclarations\
-  static PyCodeObject *__pyx_frame_code = NULL;\
-  CYTHON_FRAME_MODIFIER PyFrameObject *__pyx_frame = NULL;\
-  int __Pyx_use_tracing = 0;
-  #define __Pyx_TraceFrameInit(codeobj)\
-  if (codeobj) __pyx_frame_code = (PyCodeObject*) codeobj;
-  #ifdef WITH_THREAD
-  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
-  if (nogil) {\
-      if (CYTHON_TRACE_NOGIL) {\
-          PyThreadState *tstate;\
-          PyGILState_STATE state = PyGILState_Ensure();\
-          tstate = __Pyx_PyThreadState_Current;\
-          if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
-                  (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
-              __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
-          }\
-          PyGILState_Release(state);\
-          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
-      }\
-  } else {\
-      PyThreadState* tstate = PyThreadState_GET();\
-      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
-              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
-          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
-          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
-      }\
-  }
-  #else
-  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
-  {   PyThreadState* tstate = PyThreadState_GET();\
-      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
-              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
-          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
-          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
-      }\
-  }
-  #endif
-  #define __Pyx_TraceException()\
-  if (likely(!__Pyx_use_tracing)); else {\
-      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
-      if (tstate->use_tracing &&\
-              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
-          tstate->tracing++;\
-          tstate->use_tracing = 0;\
-          PyObject *exc_info = __Pyx_GetExceptionTuple(tstate);\
-          if (exc_info) {\
-              if (CYTHON_TRACE && tstate->c_tracefunc)\
-                  tstate->c_tracefunc(\
-                      tstate->c_traceobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
-              tstate->c_profilefunc(\
-                  tstate->c_profileobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
-              Py_DECREF(exc_info);\
-          }\
-          tstate->use_tracing = 1;\
-          tstate->tracing--;\
-      }\
-  }
-  static void __Pyx_call_return_trace_func(PyThreadState *tstate, PyFrameObject *frame, PyObject *result) {
-      PyObject *type, *value, *traceback;
-      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
-      tstate->tracing++;
-      tstate->use_tracing = 0;
-      if (CYTHON_TRACE && tstate->c_tracefunc)
-          tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_RETURN, result);
-      if (tstate->c_profilefunc)
-          tstate->c_profilefunc(tstate->c_profileobj, frame, PyTrace_RETURN, result);
-      CYTHON_FRAME_DEL(frame);
-      tstate->use_tracing = 1;
-      tstate->tracing--;
-      __Pyx_ErrRestoreInState(tstate, type, value, traceback);
-  }
-  #ifdef WITH_THREAD
-  #define __Pyx_TraceReturn(result, nogil)\
-  if (likely(!__Pyx_use_tracing)); else {\
-      if (nogil) {\
-          if (CYTHON_TRACE_NOGIL) {\
-              PyThreadState *tstate;\
-              PyGILState_STATE state = PyGILState_Ensure();\
-              tstate = __Pyx_PyThreadState_Current;\
-              if (tstate->use_tracing) {\
-                  __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
-              }\
-              PyGILState_Release(state);\
-          }\
-      } else {\
-          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
-          if (tstate->use_tracing) {\
-              __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
-          }\
-      }\
-  }
-  #else
-  #define __Pyx_TraceReturn(result, nogil)\
-  if (likely(!__Pyx_use_tracing)); else {\
-      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
-      if (tstate->use_tracing) {\
-          __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
-      }\
-  }
-  #endif
-  static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno);
-  static int __Pyx_TraceSetupAndCall(PyCodeObject** code, PyFrameObject** frame, PyThreadState* tstate, const char *funcname, const char *srcfile, int firstlineno);
-#else
-  #define __Pyx_TraceDeclarations
-  #define __Pyx_TraceFrameInit(codeobj)
-  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)   if ((1)); else goto_error;
-  #define __Pyx_TraceException()
-  #define __Pyx_TraceReturn(result, nogil)
-#endif
-#if CYTHON_TRACE
-  static int __Pyx_call_line_trace_func(PyThreadState *tstate, PyFrameObject *frame, int lineno) {
-      int ret;
-      PyObject *type, *value, *traceback;
-      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
-      __Pyx_PyFrame_SetLineNumber(frame, lineno);
-      tstate->tracing++;
-      tstate->use_tracing = 0;
-      ret = tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_LINE, NULL);
-      tstate->use_tracing = 1;
-      tstate->tracing--;
-      if (likely(!ret)) {
-          __Pyx_ErrRestoreInState(tstate, type, value, traceback);
-      } else {
-          Py_XDECREF(type);
-          Py_XDECREF(value);
-          Py_XDECREF(traceback);
-      }
-      return ret;
-  }
-  #ifdef WITH_THREAD
-  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
-  if (likely(!__Pyx_use_tracing)); else {\
-      if (nogil) {\
-          if (CYTHON_TRACE_NOGIL) {\
-              int ret = 0;\
-              PyThreadState *tstate;\
-              PyGILState_STATE state = PyGILState_Ensure();\
-              tstate = __Pyx_PyThreadState_Current;\
-              if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
-                  ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
-              }\
-              PyGILState_Release(state);\
-              if (unlikely(ret)) goto_error;\
-          }\
-      } else {\
-          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
-          if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
-              int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
-              if (unlikely(ret)) goto_error;\
-          }\
-      }\
-  }
-  #else
-  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
-  if (likely(!__Pyx_use_tracing)); else {\
-      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
-      if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
-          int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
-          if (unlikely(ret)) goto_error;\
-      }\
-  }
-  #endif
-#else
-  #define __Pyx_TraceLine(lineno, nogil, goto_error)   if ((1)); else goto_error;
-#endif
-
-/* 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
-
-/* 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
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
-#endif
-
-/* PyObjectCallOneArg.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-
-/* 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
-
-/* RaiseException.proto */
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
-
-/* IncludeStringH.proto */
-#include <string.h>
-
-/* decode_c_string_utf16.proto */
-static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) {
-    int byteorder = 0;
-    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
-}
-static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) {
-    int byteorder = -1;
-    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
-}
-static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) {
-    int byteorder = 1;
-    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
-}
-
-/* decode_c_string.proto */
-static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
-         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
-         const char* encoding, const char* errors,
-         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));
-
-/* RaiseDoubleKeywords.proto */
-static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
-
-/* 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);
-
-/* WriteUnraisableException.proto */
-static void __Pyx_WriteUnraisable(const char *name, int clineno,
-                                  int lineno, const char *filename,
-                                  int full_traceback, int nogil);
-
-/* 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
-
-/* 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
-
-/* 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
-
-/* SwapException.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_ExceptionSwap(type, value, tb)  __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#else
-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
-#endif
-
-/* PyUnicode_Unicode.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj);
-
-/* JoinPyUnicode.proto */
-static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
-                                      Py_UCS4 max_char);
-
-/* PyObjectFormatSimple.proto */
-#if CYTHON_COMPILING_IN_PYPY
-    #define __Pyx_PyObject_FormatSimple(s, f) (\
-        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
-        PyObject_Format(s, f))
-#elif PY_MAJOR_VERSION < 3
-    #define __Pyx_PyObject_FormatSimple(s, f) (\
-        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
-        likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\
-        PyObject_Format(s, f))
-#elif CYTHON_USE_TYPE_SLOTS
-    #define __Pyx_PyObject_FormatSimple(s, f) (\
-        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
-        likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_str(s) :\
-        likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_str(s) :\
-        PyObject_Format(s, f))
-#else
-    #define __Pyx_PyObject_FormatSimple(s, f) (\
-        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
-        PyObject_Format(s, f))
-#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)
-
-/* 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
-
-/* PyObjectLookupSpecial.proto */
-#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-static CYTHON_INLINE PyObject* __Pyx_PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name) {
-    PyObject *res;
-    PyTypeObject *tp = Py_TYPE(obj);
-#if PY_MAJOR_VERSION < 3
-    if (unlikely(PyInstance_Check(obj)))
-        return __Pyx_PyObject_GetAttrStr(obj, attr_name);
-#endif
-    res = _PyType_Lookup(tp, attr_name);
-    if (likely(res)) {
-        descrgetfunc f = Py_TYPE(res)->tp_descr_get;
-        if (!f) {
-            Py_INCREF(res);
-        } else {
-            res = f(res, obj, (PyObject *)tp);
-        }
-    } else {
-        PyErr_SetObject(PyExc_AttributeError, attr_name);
-    }
-    return res;
-}
-#else
-#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n)
-#endif
-
-/* PyIntBinop.proto */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
-#else
-#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\
-    (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
-#endif
-
-/* DictGetItem.proto */
-#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
-static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
-#define __Pyx_PyObject_Dict_GetItem(obj, name)\
-    (likely(PyDict_CheckExact(obj)) ?\
-     __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))
-#else
-#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
-#define __Pyx_PyObject_Dict_GetItem(obj, name)  PyObject_GetItem(obj, name)
-#endif
-
-/* 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
-
-/* SetVTable.proto */
-static int __Pyx_SetVtable(PyObject *dict, void *vtable);
-
-/* 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);
-
-/* CalculateMetaclass.proto */
-static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);
-
-/* 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);
-
-/* GetNameInClass.proto */
-static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name);
-
-/* 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
-
-/* 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);
-
-/* AddTraceback.proto */
-static void __Pyx_AddTraceback(const char *funcname, int c_line,
-                               int py_line, const char *filename);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MDB_dbi(MDB_dbi value);
-
-static PyObject* __pyx_convert__to_py_struct__MDB_stat(struct MDB_stat s);
-/* CIntFromPy.proto */
-static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE MDB_dbi __Pyx_PyInt_As_MDB_dbi(PyObject *);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE mode_t __Pyx_PyInt_As_mode_t(PyObject *);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
-
-/* FetchCommonType.proto */
-static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
-
-/* PyObjectCallMethod1.proto */
-static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
-static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg);
-
-/* CoroutineBase.proto */
-typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyThreadState *, PyObject *);
-typedef struct {
-    PyObject_HEAD
-    __pyx_coroutine_body_t body;
-    PyObject *closure;
-    PyObject *exc_type;
-    PyObject *exc_value;
-    PyObject *exc_traceback;
-    PyObject *gi_weakreflist;
-    PyObject *classobj;
-    PyObject *yieldfrom;
-    PyObject *gi_name;
-    PyObject *gi_qualname;
-    PyObject *gi_modulename;
-    PyObject *gi_code;
-    int resume_label;
-    char is_running;
-} __pyx_CoroutineObject;
-static __pyx_CoroutineObject *__Pyx__Coroutine_New(
-    PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
-    PyObject *name, PyObject *qualname, PyObject *module_name);
-static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
-            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
-            PyObject *name, PyObject *qualname, PyObject *module_name);
-static int __Pyx_Coroutine_clear(PyObject *self);
-static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
-static PyObject *__Pyx_Coroutine_Close(PyObject *self);
-static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
-#define __Pyx_Coroutine_SwapException(self) {\
-    __Pyx_ExceptionSwap(&(self)->exc_type, &(self)->exc_value, &(self)->exc_traceback);\
-    __Pyx_Coroutine_ResetFrameBackpointer(self);\
-    }
-#define __Pyx_Coroutine_ResetAndClearException(self) {\
-    __Pyx_ExceptionReset((self)->exc_type, (self)->exc_value, (self)->exc_traceback);\
-    (self)->exc_type = (self)->exc_value = (self)->exc_traceback = NULL;\
-    }
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
-    __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue)
-#else
-#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
-    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue)
-#endif
-static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue);
-static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__pyx_CoroutineObject *self);
-
-/* PatchModuleWithCoroutine.proto */
-static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code);
-
-/* PatchGeneratorABC.proto */
-static int __Pyx_patch_abc(void);
-
-/* Generator.proto */
-#define __Pyx_Generator_USED
-static PyTypeObject *__pyx_GeneratorType = 0;
-#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType)
-#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\
-    __Pyx__Coroutine_New(__pyx_GeneratorType, body, code, closure, name, qualname, module_name)
-static PyObject *__Pyx_Generator_Next(PyObject *self);
-static int __pyx_Generator_init(void);
-
-/* CheckBinaryVersion.proto */
-static int __Pyx_check_binary_version(void);
-
-/* VoidPtrExport.proto */
-static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig);
-
-/* FunctionExport.proto */
-static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig);
-
-/* InitStrings.proto */
-static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
-
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__clear_stale_readers(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto*/
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__init_dbis(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__init_dbis *__pyx_optional_args); /* proto*/
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_close_env(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_close_env *__pyx_optional_args); /* proto*/
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_destroy(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_destroy *__pyx_optional_args); /* proto*/
-static CYTHON_INLINE int __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, unsigned char *__pyx_v_key, unsigned char __pyx_v_klen, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists *__pyx_optional_args); /* proto*/
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__put(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, unsigned char *__pyx_v_key, size_t __pyx_v_key_size, unsigned char *__pyx_v_data, size_t __pyx_v_data_size, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__put *__pyx_optional_args); /* proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_data(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_key, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_data *__pyx_optional_args); /* proto*/
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__get_data(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, unsigned char *__pyx_v_key, CYTHON_UNUSED size_t __pyx_v_klen, struct MDB_val *__pyx_v_rv, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__get_data *__pyx_optional_args); /* proto*/
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__delete(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, unsigned char *__pyx_v_key, size_t __pyx_v_klen, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__delete *__pyx_optional_args); /* proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_stats(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__stats(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto*/
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_begin(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_begin *__pyx_optional_args); /* proto*/
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_commit(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto*/
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_abort(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto*/
-static int __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_txn_id(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
-static size_t __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_id(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto*/
-static MDB_dbi __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi *__pyx_optional_args); /* proto*/
-static MDB_cursor *__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open *__pyx_optional_args); /* proto*/
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_close(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, MDB_cursor *__pyx_v_cur); /* proto*/
-
-/* Module declarations from 'libc.stdint' */
-
-/* Module declarations from 'posix.types' */
-
-/* Module declarations from 'lakesuperior.cy_include.cylmdb' */
-
-/* Module declarations from 'lakesuperior.cy_include' */
-
-/* Module declarations from 'libc' */
-
-/* Module declarations from 'libc.errno' */
-
-/* Module declarations from 'cpython.mem' */
-
-/* Module declarations from 'lakesuperior.store.base_lmdb_store' */
-static PyTypeObject *__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore = 0;
-static PyTypeObject *__pyx_ptype_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx = 0;
-static int __pyx_v_12lakesuperior_5store_15base_lmdb_store_rc;
-static size_t __pyx_v_12lakesuperior_5store_15base_lmdb_store_i;
-static struct MDB_val __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v;
-static struct MDB_val __pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v;
-static MDB_dbi __pyx_v_12lakesuperior_5store_15base_lmdb_store_dbi;
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(int, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check *__pyx_optional_args); /*proto*/
-#define __Pyx_MODULE_NAME "lakesuperior.store.base_lmdb_store"
-extern int __pyx_module_is_main_lakesuperior__store__base_lmdb_store;
-int __pyx_module_is_main_lakesuperior__store__base_lmdb_store = 0;
-
-/* Implementation of 'lakesuperior.store.base_lmdb_store' */
-static PyObject *__pyx_builtin_MemoryError;
-static PyObject *__pyx_builtin_enumerate;
-static PyObject *__pyx_builtin_RuntimeError;
-static PyObject *__pyx_builtin_TypeError;
-static const char __pyx_k_[] = "";
-static const char __pyx_k_i[] = "i";
-static const char __pyx_k_x[] = "{:x}";
-static const char __pyx_k_RO[] = "RO";
-static const char __pyx_k_RW[] = "RW";
-static const char __pyx_k__4[] = ".";
-static const char __pyx_k__6[] = ": ";
-static const char __pyx_k_os[] = "os";
-static const char __pyx_k_rc[] = "rc";
-static const char __pyx_k_DBI[] = " (DBI ";
-static const char __pyx_k__20[] = ")...";
-static const char __pyx_k_dbi[] = "dbi";
-static const char __pyx_k_doc[] = "__doc__";
-static const char __pyx_k_env[] = "env";
-static const char __pyx_k_get[] = "get";
-static const char __pyx_k_key[] = "key";
-static const char __pyx_k_pid[] = "pid";
-static const char __pyx_k_None[] = "None";
-static const char __pyx_k_args[] = "args";
-static const char __pyx_k_data[] = "data";
-static const char __pyx_k_exit[] = "__exit__";
-static const char __pyx_k_info[] = "info";
-static const char __pyx_k_lock[] = "-lock";
-static const char __pyx_k_main[] = "__main__";
-static const char __pyx_k_mode[] = "mode";
-static const char __pyx_k_name[] = "__name__";
-static const char __pyx_k_path[] = "path";
-static const char __pyx_k_send[] = "send";
-static const char __pyx_k_stat[] = "stat";
-static const char __pyx_k_test[] = "__test__";
-static const char __pyx_k_wsgi[] = "wsgi";
-static const char __pyx_k_abort[] = "abort";
-static const char __pyx_k_close[] = "close";
-static const char __pyx_k_debug[] = "debug";
-static const char __pyx_k_enter[] = "__enter__";
-static const char __pyx_k_flags[] = "flags";
-static const char __pyx_k_index[] = "index";
-static const char __pyx_k_key_v[] = "key_v";
-static const char __pyx_k_stats[] = "stats";
-static const char __pyx_k_throw[] = "throw";
-static const char __pyx_k_write[] = "write";
-static const char __pyx_k_create[] = "create";
-static const char __pyx_k_data_v[] = "data_v";
-static const char __pyx_k_encode[] = "encode";
-static const char __pyx_k_exists[] = "exists";
-static const char __pyx_k_format[] = "format";
-static const char __pyx_k_import[] = "__import__";
-static const char __pyx_k_logger[] = "logger";
-static const char __pyx_k_module[] = "__module__";
-static const char __pyx_k_path_2[] = "_path";
-static const char __pyx_k_reduce[] = "__reduce__";
-static const char __pyx_k_rmtree[] = "rmtree";
-static const char __pyx_k_shutil[] = "shutil";
-static const char __pyx_k_txn_id[] = "txn_id";
-static const char __pyx_k_unlink[] = "unlink";
-static const char __pyx_k_dblabel[] = "dblabel";
-static const char __pyx_k_destroy[] = "destroy";
-static const char __pyx_k_dirname[] = "dirname";
-static const char __pyx_k_getName[] = "getName";
-static const char __pyx_k_is_open[] = "is_open";
-static const char __pyx_k_logging[] = "logging";
-static const char __pyx_k_max_dbs[] = "max_dbs";
-static const char __pyx_k_new_txn[] = "new_txn";
-static const char __pyx_k_options[] = "options";
-static const char __pyx_k_prepare[] = "__prepare__";
-static const char __pyx_k_st_size[] = "st_size";
-static const char __pyx_k_txn_ctx[] = "txn_ctx";
-static const char __pyx_k_warning[] = "warning";
-static const char __pyx_k_workers[] = "workers";
-static const char __pyx_k_db_stats[] = "db_stats";
-static const char __pyx_k_env_path[] = "env_path";
-static const char __pyx_k_env_size[] = "env_size";
-static const char __pyx_k_exist_ok[] = "exist_ok";
-static const char __pyx_k_get_data[] = "get_data";
-static const char __pyx_k_getstate[] = "__getstate__";
-static const char __pyx_k_makedirs[] = "makedirs";
-static const char __pyx_k_map_size[] = "map_size";
-static const char __pyx_k_ms_depth[] = "ms_depth";
-static const char __pyx_k_ms_psize[] = "ms_psize";
-static const char __pyx_k_open_env[] = "open_env";
-static const char __pyx_k_opened_x[] = "...opened @ {:x}.";
-static const char __pyx_k_pyx_capi[] = "__pyx_capi__";
-static const char __pyx_k_qualname[] = "__qualname__";
-static const char __pyx_k_setstate[] = "__setstate__";
-static const char __pyx_k_LmdbError[] = "LmdbError";
-static const char __pyx_k_TypeError[] = "TypeError";
-static const char __pyx_k_close_env[] = "close_env";
-static const char __pyx_k_dbi_flags[] = "dbi_flags";
-static const char __pyx_k_enumerate[] = "enumerate";
-static const char __pyx_k_env_flags[] = "env_flags";
-static const char __pyx_k_env_perms[] = "env_perms";
-static const char __pyx_k_env_stats[] = "env_stats";
-static const char __pyx_k_getLogger[] = "getLogger";
-static const char __pyx_k_is_txn_rw[] = "is_txn_rw";
-static const char __pyx_k_metaclass[] = "__metaclass__";
-static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
-static const char __pyx_k_threading[] = "threading";
-static const char __pyx_k_Created_DB[] = "Created DB ";
-static const char __pyx_k_LMDB_Error[] = "LMDB Error ({}): ";
-static const char __pyx_k_contextlib[] = "contextlib";
-static const char __pyx_k_dbi_labels[] = "dbi_labels";
-static const char __pyx_k_ms_entries[] = "ms_entries";
-static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
-static const char __pyx_k_Max_readers[] = "Max. readers: {}";
-static const char __pyx_k_MemoryError[] = "MemoryError";
-static const char __pyx_k_txn_is_open[] = "txn is open: {}";
-static const char __pyx_k_Creating_DBs[] = "Creating DBs.";
-static const char __pyx_k_RuntimeError[] = "RuntimeError";
-static const char __pyx_k_lakesuperior[] = "lakesuperior";
-static const char __pyx_k_readers_mult[] = "readers_mult";
-static const char __pyx_k_currentThread[] = "currentThread";
-static const char __pyx_k_ms_leaf_pages[] = "ms_leaf_pages";
-static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
-static const char __pyx_k_Internal_error[] = "\nInternal error ({}): ";
-static const char __pyx_k_KeyExistsError[] = "KeyExistsError";
-static const char __pyx_k_contextmanager[] = "contextmanager";
-static const char __pyx_k_max_spare_txns[] = "max_spare_txns";
-static const char __pyx_k_Created_DBenv_x[] = "Created DBenv @ {:x}";
-static const char __pyx_k_DBenv_address_x[] = "DBenv address: {:x}";
-static const char __pyx_k_current_process[] = "current_process";
-static const char __pyx_k_ms_branch_pages[] = "ms_branch_pages";
-static const char __pyx_k_multiprocessing[] = "multiprocessing";
-static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
-static const char __pyx_k_KeyNotFoundError[] = "KeyNotFoundError";
-static const char __pyx_k_Closing_store_env[] = "Closing store env.";
-static const char __pyx_k_FileNotFoundError[] = "FileNotFoundError";
-static const char __pyx_k_Store_is_not_open[] = "Store is not open.";
-static const char __pyx_k_ms_overflow_pages[] = "ms_overflow_pages";
-static const char __pyx_k_Error_putting_data[] = "Error putting data: {}, {}";
-static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
-static const char __pyx_k_Transaction_aborted[] = "Transaction @ {} aborted.";
-static const char __pyx_k_Error_opening_cursor[] = "Error opening cursor: ";
-static const char __pyx_k_Opened_transaction_x[] = "Opened transaction @ {:x}";
-static const char __pyx_k_BaseLmdbStore_txn_ctx[] = "BaseLmdbStore.txn_ctx";
-static const char __pyx_k_Cleaning_up_store_env[] = "Cleaning up store env.";
-static const char __pyx_k_Cleared_stale_readers[] = "Cleared {} stale readers.";
-static const char __pyx_k_Opening_cursor_for_DB[] = "Opening cursor for DB ";
-static const char __pyx_k_Transaction_committed[] = "Transaction @ {} committed.";
-static const char __pyx_k_Error_setting_map_size[] = "Error setting map size: {}";
-static const char __pyx_k_Opening_environment_at[] = "Opening environment at {}.";
-static const char __pyx_k_Environment_already_open[] = "Environment already open.";
-static const char __pyx_k_Error_opening_transaction[] = "Error opening transaction.";
-static const char __pyx_k_Error_setting_max_readers[] = "Error setting max. readers: {}";
-static const char __pyx_k_Getting_DBI_without_label[] = "Getting DBI without label.";
-static const char __pyx_k_Error_getting_data_for_key[] = "Error getting data for key '{}'.";
-static const char __pyx_k_Store_must_be_opened_first[] = "Store must be opened first.";
-static const char __pyx_k_commit_pending_transaction[] = "commit_pending_transaction";
-static const char __pyx_k_Error_getting_datbase_stats[] = "Error getting datbase stats: {}";
-static const char __pyx_k_Error_setting_max_databases[] = "Error setting max. databases: {}";
-static const char __pyx_k_Could_not_create_store_at_Error[] = "Could not create store at {}. Error: {}";
-static const char __pyx_k_Error_creating_DB_environment_ha[] = "Error creating DB environment handle: {}";
-static const char __pyx_k_Error_opening_the_database_envir[] = "Error opening the database environment: ";
-static const char __pyx_k_Opening_transaction_in_PID_threa[] = "Opening {} transaction in PID {}, thread {}";
-static const char __pyx_k_Transaction_is_already_active_No[] = "Transaction is already active. Not opening another one.";
-static const char __pyx_k_lakesuperior_store_base_lmdb_sto[] = "lakesuperior.store.base_lmdb_store";
-static const char __pyx_k_self_curs_self_dbenv_self_dbis_s[] = "self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling";
-static PyObject *__pyx_kp_u_;
-static PyObject *__pyx_n_s_BaseLmdbStore_txn_ctx;
-static PyObject *__pyx_kp_u_Cleaning_up_store_env;
-static PyObject *__pyx_kp_u_Cleared_stale_readers;
-static PyObject *__pyx_kp_u_Closing_store_env;
-static PyObject *__pyx_kp_u_Could_not_create_store_at_Error;
-static PyObject *__pyx_kp_u_Created_DB;
-static PyObject *__pyx_kp_u_Created_DBenv_x;
-static PyObject *__pyx_kp_u_Creating_DBs;
-static PyObject *__pyx_kp_u_DBI;
-static PyObject *__pyx_kp_u_DBenv_address_x;
-static PyObject *__pyx_kp_u_Environment_already_open;
-static PyObject *__pyx_kp_u_Error_creating_DB_environment_ha;
-static PyObject *__pyx_kp_u_Error_getting_data_for_key;
-static PyObject *__pyx_kp_u_Error_getting_datbase_stats;
-static PyObject *__pyx_kp_u_Error_opening_cursor;
-static PyObject *__pyx_kp_u_Error_opening_the_database_envir;
-static PyObject *__pyx_kp_u_Error_opening_transaction;
-static PyObject *__pyx_kp_u_Error_putting_data;
-static PyObject *__pyx_kp_u_Error_setting_map_size;
-static PyObject *__pyx_kp_u_Error_setting_max_databases;
-static PyObject *__pyx_kp_u_Error_setting_max_readers;
-static PyObject *__pyx_n_s_FileNotFoundError;
-static PyObject *__pyx_kp_u_Getting_DBI_without_label;
-static PyObject *__pyx_kp_u_Internal_error;
-static PyObject *__pyx_n_s_KeyExistsError;
-static PyObject *__pyx_n_s_KeyNotFoundError;
-static PyObject *__pyx_kp_u_LMDB_Error;
-static PyObject *__pyx_n_s_LmdbError;
-static PyObject *__pyx_kp_u_Max_readers;
-static PyObject *__pyx_n_s_MemoryError;
-static PyObject *__pyx_kp_u_None;
-static PyObject *__pyx_kp_u_Opened_transaction_x;
-static PyObject *__pyx_kp_u_Opening_cursor_for_DB;
-static PyObject *__pyx_kp_u_Opening_environment_at;
-static PyObject *__pyx_kp_u_Opening_transaction_in_PID_threa;
-static PyObject *__pyx_n_u_RO;
-static PyObject *__pyx_n_u_RW;
-static PyObject *__pyx_n_s_RuntimeError;
-static PyObject *__pyx_kp_u_Store_is_not_open;
-static PyObject *__pyx_kp_u_Store_must_be_opened_first;
-static PyObject *__pyx_kp_u_Transaction_aborted;
-static PyObject *__pyx_kp_u_Transaction_committed;
-static PyObject *__pyx_kp_u_Transaction_is_already_active_No;
-static PyObject *__pyx_n_s_TypeError;
-static PyObject *__pyx_kp_u__20;
-static PyObject *__pyx_kp_u__4;
-static PyObject *__pyx_kp_u__6;
-static PyObject *__pyx_n_s_abort;
-static PyObject *__pyx_n_s_args;
-static PyObject *__pyx_n_s_cline_in_traceback;
-static PyObject *__pyx_n_s_close;
-static PyObject *__pyx_n_s_close_env;
-static PyObject *__pyx_n_s_commit_pending_transaction;
-static PyObject *__pyx_n_s_contextlib;
-static PyObject *__pyx_n_s_contextmanager;
-static PyObject *__pyx_n_s_create;
-static PyObject *__pyx_n_s_currentThread;
-static PyObject *__pyx_n_s_current_process;
-static PyObject *__pyx_n_s_data;
-static PyObject *__pyx_n_s_data_v;
-static PyObject *__pyx_n_u_db_stats;
-static PyObject *__pyx_n_s_dbi;
-static PyObject *__pyx_n_s_dbi_flags;
-static PyObject *__pyx_n_s_dbi_labels;
-static PyObject *__pyx_n_s_dblabel;
-static PyObject *__pyx_n_s_debug;
-static PyObject *__pyx_n_s_destroy;
-static PyObject *__pyx_n_s_dirname;
-static PyObject *__pyx_n_s_doc;
-static PyObject *__pyx_n_s_encode;
-static PyObject *__pyx_n_s_enter;
-static PyObject *__pyx_n_s_enumerate;
-static PyObject *__pyx_n_s_env;
-static PyObject *__pyx_n_s_env_flags;
-static PyObject *__pyx_n_s_env_path;
-static PyObject *__pyx_n_s_env_perms;
-static PyObject *__pyx_n_u_env_size;
-static PyObject *__pyx_n_u_env_stats;
-static PyObject *__pyx_n_s_exist_ok;
-static PyObject *__pyx_n_s_exists;
-static PyObject *__pyx_n_s_exit;
-static PyObject *__pyx_n_s_flags;
-static PyObject *__pyx_n_s_format;
-static PyObject *__pyx_n_s_get;
-static PyObject *__pyx_n_s_getLogger;
-static PyObject *__pyx_n_s_getName;
-static PyObject *__pyx_n_s_get_data;
-static PyObject *__pyx_n_s_getstate;
-static PyObject *__pyx_n_s_i;
-static PyObject *__pyx_n_s_import;
-static PyObject *__pyx_n_s_index;
-static PyObject *__pyx_n_s_info;
-static PyObject *__pyx_n_s_is_open;
-static PyObject *__pyx_n_s_is_txn_rw;
-static PyObject *__pyx_n_s_key;
-static PyObject *__pyx_n_s_key_v;
-static PyObject *__pyx_n_s_lakesuperior;
-static PyObject *__pyx_n_s_lakesuperior_store_base_lmdb_sto;
-static PyObject *__pyx_kp_u_lock;
-static PyObject *__pyx_n_s_logger;
-static PyObject *__pyx_n_s_logging;
-static PyObject *__pyx_n_s_main;
-static PyObject *__pyx_n_s_makedirs;
-static PyObject *__pyx_n_u_map_size;
-static PyObject *__pyx_n_u_max_dbs;
-static PyObject *__pyx_n_u_max_spare_txns;
-static PyObject *__pyx_n_s_metaclass;
-static PyObject *__pyx_n_s_mode;
-static PyObject *__pyx_n_s_module;
-static PyObject *__pyx_n_s_ms_branch_pages;
-static PyObject *__pyx_n_s_ms_depth;
-static PyObject *__pyx_n_s_ms_entries;
-static PyObject *__pyx_n_s_ms_leaf_pages;
-static PyObject *__pyx_n_s_ms_overflow_pages;
-static PyObject *__pyx_n_s_ms_psize;
-static PyObject *__pyx_n_s_multiprocessing;
-static PyObject *__pyx_n_s_name;
-static PyObject *__pyx_n_s_new_txn;
-static PyObject *__pyx_n_s_open_env;
-static PyObject *__pyx_kp_u_opened_x;
-static PyObject *__pyx_n_s_options;
-static PyObject *__pyx_n_s_os;
-static PyObject *__pyx_n_s_path;
-static PyObject *__pyx_n_s_path_2;
-static PyObject *__pyx_n_s_pid;
-static PyObject *__pyx_n_s_prepare;
-static PyObject *__pyx_n_s_pyx_capi;
-static PyObject *__pyx_n_s_pyx_vtable;
-static PyObject *__pyx_n_s_qualname;
-static PyObject *__pyx_n_s_rc;
-static PyObject *__pyx_n_s_readers_mult;
-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_rmtree;
-static PyObject *__pyx_kp_s_self_curs_self_dbenv_self_dbis_s;
-static PyObject *__pyx_n_s_send;
-static PyObject *__pyx_n_s_setstate;
-static PyObject *__pyx_n_s_setstate_cython;
-static PyObject *__pyx_n_s_shutil;
-static PyObject *__pyx_n_s_st_size;
-static PyObject *__pyx_n_s_stat;
-static PyObject *__pyx_n_s_stats;
-static PyObject *__pyx_n_s_test;
-static PyObject *__pyx_n_s_threading;
-static PyObject *__pyx_n_s_throw;
-static PyObject *__pyx_n_s_txn_ctx;
-static PyObject *__pyx_n_s_txn_id;
-static PyObject *__pyx_kp_u_txn_is_open;
-static PyObject *__pyx_n_s_unlink;
-static PyObject *__pyx_n_s_warning;
-static PyObject *__pyx_n_s_workers;
-static PyObject *__pyx_n_s_write;
-static PyObject *__pyx_n_s_wsgi;
-static PyObject *__pyx_kp_u_x;
-static int __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore___init__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_env_path, PyObject *__pyx_v_open_env, PyObject *__pyx_v_create); /* proto */
-static void __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_2__dealloc__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7is_open___get__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7readers___get__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_4open_env(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_create); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_6close_env(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, int __pyx_v_commit_pending_transaction); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_8destroy(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v__path); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_10txn_ctx(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_write); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_13begin(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_write); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_15commit(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_17abort(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_19rollback(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_21key_exists(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_dblabel, PyObject *__pyx_v_new_txn); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_23put(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_data, PyObject *__pyx_v_dblabel, PyObject *__pyx_v_flags); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_25get_data(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_dblabel); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_27delete(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_dblabel); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_29stats(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_31txn_id(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_11is_txn_open___get__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_5_open___get__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto */
-static int __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_5_open_2__set__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_8env_path___get__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_33__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_35__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_tp_new_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_int_0;
-static PyObject *__pyx_int_1;
-static PyObject *__pyx_int_4;
-static PyObject *__pyx_int_416;
-static PyObject *__pyx_int_488;
-static PyObject *__pyx_int_1073741824;
-static unsigned char *__pyx_k__14;
-static unsigned char *__pyx_k__15;
-static unsigned char *__pyx_k__16;
-static unsigned char *__pyx_k__17;
-static PyObject *__pyx_tuple__2;
-static PyObject *__pyx_tuple__3;
-static PyObject *__pyx_tuple__5;
-static PyObject *__pyx_tuple__7;
-static PyObject *__pyx_tuple__8;
-static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_tuple__10;
-static PyObject *__pyx_tuple__11;
-static PyObject *__pyx_tuple__12;
-static PyObject *__pyx_tuple__13;
-static PyObject *__pyx_tuple__18;
-static PyObject *__pyx_tuple__19;
-static PyObject *__pyx_tuple__21;
-static PyObject *__pyx_tuple__22;
-/* Late includes */
-
-/* "lakesuperior/store/base_lmdb_store.pyx":22
- * 
- * 
- * cdef void _check(int rc, str message='') except *:             # <<<<<<<<<<<<<<
- *     """
- *     Check return code.
- */
-
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(int __pyx_v_rc, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check *__pyx_optional_args) {
-  PyObject *__pyx_v_message = ((PyObject*)__pyx_kp_u_);
-  PyObject *__pyx_v_out_msg = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  Py_ssize_t __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  char *__pyx_t_9;
-  __Pyx_RefNannySetupContext("_check", 0);
-  __Pyx_TraceCall("_check", __pyx_f[0], 22, 0, __PYX_ERR(0, 22, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_message = __pyx_optional_args->message;
-    }
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":26
- *     Check return code.
- *     """
- *     if rc == lmdb.MDB_NOTFOUND:             # <<<<<<<<<<<<<<
- *         raise KeyNotFoundError()
- *     if rc == lmdb.MDB_KEYEXIST:
- */
-  __pyx_t_1 = ((__pyx_v_rc == MDB_NOTFOUND) != 0);
-  if (unlikely(__pyx_t_1)) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":27
- *     """
- *     if rc == lmdb.MDB_NOTFOUND:
- *         raise KeyNotFoundError()             # <<<<<<<<<<<<<<
- *     if rc == lmdb.MDB_KEYEXIST:
- *         raise KeyExistsError()
- */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 27, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = NULL;
-    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_4)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_4);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    if (__pyx_t_4) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 27, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    } else {
-      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 27, __pyx_L1_error)
-    }
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __PYX_ERR(0, 27, __pyx_L1_error)
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":26
- *     Check return code.
- *     """
- *     if rc == lmdb.MDB_NOTFOUND:             # <<<<<<<<<<<<<<
- *         raise KeyNotFoundError()
- *     if rc == lmdb.MDB_KEYEXIST:
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":28
- *     if rc == lmdb.MDB_NOTFOUND:
- *         raise KeyNotFoundError()
- *     if rc == lmdb.MDB_KEYEXIST:             # <<<<<<<<<<<<<<
- *         raise KeyExistsError()
- *     if rc != lmdb.MDB_SUCCESS:
- */
-  __pyx_t_1 = ((__pyx_v_rc == MDB_KEYEXIST) != 0);
-  if (unlikely(__pyx_t_1)) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":29
- *         raise KeyNotFoundError()
- *     if rc == lmdb.MDB_KEYEXIST:
- *         raise KeyExistsError()             # <<<<<<<<<<<<<<
- *     if rc != lmdb.MDB_SUCCESS:
- *         out_msg = (
- */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyExistsError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 29, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = NULL;
-    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_4)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_4);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    if (__pyx_t_4) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    } else {
-      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error)
-    }
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __PYX_ERR(0, 29, __pyx_L1_error)
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":28
- *     if rc == lmdb.MDB_NOTFOUND:
- *         raise KeyNotFoundError()
- *     if rc == lmdb.MDB_KEYEXIST:             # <<<<<<<<<<<<<<
- *         raise KeyExistsError()
- *     if rc != lmdb.MDB_SUCCESS:
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":30
- *     if rc == lmdb.MDB_KEYEXIST:
- *         raise KeyExistsError()
- *     if rc != lmdb.MDB_SUCCESS:             # <<<<<<<<<<<<<<
- *         out_msg = (
- *                 message + '\nInternal error ({}): '.format(rc)
- */
-  __pyx_t_1 = ((__pyx_v_rc != MDB_SUCCESS) != 0);
-  if (unlikely(__pyx_t_1)) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":33
- *         out_msg = (
- *                 message + '\nInternal error ({}): '.format(rc)
- *                 if len(message) else 'LMDB Error ({}): '.format(rc))             # <<<<<<<<<<<<<<
- *         out_msg += lmdb.mdb_strerror(rc).decode()
- *         raise LmdbError(out_msg)
- */
-    if (unlikely(__pyx_v_message == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-      __PYX_ERR(0, 33, __pyx_L1_error)
-    }
-    __pyx_t_5 = __Pyx_PyUnicode_GET_LENGTH(__pyx_v_message); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 33, __pyx_L1_error)
-    if ((__pyx_t_5 != 0)) {
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":32
- *     if rc != lmdb.MDB_SUCCESS:
- *         out_msg = (
- *                 message + '\nInternal error ({}): '.format(rc)             # <<<<<<<<<<<<<<
- *                 if len(message) else 'LMDB Error ({}): '.format(rc))
- *         out_msg += lmdb.mdb_strerror(rc).decode()
- */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Internal_error, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 32, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 32, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_7 = NULL;
-      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
-        if (likely(__pyx_t_7)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-          __Pyx_INCREF(__pyx_t_7);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_4, function);
-        }
-      }
-      if (!__pyx_t_7) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
-          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-          __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
-          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-          __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        } else
-        #endif
-        {
-          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 32, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_8);
-          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
-          __Pyx_GIVEREF(__pyx_t_6);
-          PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6);
-          __pyx_t_6 = 0;
-          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyNumber_Add(__pyx_v_message, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 32, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_2 = __pyx_t_4;
-      __pyx_t_4 = 0;
-    } else {
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":33
- *         out_msg = (
- *                 message + '\nInternal error ({}): '.format(rc)
- *                 if len(message) else 'LMDB Error ({}): '.format(rc))             # <<<<<<<<<<<<<<
- *         out_msg += lmdb.mdb_strerror(rc).decode()
- *         raise LmdbError(out_msg)
- */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_LMDB_Error, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 33, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 33, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_6 = NULL;
-      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_6)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_6);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (!__pyx_t_6) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 33, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-        __Pyx_GOTREF(__pyx_t_4);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_8};
-          __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 33, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __Pyx_GOTREF(__pyx_t_4);
-          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_8};
-          __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 33, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __Pyx_GOTREF(__pyx_t_4);
-          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-        } else
-        #endif
-        {
-          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 33, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_7);
-          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
-          __Pyx_GIVEREF(__pyx_t_8);
-          PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_8);
-          __pyx_t_8 = 0;
-          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 33, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_4);
-          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_2 = __pyx_t_4;
-      __pyx_t_4 = 0;
-    }
-    __pyx_v_out_msg = __pyx_t_2;
-    __pyx_t_2 = 0;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":34
- *                 message + '\nInternal error ({}): '.format(rc)
- *                 if len(message) else 'LMDB Error ({}): '.format(rc))
- *         out_msg += lmdb.mdb_strerror(rc).decode()             # <<<<<<<<<<<<<<
- *         raise LmdbError(out_msg)
- * 
- */
-    __pyx_t_9 = mdb_strerror(__pyx_v_rc);
-    __pyx_t_2 = __Pyx_decode_c_string(__pyx_t_9, 0, strlen(__pyx_t_9), NULL, NULL, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_out_msg, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 34, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_DECREF_SET(__pyx_v_out_msg, __pyx_t_4);
-    __pyx_t_4 = 0;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":35
- *                 if len(message) else 'LMDB Error ({}): '.format(rc))
- *         out_msg += lmdb.mdb_strerror(rc).decode()
- *         raise LmdbError(out_msg)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_LmdbError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __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_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_out_msg); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 35, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_2)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_out_msg};
-        __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 35, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_GOTREF(__pyx_t_4);
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_out_msg};
-        __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 35, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_GOTREF(__pyx_t_4);
-      } else
-      #endif
-      {
-        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 35, __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_out_msg);
-        __Pyx_GIVEREF(__pyx_v_out_msg);
-        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_out_msg);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 35, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __PYX_ERR(0, 35, __pyx_L1_error)
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":30
- *     if rc == lmdb.MDB_KEYEXIST:
- *         raise KeyExistsError()
- *     if rc != lmdb.MDB_SUCCESS:             # <<<<<<<<<<<<<<
- *         out_msg = (
- *                 message + '\nInternal error ({}): '.format(rc)
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":22
- * 
- * 
- * cdef void _check(int rc, str message='') except *:             # <<<<<<<<<<<<<<
- *     """
- *     Check return code.
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store._check", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_out_msg);
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":129
- *     ### INIT & TEARDOWN ###
- * 
- *     def __init__(self, env_path, open_env=True, create=True):             # <<<<<<<<<<<<<<
- *         """
- *         Initialize DB environment and databases.
- */
-
-/* Python wrapper */
-static int __pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore___init__[] = "\n        Initialize DB environment and databases.\n\n        :param str env_path: The file path of the store.\n        :param bool open: Whether to open the store immediately. If ``False``\n            the store can be manually opened with :py:meth:`opn_env`.\n        :param bool create: Whether the file and directory structure should\n            be created if the store is opened immediately.\n        ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore___init__;
-#endif
-static int __pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_env_path = 0;
-  PyObject *__pyx_v_open_env = 0;
-  PyObject *__pyx_v_create = 0;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_env_path,&__pyx_n_s_open_env,&__pyx_n_s_create,0};
-    PyObject* values[3] = {0,0,0};
-    values[1] = ((PyObject *)Py_True);
-    values[2] = ((PyObject *)Py_True);
-    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] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_env_path)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_open_env);
-          if (value) { values[1] = value; kw_args--; }
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_create);
-          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_ERR(0, 129, __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;
-      }
-    }
-    __pyx_v_env_path = values[0];
-    __pyx_v_open_env = values[1];
-    __pyx_v_create = values[2];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 129, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return -1;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore___init__(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_env_path, __pyx_v_open_env, __pyx_v_create);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore___init__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_env_path, PyObject *__pyx_v_open_env, PyObject *__pyx_v_create) {
-  int __pyx_r;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  __Pyx_RefNannySetupContext("__init__", 0);
-  __Pyx_TraceCall("__init__", __pyx_f[0], 129, 0, __PYX_ERR(0, 129, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":139
- *             be created if the store is opened immediately.
- *         """
- *         self._open = False             # <<<<<<<<<<<<<<
- *         self.is_txn_open = False
- *         self.env_path = env_path
- */
-  __pyx_v_self->_open = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":140
- *         """
- *         self._open = False
- *         self.is_txn_open = False             # <<<<<<<<<<<<<<
- *         self.env_path = env_path
- *         if open_env:
- */
-  __pyx_v_self->is_txn_open = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":141
- *         self._open = False
- *         self.is_txn_open = False
- *         self.env_path = env_path             # <<<<<<<<<<<<<<
- *         if open_env:
- *             self.open_env(create)
- */
-  if (!(likely(PyUnicode_CheckExact(__pyx_v_env_path))||((__pyx_v_env_path) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_env_path)->tp_name), 0))) __PYX_ERR(0, 141, __pyx_L1_error)
-  __pyx_t_1 = __pyx_v_env_path;
-  __Pyx_INCREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->env_path);
-  __Pyx_DECREF(__pyx_v_self->env_path);
-  __pyx_v_self->env_path = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":142
- *         self.is_txn_open = False
- *         self.env_path = env_path
- *         if open_env:             # <<<<<<<<<<<<<<
- *             self.open_env(create)
- *         #logger.info('Init DB with path: {}'.format(self.env_path))
- */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_open_env); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 142, __pyx_L1_error)
-  if (__pyx_t_2) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":143
- *         self.env_path = env_path
- *         if open_env:
- *             self.open_env(create)             # <<<<<<<<<<<<<<
- *         #logger.info('Init DB with path: {}'.format(self.env_path))
- * 
- */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_open_env); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_4)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_4);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    if (!__pyx_t_4) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_create); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_create};
-        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __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_3)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_create};
-        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_1);
-      } else
-      #endif
-      {
-        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 143, __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_INCREF(__pyx_v_create);
-        __Pyx_GIVEREF(__pyx_v_create);
-        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_create);
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":142
- *         self.is_txn_open = False
- *         self.env_path = env_path
- *         if open_env:             # <<<<<<<<<<<<<<
- *             self.open_env(create)
- *         #logger.info('Init DB with path: {}'.format(self.env_path))
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":129
- *     ### INIT & TEARDOWN ###
- * 
- *     def __init__(self, env_path, open_env=True, create=True):             # <<<<<<<<<<<<<<
- *         """
- *         Initialize DB environment and databases.
- */
-
-  /* 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("lakesuperior.store.base_lmdb_store.BaseLmdbStore.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":147
- * 
- * 
- *     def __dealloc__(self):             # <<<<<<<<<<<<<<
- *         self.close_env()
- * 
- */
-
-/* Python wrapper */
-static void __pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
-static void __pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_3__dealloc__(PyObject *__pyx_v_self) {
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
-  __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_2__dealloc__(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-}
-
-static void __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_2__dealloc__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__dealloc__", 0);
-  __Pyx_TraceCall("__dealloc__", __pyx_f[0], 147, 0, __PYX_ERR(0, 147, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":148
- * 
- *     def __dealloc__(self):
- *         self.close_env()             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->close_env(__pyx_v_self, 0, NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 148, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":147
- * 
- * 
- *     def __dealloc__(self):             # <<<<<<<<<<<<<<
- *         self.close_env()
- * 
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_WriteUnraisable("lakesuperior.store.base_lmdb_store.BaseLmdbStore.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":152
- * 
- *     @property
- *     def is_open(self):             # <<<<<<<<<<<<<<
- *         return self._open
- * 
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7is_open_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7is_open_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7is_open___get__(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7is_open___get__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_TraceCall("__get__", __pyx_f[0], 152, 0, __PYX_ERR(0, 152, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":153
- *     @property
- *     def is_open(self):
- *         return self._open             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_open); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 153, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":152
- * 
- *     @property
- *     def is_open(self):             # <<<<<<<<<<<<<<
- *         return self._open
- * 
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.is_open.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":157
- * 
- *     @property
- *     def readers(self):             # <<<<<<<<<<<<<<
- *         return self._readers
- * 
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7readers_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7readers_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7readers___get__(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7readers___get__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_TraceCall("__get__", __pyx_f[0], 157, 0, __PYX_ERR(0, 157, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":158
- *     @property
- *     def readers(self):
- *         return self._readers             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->_readers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":157
- * 
- *     @property
- *     def readers(self):             # <<<<<<<<<<<<<<
- *         return self._readers
- * 
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.readers.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":161
- * 
- * 
- *     def open_env(self, create):             # <<<<<<<<<<<<<<
- *         """
- *         Open, and optionally create, store environment.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_5open_env(PyObject *__pyx_v_self, PyObject *__pyx_v_create); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_4open_env[] = "\n        Open, and optionally create, store environment.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_5open_env(PyObject *__pyx_v_self, PyObject *__pyx_v_create) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("open_env (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_4open_env(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), ((PyObject *)__pyx_v_create));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_4open_env(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_create) {
-  PyObject *__pyx_v_parent_path = NULL;
-  PyObject *__pyx_v_e = NULL;
-  PyObject *__pyx_v_max_dbs = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  int __pyx_t_8;
-  PyObject *__pyx_t_9 = NULL;
-  PyObject *__pyx_t_10 = NULL;
-  PyObject *__pyx_t_11 = NULL;
-  int __pyx_t_12;
-  PyObject *__pyx_t_13 = NULL;
-  PyObject *__pyx_t_14 = NULL;
-  PyObject *__pyx_t_15 = NULL;
-  int __pyx_t_16;
-  char const *__pyx_t_17;
-  PyObject *__pyx_t_18 = NULL;
-  PyObject *__pyx_t_19 = NULL;
-  PyObject *__pyx_t_20 = NULL;
-  PyObject *__pyx_t_21 = NULL;
-  PyObject *__pyx_t_22 = NULL;
-  PyObject *__pyx_t_23 = NULL;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check __pyx_t_24;
-  size_t __pyx_t_25;
-  Py_ssize_t __pyx_t_26;
-  MDB_dbi __pyx_t_27;
-  unsigned int __pyx_t_28;
-  char const *__pyx_t_29;
-  mdb_mode_t __pyx_t_30;
-  Py_UCS4 __pyx_t_31;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__init_dbis __pyx_t_32;
-  __Pyx_RefNannySetupContext("open_env", 0);
-  __Pyx_TraceCall("open_env", __pyx_f[0], 161, 0, __PYX_ERR(0, 161, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":165
- *         Open, and optionally create, store environment.
- *         """
- *         if self.is_open:             # <<<<<<<<<<<<<<
- *             logger.warning('Environment already open.')
- *             return
- */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_open); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __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, 165, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_2) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":166
- *         """
- *         if self.is_open:
- *             logger.warning('Environment already open.')             # <<<<<<<<<<<<<<
- *             return
- * 
- */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_warning); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 166, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":167
- *         if self.is_open:
- *             logger.warning('Environment already open.')
- *             return             # <<<<<<<<<<<<<<
- * 
- *         logger.debug('Opening environment at {}.'.format(self.env_path))
- */
-    __Pyx_XDECREF(__pyx_r);
-    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":165
- *         Open, and optionally create, store environment.
- *         """
- *         if self.is_open:             # <<<<<<<<<<<<<<
- *             logger.warning('Environment already open.')
- *             return
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":169
- *             return
- * 
- *         logger.debug('Opening environment at {}.'.format(self.env_path))             # <<<<<<<<<<<<<<
- *         if create:
- *             #logger.info('Creating db env at {}'.format(self.env_path))
- */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 169, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Opening_environment_at, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 169, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-    if (likely(__pyx_t_6)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-      __Pyx_INCREF(__pyx_t_6);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_5, function);
-    }
-  }
-  if (!__pyx_t_6) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->env_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_5)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_self->env_path};
-      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __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_5)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_self->env_path};
-      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-    } else
-    #endif
-    {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 169, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
-      __Pyx_INCREF(__pyx_v_self->env_path);
-      __Pyx_GIVEREF(__pyx_v_self->env_path);
-      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_self->env_path);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    }
-  }
-  __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, 169, __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, 169, __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, 169, __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_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 169, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
-      __Pyx_GIVEREF(__pyx_t_3);
-      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3);
-      __pyx_t_3 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 169, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":170
- * 
- *         logger.debug('Opening environment at {}.'.format(self.env_path))
- *         if create:             # <<<<<<<<<<<<<<
- *             #logger.info('Creating db env at {}'.format(self.env_path))
- *             parent_path = (
- */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_create); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 170, __pyx_L1_error)
-  if (__pyx_t_2) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":174
- *             parent_path = (
- *                     path.dirname(self.env_path)
- *                     if lmdb.MDB_NOSUBDIR & self.flags             # <<<<<<<<<<<<<<
- *                     else self.env_path)
- * 
- */
-    __pyx_t_4 = __Pyx_PyInt_From_int(MDB_NOSUBDIR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 174, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_flags); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 174, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_3 = PyNumber_And(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 174, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 174, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (__pyx_t_2) {
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":173
- *             #logger.info('Creating db env at {}'.format(self.env_path))
- *             parent_path = (
- *                     path.dirname(self.env_path)             # <<<<<<<<<<<<<<
- *                     if lmdb.MDB_NOSUBDIR & self.flags
- *                     else self.env_path)
- */
-      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_path); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 173, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_dirname); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 173, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
-        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
-        if (likely(__pyx_t_7)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-          __Pyx_INCREF(__pyx_t_7);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_4, function);
-        }
-      }
-      if (!__pyx_t_7) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_self->env_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __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_7, __pyx_v_self->env_path};
-          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 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_7, __pyx_v_self->env_path};
-          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-          __Pyx_GOTREF(__pyx_t_3);
-        } else
-        #endif
-        {
-          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 173, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_5);
-          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
-          __Pyx_INCREF(__pyx_v_self->env_path);
-          __Pyx_GIVEREF(__pyx_v_self->env_path);
-          PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_self->env_path);
-          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_1 = __pyx_t_3;
-      __pyx_t_3 = 0;
-    } else {
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":175
- *                     path.dirname(self.env_path)
- *                     if lmdb.MDB_NOSUBDIR & self.flags
- *                     else self.env_path)             # <<<<<<<<<<<<<<
- * 
- *             if not path.exists(parent_path):
- */
-      __Pyx_INCREF(__pyx_v_self->env_path);
-      __pyx_t_1 = __pyx_v_self->env_path;
-    }
-    __pyx_v_parent_path = __pyx_t_1;
-    __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":177
- *                     else self.env_path)
- * 
- *             if not path.exists(parent_path):             # <<<<<<<<<<<<<<
- *                 #logger.info(
- *                 #        'Creating store directory at {}'.format(parent_path))
- */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exists); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 177, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    if (!__pyx_t_3) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_parent_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_4)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_parent_path};
-        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __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_4)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_parent_path};
-        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_GOTREF(__pyx_t_1);
-      } else
-      #endif
-      {
-        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 177, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_5);
-        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
-        __Pyx_INCREF(__pyx_v_parent_path);
-        __Pyx_GIVEREF(__pyx_v_parent_path);
-        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_parent_path);
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 177, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_8 = ((!__pyx_t_2) != 0);
-    if (__pyx_t_8) {
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":180
- *                 #logger.info(
- *                 #        'Creating store directory at {}'.format(parent_path))
- *                 try:             # <<<<<<<<<<<<<<
- *                     makedirs(parent_path, mode=0o750, exist_ok=True)
- *                 except Exception as e:
- */
-      {
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
-        __Pyx_XGOTREF(__pyx_t_9);
-        __Pyx_XGOTREF(__pyx_t_10);
-        __Pyx_XGOTREF(__pyx_t_11);
-        /*try:*/ {
-
-          /* "lakesuperior/store/base_lmdb_store.pyx":181
- *                 #        'Creating store directory at {}'.format(parent_path))
- *                 try:
- *                     makedirs(parent_path, mode=0o750, exist_ok=True)             # <<<<<<<<<<<<<<
- *                 except Exception as e:
- *                     raise LmdbError(
- */
-          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_makedirs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L6_error)
-          __Pyx_GOTREF(__pyx_t_1);
-          __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 181, __pyx_L6_error)
-          __Pyx_GOTREF(__pyx_t_4);
-          __Pyx_INCREF(__pyx_v_parent_path);
-          __Pyx_GIVEREF(__pyx_v_parent_path);
-          PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_parent_path);
-          __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 181, __pyx_L6_error)
-          __Pyx_GOTREF(__pyx_t_5);
-          if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_mode, __pyx_int_488) < 0) __PYX_ERR(0, 181, __pyx_L6_error)
-          if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_exist_ok, Py_True) < 0) __PYX_ERR(0, 181, __pyx_L6_error)
-          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 181, __pyx_L6_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-          /* "lakesuperior/store/base_lmdb_store.pyx":180
- *                 #logger.info(
- *                 #        'Creating store directory at {}'.format(parent_path))
- *                 try:             # <<<<<<<<<<<<<<
- *                     makedirs(parent_path, mode=0o750, exist_ok=True)
- *                 except Exception as e:
- */
-        }
-        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-        goto __pyx_L11_try_end;
-        __pyx_L6_error:;
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":182
- *                 try:
- *                     makedirs(parent_path, mode=0o750, exist_ok=True)
- *                 except Exception as e:             # <<<<<<<<<<<<<<
- *                     raise LmdbError(
- *                         'Could not create store at {}. Error: {}'.format(
- */
-        __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
-        if (__pyx_t_12) {
-          __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.open_env", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 182, __pyx_L8_except_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_GOTREF(__pyx_t_5);
-          __Pyx_GOTREF(__pyx_t_4);
-          __Pyx_INCREF(__pyx_t_5);
-          __pyx_v_e = __pyx_t_5;
-          /*try:*/ {
-
-            /* "lakesuperior/store/base_lmdb_store.pyx":183
- *                     makedirs(parent_path, mode=0o750, exist_ok=True)
- *                 except Exception as e:
- *                     raise LmdbError(             # <<<<<<<<<<<<<<
- *                         'Could not create store at {}. Error: {}'.format(
- *                             self.env_path, e))
- */
-            __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_LmdbError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 183, __pyx_L17_error)
-            __Pyx_GOTREF(__pyx_t_7);
-
-            /* "lakesuperior/store/base_lmdb_store.pyx":184
- *                 except Exception as e:
- *                     raise LmdbError(
- *                         'Could not create store at {}. Error: {}'.format(             # <<<<<<<<<<<<<<
- *                             self.env_path, e))
- * 
- */
-            __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Could_not_create_store_at_Error, __pyx_n_s_format); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 184, __pyx_L17_error)
-            __Pyx_GOTREF(__pyx_t_13);
-
-            /* "lakesuperior/store/base_lmdb_store.pyx":185
- *                     raise LmdbError(
- *                         'Could not create store at {}. Error: {}'.format(
- *                             self.env_path, e))             # <<<<<<<<<<<<<<
- * 
- *         # Create environment handle.
- */
-            __pyx_t_14 = NULL;
-            __pyx_t_12 = 0;
-            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
-              __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
-              if (likely(__pyx_t_14)) {
-                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
-                __Pyx_INCREF(__pyx_t_14);
-                __Pyx_INCREF(function);
-                __Pyx_DECREF_SET(__pyx_t_13, function);
-                __pyx_t_12 = 1;
-              }
-            }
-            #if CYTHON_FAST_PYCALL
-            if (PyFunction_Check(__pyx_t_13)) {
-              PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_self->env_path, __pyx_v_e};
-              __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 184, __pyx_L17_error)
-              __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-              __Pyx_GOTREF(__pyx_t_6);
-            } else
-            #endif
-            #if CYTHON_FAST_PYCCALL
-            if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
-              PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_self->env_path, __pyx_v_e};
-              __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 184, __pyx_L17_error)
-              __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-              __Pyx_GOTREF(__pyx_t_6);
-            } else
-            #endif
-            {
-              __pyx_t_15 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 184, __pyx_L17_error)
-              __Pyx_GOTREF(__pyx_t_15);
-              if (__pyx_t_14) {
-                __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL;
-              }
-              __Pyx_INCREF(__pyx_v_self->env_path);
-              __Pyx_GIVEREF(__pyx_v_self->env_path);
-              PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_12, __pyx_v_self->env_path);
-              __Pyx_INCREF(__pyx_v_e);
-              __Pyx_GIVEREF(__pyx_v_e);
-              PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_12, __pyx_v_e);
-              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_15, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 184, __pyx_L17_error)
-              __Pyx_GOTREF(__pyx_t_6);
-              __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-            }
-            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-            __pyx_t_13 = NULL;
-            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
-              __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
-              if (likely(__pyx_t_13)) {
-                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-                __Pyx_INCREF(__pyx_t_13);
-                __Pyx_INCREF(function);
-                __Pyx_DECREF_SET(__pyx_t_7, function);
-              }
-            }
-            if (!__pyx_t_13) {
-              __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L17_error)
-              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-              __Pyx_GOTREF(__pyx_t_1);
-            } else {
-              #if CYTHON_FAST_PYCALL
-              if (PyFunction_Check(__pyx_t_7)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_6};
-                __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L17_error)
-                __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-                __Pyx_GOTREF(__pyx_t_1);
-                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-              } else
-              #endif
-              #if CYTHON_FAST_PYCCALL
-              if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_6};
-                __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L17_error)
-                __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-                __Pyx_GOTREF(__pyx_t_1);
-                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-              } else
-              #endif
-              {
-                __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 183, __pyx_L17_error)
-                __Pyx_GOTREF(__pyx_t_15);
-                __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_13); __pyx_t_13 = NULL;
-                __Pyx_GIVEREF(__pyx_t_6);
-                PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_6);
-                __pyx_t_6 = 0;
-                __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L17_error)
-                __Pyx_GOTREF(__pyx_t_1);
-                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-              }
-            }
-            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-            __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            __PYX_ERR(0, 183, __pyx_L17_error)
-          }
-
-          /* "lakesuperior/store/base_lmdb_store.pyx":182
- *                 try:
- *                     makedirs(parent_path, mode=0o750, exist_ok=True)
- *                 except Exception as e:             # <<<<<<<<<<<<<<
- *                     raise LmdbError(
- *                         'Could not create store at {}. Error: {}'.format(
- */
-          /*finally:*/ {
-            __pyx_L17_error:;
-            /*exception exit:*/{
-              __Pyx_PyThreadState_declare
-              __Pyx_PyThreadState_assign
-              __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0;
-              __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-              __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-              if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
-              if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
-              __Pyx_XGOTREF(__pyx_t_18);
-              __Pyx_XGOTREF(__pyx_t_19);
-              __Pyx_XGOTREF(__pyx_t_20);
-              __Pyx_XGOTREF(__pyx_t_21);
-              __Pyx_XGOTREF(__pyx_t_22);
-              __Pyx_XGOTREF(__pyx_t_23);
-              __pyx_t_12 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
-              {
-                __Pyx_DECREF(__pyx_v_e);
-                __pyx_v_e = NULL;
-              }
-              if (PY_MAJOR_VERSION >= 3) {
-                __Pyx_XGIVEREF(__pyx_t_21);
-                __Pyx_XGIVEREF(__pyx_t_22);
-                __Pyx_XGIVEREF(__pyx_t_23);
-                __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
-              }
-              __Pyx_XGIVEREF(__pyx_t_18);
-              __Pyx_XGIVEREF(__pyx_t_19);
-              __Pyx_XGIVEREF(__pyx_t_20);
-              __Pyx_ErrRestore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
-              __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0;
-              __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17;
-              goto __pyx_L8_except_error;
-            }
-          }
-        }
-        goto __pyx_L8_except_error;
-        __pyx_L8_except_error:;
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":180
- *                 #logger.info(
- *                 #        'Creating store directory at {}'.format(parent_path))
- *                 try:             # <<<<<<<<<<<<<<
- *                     makedirs(parent_path, mode=0o750, exist_ok=True)
- *                 except Exception as e:
- */
-        __Pyx_XGIVEREF(__pyx_t_9);
-        __Pyx_XGIVEREF(__pyx_t_10);
-        __Pyx_XGIVEREF(__pyx_t_11);
-        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-        goto __pyx_L1_error;
-        __pyx_L11_try_end:;
-      }
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":177
- *                     else self.env_path)
- * 
- *             if not path.exists(parent_path):             # <<<<<<<<<<<<<<
- *                 #logger.info(
- *                 #        'Creating store directory at {}'.format(parent_path))
- */
-    }
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":170
- * 
- *         logger.debug('Opening environment at {}.'.format(self.env_path))
- *         if create:             # <<<<<<<<<<<<<<
- *             #logger.info('Creating db env at {}'.format(self.env_path))
- *             parent_path = (
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":188
- * 
- *         # Create environment handle.
- *         _check(             # <<<<<<<<<<<<<<
- *                 lmdb.mdb_env_create(&self.dbenv),
- *                 'Error creating DB environment handle: {}')
- */
-  __pyx_t_24.__pyx_n = 1;
-  __pyx_t_24.message = __pyx_kp_u_Error_creating_DB_environment_ha;
-  __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_env_create((&__pyx_v_self->dbenv)), &__pyx_t_24); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 188, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":191
- *                 lmdb.mdb_env_create(&self.dbenv),
- *                 'Error creating DB environment handle: {}')
- *         logger.debug('Created DBenv @ {:x}'.format(<unsigned long>self.dbenv))             # <<<<<<<<<<<<<<
- * 
- *         # Set map size.
- */
-  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 191, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Created_DBenv_x, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->dbenv)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 191, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_15 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
-    __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_1);
-    if (likely(__pyx_t_15)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-      __Pyx_INCREF(__pyx_t_15);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_1, function);
-    }
-  }
-  if (!__pyx_t_15) {
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 191, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __Pyx_GOTREF(__pyx_t_5);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_1)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
-      __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 191, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
-      __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 191, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 191, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_15); __pyx_t_15 = NULL;
-      __Pyx_GIVEREF(__pyx_t_7);
-      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_7);
-      __pyx_t_7 = 0;
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 191, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(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_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_5};
-      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_5};
-      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 191, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
-      __Pyx_GIVEREF(__pyx_t_5);
-      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5);
-      __pyx_t_5 = 0;
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":195
- *         # Set map size.
- *         _check(
- *                 lmdb.mdb_env_set_mapsize(self.dbenv, self.options.get(             # <<<<<<<<<<<<<<
- *                     'map_size', 1024 ** 3)),
- *                 'Error setting map size: {}')
- */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 195, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 195, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_25 = __Pyx_PyInt_As_size_t(__pyx_t_4); if (unlikely((__pyx_t_25 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 195, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":194
- * 
- *         # Set map size.
- *         _check(             # <<<<<<<<<<<<<<
- *                 lmdb.mdb_env_set_mapsize(self.dbenv, self.options.get(
- *                     'map_size', 1024 ** 3)),
- */
-  __pyx_t_24.__pyx_n = 1;
-  __pyx_t_24.message = __pyx_kp_u_Error_setting_map_size;
-  __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_env_set_mapsize(__pyx_v_self->dbenv, __pyx_t_25), &__pyx_t_24); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 194, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":200
- * 
- *         # Set max databases.
- *         max_dbs = self.options.get('max_dbs', len(self.dbi_labels))             # <<<<<<<<<<<<<<
- *         _check(
- *                 lmdb.mdb_env_set_maxdbs(self.dbenv, max_dbs),
- */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 200, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dbi_labels); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_26 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_26 == ((Py_ssize_t)-1))) __PYX_ERR(0, 200, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_26); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_5 = NULL;
-  __pyx_t_16 = 0;
-  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);
-      __pyx_t_16 = 1;
-    }
-  }
-  #if CYTHON_FAST_PYCALL
-  if (PyFunction_Check(__pyx_t_6)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_n_u_max_dbs, __pyx_t_3};
-    __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 200, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  } else
-  #endif
-  #if CYTHON_FAST_PYCCALL
-  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_n_u_max_dbs, __pyx_t_3};
-    __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 200, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  } else
-  #endif
-  {
-    __pyx_t_1 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 200, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (__pyx_t_5) {
-      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
-    }
-    __Pyx_INCREF(__pyx_n_u_max_dbs);
-    __Pyx_GIVEREF(__pyx_n_u_max_dbs);
-    PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_16, __pyx_n_u_max_dbs);
-    __Pyx_GIVEREF(__pyx_t_3);
-    PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_16, __pyx_t_3);
-    __pyx_t_3 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 200, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_v_max_dbs = __pyx_t_4;
-  __pyx_t_4 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":202
- *         max_dbs = self.options.get('max_dbs', len(self.dbi_labels))
- *         _check(
- *                 lmdb.mdb_env_set_maxdbs(self.dbenv, max_dbs),             # <<<<<<<<<<<<<<
- *                 'Error setting max. databases: {}')
- * 
- */
-  __pyx_t_27 = __Pyx_PyInt_As_MDB_dbi(__pyx_v_max_dbs); if (unlikely((__pyx_t_27 == ((MDB_dbi)-1)) && PyErr_Occurred())) __PYX_ERR(0, 202, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":201
- *         # Set max databases.
- *         max_dbs = self.options.get('max_dbs', len(self.dbi_labels))
- *         _check(             # <<<<<<<<<<<<<<
- *                 lmdb.mdb_env_set_maxdbs(self.dbenv, max_dbs),
- *                 'Error setting max. databases: {}')
- */
-  __pyx_t_24.__pyx_n = 1;
-  __pyx_t_24.message = __pyx_kp_u_Error_setting_max_databases;
-  __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_env_set_maxdbs(__pyx_v_self->dbenv, __pyx_t_27), &__pyx_t_24); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 201, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":206
- * 
- *         # Set max readers.
- *         self._readers = self.options.get(             # <<<<<<<<<<<<<<
- *                 'max_spare_txns', wsgi.workers * self.readers_mult)
- *         _check(
- */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 206, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 206, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":207
- *         # Set max readers.
- *         self._readers = self.options.get(
- *                 'max_spare_txns', wsgi.workers * self.readers_mult)             # <<<<<<<<<<<<<<
- *         _check(
- *                 lmdb.mdb_env_set_maxreaders(self.dbenv, self._readers),
- */
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_wsgi); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 207, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_workers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_readers_mult); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 207, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 207, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = NULL;
-  __pyx_t_16 = 0;
-  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);
-      __pyx_t_16 = 1;
-    }
-  }
-  #if CYTHON_FAST_PYCALL
-  if (PyFunction_Check(__pyx_t_1)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_n_u_max_spare_txns, __pyx_t_5};
-    __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 206, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  } else
-  #endif
-  #if CYTHON_FAST_PYCCALL
-  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_n_u_max_spare_txns, __pyx_t_5};
-    __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 206, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  } else
-  #endif
-  {
-    __pyx_t_3 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 206, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    if (__pyx_t_6) {
-      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL;
-    }
-    __Pyx_INCREF(__pyx_n_u_max_spare_txns);
-    __Pyx_GIVEREF(__pyx_n_u_max_spare_txns);
-    PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_16, __pyx_n_u_max_spare_txns);
-    __Pyx_GIVEREF(__pyx_t_5);
-    PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_16, __pyx_t_5);
-    __pyx_t_5 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 206, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":206
- * 
- *         # Set max readers.
- *         self._readers = self.options.get(             # <<<<<<<<<<<<<<
- *                 'max_spare_txns', wsgi.workers * self.readers_mult)
- *         _check(
- */
-  __pyx_t_28 = __Pyx_PyInt_As_unsigned_int(__pyx_t_4); if (unlikely((__pyx_t_28 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 206, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_v_self->_readers = __pyx_t_28;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":208
- *         self._readers = self.options.get(
- *                 'max_spare_txns', wsgi.workers * self.readers_mult)
- *         _check(             # <<<<<<<<<<<<<<
- *                 lmdb.mdb_env_set_maxreaders(self.dbenv, self._readers),
- *                 'Error setting max. readers: {}')
- */
-  __pyx_t_24.__pyx_n = 1;
-  __pyx_t_24.message = __pyx_kp_u_Error_setting_max_readers;
-  __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_env_set_maxreaders(__pyx_v_self->dbenv, __pyx_v_self->_readers), &__pyx_t_24); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 208, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":211
- *                 lmdb.mdb_env_set_maxreaders(self.dbenv, self._readers),
- *                 'Error setting max. readers: {}')
- *         logger.debug('Max. readers: {}'.format(self._readers))             # <<<<<<<<<<<<<<
- * 
- *         # Clear stale readers.
- */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Max_readers, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 211, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->_readers); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 211, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
-    if (likely(__pyx_t_7)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-      __Pyx_INCREF(__pyx_t_7);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_5, function);
-    }
-  }
-  if (!__pyx_t_7) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_GOTREF(__pyx_t_1);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_5)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 211, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_15);
-      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_7); __pyx_t_7 = NULL;
-      __Pyx_GIVEREF(__pyx_t_6);
-      PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_6);
-      __pyx_t_6 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __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_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 211, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
-      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 211, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
-      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 211, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 211, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_15);
-      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_5); __pyx_t_5 = NULL;
-      __Pyx_GIVEREF(__pyx_t_1);
-      PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_1);
-      __pyx_t_1 = 0;
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_15, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 211, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":214
- * 
- *         # Clear stale readers.
- *         self._clear_stale_readers()             # <<<<<<<<<<<<<<
- * 
- *         # Open DB environment.
- */
-  ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->_clear_stale_readers(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 214, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":217
- * 
- *         # Open DB environment.
- *         logger.debug('DBenv address: {:x}'.format(<unsigned long>self.dbenv))             # <<<<<<<<<<<<<<
- *         _check(
- *                 lmdb.mdb_env_open(
- */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 217, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 217, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_15);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_DBenv_address_x, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->dbenv)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 217, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __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_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 217, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_GOTREF(__pyx_t_3);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_1)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
-      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 217, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
-      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 217, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 217, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
-      __Pyx_GIVEREF(__pyx_t_5);
-      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
-      __pyx_t_5 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 217, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_15))) {
-    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_15);
-    if (likely(__pyx_t_1)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
-      __Pyx_INCREF(__pyx_t_1);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_15, function);
-    }
-  }
-  if (!__pyx_t_1) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 217, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_15)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_3};
-      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 217, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_3};
-      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 217, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 217, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
-      __Pyx_GIVEREF(__pyx_t_3);
-      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3);
-      __pyx_t_3 = 0;
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 217, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":220
- *         _check(
- *                 lmdb.mdb_env_open(
- *                     self.dbenv, self.env_path.encode(),             # <<<<<<<<<<<<<<
- *                     self.env_flags, self.env_perms),
- *                 f'Error opening the database environment: {self.env_path}.')
- */
-  if (unlikely(__pyx_v_self->env_path == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
-    __PYX_ERR(0, 220, __pyx_L1_error)
-  }
-  __pyx_t_4 = PyUnicode_AsEncodedString(__pyx_v_self->env_path, NULL, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 220, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_29 = __Pyx_PyBytes_AsString(__pyx_t_4); if (unlikely((!__pyx_t_29) && PyErr_Occurred())) __PYX_ERR(0, 220, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":221
- *                 lmdb.mdb_env_open(
- *                     self.dbenv, self.env_path.encode(),
- *                     self.env_flags, self.env_perms),             # <<<<<<<<<<<<<<
- *                 f'Error opening the database environment: {self.env_path}.')
- * 
- */
-  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_env_flags); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 221, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_15);
-  __pyx_t_28 = __Pyx_PyInt_As_unsigned_int(__pyx_t_15); if (unlikely((__pyx_t_28 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 221, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_env_perms); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 221, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_15);
-  __pyx_t_30 = __Pyx_PyInt_As_mode_t(__pyx_t_15); if (unlikely((__pyx_t_30 == ((mdb_mode_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 221, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":222
- *                     self.dbenv, self.env_path.encode(),
- *                     self.env_flags, self.env_perms),
- *                 f'Error opening the database environment: {self.env_path}.')             # <<<<<<<<<<<<<<
- * 
- *         self._init_dbis(create)
- */
-  __pyx_t_15 = PyTuple_New(3); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 222, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_15);
-  __pyx_t_26 = 0;
-  __pyx_t_31 = 127;
-  __Pyx_INCREF(__pyx_kp_u_Error_opening_the_database_envir);
-  __pyx_t_26 += 40;
-  __Pyx_GIVEREF(__pyx_kp_u_Error_opening_the_database_envir);
-  PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_kp_u_Error_opening_the_database_envir);
-  __pyx_t_7 = __Pyx_PyUnicode_Unicode(__pyx_v_self->env_path); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 222, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_31 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) > __pyx_t_31) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) : __pyx_t_31;
-  __pyx_t_26 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7);
-  __Pyx_GIVEREF(__pyx_t_7);
-  PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_7);
-  __pyx_t_7 = 0;
-  __Pyx_INCREF(__pyx_kp_u__4);
-  __pyx_t_26 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__4);
-  PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_kp_u__4);
-  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_15, 3, __pyx_t_26, __pyx_t_31); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 222, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":218
- *         # Open DB environment.
- *         logger.debug('DBenv address: {:x}'.format(<unsigned long>self.dbenv))
- *         _check(             # <<<<<<<<<<<<<<
- *                 lmdb.mdb_env_open(
- *                     self.dbenv, self.env_path.encode(),
- */
-  __pyx_t_24.__pyx_n = 1;
-  __pyx_t_24.message = ((PyObject*)__pyx_t_7);
-  __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_env_open(__pyx_v_self->dbenv, __pyx_t_29, __pyx_t_28, __pyx_t_30), &__pyx_t_24); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 218, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":224
- *                 f'Error opening the database environment: {self.env_path}.')
- * 
- *         self._init_dbis(create)             # <<<<<<<<<<<<<<
- *         self._open = True
- * 
- */
-  __pyx_t_32.__pyx_n = 1;
-  __pyx_t_32.create = __pyx_v_create;
-  ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->_init_dbis(__pyx_v_self, &__pyx_t_32); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 224, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":225
- * 
- *         self._init_dbis(create)
- *         self._open = True             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_v_self->_open = 1;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":161
- * 
- * 
- *     def open_env(self, create):             # <<<<<<<<<<<<<<
- *         """
- *         Open, and optionally create, store environment.
- */
-
-  /* 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_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_13);
-  __Pyx_XDECREF(__pyx_t_14);
-  __Pyx_XDECREF(__pyx_t_15);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.open_env", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_parent_path);
-  __Pyx_XDECREF(__pyx_v_e);
-  __Pyx_XDECREF(__pyx_v_max_dbs);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":228
- * 
- * 
- *     cdef void _clear_stale_readers(self) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Clear stale readers.
- */
-
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__clear_stale_readers(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  int __pyx_v_stale_readers;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  __Pyx_RefNannySetupContext("_clear_stale_readers", 0);
-  __Pyx_TraceCall("_clear_stale_readers", __pyx_f[0], 228, 0, __PYX_ERR(0, 228, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":234
- *         cdef int stale_readers
- * 
- *         _check(lmdb.mdb_reader_check(self.dbenv, &stale_readers))             # <<<<<<<<<<<<<<
- *         if stale_readers > 0:
- *             logger.debug('Cleared {} stale readers.'.format(stale_readers))
- */
-  __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_reader_check(__pyx_v_self->dbenv, (&__pyx_v_stale_readers)), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 234, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":235
- * 
- *         _check(lmdb.mdb_reader_check(self.dbenv, &stale_readers))
- *         if stale_readers > 0:             # <<<<<<<<<<<<<<
- *             logger.debug('Cleared {} stale readers.'.format(stale_readers))
- * 
- */
-  __pyx_t_1 = ((__pyx_v_stale_readers > 0) != 0);
-  if (__pyx_t_1) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":236
- *         _check(lmdb.mdb_reader_check(self.dbenv, &stale_readers))
- *         if stale_readers > 0:
- *             logger.debug('Cleared {} stale readers.'.format(stale_readers))             # <<<<<<<<<<<<<<
- * 
- * 
- */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 236, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Cleared_stale_readers, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 236, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_stale_readers); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 236, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_7 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_7)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_7);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    if (!__pyx_t_7) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_5)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
-        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
-        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 236, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_8);
-        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
-        __Pyx_GIVEREF(__pyx_t_6);
-        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6);
-        __pyx_t_6 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      }
-    }
-    __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_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_GOTREF(__pyx_t_2);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_4)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
-        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-        __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_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 236, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_8);
-        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
-        __Pyx_GIVEREF(__pyx_t_3);
-        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
-        __pyx_t_3 = 0;
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":235
- * 
- *         _check(lmdb.mdb_reader_check(self.dbenv, &stale_readers))
- *         if stale_readers > 0:             # <<<<<<<<<<<<<<
- *             logger.debug('Cleared {} stale readers.'.format(stale_readers))
- * 
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":228
- * 
- * 
- *     cdef void _clear_stale_readers(self) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Clear stale readers.
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __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_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._clear_stale_readers", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":239
- * 
- * 
- *     cdef void _init_dbis(self, create=True) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Initialize databases and cursors.
- */
-
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__init_dbis(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__init_dbis *__pyx_optional_args) {
-  PyObject *__pyx_v_create = ((PyObject *)Py_True);
-  size_t __pyx_v_i;
-  MDB_txn *__pyx_v_txn;
-  MDB_dbi __pyx_v_dbi;
-  long __pyx_v_create_flag;
-  long __pyx_v_txn_flags;
-  CYTHON_UNUSED int __pyx_v_rc;
-  PyObject *__pyx_v_dblabel = NULL;
-  PyObject *__pyx_v_flags = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  long __pyx_t_1;
-  PyObject *__pyx_t_2 = NULL;
-  Py_ssize_t __pyx_t_3;
-  Py_ssize_t __pyx_t_4;
-  int __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  size_t __pyx_t_10;
-  PyObject *(*__pyx_t_11)(PyObject *);
-  PyObject *__pyx_t_12 = NULL;
-  PyObject *__pyx_t_13 = NULL;
-  int __pyx_t_14;
-  PyObject *__pyx_t_15 = NULL;
-  char const *__pyx_t_16;
-  unsigned int __pyx_t_17;
-  Py_UCS4 __pyx_t_18;
-  PyObject *__pyx_t_19 = NULL;
-  __Pyx_RefNannySetupContext("_init_dbis", 0);
-  __Pyx_TraceCall("_init_dbis", __pyx_f[0], 239, 0, __PYX_ERR(0, 239, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_create = __pyx_optional_args->create;
-    }
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":249
- * 
- *         # At least one slot (for environments without a database)
- *         self.dbis = <lmdb.MDB_dbi *>PyMem_Malloc(             # <<<<<<<<<<<<<<
- *                 max(len(self.dbi_labels), 1) * sizeof(lmdb.MDB_dbi))
- *         if not self.dbis:
- */
-  __pyx_t_1 = 1;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":250
- *         # At least one slot (for environments without a database)
- *         self.dbis = <lmdb.MDB_dbi *>PyMem_Malloc(
- *                 max(len(self.dbi_labels), 1) * sizeof(lmdb.MDB_dbi))             # <<<<<<<<<<<<<<
- *         if not self.dbis:
- *             raise MemoryError()
- */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dbi_labels); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 250, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 250, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (((__pyx_t_1 > __pyx_t_3) != 0)) {
-    __pyx_t_4 = __pyx_t_1;
-  } else {
-    __pyx_t_4 = __pyx_t_3;
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":249
- * 
- *         # At least one slot (for environments without a database)
- *         self.dbis = <lmdb.MDB_dbi *>PyMem_Malloc(             # <<<<<<<<<<<<<<
- *                 max(len(self.dbi_labels), 1) * sizeof(lmdb.MDB_dbi))
- *         if not self.dbis:
- */
-  __pyx_v_self->dbis = ((MDB_dbi *)PyMem_Malloc((__pyx_t_4 * (sizeof(MDB_dbi)))));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":251
- *         self.dbis = <lmdb.MDB_dbi *>PyMem_Malloc(
- *                 max(len(self.dbi_labels), 1) * sizeof(lmdb.MDB_dbi))
- *         if not self.dbis:             # <<<<<<<<<<<<<<
- *             raise MemoryError()
- * 
- */
-  __pyx_t_5 = ((!(__pyx_v_self->dbis != 0)) != 0);
-  if (unlikely(__pyx_t_5)) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":252
- *                 max(len(self.dbi_labels), 1) * sizeof(lmdb.MDB_dbi))
- *         if not self.dbis:
- *             raise MemoryError()             # <<<<<<<<<<<<<<
- * 
- *         # DBIs seem to start from 2. We want to map cursor pointers in the
- */
-    PyErr_NoMemory(); __PYX_ERR(0, 252, __pyx_L1_error)
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":251
- *         self.dbis = <lmdb.MDB_dbi *>PyMem_Malloc(
- *                 max(len(self.dbi_labels), 1) * sizeof(lmdb.MDB_dbi))
- *         if not self.dbis:             # <<<<<<<<<<<<<<
- *             raise MemoryError()
- * 
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":257
- *         # array to DBIs, so we need an extra slot.
- *         self.curs = <lmdb.MDB_cursor **>PyMem_Malloc(
- *                 (len(self.dbi_labels) + 2) * sizeof(lmdb.MDB_cursor*))             # <<<<<<<<<<<<<<
- *         if not self.curs:
- *             raise MemoryError()
- */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dbi_labels); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 257, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 257, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":256
- *         # DBIs seem to start from 2. We want to map cursor pointers in the
- *         # array to DBIs, so we need an extra slot.
- *         self.curs = <lmdb.MDB_cursor **>PyMem_Malloc(             # <<<<<<<<<<<<<<
- *                 (len(self.dbi_labels) + 2) * sizeof(lmdb.MDB_cursor*))
- *         if not self.curs:
- */
-  __pyx_v_self->curs = ((MDB_cursor **)PyMem_Malloc(((__pyx_t_4 + 2) * (sizeof(MDB_cursor *)))));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":258
- *         self.curs = <lmdb.MDB_cursor **>PyMem_Malloc(
- *                 (len(self.dbi_labels) + 2) * sizeof(lmdb.MDB_cursor*))
- *         if not self.curs:             # <<<<<<<<<<<<<<
- *             raise MemoryError()
- * 
- */
-  __pyx_t_5 = ((!(__pyx_v_self->curs != 0)) != 0);
-  if (unlikely(__pyx_t_5)) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":259
- *                 (len(self.dbi_labels) + 2) * sizeof(lmdb.MDB_cursor*))
- *         if not self.curs:
- *             raise MemoryError()             # <<<<<<<<<<<<<<
- * 
- *         create_flag = lmdb.MDB_CREATE if create is True else 0
- */
-    PyErr_NoMemory(); __PYX_ERR(0, 259, __pyx_L1_error)
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":258
- *         self.curs = <lmdb.MDB_cursor **>PyMem_Malloc(
- *                 (len(self.dbi_labels) + 2) * sizeof(lmdb.MDB_cursor*))
- *         if not self.curs:             # <<<<<<<<<<<<<<
- *             raise MemoryError()
- * 
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":261
- *             raise MemoryError()
- * 
- *         create_flag = lmdb.MDB_CREATE if create is True else 0             # <<<<<<<<<<<<<<
- *         txn_flags = 0 if create else lmdb.MDB_RDONLY
- *         rc = lmdb.mdb_txn_begin(self.dbenv, NULL, txn_flags, &txn)
- */
-  __pyx_t_5 = (__pyx_v_create == Py_True);
-  if ((__pyx_t_5 != 0)) {
-    __pyx_t_1 = MDB_CREATE;
-  } else {
-    __pyx_t_1 = 0;
-  }
-  __pyx_v_create_flag = __pyx_t_1;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":262
- * 
- *         create_flag = lmdb.MDB_CREATE if create is True else 0
- *         txn_flags = 0 if create else lmdb.MDB_RDONLY             # <<<<<<<<<<<<<<
- *         rc = lmdb.mdb_txn_begin(self.dbenv, NULL, txn_flags, &txn)
- *         logger.info(f'Creating DBs.')
- */
-  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_create); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 262, __pyx_L1_error)
-  if (__pyx_t_5) {
-    __pyx_t_1 = 0;
-  } else {
-    __pyx_t_1 = MDB_RDONLY;
-  }
-  __pyx_v_txn_flags = __pyx_t_1;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":263
- *         create_flag = lmdb.MDB_CREATE if create is True else 0
- *         txn_flags = 0 if create else lmdb.MDB_RDONLY
- *         rc = lmdb.mdb_txn_begin(self.dbenv, NULL, txn_flags, &txn)             # <<<<<<<<<<<<<<
- *         logger.info(f'Creating DBs.')
- *         try:
- */
-  __pyx_v_rc = mdb_txn_begin(__pyx_v_self->dbenv, NULL, __pyx_v_txn_flags, (&__pyx_v_txn));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":264
- *         txn_flags = 0 if create else lmdb.MDB_RDONLY
- *         rc = lmdb.mdb_txn_begin(self.dbenv, NULL, txn_flags, &txn)
- *         logger.info(f'Creating DBs.')             # <<<<<<<<<<<<<<
- *         try:
- *             if len(self.dbi_labels):
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 264, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 264, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 264, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":265
- *         rc = lmdb.mdb_txn_begin(self.dbenv, NULL, txn_flags, &txn)
- *         logger.info(f'Creating DBs.')
- *         try:             # <<<<<<<<<<<<<<
- *             if len(self.dbi_labels):
- *                 for i, dblabel in enumerate(self.dbi_labels):
- */
-  {
-    __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:*/ {
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":266
- *         logger.info(f'Creating DBs.')
- *         try:
- *             if len(self.dbi_labels):             # <<<<<<<<<<<<<<
- *                 for i, dblabel in enumerate(self.dbi_labels):
- *                     flags = self.dbi_flags.get(dblabel, 0) | create_flag
- */
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dbi_labels); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 266, __pyx_L5_error)
-      __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_4 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 266, __pyx_L5_error)
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_5 = (__pyx_t_4 != 0);
-      if (__pyx_t_5) {
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":267
- *         try:
- *             if len(self.dbi_labels):
- *                 for i, dblabel in enumerate(self.dbi_labels):             # <<<<<<<<<<<<<<
- *                     flags = self.dbi_flags.get(dblabel, 0) | create_flag
- *                     _check(lmdb.mdb_dbi_open(
- */
-        __pyx_t_10 = 0;
-        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dbi_labels); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L5_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
-          __pyx_t_6 = __pyx_t_2; __Pyx_INCREF(__pyx_t_6); __pyx_t_4 = 0;
-          __pyx_t_11 = NULL;
-        } else {
-          __pyx_t_4 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 267, __pyx_L5_error)
-          __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 267, __pyx_L5_error)
-        }
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        for (;;) {
-          if (likely(!__pyx_t_11)) {
-            if (likely(PyList_CheckExact(__pyx_t_6))) {
-              if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_6)) break;
-              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-              __pyx_t_2 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 267, __pyx_L5_error)
-              #else
-              __pyx_t_2 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L5_error)
-              __Pyx_GOTREF(__pyx_t_2);
-              #endif
-            } else {
-              if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
-              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-              __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 267, __pyx_L5_error)
-              #else
-              __pyx_t_2 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L5_error)
-              __Pyx_GOTREF(__pyx_t_2);
-              #endif
-            }
-          } else {
-            __pyx_t_2 = __pyx_t_11(__pyx_t_6);
-            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, 267, __pyx_L5_error)
-              }
-              break;
-            }
-            __Pyx_GOTREF(__pyx_t_2);
-          }
-          __Pyx_XDECREF_SET(__pyx_v_dblabel, __pyx_t_2);
-          __pyx_t_2 = 0;
-          __pyx_v_i = __pyx_t_10;
-          __pyx_t_10 = (__pyx_t_10 + 1);
-
-          /* "lakesuperior/store/base_lmdb_store.pyx":268
- *             if len(self.dbi_labels):
- *                 for i, dblabel in enumerate(self.dbi_labels):
- *                     flags = self.dbi_flags.get(dblabel, 0) | create_flag             # <<<<<<<<<<<<<<
- *                     _check(lmdb.mdb_dbi_open(
- *                             txn, dblabel.encode(), flags, self.dbis + i))
- */
-          __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dbi_flags); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 268, __pyx_L5_error)
-          __Pyx_GOTREF(__pyx_t_12);
-          __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 268, __pyx_L5_error)
-          __Pyx_GOTREF(__pyx_t_13);
-          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-          __pyx_t_12 = NULL;
-          __pyx_t_14 = 0;
-          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
-            __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13);
-            if (likely(__pyx_t_12)) {
-              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
-              __Pyx_INCREF(__pyx_t_12);
-              __Pyx_INCREF(function);
-              __Pyx_DECREF_SET(__pyx_t_13, function);
-              __pyx_t_14 = 1;
-            }
-          }
-          #if CYTHON_FAST_PYCALL
-          if (PyFunction_Check(__pyx_t_13)) {
-            PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_dblabel, __pyx_int_0};
-            __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_14, 2+__pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 268, __pyx_L5_error)
-            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-            __Pyx_GOTREF(__pyx_t_2);
-          } else
-          #endif
-          #if CYTHON_FAST_PYCCALL
-          if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
-            PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_dblabel, __pyx_int_0};
-            __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_14, 2+__pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 268, __pyx_L5_error)
-            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-            __Pyx_GOTREF(__pyx_t_2);
-          } else
-          #endif
-          {
-            __pyx_t_15 = PyTuple_New(2+__pyx_t_14); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 268, __pyx_L5_error)
-            __Pyx_GOTREF(__pyx_t_15);
-            if (__pyx_t_12) {
-              __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_12); __pyx_t_12 = NULL;
-            }
-            __Pyx_INCREF(__pyx_v_dblabel);
-            __Pyx_GIVEREF(__pyx_v_dblabel);
-            PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_14, __pyx_v_dblabel);
-            __Pyx_INCREF(__pyx_int_0);
-            __Pyx_GIVEREF(__pyx_int_0);
-            PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_14, __pyx_int_0);
-            __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_15, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 268, __pyx_L5_error)
-            __Pyx_GOTREF(__pyx_t_2);
-            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-          }
-          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __pyx_t_13 = __Pyx_PyInt_From_long(__pyx_v_create_flag); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 268, __pyx_L5_error)
-          __Pyx_GOTREF(__pyx_t_13);
-          __pyx_t_15 = PyNumber_Or(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 268, __pyx_L5_error)
-          __Pyx_GOTREF(__pyx_t_15);
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __Pyx_XDECREF_SET(__pyx_v_flags, __pyx_t_15);
-          __pyx_t_15 = 0;
-
-          /* "lakesuperior/store/base_lmdb_store.pyx":270
- *                     flags = self.dbi_flags.get(dblabel, 0) | create_flag
- *                     _check(lmdb.mdb_dbi_open(
- *                             txn, dblabel.encode(), flags, self.dbis + i))             # <<<<<<<<<<<<<<
- *                     dbi = self.dbis[i]
- *                     logger.info(f'Created DB {dblabel}: {dbi}')
- */
-          __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_dblabel, __pyx_n_s_encode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 270, __pyx_L5_error)
-          __Pyx_GOTREF(__pyx_t_13);
-          __pyx_t_2 = NULL;
-          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
-            __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_13);
-            if (likely(__pyx_t_2)) {
-              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
-              __Pyx_INCREF(__pyx_t_2);
-              __Pyx_INCREF(function);
-              __Pyx_DECREF_SET(__pyx_t_13, function);
-            }
-          }
-          if (__pyx_t_2) {
-            __pyx_t_15 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 270, __pyx_L5_error)
-            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-          } else {
-            __pyx_t_15 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 270, __pyx_L5_error)
-          }
-          __Pyx_GOTREF(__pyx_t_15);
-          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __pyx_t_16 = __Pyx_PyObject_AsString(__pyx_t_15); if (unlikely((!__pyx_t_16) && PyErr_Occurred())) __PYX_ERR(0, 270, __pyx_L5_error)
-          __pyx_t_17 = __Pyx_PyInt_As_unsigned_int(__pyx_v_flags); if (unlikely((__pyx_t_17 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 270, __pyx_L5_error)
-
-          /* "lakesuperior/store/base_lmdb_store.pyx":269
- *                 for i, dblabel in enumerate(self.dbi_labels):
- *                     flags = self.dbi_flags.get(dblabel, 0) | create_flag
- *                     _check(lmdb.mdb_dbi_open(             # <<<<<<<<<<<<<<
- *                             txn, dblabel.encode(), flags, self.dbis + i))
- *                     dbi = self.dbis[i]
- */
-          __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_dbi_open(__pyx_v_txn, __pyx_t_16, __pyx_t_17, (__pyx_v_self->dbis + __pyx_v_i)), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 269, __pyx_L5_error)
-          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-
-          /* "lakesuperior/store/base_lmdb_store.pyx":271
- *                     _check(lmdb.mdb_dbi_open(
- *                             txn, dblabel.encode(), flags, self.dbis + i))
- *                     dbi = self.dbis[i]             # <<<<<<<<<<<<<<
- *                     logger.info(f'Created DB {dblabel}: {dbi}')
- *                     # Open and close cursor to initialize the memory slot.
- */
-          __pyx_v_dbi = (__pyx_v_self->dbis[__pyx_v_i]);
-
-          /* "lakesuperior/store/base_lmdb_store.pyx":272
- *                             txn, dblabel.encode(), flags, self.dbis + i))
- *                     dbi = self.dbis[i]
- *                     logger.info(f'Created DB {dblabel}: {dbi}')             # <<<<<<<<<<<<<<
- *                     # Open and close cursor to initialize the memory slot.
- *                     _check(lmdb.mdb_cursor_open(
- */
-          __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 272, __pyx_L5_error)
-          __Pyx_GOTREF(__pyx_t_13);
-          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 272, __pyx_L5_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __pyx_t_13 = PyTuple_New(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 272, __pyx_L5_error)
-          __Pyx_GOTREF(__pyx_t_13);
-          __pyx_t_3 = 0;
-          __pyx_t_18 = 127;
-          __Pyx_INCREF(__pyx_kp_u_Created_DB);
-          __pyx_t_3 += 11;
-          __Pyx_GIVEREF(__pyx_kp_u_Created_DB);
-          PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_kp_u_Created_DB);
-          __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v_dblabel, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 272, __pyx_L5_error)
-          __Pyx_GOTREF(__pyx_t_12);
-          __pyx_t_18 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12) > __pyx_t_18) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12) : __pyx_t_18;
-          __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12);
-          __Pyx_GIVEREF(__pyx_t_12);
-          PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_12);
-          __pyx_t_12 = 0;
-          __Pyx_INCREF(__pyx_kp_u__6);
-          __pyx_t_3 += 2;
-          __Pyx_GIVEREF(__pyx_kp_u__6);
-          PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_kp_u__6);
-          __pyx_t_12 = __Pyx_PyInt_From_MDB_dbi(__pyx_v_dbi); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 272, __pyx_L5_error)
-          __Pyx_GOTREF(__pyx_t_12);
-          __pyx_t_19 = __Pyx_PyObject_FormatSimple(__pyx_t_12, __pyx_empty_unicode); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 272, __pyx_L5_error)
-          __Pyx_GOTREF(__pyx_t_19);
-          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-          __pyx_t_18 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_19) > __pyx_t_18) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_19) : __pyx_t_18;
-          __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_19);
-          __Pyx_GIVEREF(__pyx_t_19);
-          PyTuple_SET_ITEM(__pyx_t_13, 3, __pyx_t_19);
-          __pyx_t_19 = 0;
-          __pyx_t_19 = __Pyx_PyUnicode_Join(__pyx_t_13, 4, __pyx_t_3, __pyx_t_18); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 272, __pyx_L5_error)
-          __Pyx_GOTREF(__pyx_t_19);
-          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __pyx_t_13 = NULL;
-          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-            __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
-            if (likely(__pyx_t_13)) {
-              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-              __Pyx_INCREF(__pyx_t_13);
-              __Pyx_INCREF(function);
-              __Pyx_DECREF_SET(__pyx_t_2, function);
-            }
-          }
-          if (!__pyx_t_13) {
-            __pyx_t_15 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_19); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 272, __pyx_L5_error)
-            __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-            __Pyx_GOTREF(__pyx_t_15);
-          } else {
-            #if CYTHON_FAST_PYCALL
-            if (PyFunction_Check(__pyx_t_2)) {
-              PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_19};
-              __pyx_t_15 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 272, __pyx_L5_error)
-              __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-              __Pyx_GOTREF(__pyx_t_15);
-              __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-            } else
-            #endif
-            #if CYTHON_FAST_PYCCALL
-            if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-              PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_19};
-              __pyx_t_15 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 272, __pyx_L5_error)
-              __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-              __Pyx_GOTREF(__pyx_t_15);
-              __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-            } else
-            #endif
-            {
-              __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 272, __pyx_L5_error)
-              __Pyx_GOTREF(__pyx_t_12);
-              __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13); __pyx_t_13 = NULL;
-              __Pyx_GIVEREF(__pyx_t_19);
-              PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_19);
-              __pyx_t_19 = 0;
-              __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 272, __pyx_L5_error)
-              __Pyx_GOTREF(__pyx_t_15);
-              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-            }
-          }
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-
-          /* "lakesuperior/store/base_lmdb_store.pyx":274
- *                     logger.info(f'Created DB {dblabel}: {dbi}')
- *                     # Open and close cursor to initialize the memory slot.
- *                     _check(lmdb.mdb_cursor_open(             # <<<<<<<<<<<<<<
- *                         txn, dbi, self.curs + dbi))
- *                     #lmdb.mdb_cursor_close(self.curs[dbi])
- */
-          __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_open(__pyx_v_txn, __pyx_v_dbi, (__pyx_v_self->curs + __pyx_v_dbi)), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 274, __pyx_L5_error)
-
-          /* "lakesuperior/store/base_lmdb_store.pyx":267
- *         try:
- *             if len(self.dbi_labels):
- *                 for i, dblabel in enumerate(self.dbi_labels):             # <<<<<<<<<<<<<<
- *                     flags = self.dbi_flags.get(dblabel, 0) | create_flag
- *                     _check(lmdb.mdb_dbi_open(
- */
-        }
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":266
- *         logger.info(f'Creating DBs.')
- *         try:
- *             if len(self.dbi_labels):             # <<<<<<<<<<<<<<
- *                 for i, dblabel in enumerate(self.dbi_labels):
- *                     flags = self.dbi_flags.get(dblabel, 0) | create_flag
- */
-        goto __pyx_L11;
-      }
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":278
- *                     #lmdb.mdb_cursor_close(self.curs[dbi])
- *             else:
- *                 _check(lmdb.mdb_dbi_open(txn, NULL, 0, self.dbis))             # <<<<<<<<<<<<<<
- *                 _check(lmdb.mdb_cursor_open(txn, self.dbis[0], self.curs))
- *                 #lmdb.mdb_cursor_close(self.curs[self.dbis[0]])
- */
-      /*else*/ {
-        __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_dbi_open(__pyx_v_txn, NULL, 0, __pyx_v_self->dbis), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 278, __pyx_L5_error)
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":279
- *             else:
- *                 _check(lmdb.mdb_dbi_open(txn, NULL, 0, self.dbis))
- *                 _check(lmdb.mdb_cursor_open(txn, self.dbis[0], self.curs))             # <<<<<<<<<<<<<<
- *                 #lmdb.mdb_cursor_close(self.curs[self.dbis[0]])
- * 
- */
-        __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_open(__pyx_v_txn, (__pyx_v_self->dbis[0]), __pyx_v_self->curs), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 279, __pyx_L5_error)
-      }
-      __pyx_L11:;
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":282
- *                 #lmdb.mdb_cursor_close(self.curs[self.dbis[0]])
- * 
- *             _check(lmdb.mdb_txn_commit(txn))             # <<<<<<<<<<<<<<
- *         except:
- *             lmdb.mdb_txn_abort(txn)
- */
-      __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_txn_commit(__pyx_v_txn), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 282, __pyx_L5_error)
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":265
- *         rc = lmdb.mdb_txn_begin(self.dbenv, NULL, txn_flags, &txn)
- *         logger.info(f'Creating DBs.')
- *         try:             # <<<<<<<<<<<<<<
- *             if len(self.dbi_labels):
- *                 for i, dblabel in enumerate(self.dbi_labels):
- */
-    }
-    __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_13); __pyx_t_13 = 0;
-    __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
-    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":283
- * 
- *             _check(lmdb.mdb_txn_commit(txn))
- *         except:             # <<<<<<<<<<<<<<
- *             lmdb.mdb_txn_abort(txn)
- *             raise
- */
-    /*except:*/ {
-      __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._init_dbis", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_15, &__pyx_t_2) < 0) __PYX_ERR(0, 283, __pyx_L7_except_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_GOTREF(__pyx_t_15);
-      __Pyx_GOTREF(__pyx_t_2);
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":284
- *             _check(lmdb.mdb_txn_commit(txn))
- *         except:
- *             lmdb.mdb_txn_abort(txn)             # <<<<<<<<<<<<<<
- *             raise
- * 
- */
-      mdb_txn_abort(__pyx_v_txn);
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":285
- *         except:
- *             lmdb.mdb_txn_abort(txn)
- *             raise             # <<<<<<<<<<<<<<
- * 
- * 
- */
-      __Pyx_GIVEREF(__pyx_t_6);
-      __Pyx_GIVEREF(__pyx_t_15);
-      __Pyx_XGIVEREF(__pyx_t_2);
-      __Pyx_ErrRestoreWithState(__pyx_t_6, __pyx_t_15, __pyx_t_2);
-      __pyx_t_6 = 0; __pyx_t_15 = 0; __pyx_t_2 = 0; 
-      __PYX_ERR(0, 285, __pyx_L7_except_error)
-    }
-    __pyx_L7_except_error:;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":265
- *         rc = lmdb.mdb_txn_begin(self.dbenv, NULL, txn_flags, &txn)
- *         logger.info(f'Creating DBs.')
- *         try:             # <<<<<<<<<<<<<<
- *             if len(self.dbi_labels):
- *                 for i, dblabel in enumerate(self.dbi_labels):
- */
-    __Pyx_XGIVEREF(__pyx_t_7);
-    __Pyx_XGIVEREF(__pyx_t_8);
-    __Pyx_XGIVEREF(__pyx_t_9);
-    __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
-    goto __pyx_L1_error;
-    __pyx_L10_try_end:;
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":239
- * 
- * 
- *     cdef void _init_dbis(self, create=True) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Initialize databases and cursors.
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_12);
-  __Pyx_XDECREF(__pyx_t_13);
-  __Pyx_XDECREF(__pyx_t_15);
-  __Pyx_XDECREF(__pyx_t_19);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._init_dbis", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_dblabel);
-  __Pyx_XDECREF(__pyx_v_flags);
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":288
- * 
- * 
- *     cpdef void close_env(self, bint commit_pending_transaction=False) except *:             # <<<<<<<<<<<<<<
- *         logger.debug('Cleaning up store env.')
- *         if self.is_open:
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7close_env(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_close_env(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_close_env *__pyx_optional_args) {
-  int __pyx_v_commit_pending_transaction = ((int)0);
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  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;
-  PyObject *__pyx_t_6 = NULL;
-  int __pyx_t_7;
-  __Pyx_RefNannySetupContext("close_env", 0);
-  __Pyx_TraceCall("close_env", __pyx_f[0], 288, 0, __PYX_ERR(0, 288, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_commit_pending_transaction = __pyx_optional_args->commit_pending_transaction;
-    }
-  }
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close_env); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 288, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7close_env)) {
-      __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_commit_pending_transaction); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 288, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_4 = __pyx_t_1; __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_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 288, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 288, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-          __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_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 288, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-          __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, 288, __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_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 288, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":289
- * 
- *     cpdef void close_env(self, bint commit_pending_transaction=False) except *:
- *         logger.debug('Cleaning up store env.')             # <<<<<<<<<<<<<<
- *         if self.is_open:
- *             logger.debug('Closing store env.')
- */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 289, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 289, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 289, __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;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":290
- *     cpdef void close_env(self, bint commit_pending_transaction=False) except *:
- *         logger.debug('Cleaning up store env.')
- *         if self.is_open:             # <<<<<<<<<<<<<<
- *             logger.debug('Closing store env.')
- *             if self.is_txn_open is True:
- */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_open); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 290, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 290, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_7) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":291
- *         logger.debug('Cleaning up store env.')
- *         if self.is_open:
- *             logger.debug('Closing store env.')             # <<<<<<<<<<<<<<
- *             if self.is_txn_open is True:
- *                 if commit_pending_transaction:
- */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 291, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); 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_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__8, NULL); 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;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":292
- *         if self.is_open:
- *             logger.debug('Closing store env.')
- *             if self.is_txn_open is True:             # <<<<<<<<<<<<<<
- *                 if commit_pending_transaction:
- *                     self._txn_commit()
- */
-    __pyx_t_7 = ((__pyx_v_self->is_txn_open == 1) != 0);
-    if (__pyx_t_7) {
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":293
- *             logger.debug('Closing store env.')
- *             if self.is_txn_open is True:
- *                 if commit_pending_transaction:             # <<<<<<<<<<<<<<
- *                     self._txn_commit()
- *                 else:
- */
-      __pyx_t_7 = (__pyx_v_commit_pending_transaction != 0);
-      if (__pyx_t_7) {
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":294
- *             if self.is_txn_open is True:
- *                 if commit_pending_transaction:
- *                     self._txn_commit()             # <<<<<<<<<<<<<<
- *                 else:
- *                     self._txn_abort()
- */
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->_txn_commit(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 294, __pyx_L1_error)
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":293
- *             logger.debug('Closing store env.')
- *             if self.is_txn_open is True:
- *                 if commit_pending_transaction:             # <<<<<<<<<<<<<<
- *                     self._txn_commit()
- *                 else:
- */
-        goto __pyx_L5;
-      }
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":296
- *                     self._txn_commit()
- *                 else:
- *                     self._txn_abort()             # <<<<<<<<<<<<<<
- * 
- *             self._clear_stale_readers()
- */
-      /*else*/ {
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->_txn_abort(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 296, __pyx_L1_error)
-      }
-      __pyx_L5:;
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":292
- *         if self.is_open:
- *             logger.debug('Closing store env.')
- *             if self.is_txn_open is True:             # <<<<<<<<<<<<<<
- *                 if commit_pending_transaction:
- *                     self._txn_commit()
- */
-    }
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":298
- *                     self._txn_abort()
- * 
- *             self._clear_stale_readers()             # <<<<<<<<<<<<<<
- * 
- *             PyMem_Free(self.dbis)
- */
-    ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->_clear_stale_readers(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 298, __pyx_L1_error)
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":300
- *             self._clear_stale_readers()
- * 
- *             PyMem_Free(self.dbis)             # <<<<<<<<<<<<<<
- *             PyMem_Free(self.curs)
- *             lmdb.mdb_env_close(self.dbenv)
- */
-    PyMem_Free(__pyx_v_self->dbis);
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":301
- * 
- *             PyMem_Free(self.dbis)
- *             PyMem_Free(self.curs)             # <<<<<<<<<<<<<<
- *             lmdb.mdb_env_close(self.dbenv)
- * 
- */
-    PyMem_Free(__pyx_v_self->curs);
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":302
- *             PyMem_Free(self.dbis)
- *             PyMem_Free(self.curs)
- *             lmdb.mdb_env_close(self.dbenv)             # <<<<<<<<<<<<<<
- * 
- *         self._open = False
- */
-    mdb_env_close(__pyx_v_self->dbenv);
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":290
- *     cpdef void close_env(self, bint commit_pending_transaction=False) except *:
- *         logger.debug('Cleaning up store env.')
- *         if self.is_open:             # <<<<<<<<<<<<<<
- *             logger.debug('Closing store env.')
- *             if self.is_txn_open is True:
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":304
- *             lmdb.mdb_env_close(self.dbenv)
- * 
- *         self._open = False             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_v_self->_open = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":288
- * 
- * 
- *     cpdef void close_env(self, bint commit_pending_transaction=False) except *:             # <<<<<<<<<<<<<<
- *         logger.debug('Cleaning up store env.')
- *         if self.is_open:
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __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_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.close_env", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7close_env(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7close_env(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int __pyx_v_commit_pending_transaction;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("close_env (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_commit_pending_transaction,0};
-    PyObject* values[1] = {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  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 (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_commit_pending_transaction);
-          if (value) { values[0] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "close_env") < 0)) __PYX_ERR(0, 288, __pyx_L3_error)
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    if (values[0]) {
-      __pyx_v_commit_pending_transaction = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_commit_pending_transaction == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 288, __pyx_L3_error)
-    } else {
-      __pyx_v_commit_pending_transaction = ((int)0);
-    }
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("close_env", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 288, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.close_env", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_6close_env(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_commit_pending_transaction);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_6close_env(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, int __pyx_v_commit_pending_transaction) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_close_env __pyx_t_1;
-  PyObject *__pyx_t_2 = NULL;
-  __Pyx_RefNannySetupContext("close_env", 0);
-  __Pyx_TraceCall("close_env (wrapper)", __pyx_f[0], 288, 0, __PYX_ERR(0, 288, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1.__pyx_n = 1;
-  __pyx_t_1.commit_pending_transaction = __pyx_v_commit_pending_transaction;
-  __pyx_vtabptr_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore->close_env(__pyx_v_self, 1, &__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 288, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 288, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.close_env", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":307
- * 
- * 
- *     cpdef void destroy(self, _path='') except *:             # <<<<<<<<<<<<<<
- *         """
- *         Destroy the store.
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_9destroy(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_destroy(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_destroy *__pyx_optional_args) {
-  PyObject *__pyx_v__path = ((PyObject *)__pyx_kp_u_);
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  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_t_10;
-  __Pyx_RefNannySetupContext("destroy", 0);
-  __Pyx_TraceCall("destroy", __pyx_f[0], 307, 0, __PYX_ERR(0, 307, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v__path = __pyx_optional_args->_path;
-    }
-  }
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_destroy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 307, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_9destroy)) {
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v__path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v__path};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v__path};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        {
-          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 307, __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_INCREF(__pyx_v__path);
-          __Pyx_GIVEREF(__pyx_v__path);
-          PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v__path);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":317
- *             general-purpose recursive file and folder delete method!)
- *         """
- *         if path.exists(self.env_path):             # <<<<<<<<<<<<<<
- *             if lmdb.MDB_NOSUBDIR & self.flags:
- *                 try:
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exists); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __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 && unlikely(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_v_self->env_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_self->env_path};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_self->env_path};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-    } else
-    #endif
-    {
-      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 317, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
-      __Pyx_INCREF(__pyx_v_self->env_path);
-      __Pyx_GIVEREF(__pyx_v_self->env_path);
-      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_self->env_path);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 317, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_6) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":318
- *         """
- *         if path.exists(self.env_path):
- *             if lmdb.MDB_NOSUBDIR & self.flags:             # <<<<<<<<<<<<<<
- *                 try:
- *                     os.unlink(self.env_path)
- */
-    __pyx_t_1 = __Pyx_PyInt_From_int(MDB_NOSUBDIR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 318, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 318, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = PyNumber_And(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 318, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 318, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (__pyx_t_6) {
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":319
- *         if path.exists(self.env_path):
- *             if lmdb.MDB_NOSUBDIR & self.flags:
- *                 try:             # <<<<<<<<<<<<<<
- *                     os.unlink(self.env_path)
- *                 except FileNotFoundError:
- */
-      {
-        __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:*/ {
-
-          /* "lakesuperior/store/base_lmdb_store.pyx":320
- *             if lmdb.MDB_NOSUBDIR & self.flags:
- *                 try:
- *                     os.unlink(self.env_path)             # <<<<<<<<<<<<<<
- *                 except FileNotFoundError:
- *                     pass
- */
-          __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L5_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_unlink); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L5_error)
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __pyx_t_3 = NULL;
-          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
-            __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
-            if (likely(__pyx_t_3)) {
-              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-              __Pyx_INCREF(__pyx_t_3);
-              __Pyx_INCREF(function);
-              __Pyx_DECREF_SET(__pyx_t_1, function);
-            }
-          }
-          if (!__pyx_t_3) {
-            __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_self->env_path); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 320, __pyx_L5_error)
-            __Pyx_GOTREF(__pyx_t_5);
-          } else {
-            #if CYTHON_FAST_PYCALL
-            if (PyFunction_Check(__pyx_t_1)) {
-              PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_self->env_path};
-              __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 320, __pyx_L5_error)
-              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-              __Pyx_GOTREF(__pyx_t_5);
-            } else
-            #endif
-            #if CYTHON_FAST_PYCCALL
-            if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
-              PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_self->env_path};
-              __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 320, __pyx_L5_error)
-              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-              __Pyx_GOTREF(__pyx_t_5);
-            } else
-            #endif
-            {
-              __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 320, __pyx_L5_error)
-              __Pyx_GOTREF(__pyx_t_2);
-              __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
-              __Pyx_INCREF(__pyx_v_self->env_path);
-              __Pyx_GIVEREF(__pyx_v_self->env_path);
-              PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_self->env_path);
-              __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 320, __pyx_L5_error)
-              __Pyx_GOTREF(__pyx_t_5);
-              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-            }
-          }
-          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
-          /* "lakesuperior/store/base_lmdb_store.pyx":319
- *         if path.exists(self.env_path):
- *             if lmdb.MDB_NOSUBDIR & self.flags:
- *                 try:             # <<<<<<<<<<<<<<
- *                     os.unlink(self.env_path)
- *                 except FileNotFoundError:
- */
-        }
-        __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_4); __pyx_t_4 = 0;
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":321
- *                 try:
- *                     os.unlink(self.env_path)
- *                 except FileNotFoundError:             # <<<<<<<<<<<<<<
- *                     pass
- *                 try:
- */
-        __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_1, &__pyx_t_2);
-        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_FileNotFoundError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L7_except_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_5, __pyx_t_3);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_ErrRestore(__pyx_t_5, __pyx_t_1, __pyx_t_2);
-        __pyx_t_5 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0;
-        if (__pyx_t_10) {
-          __Pyx_ErrRestore(0,0,0);
-          goto __pyx_L6_exception_handled;
-        }
-        goto __pyx_L7_except_error;
-        __pyx_L7_except_error:;
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":319
- *         if path.exists(self.env_path):
- *             if lmdb.MDB_NOSUBDIR & self.flags:
- *                 try:             # <<<<<<<<<<<<<<
- *                     os.unlink(self.env_path)
- *                 except FileNotFoundError:
- */
-        __Pyx_XGIVEREF(__pyx_t_7);
-        __Pyx_XGIVEREF(__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_7);
-        __Pyx_XGIVEREF(__pyx_t_8);
-        __Pyx_XGIVEREF(__pyx_t_9);
-        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
-        __pyx_L10_try_end:;
-      }
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":323
- *                 except FileNotFoundError:
- *                     pass
- *                 try:             # <<<<<<<<<<<<<<
- *                     os.unlink(self.env_path + '-lock')
- *                 except FileNotFoundError:
- */
-      {
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
-        __Pyx_XGOTREF(__pyx_t_9);
-        __Pyx_XGOTREF(__pyx_t_8);
-        __Pyx_XGOTREF(__pyx_t_7);
-        /*try:*/ {
-
-          /* "lakesuperior/store/base_lmdb_store.pyx":324
- *                     pass
- *                 try:
- *                     os.unlink(self.env_path + '-lock')             # <<<<<<<<<<<<<<
- *                 except FileNotFoundError:
- *                     pass
- */
-          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L11_error)
-          __Pyx_GOTREF(__pyx_t_1);
-          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unlink); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 324, __pyx_L11_error)
-          __Pyx_GOTREF(__pyx_t_5);
-          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __pyx_t_1 = __Pyx_PyUnicode_ConcatSafe(__pyx_v_self->env_path, __pyx_kp_u_lock); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L11_error)
-          __Pyx_GOTREF(__pyx_t_1);
-          __pyx_t_3 = NULL;
-          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
-            __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
-            if (likely(__pyx_t_3)) {
-              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-              __Pyx_INCREF(__pyx_t_3);
-              __Pyx_INCREF(function);
-              __Pyx_DECREF_SET(__pyx_t_5, function);
-            }
-          }
-          if (!__pyx_t_3) {
-            __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L11_error)
-            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            __Pyx_GOTREF(__pyx_t_2);
-          } else {
-            #if CYTHON_FAST_PYCALL
-            if (PyFunction_Check(__pyx_t_5)) {
-              PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
-              __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L11_error)
-              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-              __Pyx_GOTREF(__pyx_t_2);
-              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            } else
-            #endif
-            #if CYTHON_FAST_PYCCALL
-            if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
-              PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
-              __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L11_error)
-              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-              __Pyx_GOTREF(__pyx_t_2);
-              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            } else
-            #endif
-            {
-              __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 324, __pyx_L11_error)
-              __Pyx_GOTREF(__pyx_t_4);
-              __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-              __Pyx_GIVEREF(__pyx_t_1);
-              PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_1);
-              __pyx_t_1 = 0;
-              __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L11_error)
-              __Pyx_GOTREF(__pyx_t_2);
-              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-            }
-          }
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-          /* "lakesuperior/store/base_lmdb_store.pyx":323
- *                 except FileNotFoundError:
- *                     pass
- *                 try:             # <<<<<<<<<<<<<<
- *                     os.unlink(self.env_path + '-lock')
- *                 except FileNotFoundError:
- */
-        }
-        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-        goto __pyx_L16_try_end;
-        __pyx_L11_error:;
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":325
- *                 try:
- *                     os.unlink(self.env_path + '-lock')
- *                 except FileNotFoundError:             # <<<<<<<<<<<<<<
- *                     pass
- *             else:
- */
-        __Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_5, &__pyx_t_4);
-        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_FileNotFoundError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 325, __pyx_L13_except_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_1);
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_ErrRestore(__pyx_t_2, __pyx_t_5, __pyx_t_4);
-        __pyx_t_2 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0;
-        if (__pyx_t_10) {
-          __Pyx_ErrRestore(0,0,0);
-          goto __pyx_L12_exception_handled;
-        }
-        goto __pyx_L13_except_error;
-        __pyx_L13_except_error:;
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":323
- *                 except FileNotFoundError:
- *                     pass
- *                 try:             # <<<<<<<<<<<<<<
- *                     os.unlink(self.env_path + '-lock')
- *                 except FileNotFoundError:
- */
-        __Pyx_XGIVEREF(__pyx_t_9);
-        __Pyx_XGIVEREF(__pyx_t_8);
-        __Pyx_XGIVEREF(__pyx_t_7);
-        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7);
-        goto __pyx_L1_error;
-        __pyx_L12_exception_handled:;
-        __Pyx_XGIVEREF(__pyx_t_9);
-        __Pyx_XGIVEREF(__pyx_t_8);
-        __Pyx_XGIVEREF(__pyx_t_7);
-        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7);
-        __pyx_L16_try_end:;
-      }
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":318
- *         """
- *         if path.exists(self.env_path):
- *             if lmdb.MDB_NOSUBDIR & self.flags:             # <<<<<<<<<<<<<<
- *                 try:
- *                     os.unlink(self.env_path)
- */
-      goto __pyx_L4;
-    }
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":328
- *                     pass
- *             else:
- *                 rmtree(self.env_path)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-    /*else*/ {
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_rmtree); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 328, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_2 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
-        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
-        if (likely(__pyx_t_2)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-          __Pyx_INCREF(__pyx_t_2);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_5, function);
-        }
-      }
-      if (!__pyx_t_2) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->env_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 328, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_5)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_self->env_path};
-          __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 328, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_GOTREF(__pyx_t_4);
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_self->env_path};
-          __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 328, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_GOTREF(__pyx_t_4);
-        } else
-        #endif
-        {
-          __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 328, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
-          __Pyx_INCREF(__pyx_v_self->env_path);
-          __Pyx_GIVEREF(__pyx_v_self->env_path);
-          PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_self->env_path);
-          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 328, __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;
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    }
-    __pyx_L4:;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":317
- *             general-purpose recursive file and folder delete method!)
- *         """
- *         if path.exists(self.env_path):             # <<<<<<<<<<<<<<
- *             if lmdb.MDB_NOSUBDIR & self.flags:
- *                 try:
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":307
- * 
- * 
- *     cpdef void destroy(self, _path='') except *:             # <<<<<<<<<<<<<<
- *         """
- *         Destroy the store.
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __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("lakesuperior.store.base_lmdb_store.BaseLmdbStore.destroy", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_9destroy(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_8destroy[] = "\n        Destroy the store.\n\n        https://www.youtube.com/watch?v=lIVq7FJnPwg\n\n        :param str _path: unused. Left for RDFLib API compatibility. (actually\n            quite dangerous if it were used: it could turn into a\n            general-purpose recursive file and folder delete method!)\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_9destroy(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v__path = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("destroy (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path_2,0};
-    PyObject* values[1] = {0};
-    values[0] = ((PyObject *)__pyx_kp_u_);
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        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 (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_path_2);
-          if (value) { values[0] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "destroy") < 0)) __PYX_ERR(0, 307, __pyx_L3_error)
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v__path = values[0];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("destroy", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 307, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.destroy", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_8destroy(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v__path);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_8destroy(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v__path) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_destroy __pyx_t_1;
-  PyObject *__pyx_t_2 = NULL;
-  __Pyx_RefNannySetupContext("destroy", 0);
-  __Pyx_TraceCall("destroy (wrapper)", __pyx_f[0], 307, 0, __PYX_ERR(0, 307, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1.__pyx_n = 1;
-  __pyx_t_1._path = __pyx_v__path;
-  __pyx_vtabptr_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore->destroy(__pyx_v_self, 1, &__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 307, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.destroy", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-static PyObject *__pyx_gb_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_12generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-
-/* "lakesuperior/store/base_lmdb_store.pyx":334
- * 
- *     @contextmanager
- *     def txn_ctx(self, write=False):             # <<<<<<<<<<<<<<
- *         """
- *         Transaction context manager.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_11txn_ctx(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_10txn_ctx[] = "\n        Transaction context manager.\n\n        :param bool write: Whether a write transaction is to be opened.\n\n        :rtype: lmdb.Transaction\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_11txn_ctx(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_write = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("txn_ctx (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_write,0};
-    PyObject* values[1] = {0};
-    values[0] = ((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  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 (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_write);
-          if (value) { values[0] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "txn_ctx") < 0)) __PYX_ERR(0, 334, __pyx_L3_error)
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_write = values[0];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("txn_ctx", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 334, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.txn_ctx", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_10txn_ctx(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_write);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_10txn_ctx(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_write) {
-  struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx *__pyx_cur_scope;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("txn_ctx", 0);
-  __pyx_cur_scope = (struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx *)__pyx_tp_new_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx(__pyx_ptype_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx, __pyx_empty_tuple, NULL);
-  if (unlikely(!__pyx_cur_scope)) {
-    __pyx_cur_scope = ((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx *)Py_None);
-    __Pyx_INCREF(Py_None);
-    __PYX_ERR(0, 334, __pyx_L1_error)
-  } else {
-    __Pyx_GOTREF(__pyx_cur_scope);
-  }
-  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
-  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
-  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
-  __pyx_cur_scope->__pyx_v_write = __pyx_v_write;
-  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_write);
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_write);
-  {
-    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_12generator, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_txn_ctx, __pyx_n_s_BaseLmdbStore_txn_ctx, __pyx_n_s_lakesuperior_store_base_lmdb_sto); if (unlikely(!gen)) __PYX_ERR(0, 334, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_cur_scope);
-    __Pyx_RefNannyFinishContext();
-    return (PyObject *) gen;
-  }
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.txn_ctx", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_gb_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_12generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
-{
-  struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx *__pyx_cur_scope = ((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx *)__pyx_generator->closure);
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  int __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_begin __pyx_t_8;
-  PyObject *__pyx_t_9 = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("txn_ctx", 0);
-  __Pyx_TraceCall("txn_ctx", __pyx_f[0], 334, 0, __PYX_ERR(0, 334, __pyx_L1_error));
-  switch (__pyx_generator->resume_label) {
-    case 0: goto __pyx_L3_first_run;
-    case 1: goto __pyx_L6_resume_from_yield;
-    case 2: goto __pyx_L13_resume_from_yield;
-    default: /* CPython raises the right error here */
-    __Pyx_TraceReturn(Py_None, 0);
-    __Pyx_RefNannyFinishContext();
-    return NULL;
-  }
-  __pyx_L3_first_run:;
-  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 334, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":342
- *         :rtype: lmdb.Transaction
- *         """
- *         if not self.is_open:             # <<<<<<<<<<<<<<
- *             raise LmdbError('Store is not open.')
- * 
- */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_is_open); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __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, 342, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = ((!__pyx_t_2) != 0);
-  if (unlikely(__pyx_t_3)) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":343
- *         """
- *         if not self.is_open:
- *             raise LmdbError('Store is not open.')             # <<<<<<<<<<<<<<
- * 
- *         if self.is_txn_open:
- */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_LmdbError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 343, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __PYX_ERR(0, 343, __pyx_L1_error)
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":342
- *         :rtype: lmdb.Transaction
- *         """
- *         if not self.is_open:             # <<<<<<<<<<<<<<
- *             raise LmdbError('Store is not open.')
- * 
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":345
- *             raise LmdbError('Store is not open.')
- * 
- *         if self.is_txn_open:             # <<<<<<<<<<<<<<
- *             logger.debug(
- *                     'Transaction is already active. Not opening another one.')
- */
-  __pyx_t_3 = (__pyx_cur_scope->__pyx_v_self->is_txn_open != 0);
-  if (__pyx_t_3) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":346
- * 
- *         if self.is_txn_open:
- *             logger.debug(             # <<<<<<<<<<<<<<
- *                     'Transaction is already active. Not opening another one.')
- *             #logger.debug('before yield')
- */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 346, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_debug); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 346, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":349
- *                     'Transaction is already active. Not opening another one.')
- *             #logger.debug('before yield')
- *             yield             # <<<<<<<<<<<<<<
- *             #logger.debug('after yield')
- *         else:
- */
-    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-    __Pyx_XGIVEREF(__pyx_r);
-    __Pyx_TraceReturn(__pyx_r, 0);
-    __Pyx_RefNannyFinishContext();
-    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
-    /* return from generator, yielding value */
-    __pyx_generator->resume_label = 1;
-    return __pyx_r;
-    __pyx_L6_resume_from_yield:;
-    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 349, __pyx_L1_error)
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":345
- *             raise LmdbError('Store is not open.')
- * 
- *         if self.is_txn_open:             # <<<<<<<<<<<<<<
- *             logger.debug(
- *                     'Transaction is already active. Not opening another one.')
- */
-    goto __pyx_L5;
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":354
- *             #logger.debug('Beginning {} transaction.'.format(
- *             #    'RW' if write else 'RO'))
- *             try:             # <<<<<<<<<<<<<<
- *                 self._txn_begin(write=write)
- *                 self.is_txn_rw = write
- */
-  /*else*/ {
-    {
-      __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
-      __Pyx_XGOTREF(__pyx_t_5);
-      __Pyx_XGOTREF(__pyx_t_6);
-      __Pyx_XGOTREF(__pyx_t_7);
-      /*try:*/ {
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":355
- *             #    'RW' if write else 'RO'))
- *             try:
- *                 self._txn_begin(write=write)             # <<<<<<<<<<<<<<
- *                 self.is_txn_rw = write
- *                 #logger.debug('In txn_ctx, before yield')
- */
-        __pyx_t_8.__pyx_n = 1;
-        __pyx_t_8.write = __pyx_cur_scope->__pyx_v_write;
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_txn_begin(__pyx_cur_scope->__pyx_v_self, &__pyx_t_8); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 355, __pyx_L7_error)
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":356
- *             try:
- *                 self._txn_begin(write=write)
- *                 self.is_txn_rw = write             # <<<<<<<<<<<<<<
- *                 #logger.debug('In txn_ctx, before yield')
- *                 yield
- */
-        if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_is_txn_rw, __pyx_cur_scope->__pyx_v_write) < 0) __PYX_ERR(0, 356, __pyx_L7_error)
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":358
- *                 self.is_txn_rw = write
- *                 #logger.debug('In txn_ctx, before yield')
- *                 yield             # <<<<<<<<<<<<<<
- *                 #logger.debug('In txn_ctx, after yield')
- *                 self._txn_commit()
- */
-        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-        __Pyx_XGIVEREF(__pyx_t_5);
-        __pyx_cur_scope->__pyx_t_0 = __pyx_t_5;
-        __Pyx_XGIVEREF(__pyx_t_6);
-        __pyx_cur_scope->__pyx_t_1 = __pyx_t_6;
-        __Pyx_XGIVEREF(__pyx_t_7);
-        __pyx_cur_scope->__pyx_t_2 = __pyx_t_7;
-        __Pyx_XGIVEREF(__pyx_r);
-        __Pyx_TraceReturn(__pyx_r, 0);
-        __Pyx_RefNannyFinishContext();
-        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
-        /* return from generator, yielding value */
-        __pyx_generator->resume_label = 2;
-        return __pyx_r;
-        __pyx_L13_resume_from_yield:;
-        __pyx_t_5 = __pyx_cur_scope->__pyx_t_0;
-        __pyx_cur_scope->__pyx_t_0 = 0;
-        __Pyx_XGOTREF(__pyx_t_5);
-        __pyx_t_6 = __pyx_cur_scope->__pyx_t_1;
-        __pyx_cur_scope->__pyx_t_1 = 0;
-        __Pyx_XGOTREF(__pyx_t_6);
-        __pyx_t_7 = __pyx_cur_scope->__pyx_t_2;
-        __pyx_cur_scope->__pyx_t_2 = 0;
-        __Pyx_XGOTREF(__pyx_t_7);
-        if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 358, __pyx_L7_error)
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":360
- *                 yield
- *                 #logger.debug('In txn_ctx, after yield')
- *                 self._txn_commit()             # <<<<<<<<<<<<<<
- *                 #logger.debug('after _txn_commit')
- *             except:
- */
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_txn_commit(__pyx_cur_scope->__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 360, __pyx_L7_error)
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":354
- *             #logger.debug('Beginning {} transaction.'.format(
- *             #    'RW' if write else 'RO'))
- *             try:             # <<<<<<<<<<<<<<
- *                 self._txn_begin(write=write)
- *                 self.is_txn_rw = write
- */
-      }
-      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      goto __pyx_L12_try_end;
-      __pyx_L7_error:;
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":362
- *                 self._txn_commit()
- *                 #logger.debug('after _txn_commit')
- *             except:             # <<<<<<<<<<<<<<
- *                 self._txn_abort()
- *                 raise
- */
-      /*except:*/ {
-        __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.txn_ctx", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_9) < 0) __PYX_ERR(0, 362, __pyx_L9_except_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_GOTREF(__pyx_t_9);
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":363
- *                 #logger.debug('after _txn_commit')
- *             except:
- *                 self._txn_abort()             # <<<<<<<<<<<<<<
- *                 raise
- * 
- */
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_txn_abort(__pyx_cur_scope->__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 363, __pyx_L9_except_error)
-
-        /* "lakesuperior/store/base_lmdb_store.pyx":364
- *             except:
- *                 self._txn_abort()
- *                 raise             # <<<<<<<<<<<<<<
- * 
- * 
- */
-        __Pyx_GIVEREF(__pyx_t_4);
-        __Pyx_GIVEREF(__pyx_t_1);
-        __Pyx_XGIVEREF(__pyx_t_9);
-        __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_1, __pyx_t_9);
-        __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_9 = 0; 
-        __PYX_ERR(0, 364, __pyx_L9_except_error)
-      }
-      __pyx_L9_except_error:;
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":354
- *             #logger.debug('Beginning {} transaction.'.format(
- *             #    'RW' if write else 'RO'))
- *             try:             # <<<<<<<<<<<<<<
- *                 self._txn_begin(write=write)
- *                 self.is_txn_rw = write
- */
-      __Pyx_XGIVEREF(__pyx_t_5);
-      __Pyx_XGIVEREF(__pyx_t_6);
-      __Pyx_XGIVEREF(__pyx_t_7);
-      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
-      goto __pyx_L1_error;
-      __pyx_L12_try_end:;
-    }
-  }
-  __pyx_L5:;
-  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":334
- * 
- *     @contextmanager
- *     def txn_ctx(self, write=False):             # <<<<<<<<<<<<<<
- *         """
- *         Transaction context manager.
- */
-
-  /* function exit code */
-  PyErr_SetNone(PyExc_StopIteration);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_AddTraceback("txn_ctx", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
-  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
-  __pyx_generator->resume_label = -1;
-  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":367
- * 
- * 
- *     def begin(self, write=False):             # <<<<<<<<<<<<<<
- *         """
- *         Begin a transaction manually if not already in a txn context.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_14begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_13begin[] = "\n        Begin a transaction manually if not already in a txn context.\n\n        The :py:meth:`txn_ctx` context manager should be used whenever\n            possible rather than this method.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_14begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_write = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("begin (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_write,0};
-    PyObject* values[1] = {0};
-    values[0] = ((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  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 (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_write);
-          if (value) { values[0] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "begin") < 0)) __PYX_ERR(0, 367, __pyx_L3_error)
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_write = values[0];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("begin", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 367, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_13begin(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_write);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_13begin(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_write) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  int __pyx_t_3;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_begin __pyx_t_4;
-  __Pyx_RefNannySetupContext("begin", 0);
-  __Pyx_TraceCall("begin", __pyx_f[0], 367, 0, __PYX_ERR(0, 367, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":374
- *             possible rather than this method.
- *         """
- *         if not self.is_open:             # <<<<<<<<<<<<<<
- *             raise RuntimeError('Store must be opened first.')
- *         #logger.debug('Beginning a {} transaction.'.format(
- */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_open); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 374, __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, 374, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = ((!__pyx_t_2) != 0);
-  if (unlikely(__pyx_t_3)) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":375
- *         """
- *         if not self.is_open:
- *             raise RuntimeError('Store must be opened first.')             # <<<<<<<<<<<<<<
- *         #logger.debug('Beginning a {} transaction.'.format(
- *         #    'read/write' if write else 'read-only'))
- */
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 375, __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(0, 375, __pyx_L1_error)
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":374
- *             possible rather than this method.
- *         """
- *         if not self.is_open:             # <<<<<<<<<<<<<<
- *             raise RuntimeError('Store must be opened first.')
- *         #logger.debug('Beginning a {} transaction.'.format(
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":379
- *         #    'read/write' if write else 'read-only'))
- * 
- *         self._txn_begin(write=write)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_4.__pyx_n = 1;
-  __pyx_t_4.write = __pyx_v_write;
-  ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->_txn_begin(__pyx_v_self, &__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 379, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":367
- * 
- * 
- *     def begin(self, write=False):             # <<<<<<<<<<<<<<
- *         """
- *         Begin a transaction manually if not already in a txn context.
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":382
- * 
- * 
- *     def commit(self):             # <<<<<<<<<<<<<<
- *         """Commit main transaction."""
- *         #logger.debug('Committing transaction.')
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_16commit(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_15commit[] = "Commit main transaction.";
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_16commit(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("commit (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_15commit(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_15commit(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("commit", 0);
-  __Pyx_TraceCall("commit", __pyx_f[0], 382, 0, __PYX_ERR(0, 382, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":385
- *         """Commit main transaction."""
- *         #logger.debug('Committing transaction.')
- *         self._txn_commit()             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->_txn_commit(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 385, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":382
- * 
- * 
- *     def commit(self):             # <<<<<<<<<<<<<<
- *         """Commit main transaction."""
- *         #logger.debug('Committing transaction.')
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.commit", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":388
- * 
- * 
- *     def abort(self):             # <<<<<<<<<<<<<<
- *         """Abort main transaction."""
- *         #logger.debug('Rolling back transaction.')
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_18abort(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_17abort[] = "Abort main transaction.";
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_18abort(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("abort (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_17abort(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_17abort(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("abort", 0);
-  __Pyx_TraceCall("abort", __pyx_f[0], 388, 0, __PYX_ERR(0, 388, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":391
- *         """Abort main transaction."""
- *         #logger.debug('Rolling back transaction.')
- *         self._txn_abort()             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->_txn_abort(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 391, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":388
- * 
- * 
- *     def abort(self):             # <<<<<<<<<<<<<<
- *         """Abort main transaction."""
- *         #logger.debug('Rolling back transaction.')
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":394
- * 
- * 
- *     def rollback(self):             # <<<<<<<<<<<<<<
- *         """Alias for :py:meth:`abort`"""
- *         self.abort()
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_20rollback(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_19rollback[] = "Alias for :py:meth:`abort`";
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_20rollback(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("rollback (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_19rollback(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_19rollback(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  __Pyx_RefNannySetupContext("rollback", 0);
-  __Pyx_TraceCall("rollback", __pyx_f[0], 394, 0, __PYX_ERR(0, 394, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":396
- *     def rollback(self):
- *         """Alias for :py:meth:`abort`"""
- *         self.abort()             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_abort); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 396, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __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, 396, __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, 396, __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;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":394
- * 
- * 
- *     def rollback(self):             # <<<<<<<<<<<<<<
- *         """Alias for :py:meth:`abort`"""
- *         self.abort()
- */
-
-  /* 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("lakesuperior.store.base_lmdb_store.BaseLmdbStore.rollback", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":399
- * 
- * 
- *     def key_exists(self, key, dblabel='', new_txn=True):             # <<<<<<<<<<<<<<
- *         """
- *         Return whether a key exists in a database (Python-facing method).
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_22key_exists(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_21key_exists[] = "\n        Return whether a key exists in a database (Python-facing method).\n\n        Wrap in a new transaction. Only use this if a transaction has not been\n        opened.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_22key_exists(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_key = 0;
-  PyObject *__pyx_v_dblabel = 0;
-  PyObject *__pyx_v_new_txn = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("key_exists (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,&__pyx_n_s_dblabel,&__pyx_n_s_new_txn,0};
-    PyObject* values[3] = {0,0,0};
-    values[1] = ((PyObject *)__pyx_kp_u_);
-    values[2] = ((PyObject *)Py_True);
-    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] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_key)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dblabel);
-          if (value) { values[1] = value; kw_args--; }
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_new_txn);
-          if (value) { values[2] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "key_exists") < 0)) __PYX_ERR(0, 399, __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;
-      }
-    }
-    __pyx_v_key = values[0];
-    __pyx_v_dblabel = values[1];
-    __pyx_v_new_txn = values[2];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("key_exists", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 399, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.key_exists", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_21key_exists(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_key, __pyx_v_dblabel, __pyx_v_new_txn);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_21key_exists(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_dblabel, PyObject *__pyx_v_new_txn) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  PyObject *__pyx_t_10 = NULL;
-  unsigned char *__pyx_t_11;
-  Py_ssize_t __pyx_t_12;
-  unsigned char *__pyx_t_13;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists __pyx_t_14;
-  PyObject *__pyx_t_15 = NULL;
-  __Pyx_RefNannySetupContext("key_exists", 0);
-  __Pyx_TraceCall("key_exists", __pyx_f[0], 399, 0, __PYX_ERR(0, 399, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":406
- *         opened.
- *         """
- *         if new_txn is True:             # <<<<<<<<<<<<<<
- *             with self.txn_ctx():
- *                 return self._key_exists(
- */
-  __pyx_t_1 = (__pyx_v_new_txn == Py_True);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":407
- *         """
- *         if new_txn is True:
- *             with self.txn_ctx():             # <<<<<<<<<<<<<<
- *                 return self._key_exists(
- *                         key, len(key), dblabel=dblabel.encode())
- */
-    /*with:*/ {
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_txn_ctx); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 407, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = NULL;
-      if (CYTHON_UNPACK_METHODS && likely(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_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 407, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      } else {
-        __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 407, __pyx_L1_error)
-      }
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 407, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 407, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_7 = NULL;
-      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
-        if (likely(__pyx_t_7)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-          __Pyx_INCREF(__pyx_t_7);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_5, function);
-        }
-      }
-      if (__pyx_t_7) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 407, __pyx_L4_error)
-        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      } else {
-        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 407, __pyx_L4_error)
-      }
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      /*try:*/ {
-        {
-          __Pyx_PyThreadState_declare
-          __Pyx_PyThreadState_assign
-          __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-          __Pyx_XGOTREF(__pyx_t_8);
-          __Pyx_XGOTREF(__pyx_t_9);
-          __Pyx_XGOTREF(__pyx_t_10);
-          /*try:*/ {
-
-            /* "lakesuperior/store/base_lmdb_store.pyx":408
- *         if new_txn is True:
- *             with self.txn_ctx():
- *                 return self._key_exists(             # <<<<<<<<<<<<<<
- *                         key, len(key), dblabel=dblabel.encode())
- *         else:
- */
-            __Pyx_XDECREF(__pyx_r);
-
-            /* "lakesuperior/store/base_lmdb_store.pyx":409
- *             with self.txn_ctx():
- *                 return self._key_exists(
- *                         key, len(key), dblabel=dblabel.encode())             # <<<<<<<<<<<<<<
- *         else:
- *             return self._key_exists(key, len(key), dblabel=dblabel.encode())
- */
-            __pyx_t_11 = __Pyx_PyObject_AsWritableUString(__pyx_v_key); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 409, __pyx_L8_error)
-            __pyx_t_12 = PyObject_Length(__pyx_v_key); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(0, 409, __pyx_L8_error)
-            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_dblabel, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 409, __pyx_L8_error)
-            __Pyx_GOTREF(__pyx_t_4);
-            __pyx_t_5 = NULL;
-            if (CYTHON_UNPACK_METHODS && likely(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_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 409, __pyx_L8_error)
-              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-            } else {
-              __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 409, __pyx_L8_error)
-            }
-            __Pyx_GOTREF(__pyx_t_3);
-            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __pyx_t_13 = __Pyx_PyObject_AsWritableUString(__pyx_t_3); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 409, __pyx_L8_error)
-
-            /* "lakesuperior/store/base_lmdb_store.pyx":408
- *         if new_txn is True:
- *             with self.txn_ctx():
- *                 return self._key_exists(             # <<<<<<<<<<<<<<
- *                         key, len(key), dblabel=dblabel.encode())
- *         else:
- */
-            __pyx_t_14.__pyx_n = 1;
-            __pyx_t_14.dblabel = __pyx_t_13;
-            __pyx_t_2 = __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists(__pyx_v_self, __pyx_t_11, __pyx_t_12, &__pyx_t_14); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 408, __pyx_L8_error)
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 408, __pyx_L8_error)
-            __Pyx_GOTREF(__pyx_t_3);
-            __pyx_r = __pyx_t_3;
-            __pyx_t_3 = 0;
-            goto __pyx_L12_try_return;
-
-            /* "lakesuperior/store/base_lmdb_store.pyx":407
- *         """
- *         if new_txn is True:
- *             with self.txn_ctx():             # <<<<<<<<<<<<<<
- *                 return self._key_exists(
- *                         key, len(key), dblabel=dblabel.encode())
- */
-          }
-          __pyx_L8_error:;
-          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-          /*except:*/ {
-            __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.key_exists", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5) < 0) __PYX_ERR(0, 407, __pyx_L10_except_error)
-            __Pyx_GOTREF(__pyx_t_3);
-            __Pyx_GOTREF(__pyx_t_4);
-            __Pyx_GOTREF(__pyx_t_5);
-            __pyx_t_7 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 407, __pyx_L10_except_error)
-            __Pyx_GOTREF(__pyx_t_7);
-            __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL);
-            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-            if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 407, __pyx_L10_except_error)
-            __Pyx_GOTREF(__pyx_t_15);
-            __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_15);
-            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-            if (__pyx_t_2 < 0) __PYX_ERR(0, 407, __pyx_L10_except_error)
-            __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
-            if (__pyx_t_1) {
-              __Pyx_GIVEREF(__pyx_t_3);
-              __Pyx_GIVEREF(__pyx_t_4);
-              __Pyx_XGIVEREF(__pyx_t_5);
-              __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_4, __pyx_t_5);
-              __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; 
-              __PYX_ERR(0, 407, __pyx_L10_except_error)
-            }
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-            goto __pyx_L9_exception_handled;
-          }
-          __pyx_L10_except_error:;
-          __Pyx_XGIVEREF(__pyx_t_8);
-          __Pyx_XGIVEREF(__pyx_t_9);
-          __Pyx_XGIVEREF(__pyx_t_10);
-          __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-          goto __pyx_L1_error;
-          __pyx_L12_try_return:;
-          __Pyx_XGIVEREF(__pyx_t_8);
-          __Pyx_XGIVEREF(__pyx_t_9);
-          __Pyx_XGIVEREF(__pyx_t_10);
-          __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-          goto __pyx_L5_return;
-          __pyx_L9_exception_handled:;
-          __Pyx_XGIVEREF(__pyx_t_8);
-          __Pyx_XGIVEREF(__pyx_t_9);
-          __Pyx_XGIVEREF(__pyx_t_10);
-          __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-        }
-      }
-      /*finally:*/ {
-        /*normal exit:*/{
-          if (__pyx_t_6) {
-            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__12, NULL);
-            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-            if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 407, __pyx_L1_error)
-            __Pyx_GOTREF(__pyx_t_10);
-            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-          }
-          goto __pyx_L7;
-        }
-        __pyx_L5_return: {
-          __pyx_t_10 = __pyx_r;
-          __pyx_r = 0;
-          if (__pyx_t_6) {
-            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__13, NULL);
-            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-            if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 407, __pyx_L1_error)
-            __Pyx_GOTREF(__pyx_t_9);
-            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-          }
-          __pyx_r = __pyx_t_10;
-          __pyx_t_10 = 0;
-          goto __pyx_L0;
-        }
-        __pyx_L7:;
-      }
-      goto __pyx_L17;
-      __pyx_L4_error:;
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      goto __pyx_L1_error;
-      __pyx_L17:;
-    }
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":406
- *         opened.
- *         """
- *         if new_txn is True:             # <<<<<<<<<<<<<<
- *             with self.txn_ctx():
- *                 return self._key_exists(
- */
-    goto __pyx_L3;
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":411
- *                         key, len(key), dblabel=dblabel.encode())
- *         else:
- *             return self._key_exists(key, len(key), dblabel=dblabel.encode())             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  /*else*/ {
-    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_13 = __Pyx_PyObject_AsWritableUString(__pyx_v_key); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 411, __pyx_L1_error)
-    __pyx_t_12 = PyObject_Length(__pyx_v_key); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(0, 411, __pyx_L1_error)
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_dblabel, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    if (__pyx_t_3) {
-      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 411, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    } else {
-      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 411, __pyx_L1_error)
-    }
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_11 = __Pyx_PyObject_AsWritableUString(__pyx_t_5); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 411, __pyx_L1_error)
-    __pyx_t_14.__pyx_n = 1;
-    __pyx_t_14.dblabel = __pyx_t_11;
-    __pyx_t_1 = __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists(__pyx_v_self, __pyx_t_13, __pyx_t_12, &__pyx_t_14); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 411, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 411, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-  }
-  __pyx_L3:;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":399
- * 
- * 
- *     def key_exists(self, key, dblabel='', new_txn=True):             # <<<<<<<<<<<<<<
- *         """
- *         Return whether a key exists in a database (Python-facing method).
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.key_exists", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":414
- * 
- * 
- *     cdef inline bint _key_exists(             # <<<<<<<<<<<<<<
- *             self, unsigned char *key, unsigned char klen,
- *             unsigned char *dblabel=b'') except -1:
- */
-
-static CYTHON_INLINE int __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, unsigned char *__pyx_v_key, unsigned char __pyx_v_klen, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists *__pyx_optional_args) {
-  unsigned char *__pyx_v_dblabel = __pyx_k__14;
-  struct MDB_val __pyx_v_key_v;
-  struct MDB_val __pyx_v_data_v;
-  int __pyx_r;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  MDB_dbi __pyx_t_4;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  int __pyx_t_10;
-  __Pyx_RefNannySetupContext("_key_exists", 0);
-  __Pyx_TraceCall("_key_exists", __pyx_f[0], 414, 0, __PYX_ERR(0, 414, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_dblabel = __pyx_optional_args->dblabel;
-    }
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":424
- *         cdef lmdb.MDB_val key_v, data_v
- * 
- *         key_v.mv_data = key             # <<<<<<<<<<<<<<
- *         key_v.mv_size = klen
- *         #logger.debug(
- */
-  __pyx_v_key_v.mv_data = __pyx_v_key;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":425
- * 
- *         key_v.mv_data = key
- *         key_v.mv_size = klen             # <<<<<<<<<<<<<<
- *         #logger.debug(
- *         #        'Checking if key {} with size {} exists...'.format(key, klen))
- */
-  __pyx_v_key_v.mv_size = __pyx_v_klen;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":428
- *         #logger.debug(
- *         #        'Checking if key {} with size {} exists...'.format(key, klen))
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_get(
- *                 self.txn, self.get_dbi(dblabel), &key_v, &data_v))
- */
-  {
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-    __Pyx_XGOTREF(__pyx_t_1);
-    __Pyx_XGOTREF(__pyx_t_2);
-    __Pyx_XGOTREF(__pyx_t_3);
-    /*try:*/ {
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":430
- *         try:
- *             _check(lmdb.mdb_get(
- *                 self.txn, self.get_dbi(dblabel), &key_v, &data_v))             # <<<<<<<<<<<<<<
- *         except KeyNotFoundError:
- *             #logger.debug('...no.')
- */
-      __pyx_t_5.__pyx_n = 1;
-      __pyx_t_5.dblabel = __pyx_v_dblabel;
-      __pyx_t_4 = ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->get_dbi(__pyx_v_self, &__pyx_t_5); 
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":429
- *         #        'Checking if key {} with size {} exists...'.format(key, klen))
- *         try:
- *             _check(lmdb.mdb_get(             # <<<<<<<<<<<<<<
- *                 self.txn, self.get_dbi(dblabel), &key_v, &data_v))
- *         except KeyNotFoundError:
- */
-      __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_get(__pyx_v_self->txn, __pyx_t_4, (&__pyx_v_key_v), (&__pyx_v_data_v)), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 429, __pyx_L3_error)
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":428
- *         #logger.debug(
- *         #        'Checking if key {} with size {} exists...'.format(key, klen))
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_get(
- *                 self.txn, self.get_dbi(dblabel), &key_v, &data_v))
- */
-    }
-    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    goto __pyx_L8_try_end;
-    __pyx_L3_error:;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":431
- *             _check(lmdb.mdb_get(
- *                 self.txn, self.get_dbi(dblabel), &key_v, &data_v))
- *         except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *             #logger.debug('...no.')
- *             return False
- */
-    __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
-    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 431, __pyx_L5_except_error)
-    __Pyx_GOTREF(__pyx_t_9);
-    __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_6, __pyx_t_9);
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
-    __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0;
-    if (__pyx_t_10) {
-      __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._key_exists", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6) < 0) __PYX_ERR(0, 431, __pyx_L5_except_error)
-      __Pyx_GOTREF(__pyx_t_8);
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_GOTREF(__pyx_t_6);
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":433
- *         except KeyNotFoundError:
- *             #logger.debug('...no.')
- *             return False             # <<<<<<<<<<<<<<
- *         #logger.debug('...yes.')
- *         return True
- */
-      __pyx_r = 0;
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      goto __pyx_L6_except_return;
-    }
-    goto __pyx_L5_except_error;
-    __pyx_L5_except_error:;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":428
- *         #logger.debug(
- *         #        'Checking if key {} with size {} exists...'.format(key, klen))
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_get(
- *                 self.txn, self.get_dbi(dblabel), &key_v, &data_v))
- */
-    __Pyx_XGIVEREF(__pyx_t_1);
-    __Pyx_XGIVEREF(__pyx_t_2);
-    __Pyx_XGIVEREF(__pyx_t_3);
-    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-    goto __pyx_L1_error;
-    __pyx_L6_except_return:;
-    __Pyx_XGIVEREF(__pyx_t_1);
-    __Pyx_XGIVEREF(__pyx_t_2);
-    __Pyx_XGIVEREF(__pyx_t_3);
-    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-    goto __pyx_L0;
-    __pyx_L8_try_end:;
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":435
- *             return False
- *         #logger.debug('...yes.')
- *         return True             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_r = 1;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":414
- * 
- * 
- *     cdef inline bint _key_exists(             # <<<<<<<<<<<<<<
- *             self, unsigned char *key, unsigned char klen,
- *             unsigned char *dblabel=b'') except -1:
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._key_exists", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":438
- * 
- * 
- *     def put(self, key, data, dblabel='', flags=0):             # <<<<<<<<<<<<<<
- *         """
- *         Put one key/value pair (Python-facing method).
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_24put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_23put[] = "\n        Put one key/value pair (Python-facing method).\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_24put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_key = 0;
-  PyObject *__pyx_v_data = 0;
-  PyObject *__pyx_v_dblabel = 0;
-  PyObject *__pyx_v_flags = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("put (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,&__pyx_n_s_data,&__pyx_n_s_dblabel,&__pyx_n_s_flags,0};
-    PyObject* values[4] = {0,0,0,0};
-    values[2] = ((PyObject *)__pyx_kp_u_);
-    values[3] = ((PyObject *)__pyx_int_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  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        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] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_key)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("put", 0, 2, 4, 1); __PYX_ERR(0, 438, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dblabel);
-          if (value) { values[2] = value; kw_args--; }
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags);
-          if (value) { values[3] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "put") < 0)) __PYX_ERR(0, 438, __pyx_L3_error)
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_key = values[0];
-    __pyx_v_data = values[1];
-    __pyx_v_dblabel = values[2];
-    __pyx_v_flags = values[3];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("put", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 438, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.put", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_23put(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_key, __pyx_v_data, __pyx_v_dblabel, __pyx_v_flags);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_23put(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_data, PyObject *__pyx_v_dblabel, PyObject *__pyx_v_flags) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  unsigned char *__pyx_t_1;
-  Py_ssize_t __pyx_t_2;
-  unsigned char *__pyx_t_3;
-  Py_ssize_t __pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  unsigned char *__pyx_t_8;
-  unsigned int __pyx_t_9;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__put __pyx_t_10;
-  __Pyx_RefNannySetupContext("put", 0);
-  __Pyx_TraceCall("put", __pyx_f[0], 438, 0, __PYX_ERR(0, 438, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":443
- *         """
- *         self._put(
- *                 key, len(key), data, len(data), dblabel=dblabel.encode(),             # <<<<<<<<<<<<<<
- *                 txn=self.txn, flags=flags)
- * 
- */
-  __pyx_t_1 = __Pyx_PyObject_AsWritableUString(__pyx_v_key); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(0, 443, __pyx_L1_error)
-  __pyx_t_2 = PyObject_Length(__pyx_v_key); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 443, __pyx_L1_error)
-  __pyx_t_3 = __Pyx_PyObject_AsWritableUString(__pyx_v_data); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 443, __pyx_L1_error)
-  __pyx_t_4 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 443, __pyx_L1_error)
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dblabel, __pyx_n_s_encode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 443, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
-    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
-    if (likely(__pyx_t_7)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-      __Pyx_INCREF(__pyx_t_7);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_6, function);
-    }
-  }
-  if (__pyx_t_7) {
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 443, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  } else {
-    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 443, __pyx_L1_error)
-  }
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_8 = __Pyx_PyObject_AsWritableUString(__pyx_t_5); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 443, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":444
- *         self._put(
- *                 key, len(key), data, len(data), dblabel=dblabel.encode(),
- *                 txn=self.txn, flags=flags)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_9 = __Pyx_PyInt_As_unsigned_int(__pyx_v_flags); if (unlikely((__pyx_t_9 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 444, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":442
- *         Put one key/value pair (Python-facing method).
- *         """
- *         self._put(             # <<<<<<<<<<<<<<
- *                 key, len(key), data, len(data), dblabel=dblabel.encode(),
- *                 txn=self.txn, flags=flags)
- */
-  __pyx_t_10.__pyx_n = 3;
-  __pyx_t_10.dblabel = __pyx_t_8;
-  __pyx_t_10.txn = __pyx_v_self->txn;
-  __pyx_t_10.flags = __pyx_t_9;
-  ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->_put(__pyx_v_self, __pyx_t_1, __pyx_t_2, __pyx_t_3, __pyx_t_4, &__pyx_t_10); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 442, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":438
- * 
- * 
- *     def put(self, key, data, dblabel='', flags=0):             # <<<<<<<<<<<<<<
- *         """
- *         Put one key/value pair (Python-facing method).
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.put", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":447
- * 
- * 
- *     cdef void _put(             # <<<<<<<<<<<<<<
- *             self, unsigned char *key, size_t key_size, unsigned char *data,
- *             size_t data_size, unsigned char *dblabel='',
- */
-
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__put(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, unsigned char *__pyx_v_key, size_t __pyx_v_key_size, unsigned char *__pyx_v_data, size_t __pyx_v_data_size, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__put *__pyx_optional_args) {
-  unsigned char *__pyx_v_dblabel = __pyx_k__15;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":450
- *             self, unsigned char *key, size_t key_size, unsigned char *data,
- *             size_t data_size, unsigned char *dblabel='',
- *             lmdb.MDB_txn *txn=NULL, unsigned int flags=0) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Put one key/value pair.
- */
-  MDB_txn *__pyx_v_txn = ((MDB_txn *)NULL);
-  unsigned int __pyx_v_flags = ((unsigned int)0);
-  int __pyx_v_rc;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  MDB_txn *__pyx_t_2;
-  MDB_dbi __pyx_t_3;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi __pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  int __pyx_t_10;
-  PyObject *__pyx_t_11 = NULL;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check __pyx_t_12;
-  __Pyx_RefNannySetupContext("_put", 0);
-  __Pyx_TraceCall("_put", __pyx_f[0], 447, 0, __PYX_ERR(0, 447, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_dblabel = __pyx_optional_args->dblabel;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_txn = __pyx_optional_args->txn;
-        if (__pyx_optional_args->__pyx_n > 2) {
-          __pyx_v_flags = __pyx_optional_args->flags;
-        }
-      }
-    }
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":454
- *         Put one key/value pair.
- *         """
- *         if txn is NULL:             # <<<<<<<<<<<<<<
- *             txn = self.txn
- * 
- */
-  __pyx_t_1 = ((__pyx_v_txn == NULL) != 0);
-  if (__pyx_t_1) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":455
- *         """
- *         if txn is NULL:
- *             txn = self.txn             # <<<<<<<<<<<<<<
- * 
- *         key_v.mv_data = key
- */
-    __pyx_t_2 = __pyx_v_self->txn;
-    __pyx_v_txn = __pyx_t_2;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":454
- *         Put one key/value pair.
- *         """
- *         if txn is NULL:             # <<<<<<<<<<<<<<
- *             txn = self.txn
- * 
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":457
- *             txn = self.txn
- * 
- *         key_v.mv_data = key             # <<<<<<<<<<<<<<
- *         key_v.mv_size = key_size
- *         data_v.mv_data = data
- */
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data = __pyx_v_key;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":458
- * 
- *         key_v.mv_data = key
- *         key_v.mv_size = key_size             # <<<<<<<<<<<<<<
- *         data_v.mv_data = data
- *         data_v.mv_size = data_size
- */
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_size = __pyx_v_key_size;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":459
- *         key_v.mv_data = key
- *         key_v.mv_size = key_size
- *         data_v.mv_data = data             # <<<<<<<<<<<<<<
- *         data_v.mv_size = data_size
- * 
- */
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_data = __pyx_v_data;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":460
- *         key_v.mv_size = key_size
- *         data_v.mv_data = data
- *         data_v.mv_size = data_size             # <<<<<<<<<<<<<<
- * 
- *         #logger.debug('Putting: {}, {} into DB {}'.format(key[: key_size],
- */
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_size = __pyx_v_data_size;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":464
- *         #logger.debug('Putting: {}, {} into DB {}'.format(key[: key_size],
- *         #    data[: data_size], dblabel))
- *         rc = lmdb.mdb_put(txn, self.get_dbi(dblabel), &key_v, &data_v, flags)             # <<<<<<<<<<<<<<
- *         _check(rc, 'Error putting data: {}, {}'.format(
- *                 key[: key_size], data[: data_size]))
- */
-  __pyx_t_4.__pyx_n = 1;
-  __pyx_t_4.dblabel = __pyx_v_dblabel;
-  __pyx_t_3 = ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->get_dbi(__pyx_v_self, &__pyx_t_4); 
-  __pyx_v_rc = mdb_put(__pyx_v_txn, __pyx_t_3, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), __pyx_v_flags);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":465
- *         #    data[: data_size], dblabel))
- *         rc = lmdb.mdb_put(txn, self.get_dbi(dblabel), &key_v, &data_v, flags)
- *         _check(rc, 'Error putting data: {}, {}'.format(             # <<<<<<<<<<<<<<
- *                 key[: key_size], data[: data_size]))
- * 
- */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Error_putting_data, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 465, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":466
- *         rc = lmdb.mdb_put(txn, self.get_dbi(dblabel), &key_v, &data_v, flags)
- *         _check(rc, 'Error putting data: {}, {}'.format(
- *                 key[: key_size], data[: data_size]))             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_7 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_key) + 0, __pyx_v_key_size - 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 466, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_8 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_data) + 0, __pyx_v_data_size - 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 466, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_8);
-  __pyx_t_9 = NULL;
-  __pyx_t_10 = 0;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
-    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
-    if (likely(__pyx_t_9)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-      __Pyx_INCREF(__pyx_t_9);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_6, function);
-      __pyx_t_10 = 1;
-    }
-  }
-  #if CYTHON_FAST_PYCALL
-  if (PyFunction_Check(__pyx_t_6)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_7, __pyx_t_8};
-    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 465, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-  } else
-  #endif
-  #if CYTHON_FAST_PYCCALL
-  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_7, __pyx_t_8};
-    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 465, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-  } else
-  #endif
-  {
-    __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 465, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_11);
-    if (__pyx_t_9) {
-      __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
-    }
-    __Pyx_GIVEREF(__pyx_t_7);
-    PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_7);
-    __Pyx_GIVEREF(__pyx_t_8);
-    PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_8);
-    __pyx_t_7 = 0;
-    __pyx_t_8 = 0;
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 465, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-  }
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":465
- *         #    data[: data_size], dblabel))
- *         rc = lmdb.mdb_put(txn, self.get_dbi(dblabel), &key_v, &data_v, flags)
- *         _check(rc, 'Error putting data: {}, {}'.format(             # <<<<<<<<<<<<<<
- *                 key[: key_size], data[: data_size]))
- * 
- */
-  if (!(likely(PyUnicode_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 465, __pyx_L1_error)
-  __pyx_t_12.__pyx_n = 1;
-  __pyx_t_12.message = ((PyObject*)__pyx_t_5);
-  __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(__pyx_v_rc, &__pyx_t_12); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 465, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":447
- * 
- * 
- *     cdef void _put(             # <<<<<<<<<<<<<<
- *             self, unsigned char *key, size_t key_size, unsigned char *data,
- *             size_t data_size, unsigned char *dblabel='',
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_XDECREF(__pyx_t_11);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._put", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":469
- * 
- * 
- *     cpdef bytes get_data(self, key, dblabel=''):             # <<<<<<<<<<<<<<
- *         """
- *         Get a single value (non-dup) for a key (Python-facing method).
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_26get_data(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_data(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_key, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_data *__pyx_optional_args) {
-  PyObject *__pyx_v_dblabel = ((PyObject *)__pyx_kp_u_);
-  struct MDB_val __pyx_v_rv;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  unsigned char *__pyx_t_10;
-  Py_ssize_t __pyx_t_11;
-  unsigned char *__pyx_t_12;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__get_data __pyx_t_13;
-  __Pyx_RefNannySetupContext("get_data", 0);
-  __Pyx_TraceCall("get_data", __pyx_f[0], 469, 0, __PYX_ERR(0, 469, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_dblabel = __pyx_optional_args->dblabel;
-    }
-  }
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 469, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_26get_data)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      __pyx_t_5 = 0;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-          __pyx_t_5 = 1;
-        }
-      }
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_key, __pyx_v_dblabel};
-        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 469, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_key, __pyx_v_dblabel};
-        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 469, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else
-      #endif
-      {
-        __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 469, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        if (__pyx_t_4) {
-          __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
-        }
-        __Pyx_INCREF(__pyx_v_key);
-        __Pyx_GIVEREF(__pyx_v_key);
-        PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_key);
-        __Pyx_INCREF(__pyx_v_dblabel);
-        __Pyx_GIVEREF(__pyx_v_dblabel);
-        PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_dblabel);
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 469, __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;
-      if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 469, __pyx_L1_error)
-      __pyx_r = ((PyObject*)__pyx_t_2);
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":474
- *         """
- *         cdef lmdb.MDB_val rv
- *         try:             # <<<<<<<<<<<<<<
- *             self._get_data(key, len(key), &rv, dblabel=dblabel.encode())
- * 
- */
-  {
-    __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:*/ {
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":475
- *         cdef lmdb.MDB_val rv
- *         try:
- *             self._get_data(key, len(key), &rv, dblabel=dblabel.encode())             # <<<<<<<<<<<<<<
- * 
- *             return (<unsigned char *>rv.mv_data)[: rv.mv_size]
- */
-      __pyx_t_10 = __Pyx_PyObject_AsWritableUString(__pyx_v_key); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 475, __pyx_L3_error)
-      __pyx_t_11 = PyObject_Length(__pyx_v_key); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 475, __pyx_L3_error)
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dblabel, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 475, __pyx_L3_error)
-      __Pyx_GOTREF(__pyx_t_2);
-      __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, 475, __pyx_L3_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, 475, __pyx_L3_error)
-      }
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_12 = __Pyx_PyObject_AsWritableUString(__pyx_t_1); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(0, 475, __pyx_L3_error)
-      __pyx_t_13.__pyx_n = 1;
-      __pyx_t_13.dblabel = __pyx_t_12;
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->_get_data(__pyx_v_self, __pyx_t_10, __pyx_t_11, (&__pyx_v_rv), &__pyx_t_13); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 475, __pyx_L3_error)
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":477
- *             self._get_data(key, len(key), &rv, dblabel=dblabel.encode())
- * 
- *             return (<unsigned char *>rv.mv_data)[: rv.mv_size]             # <<<<<<<<<<<<<<
- *         except KeyNotFoundError:
- *             return None
- */
-      __Pyx_XDECREF(__pyx_r);
-      __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(((const char*)((unsigned char *)__pyx_v_rv.mv_data)) + 0, __pyx_v_rv.mv_size - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 477, __pyx_L3_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_r = ((PyObject*)__pyx_t_1);
-      __pyx_t_1 = 0;
-      goto __pyx_L7_try_return;
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":474
- *         """
- *         cdef lmdb.MDB_val rv
- *         try:             # <<<<<<<<<<<<<<
- *             self._get_data(key, len(key), &rv, dblabel=dblabel.encode())
- * 
- */
-    }
-    __pyx_L3_error:;
-    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":478
- * 
- *             return (<unsigned char *>rv.mv_data)[: rv.mv_size]
- *         except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *             return None
- * 
- */
-    __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 478, __pyx_L5_except_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_6);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-    __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
-    if (__pyx_t_5) {
-      __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.get_data", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 478, __pyx_L5_except_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_GOTREF(__pyx_t_1);
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":479
- *             return (<unsigned char *>rv.mv_data)[: rv.mv_size]
- *         except KeyNotFoundError:
- *             return None             # <<<<<<<<<<<<<<
- * 
- * 
- */
-      __Pyx_XDECREF(__pyx_r);
-      __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      goto __pyx_L6_except_return;
-    }
-    goto __pyx_L5_except_error;
-    __pyx_L5_except_error:;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":474
- *         """
- *         cdef lmdb.MDB_val rv
- *         try:             # <<<<<<<<<<<<<<
- *             self._get_data(key, len(key), &rv, dblabel=dblabel.encode())
- * 
- */
-    __Pyx_XGIVEREF(__pyx_t_7);
-    __Pyx_XGIVEREF(__pyx_t_8);
-    __Pyx_XGIVEREF(__pyx_t_9);
-    __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
-    goto __pyx_L1_error;
-    __pyx_L7_try_return:;
-    __Pyx_XGIVEREF(__pyx_t_7);
-    __Pyx_XGIVEREF(__pyx_t_8);
-    __Pyx_XGIVEREF(__pyx_t_9);
-    __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
-    goto __pyx_L0;
-    __pyx_L6_except_return:;
-    __Pyx_XGIVEREF(__pyx_t_7);
-    __Pyx_XGIVEREF(__pyx_t_8);
-    __Pyx_XGIVEREF(__pyx_t_9);
-    __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
-    goto __pyx_L0;
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":469
- * 
- * 
- *     cpdef bytes get_data(self, key, dblabel=''):             # <<<<<<<<<<<<<<
- *         """
- *         Get a single value (non-dup) for a key (Python-facing 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_6);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.get_data", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_26get_data(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_25get_data[] = "\n        Get a single value (non-dup) for a key (Python-facing method).\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_26get_data(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_key = 0;
-  PyObject *__pyx_v_dblabel = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("get_data (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,&__pyx_n_s_dblabel,0};
-    PyObject* values[2] = {0,0};
-    values[1] = ((PyObject *)__pyx_kp_u_);
-    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] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_key)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dblabel);
-          if (value) { values[1] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_data") < 0)) __PYX_ERR(0, 469, __pyx_L3_error)
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        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;
-      }
-    }
-    __pyx_v_key = values[0];
-    __pyx_v_dblabel = values[1];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("get_data", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 469, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.get_data", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_25get_data(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_key, __pyx_v_dblabel);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_25get_data(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_dblabel) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_data __pyx_t_2;
-  __Pyx_RefNannySetupContext("get_data", 0);
-  __Pyx_TraceCall("get_data (wrapper)", __pyx_f[0], 469, 0, __PYX_ERR(0, 469, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2.__pyx_n = 1;
-  __pyx_t_2.dblabel = __pyx_v_dblabel;
-  __pyx_t_1 = __pyx_vtabptr_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore->get_data(__pyx_v_self, __pyx_v_key, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 469, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.get_data", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":482
- * 
- * 
- *     cdef void _get_data(             # <<<<<<<<<<<<<<
- *             self, unsigned char *key, size_t klen, lmdb.MDB_val *rv,
- *             unsigned char *dblabel='') except *:
- */
-
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__get_data(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, unsigned char *__pyx_v_key, CYTHON_UNUSED size_t __pyx_v_klen, struct MDB_val *__pyx_v_rv, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__get_data *__pyx_optional_args) {
-  unsigned char *__pyx_v_dblabel = __pyx_k__16;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  size_t __pyx_t_1;
-  MDB_dbi __pyx_t_2;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check __pyx_t_9;
-  __Pyx_RefNannySetupContext("_get_data", 0);
-  __Pyx_TraceCall("_get_data", __pyx_f[0], 482, 0, __PYX_ERR(0, 482, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_dblabel = __pyx_optional_args->dblabel;
-    }
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":491
- *             unsigned char *ret
- * 
- *         key_v.mv_data = key             # <<<<<<<<<<<<<<
- *         key_v.mv_size = len(key)
- * 
- */
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data = __pyx_v_key;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":492
- * 
- *         key_v.mv_data = key
- *         key_v.mv_size = len(key)             # <<<<<<<<<<<<<<
- * 
- *         _check(
- */
-  __pyx_t_1 = strlen(((char const *)__pyx_v_key)); 
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_size = __pyx_t_1;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":495
- * 
- *         _check(
- *             lmdb.mdb_get(self.txn, self.get_dbi(dblabel), &key_v, rv),             # <<<<<<<<<<<<<<
- *             'Error getting data for key \'{}\'.'.format(key.decode()))
- * 
- */
-  __pyx_t_3.__pyx_n = 1;
-  __pyx_t_3.dblabel = __pyx_v_dblabel;
-  __pyx_t_2 = ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->get_dbi(__pyx_v_self, &__pyx_t_3); 
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":496
- *         _check(
- *             lmdb.mdb_get(self.txn, self.get_dbi(dblabel), &key_v, rv),
- *             'Error getting data for key \'{}\'.'.format(key.decode()))             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Error_getting_data_for_key, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 496, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_decode_c_string(((char const *)__pyx_v_key), 0, strlen(((char const *)__pyx_v_key)), NULL, NULL, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 496, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
-    if (likely(__pyx_t_7)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-      __Pyx_INCREF(__pyx_t_7);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_5, function);
-    }
-  }
-  if (!__pyx_t_7) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 496, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_5)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
-      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 496, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
-      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 496, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 496, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_8);
-      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
-      __Pyx_GIVEREF(__pyx_t_6);
-      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6);
-      __pyx_t_6 = 0;
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 496, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (!(likely(PyUnicode_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 496, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":494
- *         key_v.mv_size = len(key)
- * 
- *         _check(             # <<<<<<<<<<<<<<
- *             lmdb.mdb_get(self.txn, self.get_dbi(dblabel), &key_v, rv),
- *             'Error getting data for key \'{}\'.'.format(key.decode()))
- */
-  __pyx_t_9.__pyx_n = 1;
-  __pyx_t_9.message = ((PyObject*)__pyx_t_4);
-  __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_get(__pyx_v_self->txn, __pyx_t_2, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), __pyx_v_rv), &__pyx_t_9); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 494, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":482
- * 
- * 
- *     cdef void _get_data(             # <<<<<<<<<<<<<<
- *             self, unsigned char *key, size_t klen, lmdb.MDB_val *rv,
- *             unsigned char *dblabel='') except *:
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._get_data", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":499
- * 
- * 
- *     def delete(self, key, dblabel=''):             # <<<<<<<<<<<<<<
- *         """
- *         Delete one single value by key. Python-facing method.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_28delete(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_27delete[] = "\n        Delete one single value by key. Python-facing method.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_28delete(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_key = 0;
-  PyObject *__pyx_v_dblabel = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("delete (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,&__pyx_n_s_dblabel,0};
-    PyObject* values[2] = {0,0};
-    values[1] = ((PyObject *)__pyx_kp_u_);
-    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] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_key)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dblabel);
-          if (value) { values[1] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "delete") < 0)) __PYX_ERR(0, 499, __pyx_L3_error)
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        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;
-      }
-    }
-    __pyx_v_key = values[0];
-    __pyx_v_dblabel = values[1];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("delete", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 499, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_27delete(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_key, __pyx_v_dblabel);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_27delete(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_dblabel) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  unsigned char *__pyx_t_1;
-  Py_ssize_t __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  unsigned char *__pyx_t_6;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__delete __pyx_t_7;
-  __Pyx_RefNannySetupContext("delete", 0);
-  __Pyx_TraceCall("delete", __pyx_f[0], 499, 0, __PYX_ERR(0, 499, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":503
- *         Delete one single value by key. Python-facing method.
- *         """
- *         self._delete(key, len(key), dblabel.encode())             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_1 = __Pyx_PyObject_AsWritableUString(__pyx_v_key); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(0, 503, __pyx_L1_error)
-  __pyx_t_2 = PyObject_Length(__pyx_v_key); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 503, __pyx_L1_error)
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_dblabel, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 503, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(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_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 503, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 503, __pyx_L1_error)
-  }
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_6 = __Pyx_PyObject_AsWritableUString(__pyx_t_3); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 503, __pyx_L1_error)
-  __pyx_t_7.__pyx_n = 1;
-  __pyx_t_7.dblabel = __pyx_t_6;
-  ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->_delete(__pyx_v_self, __pyx_t_1, __pyx_t_2, &__pyx_t_7); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 503, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":499
- * 
- * 
- *     def delete(self, key, dblabel=''):             # <<<<<<<<<<<<<<
- *         """
- *         Delete one single value by key. Python-facing method.
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":506
- * 
- * 
- *     cdef void _delete(             # <<<<<<<<<<<<<<
- *             self, unsigned char *key, size_t klen,
- *             unsigned char *dblabel=b'') except *:
- */
-
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__delete(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, unsigned char *__pyx_v_key, size_t __pyx_v_klen, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__delete *__pyx_optional_args) {
-  unsigned char *__pyx_v_dblabel = __pyx_k__17;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  MDB_dbi __pyx_t_4;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  int __pyx_t_10;
-  __Pyx_RefNannySetupContext("_delete", 0);
-  __Pyx_TraceCall("_delete", __pyx_f[0], 506, 0, __PYX_ERR(0, 506, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_dblabel = __pyx_optional_args->dblabel;
-    }
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":514
- *         TODO Allow deleting duplicate keys.
- *         """
- *         key_v.mv_data = key             # <<<<<<<<<<<<<<
- *         key_v.mv_size = klen
- *         try:
- */
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data = __pyx_v_key;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":515
- *         """
- *         key_v.mv_data = key
- *         key_v.mv_size = klen             # <<<<<<<<<<<<<<
- *         try:
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(dblabel), &key_v, NULL))
- */
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_size = __pyx_v_klen;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":516
- *         key_v.mv_data = key
- *         key_v.mv_size = klen
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(dblabel), &key_v, NULL))
- *         except KeyNotFoundError:
- */
-  {
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-    __Pyx_XGOTREF(__pyx_t_1);
-    __Pyx_XGOTREF(__pyx_t_2);
-    __Pyx_XGOTREF(__pyx_t_3);
-    /*try:*/ {
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":517
- *         key_v.mv_size = klen
- *         try:
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(dblabel), &key_v, NULL))             # <<<<<<<<<<<<<<
- *         except KeyNotFoundError:
- *             pass
- */
-      __pyx_t_5.__pyx_n = 1;
-      __pyx_t_5.dblabel = __pyx_v_dblabel;
-      __pyx_t_4 = ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->get_dbi(__pyx_v_self, &__pyx_t_5); 
-      __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_del(__pyx_v_self->txn, __pyx_t_4, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), NULL), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 517, __pyx_L3_error)
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":516
- *         key_v.mv_data = key
- *         key_v.mv_size = klen
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(dblabel), &key_v, NULL))
- *         except KeyNotFoundError:
- */
-    }
-    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    goto __pyx_L8_try_end;
-    __pyx_L3_error:;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":518
- *         try:
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(dblabel), &key_v, NULL))
- *         except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *             pass
- * 
- */
-    __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
-    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 518, __pyx_L5_except_error)
-    __Pyx_GOTREF(__pyx_t_9);
-    __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_6, __pyx_t_9);
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
-    __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0;
-    if (__pyx_t_10) {
-      __Pyx_ErrRestore(0,0,0);
-      goto __pyx_L4_exception_handled;
-    }
-    goto __pyx_L5_except_error;
-    __pyx_L5_except_error:;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":516
- *         key_v.mv_data = key
- *         key_v.mv_size = klen
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(dblabel), &key_v, NULL))
- *         except KeyNotFoundError:
- */
-    __Pyx_XGIVEREF(__pyx_t_1);
-    __Pyx_XGIVEREF(__pyx_t_2);
-    __Pyx_XGIVEREF(__pyx_t_3);
-    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-    goto __pyx_L1_error;
-    __pyx_L4_exception_handled:;
-    __Pyx_XGIVEREF(__pyx_t_1);
-    __Pyx_XGIVEREF(__pyx_t_2);
-    __Pyx_XGIVEREF(__pyx_t_3);
-    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-    __pyx_L8_try_end:;
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":506
- * 
- * 
- *     cdef void _delete(             # <<<<<<<<<<<<<<
- *             self, unsigned char *key, size_t klen,
- *             unsigned char *dblabel=b'') except *:
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":522
- * 
- * 
- *     cpdef dict stats(self):             # <<<<<<<<<<<<<<
- *         """Gather statistics about the database."""
- *         return self._stats()
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_30stats(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_stats(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  __Pyx_RefNannySetupContext("stats", 0);
-  __Pyx_TraceCall("stats", __pyx_f[0], 522, 0, __PYX_ERR(0, 522, __pyx_L1_error));
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_30stats)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 522, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 522, __pyx_L1_error)
-      }
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 522, __pyx_L1_error)
-      __pyx_r = ((PyObject*)__pyx_t_2);
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":524
- *     cpdef dict stats(self):
- *         """Gather statistics about the database."""
- *         return self._stats()             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->_stats(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 524, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":522
- * 
- * 
- *     cpdef dict stats(self):             # <<<<<<<<<<<<<<
- *         """Gather statistics about the database."""
- *         return self._stats()
- */
-
-  /* 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_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.stats", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_30stats(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_29stats[] = "Gather statistics about the database.";
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_30stats(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("stats (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_29stats(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_29stats(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("stats", 0);
-  __Pyx_TraceCall("stats (wrapper)", __pyx_f[0], 522, 0, __PYX_ERR(0, 522, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_stats(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.stats", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":527
- * 
- * 
- *     cdef dict _stats(self):             # <<<<<<<<<<<<<<
- *         """
- *         Gather statistics about the database.
- */
-
-static PyObject *__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__stats(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  struct MDB_stat __pyx_v_stat;
-  CYTHON_UNUSED size_t __pyx_v_entries;
-  PyObject *__pyx_v_env_stats = NULL;
-  PyObject *__pyx_v_db_stats = NULL;
-  PyObject *__pyx_v_i = NULL;
-  PyObject *__pyx_v_dblabel = NULL;
-  PyObject *__pyx_7genexpr__pyx_v_db_label = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  Py_ssize_t __pyx_t_4;
-  PyObject *(*__pyx_t_5)(PyObject *);
-  Py_ssize_t __pyx_t_6;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check __pyx_t_7;
-  size_t __pyx_t_8;
-  PyObject *__pyx_t_9 = NULL;
-  PyObject *__pyx_t_10 = NULL;
-  PyObject *__pyx_t_11 = NULL;
-  __Pyx_RefNannySetupContext("_stats", 0);
-  __Pyx_TraceCall("_stats", __pyx_f[0], 527, 0, __PYX_ERR(0, 527, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":537
- *             size_t entries
- * 
- *         lmdb.mdb_env_stat(self.dbenv, &stat)             # <<<<<<<<<<<<<<
- *         env_stats = <dict>stat
- * 
- */
-  (void)(mdb_env_stat(__pyx_v_self->dbenv, (&__pyx_v_stat)));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":538
- * 
- *         lmdb.mdb_env_stat(self.dbenv, &stat)
- *         env_stats = <dict>stat             # <<<<<<<<<<<<<<
- * 
- *         db_stats = {}
- */
-  __pyx_t_1 = __pyx_convert__to_py_struct__MDB_stat(__pyx_v_stat); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 538, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(PyDict_CheckExact(__pyx_t_1))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 538, __pyx_L1_error)
-  __pyx_t_2 = __pyx_t_1;
-  __Pyx_INCREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_v_env_stats = ((PyObject*)__pyx_t_2);
-  __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":540
- *         env_stats = <dict>stat
- * 
- *         db_stats = {}             # <<<<<<<<<<<<<<
- *         for i, dblabel in enumerate(self.dbi_labels):
- *             _check(
- */
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 540, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_v_db_stats = ((PyObject*)__pyx_t_2);
-  __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":541
- * 
- *         db_stats = {}
- *         for i, dblabel in enumerate(self.dbi_labels):             # <<<<<<<<<<<<<<
- *             _check(
- *                 lmdb.mdb_stat(self.txn, self.dbis[i], &stat),
- */
-  __Pyx_INCREF(__pyx_int_0);
-  __pyx_t_2 = __pyx_int_0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dbi_labels); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
-    __pyx_t_3 = __pyx_t_1; __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_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 541, __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, 541, __pyx_L1_error)
-  }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  for (;;) {
-    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_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 541, __pyx_L1_error)
-        #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        #endif
-      } else {
-        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
-        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 541, __pyx_L1_error)
-        #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        #endif
-      }
-    } else {
-      __pyx_t_1 = __pyx_t_5(__pyx_t_3);
-      if (unlikely(!__pyx_t_1)) {
-        PyObject* exc_type = PyErr_Occurred();
-        if (exc_type) {
-          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 541, __pyx_L1_error)
-        }
-        break;
-      }
-      __Pyx_GOTREF(__pyx_t_1);
-    }
-    __Pyx_XDECREF_SET(__pyx_v_dblabel, __pyx_t_1);
-    __pyx_t_1 = 0;
-    __Pyx_INCREF(__pyx_t_2);
-    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
-    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_2);
-    __pyx_t_2 = __pyx_t_1;
-    __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":543
- *         for i, dblabel in enumerate(self.dbi_labels):
- *             _check(
- *                 lmdb.mdb_stat(self.txn, self.dbis[i], &stat),             # <<<<<<<<<<<<<<
- *                 'Error getting datbase stats: {}')
- *             entries = stat.ms_entries
- */
-    __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 543, __pyx_L1_error)
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":542
- *         db_stats = {}
- *         for i, dblabel in enumerate(self.dbi_labels):
- *             _check(             # <<<<<<<<<<<<<<
- *                 lmdb.mdb_stat(self.txn, self.dbis[i], &stat),
- *                 'Error getting datbase stats: {}')
- */
-    __pyx_t_7.__pyx_n = 1;
-    __pyx_t_7.message = __pyx_kp_u_Error_getting_datbase_stats;
-    __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_stat(__pyx_v_self->txn, (__pyx_v_self->dbis[__pyx_t_6]), (&__pyx_v_stat)), &__pyx_t_7); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 542, __pyx_L1_error)
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":545
- *                 lmdb.mdb_stat(self.txn, self.dbis[i], &stat),
- *                 'Error getting datbase stats: {}')
- *             entries = stat.ms_entries             # <<<<<<<<<<<<<<
- *             db_stats[dblabel.encode()] = <dict>stat
- * 
- */
-    __pyx_t_8 = __pyx_v_stat.ms_entries;
-    __pyx_v_entries = __pyx_t_8;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":546
- *                 'Error getting datbase stats: {}')
- *             entries = stat.ms_entries
- *             db_stats[dblabel.encode()] = <dict>stat             # <<<<<<<<<<<<<<
- * 
- *         return {
- */
-    __pyx_t_1 = __pyx_convert__to_py_struct__MDB_stat(__pyx_v_stat); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!(likely(PyDict_CheckExact(__pyx_t_1))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 546, __pyx_L1_error)
-    __pyx_t_9 = __pyx_t_1;
-    __Pyx_INCREF(__pyx_t_9);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_dblabel, __pyx_n_s_encode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 546, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_10);
-    __pyx_t_11 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
-      __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
-      if (likely(__pyx_t_11)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
-        __Pyx_INCREF(__pyx_t_11);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_10, function);
-      }
-    }
-    if (__pyx_t_11) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-    } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error)
-    }
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    if (unlikely(PyDict_SetItem(__pyx_v_db_stats, __pyx_t_1, __pyx_t_9) < 0)) __PYX_ERR(0, 546, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":541
- * 
- *         db_stats = {}
- *         for i, dblabel in enumerate(self.dbi_labels):             # <<<<<<<<<<<<<<
- *             _check(
- *                 lmdb.mdb_stat(self.txn, self.dbis[i], &stat),
- */
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":548
- *             db_stats[dblabel.encode()] = <dict>stat
- * 
- *         return {             # <<<<<<<<<<<<<<
- *             'env_stats': env_stats,
- *             'env_size': os.stat(self.env_path).st_size,
- */
-  __Pyx_XDECREF(__pyx_r);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":549
- * 
- *         return {
- *             'env_stats': env_stats,             # <<<<<<<<<<<<<<
- *             'env_size': os.stat(self.env_path).st_size,
- *             'db_stats': {
- */
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_env_stats, __pyx_v_env_stats) < 0) __PYX_ERR(0, 549, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":550
- *         return {
- *             'env_stats': env_stats,
- *             'env_size': os.stat(self.env_path).st_size,             # <<<<<<<<<<<<<<
- *             'db_stats': {
- *                 db_label: db_stats[db_label.encode()]
- */
-  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 550, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_9);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_stat); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 550, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __pyx_t_9 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
-    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1);
-    if (likely(__pyx_t_9)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-      __Pyx_INCREF(__pyx_t_9);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_1, function);
-    }
-  }
-  if (!__pyx_t_9) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_self->env_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 550, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_1)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_self->env_path};
-      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 550, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_self->env_path};
-      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 550, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-    } else
-    #endif
-    {
-      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 550, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_10);
-      __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
-      __Pyx_INCREF(__pyx_v_self->env_path);
-      __Pyx_GIVEREF(__pyx_v_self->env_path);
-      PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_self->env_path);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 550, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_st_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 550, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_env_size, __pyx_t_1) < 0) __PYX_ERR(0, 549, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  { /* enter inner scope */
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":551
- *             'env_stats': env_stats,
- *             'env_size': os.stat(self.env_path).st_size,
- *             'db_stats': {             # <<<<<<<<<<<<<<
- *                 db_label: db_stats[db_label.encode()]
- *                 for db_label in self.dbi_labels
- */
-    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L7_error)
-    __Pyx_GOTREF(__pyx_t_1);
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":553
- *             'db_stats': {
- *                 db_label: db_stats[db_label.encode()]
- *                 for db_label in self.dbi_labels             # <<<<<<<<<<<<<<
- *             },
- *         }
- */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dbi_labels); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 553, __pyx_L7_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
-      __pyx_t_10 = __pyx_t_3; __Pyx_INCREF(__pyx_t_10); __pyx_t_4 = 0;
-      __pyx_t_5 = NULL;
-    } else {
-      __pyx_t_4 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 553, __pyx_L7_error)
-      __Pyx_GOTREF(__pyx_t_10);
-      __pyx_t_5 = Py_TYPE(__pyx_t_10)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 553, __pyx_L7_error)
-    }
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    for (;;) {
-      if (likely(!__pyx_t_5)) {
-        if (likely(PyList_CheckExact(__pyx_t_10))) {
-          if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_10)) break;
-          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 553, __pyx_L7_error)
-          #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_10, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 553, __pyx_L7_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          #endif
-        } else {
-          if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_10)) break;
-          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 553, __pyx_L7_error)
-          #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_10, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 553, __pyx_L7_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          #endif
-        }
-      } else {
-        __pyx_t_3 = __pyx_t_5(__pyx_t_10);
-        if (unlikely(!__pyx_t_3)) {
-          PyObject* exc_type = PyErr_Occurred();
-          if (exc_type) {
-            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 553, __pyx_L7_error)
-          }
-          break;
-        }
-        __Pyx_GOTREF(__pyx_t_3);
-      }
-      __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_db_label, __pyx_t_3);
-      __pyx_t_3 = 0;
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":552
- *             'env_size': os.stat(self.env_path).st_size,
- *             'db_stats': {
- *                 db_label: db_stats[db_label.encode()]             # <<<<<<<<<<<<<<
- *                 for db_label in self.dbi_labels
- *             },
- */
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_7genexpr__pyx_v_db_label, __pyx_n_s_encode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 552, __pyx_L7_error)
-      __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_11 = NULL;
-      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
-        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
-        if (likely(__pyx_t_11)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
-          __Pyx_INCREF(__pyx_t_11);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_9, function);
-        }
-      }
-      if (__pyx_t_11) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 552, __pyx_L7_error)
-        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-      } else {
-        __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 552, __pyx_L7_error)
-      }
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = __Pyx_PyDict_GetItem(__pyx_v_db_stats, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 552, __pyx_L7_error)
-      __Pyx_GOTREF(__pyx_t_9);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_7genexpr__pyx_v_db_label, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 552, __pyx_L7_error)
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":553
- *             'db_stats': {
- *                 db_label: db_stats[db_label.encode()]
- *                 for db_label in self.dbi_labels             # <<<<<<<<<<<<<<
- *             },
- *         }
- */
-    }
-    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    __Pyx_XDECREF(__pyx_7genexpr__pyx_v_db_label); __pyx_7genexpr__pyx_v_db_label = 0;
-    goto __pyx_L10_exit_scope;
-    __pyx_L7_error:;
-    __Pyx_XDECREF(__pyx_7genexpr__pyx_v_db_label); __pyx_7genexpr__pyx_v_db_label = 0;
-    goto __pyx_L1_error;
-    __pyx_L10_exit_scope:;
-  } /* exit inner scope */
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_db_stats, __pyx_t_1) < 0) __PYX_ERR(0, 549, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_2);
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":527
- * 
- * 
- *     cdef dict _stats(self):             # <<<<<<<<<<<<<<
- *         """
- *         Gather statistics about the database.
- */
-
-  /* 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_9);
-  __Pyx_XDECREF(__pyx_t_10);
-  __Pyx_XDECREF(__pyx_t_11);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._stats", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_env_stats);
-  __Pyx_XDECREF(__pyx_v_db_stats);
-  __Pyx_XDECREF(__pyx_v_i);
-  __Pyx_XDECREF(__pyx_v_dblabel);
-  __Pyx_XDECREF(__pyx_7genexpr__pyx_v_db_label);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":606
- *     ### CYTHON METHODS ###
- * 
- *     cdef void _txn_begin(self, write=True, lmdb.MDB_txn *parent=NULL) except *:             # <<<<<<<<<<<<<<
- *         if not self.is_open:
- *             raise LmdbError('Store is not open.')
- */
-
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_begin(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_begin *__pyx_optional_args) {
-  PyObject *__pyx_v_write = ((PyObject *)Py_True);
-  MDB_txn *__pyx_v_parent = ((MDB_txn *)NULL);
-  unsigned int __pyx_v_flags;
-  int __pyx_v_rc;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  int __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  unsigned int __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  PyObject *__pyx_t_10 = NULL;
-  PyObject *__pyx_t_11 = NULL;
-  PyObject *__pyx_t_12 = NULL;
-  PyObject *__pyx_t_13 = NULL;
-  int __pyx_t_14;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check __pyx_t_15;
-  __Pyx_RefNannySetupContext("_txn_begin", 0);
-  __Pyx_TraceCall("_txn_begin", __pyx_f[0], 606, 0, __PYX_ERR(0, 606, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_write = __pyx_optional_args->write;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_parent = __pyx_optional_args->parent;
-      }
-    }
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":607
- * 
- *     cdef void _txn_begin(self, write=True, lmdb.MDB_txn *parent=NULL) except *:
- *         if not self.is_open:             # <<<<<<<<<<<<<<
- *             raise LmdbError('Store is not open.')
- * 
- */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_open); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __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, 607, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = ((!__pyx_t_2) != 0);
-  if (unlikely(__pyx_t_3)) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":608
- *     cdef void _txn_begin(self, write=True, lmdb.MDB_txn *parent=NULL) except *:
- *         if not self.is_open:
- *             raise LmdbError('Store is not open.')             # <<<<<<<<<<<<<<
- * 
- *         cdef:
- */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_LmdbError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 608, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __PYX_ERR(0, 608, __pyx_L1_error)
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":607
- * 
- *     cdef void _txn_begin(self, write=True, lmdb.MDB_txn *parent=NULL) except *:
- *         if not self.is_open:             # <<<<<<<<<<<<<<
- *             raise LmdbError('Store is not open.')
- * 
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":613
- *             unsigned int flags
- * 
- *         flags = 0 if write else lmdb.MDB_RDONLY             # <<<<<<<<<<<<<<
- * 
- *         logger.debug('Opening {} transaction in PID {}, thread {}'.format(
- */
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_write); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 613, __pyx_L1_error)
-  if (__pyx_t_3) {
-    __pyx_t_5 = 0;
-  } else {
-    __pyx_t_5 = MDB_RDONLY;
-  }
-  __pyx_v_flags = __pyx_t_5;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":615
- *         flags = 0 if write else lmdb.MDB_RDONLY
- * 
- *         logger.debug('Opening {} transaction in PID {}, thread {}'.format(             # <<<<<<<<<<<<<<
- *             'RW' if write else 'RO',
- *             multiprocessing.current_process().pid,
- */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 615, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 615, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Opening_transaction_in_PID_threa, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 615, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":616
- * 
- *         logger.debug('Opening {} transaction in PID {}, thread {}'.format(
- *             'RW' if write else 'RO',             # <<<<<<<<<<<<<<
- *             multiprocessing.current_process().pid,
- *             threading.currentThread().getName()))
- */
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_write); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 616, __pyx_L1_error)
-  if (__pyx_t_3) {
-    __Pyx_INCREF(__pyx_n_u_RW);
-    __pyx_t_8 = __pyx_n_u_RW;
-  } else {
-    __Pyx_INCREF(__pyx_n_u_RO);
-    __pyx_t_8 = __pyx_n_u_RO;
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":617
- *         logger.debug('Opening {} transaction in PID {}, thread {}'.format(
- *             'RW' if write else 'RO',
- *             multiprocessing.current_process().pid,             # <<<<<<<<<<<<<<
- *             threading.currentThread().getName()))
- *         #logger.debug('Readers: {}'.format(self.reader_list()))
- */
-  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_multiprocessing); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 617, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_10);
-  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_current_process); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 617, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_11);
-  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-  __pyx_t_10 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
-    __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
-    if (likely(__pyx_t_10)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
-      __Pyx_INCREF(__pyx_t_10);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_11, function);
-    }
-  }
-  if (__pyx_t_10) {
-    __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 617, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-  } else {
-    __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 617, __pyx_L1_error)
-  }
-  __Pyx_GOTREF(__pyx_t_9);
-  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_pid); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 617, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_11);
-  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":618
- *             'RW' if write else 'RO',
- *             multiprocessing.current_process().pid,
- *             threading.currentThread().getName()))             # <<<<<<<<<<<<<<
- *         #logger.debug('Readers: {}'.format(self.reader_list()))
- *         rc = lmdb.mdb_txn_begin(self.dbenv, parent, flags, &self.txn)
- */
-  __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_threading); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 618, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_currentThread); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 618, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  __pyx_t_12 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
-    __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13);
-    if (likely(__pyx_t_12)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
-      __Pyx_INCREF(__pyx_t_12);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_13, function);
-    }
-  }
-  if (__pyx_t_12) {
-    __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 618, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  } else {
-    __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 618, __pyx_L1_error)
-  }
-  __Pyx_GOTREF(__pyx_t_10);
-  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_getName); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 618, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-  __pyx_t_10 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
-    __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_13);
-    if (likely(__pyx_t_10)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
-      __Pyx_INCREF(__pyx_t_10);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_13, function);
-    }
-  }
-  if (__pyx_t_10) {
-    __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 618, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-  } else {
-    __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 618, __pyx_L1_error)
-  }
-  __Pyx_GOTREF(__pyx_t_9);
-  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-  __pyx_t_13 = NULL;
-  __pyx_t_14 = 0;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
-    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
-    if (likely(__pyx_t_13)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-      __Pyx_INCREF(__pyx_t_13);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_7, function);
-      __pyx_t_14 = 1;
-    }
-  }
-  #if CYTHON_FAST_PYCALL
-  if (PyFunction_Check(__pyx_t_7)) {
-    PyObject *__pyx_temp[4] = {__pyx_t_13, __pyx_t_8, __pyx_t_11, __pyx_t_9};
-    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_14, 3+__pyx_t_14); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 615, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  } else
-  #endif
-  #if CYTHON_FAST_PYCCALL
-  if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
-    PyObject *__pyx_temp[4] = {__pyx_t_13, __pyx_t_8, __pyx_t_11, __pyx_t_9};
-    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_14, 3+__pyx_t_14); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 615, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  } else
-  #endif
-  {
-    __pyx_t_10 = PyTuple_New(3+__pyx_t_14); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 615, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_10);
-    if (__pyx_t_13) {
-      __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_13); __pyx_t_13 = NULL;
-    }
-    __Pyx_GIVEREF(__pyx_t_8);
-    PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_14, __pyx_t_8);
-    __Pyx_GIVEREF(__pyx_t_11);
-    PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_14, __pyx_t_11);
-    __Pyx_GIVEREF(__pyx_t_9);
-    PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_14, __pyx_t_9);
-    __pyx_t_8 = 0;
-    __pyx_t_11 = 0;
-    __pyx_t_9 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 615, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-  }
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
-    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
-    if (likely(__pyx_t_7)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-      __Pyx_INCREF(__pyx_t_7);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_6, function);
-    }
-  }
-  if (!__pyx_t_7) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 615, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_1};
-      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 615, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_1};
-      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 615, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 615, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_10);
-      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_7); __pyx_t_7 = NULL;
-      __Pyx_GIVEREF(__pyx_t_1);
-      PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_1);
-      __pyx_t_1 = 0;
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 615, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":620
- *             threading.currentThread().getName()))
- *         #logger.debug('Readers: {}'.format(self.reader_list()))
- *         rc = lmdb.mdb_txn_begin(self.dbenv, parent, flags, &self.txn)             # <<<<<<<<<<<<<<
- *         _check(rc, 'Error opening transaction.')
- *         logger.debug('Opened transaction @ {:x}'.format(<unsigned long>self.txn))
- */
-  __pyx_v_rc = mdb_txn_begin(__pyx_v_self->dbenv, __pyx_v_parent, __pyx_v_flags, (&__pyx_v_self->txn));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":621
- *         #logger.debug('Readers: {}'.format(self.reader_list()))
- *         rc = lmdb.mdb_txn_begin(self.dbenv, parent, flags, &self.txn)
- *         _check(rc, 'Error opening transaction.')             # <<<<<<<<<<<<<<
- *         logger.debug('Opened transaction @ {:x}'.format(<unsigned long>self.txn))
- * 
- */
-  __pyx_t_15.__pyx_n = 1;
-  __pyx_t_15.message = __pyx_kp_u_Error_opening_transaction;
-  __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(__pyx_v_rc, &__pyx_t_15); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 621, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":622
- *         rc = lmdb.mdb_txn_begin(self.dbenv, parent, flags, &self.txn)
- *         _check(rc, 'Error opening transaction.')
- *         logger.debug('Opened transaction @ {:x}'.format(<unsigned long>self.txn))             # <<<<<<<<<<<<<<
- * 
- *         self.is_txn_open = True
- */
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 622, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_debug); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 622, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_10);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Opened_transaction_x, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 622, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->txn)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 622, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_9 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
-    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1);
-    if (likely(__pyx_t_9)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-      __Pyx_INCREF(__pyx_t_9);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_1, function);
-    }
-  }
-  if (!__pyx_t_9) {
-    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 622, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __Pyx_GOTREF(__pyx_t_6);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_1)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_7};
-      __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 622, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_7};
-      __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 622, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 622, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_11);
-      __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
-      __Pyx_GIVEREF(__pyx_t_7);
-      PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_7);
-      __pyx_t_7 = 0;
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 622, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
-    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_10);
-    if (likely(__pyx_t_1)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
-      __Pyx_INCREF(__pyx_t_1);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_10, function);
-    }
-  }
-  if (!__pyx_t_1) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 622, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_10)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_6};
-      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 622, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_6};
-      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 622, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 622, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_11);
-      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1); __pyx_t_1 = NULL;
-      __Pyx_GIVEREF(__pyx_t_6);
-      PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_6);
-      __pyx_t_6 = 0;
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 622, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":624
- *         logger.debug('Opened transaction @ {:x}'.format(<unsigned long>self.txn))
- * 
- *         self.is_txn_open = True             # <<<<<<<<<<<<<<
- *         self.is_txn_rw = write
- *         logger.debug('txn is open: {}'.format(self.is_txn_open))
- */
-  __pyx_v_self->is_txn_open = 1;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":625
- * 
- *         self.is_txn_open = True
- *         self.is_txn_rw = write             # <<<<<<<<<<<<<<
- *         logger.debug('txn is open: {}'.format(self.is_txn_open))
- * 
- */
-  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_txn_rw, __pyx_v_write) < 0) __PYX_ERR(0, 625, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":626
- *         self.is_txn_open = True
- *         self.is_txn_rw = write
- *         logger.debug('txn is open: {}'.format(self.is_txn_open))             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 626, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_10);
-  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_debug); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 626, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_11);
-  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_txn_is_open, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 626, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_txn_open); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 626, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
-    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
-    if (likely(__pyx_t_7)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-      __Pyx_INCREF(__pyx_t_7);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_6, function);
-    }
-  }
-  if (!__pyx_t_7) {
-    __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 626, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_GOTREF(__pyx_t_10);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_1};
-      __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 626, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_GOTREF(__pyx_t_10);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_1};
-      __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 626, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_GOTREF(__pyx_t_10);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 626, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_9);
-      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
-      __Pyx_GIVEREF(__pyx_t_1);
-      PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_1);
-      __pyx_t_1 = 0;
-      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 626, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_10);
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
-    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
-    if (likely(__pyx_t_6)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
-      __Pyx_INCREF(__pyx_t_6);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_11, function);
-    }
-  }
-  if (!__pyx_t_6) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 626, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_11)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_10};
-      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 626, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_10};
-      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 626, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 626, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_9);
-      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
-      __Pyx_GIVEREF(__pyx_t_10);
-      PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_10);
-      __pyx_t_10 = 0;
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 626, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":606
- *     ### CYTHON METHODS ###
- * 
- *     cdef void _txn_begin(self, write=True, lmdb.MDB_txn *parent=NULL) except *:             # <<<<<<<<<<<<<<
- *         if not self.is_open:
- *             raise LmdbError('Store is not open.')
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_XDECREF(__pyx_t_10);
-  __Pyx_XDECREF(__pyx_t_11);
-  __Pyx_XDECREF(__pyx_t_12);
-  __Pyx_XDECREF(__pyx_t_13);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._txn_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":629
- * 
- * 
- *     cdef void _txn_commit(self) except *:             # <<<<<<<<<<<<<<
- *         txid = '{:x}'.format(<unsigned long>self.txn)
- *         try:
- */
-
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_commit(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  PyObject *__pyx_v_txid = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  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;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  __Pyx_RefNannySetupContext("_txn_commit", 0);
-  __Pyx_TraceCall("_txn_commit", __pyx_f[0], 629, 0, __PYX_ERR(0, 629, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":630
- * 
- *     cdef void _txn_commit(self) except *:
- *         txid = '{:x}'.format(<unsigned long>self.txn)             # <<<<<<<<<<<<<<
- *         try:
- *             _check(lmdb.mdb_txn_commit(self.txn))
- */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_x, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 630, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->txn)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 630, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __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, 630, __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, 630, __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, 630, __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, 630, __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, 630, __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_txid = __pyx_t_1;
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":631
- *     cdef void _txn_commit(self) except *:
- *         txid = '{:x}'.format(<unsigned long>self.txn)
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_txn_commit(self.txn))
- *             logger.debug('Transaction @ {} committed.'.format(txid))
- */
-  {
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
-    __Pyx_XGOTREF(__pyx_t_6);
-    __Pyx_XGOTREF(__pyx_t_7);
-    __Pyx_XGOTREF(__pyx_t_8);
-    /*try:*/ {
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":632
- *         txid = '{:x}'.format(<unsigned long>self.txn)
- *         try:
- *             _check(lmdb.mdb_txn_commit(self.txn))             # <<<<<<<<<<<<<<
- *             logger.debug('Transaction @ {} committed.'.format(txid))
- *             self.is_txn_open = False
- */
-      __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_txn_commit(__pyx_v_self->txn), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 632, __pyx_L3_error)
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":633
- *         try:
- *             _check(lmdb.mdb_txn_commit(self.txn))
- *             logger.debug('Transaction @ {} committed.'.format(txid))             # <<<<<<<<<<<<<<
- *             self.is_txn_open = False
- *             self.is_txn_rw = False
- */
-      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 633, __pyx_L3_error)
-      __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 633, __pyx_L3_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Transaction_committed, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 633, __pyx_L3_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_txid); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 633, __pyx_L3_error)
-        __Pyx_GOTREF(__pyx_t_2);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_txid};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 633, __pyx_L3_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_txid};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 633, __pyx_L3_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        {
-          __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 633, __pyx_L3_error)
-          __Pyx_GOTREF(__pyx_t_9);
-          __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __pyx_t_4 = NULL;
-          __Pyx_INCREF(__pyx_v_txid);
-          __Pyx_GIVEREF(__pyx_v_txid);
-          PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_txid);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 633, __pyx_L3_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
-        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
-        if (likely(__pyx_t_3)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-          __Pyx_INCREF(__pyx_t_3);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_5, function);
-        }
-      }
-      if (!__pyx_t_3) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 633, __pyx_L3_error)
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_GOTREF(__pyx_t_1);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_5)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2};
-          __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 633, __pyx_L3_error)
-          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2};
-          __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 633, __pyx_L3_error)
-          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        } else
-        #endif
-        {
-          __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 633, __pyx_L3_error)
-          __Pyx_GOTREF(__pyx_t_9);
-          __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL;
-          __Pyx_GIVEREF(__pyx_t_2);
-          PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_2);
-          __pyx_t_2 = 0;
-          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 633, __pyx_L3_error)
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":634
- *             _check(lmdb.mdb_txn_commit(self.txn))
- *             logger.debug('Transaction @ {} committed.'.format(txid))
- *             self.is_txn_open = False             # <<<<<<<<<<<<<<
- *             self.is_txn_rw = False
- *         except:
- */
-      __pyx_v_self->is_txn_open = 0;
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":635
- *             logger.debug('Transaction @ {} committed.'.format(txid))
- *             self.is_txn_open = False
- *             self.is_txn_rw = False             # <<<<<<<<<<<<<<
- *         except:
- *             self._txn_abort()
- */
-      if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_txn_rw, Py_False) < 0) __PYX_ERR(0, 635, __pyx_L3_error)
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":631
- *     cdef void _txn_commit(self) except *:
- *         txid = '{:x}'.format(<unsigned long>self.txn)
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_txn_commit(self.txn))
- *             logger.debug('Transaction @ {} committed.'.format(txid))
- */
-    }
-    __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_L8_try_end;
-    __pyx_L3_error:;
-    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":636
- *             self.is_txn_open = False
- *             self.is_txn_rw = False
- *         except:             # <<<<<<<<<<<<<<
- *             self._txn_abort()
- *             raise
- */
-    /*except:*/ {
-      __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._txn_commit", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_9) < 0) __PYX_ERR(0, 636, __pyx_L5_except_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_GOTREF(__pyx_t_9);
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":637
- *             self.is_txn_rw = False
- *         except:
- *             self._txn_abort()             # <<<<<<<<<<<<<<
- *             raise
- * 
- */
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->_txn_abort(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 637, __pyx_L5_except_error)
-
-      /* "lakesuperior/store/base_lmdb_store.pyx":638
- *         except:
- *             self._txn_abort()
- *             raise             # <<<<<<<<<<<<<<
- * 
- * 
- */
-      __Pyx_GIVEREF(__pyx_t_1);
-      __Pyx_GIVEREF(__pyx_t_5);
-      __Pyx_XGIVEREF(__pyx_t_9);
-      __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_5, __pyx_t_9);
-      __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_9 = 0; 
-      __PYX_ERR(0, 638, __pyx_L5_except_error)
-    }
-    __pyx_L5_except_error:;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":631
- *     cdef void _txn_commit(self) except *:
- *         txid = '{:x}'.format(<unsigned long>self.txn)
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_txn_commit(self.txn))
- *             logger.debug('Transaction @ {} committed.'.format(txid))
- */
-    __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);
-    goto __pyx_L1_error;
-    __pyx_L8_try_end:;
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":629
- * 
- * 
- *     cdef void _txn_commit(self) except *:             # <<<<<<<<<<<<<<
- *         txid = '{:x}'.format(<unsigned long>self.txn)
- *         try:
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __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_XDECREF(__pyx_t_9);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._txn_commit", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_txid);
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":641
- * 
- * 
- *     cdef void _txn_abort(self) except *:             # <<<<<<<<<<<<<<
- *         txid = '{:x}'.format(<unsigned long>self.txn)
- *         lmdb.mdb_txn_abort(self.txn)
- */
-
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_abort(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  PyObject *__pyx_v_txid = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  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;
-  PyObject *__pyx_t_6 = NULL;
-  __Pyx_RefNannySetupContext("_txn_abort", 0);
-  __Pyx_TraceCall("_txn_abort", __pyx_f[0], 641, 0, __PYX_ERR(0, 641, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":642
- * 
- *     cdef void _txn_abort(self) except *:
- *         txid = '{:x}'.format(<unsigned long>self.txn)             # <<<<<<<<<<<<<<
- *         lmdb.mdb_txn_abort(self.txn)
- *         self.is_txn_open = False
- */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_x, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 642, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->txn)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 642, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __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, 642, __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, 642, __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, 642, __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, 642, __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, 642, __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_txid = __pyx_t_1;
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":643
- *     cdef void _txn_abort(self) except *:
- *         txid = '{:x}'.format(<unsigned long>self.txn)
- *         lmdb.mdb_txn_abort(self.txn)             # <<<<<<<<<<<<<<
- *         self.is_txn_open = False
- *         self.is_txn_rw = False
- */
-  mdb_txn_abort(__pyx_v_self->txn);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":644
- *         txid = '{:x}'.format(<unsigned long>self.txn)
- *         lmdb.mdb_txn_abort(self.txn)
- *         self.is_txn_open = False             # <<<<<<<<<<<<<<
- *         self.is_txn_rw = False
- *         logger.info('Transaction @ {} aborted.'.format(txid))
- */
-  __pyx_v_self->is_txn_open = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":645
- *         lmdb.mdb_txn_abort(self.txn)
- *         self.is_txn_open = False
- *         self.is_txn_rw = False             # <<<<<<<<<<<<<<
- *         logger.info('Transaction @ {} aborted.'.format(txid))
- * 
- */
-  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_txn_rw, Py_False) < 0) __PYX_ERR(0, 645, __pyx_L1_error)
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":646
- *         self.is_txn_open = False
- *         self.is_txn_rw = False
- *         logger.info('Transaction @ {} aborted.'.format(txid))             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 646, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 646, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Transaction_aborted, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 646, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-    if (likely(__pyx_t_4)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-      __Pyx_INCREF(__pyx_t_4);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_3, function);
-    }
-  }
-  if (!__pyx_t_4) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_txid); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 646, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_txid};
-      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 646, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_GOTREF(__pyx_t_2);
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_txid};
-      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 646, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_GOTREF(__pyx_t_2);
-    } else
-    #endif
-    {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 646, __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_txid);
-      __Pyx_GIVEREF(__pyx_v_txid);
-      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_txid);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 646, __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 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_5, function);
-    }
-  }
-  if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_GOTREF(__pyx_t_1);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_5)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 646, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
-      __Pyx_GIVEREF(__pyx_t_2);
-      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_2);
-      __pyx_t_2 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __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(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":641
- * 
- * 
- *     cdef void _txn_abort(self) except *:             # <<<<<<<<<<<<<<
- *         txid = '{:x}'.format(<unsigned long>self.txn)
- *         lmdb.mdb_txn_abort(self.txn)
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __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_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._txn_abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_txid);
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":649
- * 
- * 
- *     cpdef int txn_id(self):             # <<<<<<<<<<<<<<
- *         return self._txn_id()
- * 
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_32txn_id(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static int __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_txn_id(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, int __pyx_skip_dispatch) {
-  int __pyx_r;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_t_5;
-  size_t __pyx_t_6;
-  __Pyx_RefNannySetupContext("txn_id", 0);
-  __Pyx_TraceCall("txn_id", __pyx_f[0], 649, 0, __PYX_ERR(0, 649, __pyx_L1_error));
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_txn_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 649, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_32txn_id)) {
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 649, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 649, __pyx_L1_error)
-      }
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 649, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_r = __pyx_t_5;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":650
- * 
- *     cpdef int txn_id(self):
- *         return self._txn_id()             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_6 = ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->_txn_id(__pyx_v_self); if (unlikely(__pyx_t_6 == ((size_t)-1L))) __PYX_ERR(0, 650, __pyx_L1_error)
-  __pyx_r = __pyx_t_6;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":649
- * 
- * 
- *     cpdef int txn_id(self):             # <<<<<<<<<<<<<<
- *         return self._txn_id()
- * 
- */
-
-  /* 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_WriteUnraisable("lakesuperior.store.base_lmdb_store.BaseLmdbStore.txn_id", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_32txn_id(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_32txn_id(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("txn_id (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_31txn_id(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_31txn_id(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("txn_id", 0);
-  __Pyx_TraceCall("txn_id (wrapper)", __pyx_f[0], 649, 0, __PYX_ERR(0, 649, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_txn_id(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 649, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.txn_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":653
- * 
- * 
- *     cdef size_t _txn_id(self) except -1:             # <<<<<<<<<<<<<<
- *         return lmdb.mdb_txn_id(self.txn)
- * 
- */
-
-static size_t __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_id(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  size_t __pyx_r;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("_txn_id", 0);
-  __Pyx_TraceCall("_txn_id", __pyx_f[0], 653, 0, __PYX_ERR(0, 653, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":654
- * 
- *     cdef size_t _txn_id(self) except -1:
- *         return lmdb.mdb_txn_id(self.txn)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_r = mdb_txn_id(__pyx_v_self->txn);
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":653
- * 
- * 
- *     cdef size_t _txn_id(self) except -1:             # <<<<<<<<<<<<<<
- *         return lmdb.mdb_txn_id(self.txn)
- * 
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._txn_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1L;
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":657
- * 
- * 
- *     cdef lmdb.MDB_dbi get_dbi(             # <<<<<<<<<<<<<<
- *             self, unsigned char *dblabel=NULL, lmdb.MDB_txn *txn=NULL):
- *         """
- */
-
-static MDB_dbi __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi *__pyx_optional_args) {
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":658
- * 
- *     cdef lmdb.MDB_dbi get_dbi(
- *             self, unsigned char *dblabel=NULL, lmdb.MDB_txn *txn=NULL):             # <<<<<<<<<<<<<<
- *         """
- *         Return a DB handle by database name.
- */
-  unsigned char *__pyx_v_dblabel = ((unsigned char *)NULL);
-  MDB_txn *__pyx_v_txn = ((MDB_txn *)NULL);
-  size_t __pyx_v_dbidx;
-  MDB_dbi __pyx_r;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  MDB_txn *__pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  size_t __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  size_t __pyx_t_9;
-  __Pyx_RefNannySetupContext("get_dbi", 0);
-  __Pyx_TraceCall("get_dbi", __pyx_f[0], 657, 0, __PYX_ERR(0, 657, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_dblabel = __pyx_optional_args->dblabel;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_txn = __pyx_optional_args->txn;
-      }
-    }
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":664
- *         cdef size_t dbidx
- * 
- *         if txn is NULL:             # <<<<<<<<<<<<<<
- *             txn = self.txn
- * 
- */
-  __pyx_t_1 = ((__pyx_v_txn == NULL) != 0);
-  if (__pyx_t_1) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":665
- * 
- *         if txn is NULL:
- *             txn = self.txn             # <<<<<<<<<<<<<<
- * 
- *         if dblabel is NULL:
- */
-    __pyx_t_2 = __pyx_v_self->txn;
-    __pyx_v_txn = __pyx_t_2;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":664
- *         cdef size_t dbidx
- * 
- *         if txn is NULL:             # <<<<<<<<<<<<<<
- *             txn = self.txn
- * 
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":667
- *             txn = self.txn
- * 
- *         if dblabel is NULL:             # <<<<<<<<<<<<<<
- *             logger.debug('Getting DBI without label.')
- *         dbidx = (
- */
-  __pyx_t_1 = ((__pyx_v_dblabel == NULL) != 0);
-  if (__pyx_t_1) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":668
- * 
- *         if dblabel is NULL:
- *             logger.debug('Getting DBI without label.')             # <<<<<<<<<<<<<<
- *         dbidx = (
- *                 0 if dblabel is NULL
- */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 668, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 668, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 668, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":667
- *             txn = self.txn
- * 
- *         if dblabel is NULL:             # <<<<<<<<<<<<<<
- *             logger.debug('Getting DBI without label.')
- *         dbidx = (
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":670
- *             logger.debug('Getting DBI without label.')
- *         dbidx = (
- *                 0 if dblabel is NULL             # <<<<<<<<<<<<<<
- *                 else self.dbi_labels.index(dblabel.decode()))
- *         #logger.debug(
- */
-  if (((__pyx_v_dblabel == NULL) != 0)) {
-    __pyx_t_5 = 0;
-  } else {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":671
- *         dbidx = (
- *                 0 if dblabel is NULL
- *                 else self.dbi_labels.index(dblabel.decode()))             # <<<<<<<<<<<<<<
- *         #logger.debug(
- *         #        f'Got DBI {self.dbis[dbidx]} with label {dblabel} '
- */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dbi_labels); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 671, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_index); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 671, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_decode_c_string(((char const *)__pyx_v_dblabel), 0, strlen(((char const *)__pyx_v_dblabel)), NULL, NULL, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 671, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_7 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
-      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
-      if (likely(__pyx_t_7)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-        __Pyx_INCREF(__pyx_t_7);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_6, function);
-      }
-    }
-    if (!__pyx_t_7) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 671, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_6)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4};
-        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 671, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4};
-        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 671, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 671, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_8);
-        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
-        __Pyx_GIVEREF(__pyx_t_4);
-        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_4);
-        __pyx_t_4 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 671, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 671, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_5 = __pyx_t_9;
-  }
-  __pyx_v_dbidx = __pyx_t_5;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":676
- *         #        f'and index #{dbidx}')
- * 
- *         return self.dbis[dbidx]             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_r = (__pyx_v_self->dbis[__pyx_v_dbidx]);
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":657
- * 
- * 
- *     cdef lmdb.MDB_dbi get_dbi(             # <<<<<<<<<<<<<<
- *             self, unsigned char *dblabel=NULL, lmdb.MDB_txn *txn=NULL):
- *         """
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_WriteUnraisable("lakesuperior.store.base_lmdb_store.BaseLmdbStore.get_dbi", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":679
- * 
- * 
- *     cdef lmdb.MDB_cursor *_cur_open(             # <<<<<<<<<<<<<<
- *             self, unsigned char *dblabel=NULL, lmdb.MDB_txn *txn=NULL) except *:
- *         cdef:
- */
-
-static MDB_cursor *__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open *__pyx_optional_args) {
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":680
- * 
- *     cdef lmdb.MDB_cursor *_cur_open(
- *             self, unsigned char *dblabel=NULL, lmdb.MDB_txn *txn=NULL) except *:             # <<<<<<<<<<<<<<
- *         cdef:
- *             lmdb.MDB_dbi dbi
- */
-  unsigned char *__pyx_v_dblabel = ((unsigned char *)NULL);
-  MDB_txn *__pyx_v_txn = ((MDB_txn *)NULL);
-  MDB_dbi __pyx_v_dbi;
-  MDB_cursor *__pyx_r;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  MDB_txn *__pyx_t_2;
-  MDB_dbi __pyx_t_3;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi __pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  Py_ssize_t __pyx_t_8;
-  Py_UCS4 __pyx_t_9;
-  PyObject *__pyx_t_10 = NULL;
-  PyObject *__pyx_t_11 = NULL;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check __pyx_t_12;
-  PyObject *__pyx_t_13 = NULL;
-  PyObject *__pyx_t_14 = NULL;
-  __Pyx_RefNannySetupContext("_cur_open", 0);
-  __Pyx_TraceCall("_cur_open", __pyx_f[0], 679, 0, __PYX_ERR(0, 679, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_dblabel = __pyx_optional_args->dblabel;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_txn = __pyx_optional_args->txn;
-      }
-    }
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":684
- *             lmdb.MDB_dbi dbi
- * 
- *         if txn is NULL:             # <<<<<<<<<<<<<<
- *             txn = self.txn
- * 
- */
-  __pyx_t_1 = ((__pyx_v_txn == NULL) != 0);
-  if (__pyx_t_1) {
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":685
- * 
- *         if txn is NULL:
- *             txn = self.txn             # <<<<<<<<<<<<<<
- * 
- *         dbi = self.get_dbi(dblabel, txn=txn)
- */
-    __pyx_t_2 = __pyx_v_self->txn;
-    __pyx_v_txn = __pyx_t_2;
-
-    /* "lakesuperior/store/base_lmdb_store.pyx":684
- *             lmdb.MDB_dbi dbi
- * 
- *         if txn is NULL:             # <<<<<<<<<<<<<<
- *             txn = self.txn
- * 
- */
-  }
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":687
- *             txn = self.txn
- * 
- *         dbi = self.get_dbi(dblabel, txn=txn)             # <<<<<<<<<<<<<<
- * 
- *         logger.debug(f'Opening cursor for DB {dblabel} (DBI {dbi})...')
- */
-  __pyx_t_4.__pyx_n = 2;
-  __pyx_t_4.dblabel = __pyx_v_dblabel;
-  __pyx_t_4.txn = __pyx_v_txn;
-  __pyx_t_3 = ((struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self->__pyx_vtab)->get_dbi(__pyx_v_self, &__pyx_t_4); 
-  __pyx_v_dbi = __pyx_t_3;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":689
- *         dbi = self.get_dbi(dblabel, txn=txn)
- * 
- *         logger.debug(f'Opening cursor for DB {dblabel} (DBI {dbi})...')             # <<<<<<<<<<<<<<
- *         #try:
- *         #    # FIXME Either reuse the cursor, if it works, or remove this code.
- */
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 689, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_debug); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 689, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = PyTuple_New(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 689, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_8 = 0;
-  __pyx_t_9 = 127;
-  __Pyx_INCREF(__pyx_kp_u_Opening_cursor_for_DB);
-  __pyx_t_8 += 22;
-  __Pyx_GIVEREF(__pyx_kp_u_Opening_cursor_for_DB);
-  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_Opening_cursor_for_DB);
-  __pyx_t_10 = __Pyx_PyBytes_FromCString(__pyx_v_dblabel); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 689, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_10);
-  __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_t_10, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 689, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_11);
-  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-  __pyx_t_9 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_9) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_9;
-  __pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11);
-  __Pyx_GIVEREF(__pyx_t_11);
-  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_11);
-  __pyx_t_11 = 0;
-  __Pyx_INCREF(__pyx_kp_u_DBI);
-  __pyx_t_8 += 6;
-  __Pyx_GIVEREF(__pyx_kp_u_DBI);
-  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u_DBI);
-  __pyx_t_11 = __Pyx_PyInt_From_MDB_dbi(__pyx_v_dbi); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 689, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_11);
-  __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 689, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_10);
-  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-  __pyx_t_9 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10) > __pyx_t_9) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10) : __pyx_t_9;
-  __pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10);
-  __Pyx_GIVEREF(__pyx_t_10);
-  PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_10);
-  __pyx_t_10 = 0;
-  __Pyx_INCREF(__pyx_kp_u__20);
-  __pyx_t_8 += 4;
-  __Pyx_GIVEREF(__pyx_kp_u__20);
-  PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_kp_u__20);
-  __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, __pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 689, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_10);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
-    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
-    if (likely(__pyx_t_6)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-      __Pyx_INCREF(__pyx_t_6);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_7, function);
-    }
-  }
-  if (!__pyx_t_6) {
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 689, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    __Pyx_GOTREF(__pyx_t_5);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_7)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_10};
-      __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 689, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_10};
-      __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 689, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 689, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_11);
-      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_6); __pyx_t_6 = NULL;
-      __Pyx_GIVEREF(__pyx_t_10);
-      PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_10);
-      __pyx_t_10 = 0;
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 689, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":701
- *         _check(
- *                 lmdb.mdb_cursor_open(txn, dbi, self.curs + dbi),
- *                 f'Error opening cursor: {dblabel}')             # <<<<<<<<<<<<<<
- *         logger.debug('...opened @ {:x}.'.format(<unsigned long>self.curs[dbi]))
- * 
- */
-  __pyx_t_5 = __Pyx_PyBytes_FromCString(__pyx_v_dblabel); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 701, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 701, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Error_opening_cursor, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 701, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":699
- *         #            f'Error opening cursor: {dblabel}')
- *         #    logger.debug(f'Created brand new cursor for DBI {dbi}.')
- *         _check(             # <<<<<<<<<<<<<<
- *                 lmdb.mdb_cursor_open(txn, dbi, self.curs + dbi),
- *                 f'Error opening cursor: {dblabel}')
- */
-  __pyx_t_12.__pyx_n = 1;
-  __pyx_t_12.message = ((PyObject*)__pyx_t_5);
-  __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_open(__pyx_v_txn, __pyx_v_dbi, (__pyx_v_self->curs + __pyx_v_dbi)), &__pyx_t_12); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 699, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":702
- *                 lmdb.mdb_cursor_open(txn, dbi, self.curs + dbi),
- *                 f'Error opening cursor: {dblabel}')
- *         logger.debug('...opened @ {:x}.'.format(<unsigned long>self.curs[dbi]))             # <<<<<<<<<<<<<<
- * 
- *         return self.curs[dbi]
- */
-  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 702, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_debug); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 702, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_11);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_opened_x, __pyx_n_s_format); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 702, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_10);
-  __pyx_t_6 = __Pyx_PyInt_From_unsigned_long(((unsigned long)(__pyx_v_self->curs[__pyx_v_dbi]))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 702, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_13 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
-    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_10);
-    if (likely(__pyx_t_13)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
-      __Pyx_INCREF(__pyx_t_13);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_10, function);
-    }
-  }
-  if (!__pyx_t_13) {
-    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 702, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_GOTREF(__pyx_t_7);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_10)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_6};
-      __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 702, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_6};
-      __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 702, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 702, __pyx_L1_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_6);
-      PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_6);
-      __pyx_t_6 = 0;
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_14, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 702, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-  __pyx_t_10 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
-    __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
-    if (likely(__pyx_t_10)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
-      __Pyx_INCREF(__pyx_t_10);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_11, function);
-    }
-  }
-  if (!__pyx_t_10) {
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 702, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __Pyx_GOTREF(__pyx_t_5);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_11)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_7};
-      __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 702, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_7};
-      __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 702, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 702, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_14);
-      __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_10); __pyx_t_10 = NULL;
-      __Pyx_GIVEREF(__pyx_t_7);
-      PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_7);
-      __pyx_t_7 = 0;
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 702, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":704
- *         logger.debug('...opened @ {:x}.'.format(<unsigned long>self.curs[dbi]))
- * 
- *         return self.curs[dbi]             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_r = (__pyx_v_self->curs[__pyx_v_dbi]);
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":679
- * 
- * 
- *     cdef lmdb.MDB_cursor *_cur_open(             # <<<<<<<<<<<<<<
- *             self, unsigned char *dblabel=NULL, lmdb.MDB_txn *txn=NULL) except *:
- *         cdef:
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_10);
-  __Pyx_XDECREF(__pyx_t_11);
-  __Pyx_XDECREF(__pyx_t_13);
-  __Pyx_XDECREF(__pyx_t_14);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._cur_open", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pyx":707
- * 
- * 
- *     cdef void _cur_close(self, lmdb.MDB_cursor *cur) except *:             # <<<<<<<<<<<<<<
- *         """Close a cursor."""
- *         #logger.info('Closing cursor @ {:x} for DBI {}...'.format(
- */
-
-static void __pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_close(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, MDB_cursor *__pyx_v_cur) {
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("_cur_close", 0);
-  __Pyx_TraceCall("_cur_close", __pyx_f[0], 707, 0, __PYX_ERR(0, 707, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":711
- *         #logger.info('Closing cursor @ {:x} for DBI {}...'.format(
- *         #    <unsigned long>cur, lmdb.mdb_cursor_dbi(cur) ))
- *         lmdb.mdb_cursor_close(cur)             # <<<<<<<<<<<<<<
- *         #logger.info('...closed.')
- * 
- */
-  mdb_cursor_close(__pyx_v_cur);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":707
- * 
- * 
- *     cdef void _cur_close(self, lmdb.MDB_cursor *cur) except *:             # <<<<<<<<<<<<<<
- *         """Close a cursor."""
- *         #logger.info('Closing cursor @ {:x} for DBI {}...'.format(
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._cur_close", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/base_lmdb_store.pxd":15
- * cdef class BaseLmdbStore:
- *     cdef:
- *         readonly bint is_txn_open             # <<<<<<<<<<<<<<
- *         public bint _open
- *         unsigned int _readers
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_11is_txn_open_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_11is_txn_open_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_11is_txn_open___get__(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_11is_txn_open___get__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_TraceCall("__get__", __pyx_f[2], 15, 0, __PYX_ERR(2, 15, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_txn_open); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.is_txn_open.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pxd":16
- *     cdef:
- *         readonly bint is_txn_open
- *         public bint _open             # <<<<<<<<<<<<<<
- *         unsigned int _readers
- *         readonly str env_path
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_5_open_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_5_open_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_5_open___get__(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_5_open___get__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_TraceCall("__get__", __pyx_f[2], 16, 0, __PYX_ERR(2, 16, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_open); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 16, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._open.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_5_open_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_5_open_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_5_open_2__set__(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), ((PyObject *)__pyx_v_value));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_5_open_2__set__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, PyObject *__pyx_v_value) {
-  int __pyx_r;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  __Pyx_RefNannySetupContext("__set__", 0);
-  __Pyx_TraceCall("__set__", __pyx_f[2], 16, 0, __PYX_ERR(2, 16, __pyx_L1_error));
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 16, __pyx_L1_error)
-  __pyx_v_self->_open = __pyx_t_1;
-
-  /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore._open.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/base_lmdb_store.pxd":18
- *         public bint _open
- *         unsigned int _readers
- *         readonly str env_path             # <<<<<<<<<<<<<<
- *         lmdb.MDB_dbi *dbis
- *         lmdb.MDB_env *dbenv
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_8env_path_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_8env_path_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_8env_path___get__(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_8env_path___get__(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_TraceCall("__get__", __pyx_f[2], 18, 0, __PYX_ERR(2, 18, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->env_path);
-  __pyx_r = __pyx_v_self->env_path;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.env_path.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- * def __setstate_cython__(self, __pyx_state):
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_34__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_34__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_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_33__reduce_cython__(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_33__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__reduce_cython__", 0);
-  __Pyx_TraceCall("__reduce_cython__", __pyx_f[1], 1, 0, __PYX_ERR(1, 1, __pyx_L1_error));
-
-  /* "(tree fragment)":2
- * def __reduce_cython__(self):
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__21, 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.curs,self.dbenv,self.dbis,self.txn 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("lakesuperior.store.base_lmdb_store.BaseLmdbStore.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "(tree fragment)":3
- * def __reduce_cython__(self):
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_36__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_36__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_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_35__setstate_cython__(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_35__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__setstate_cython__", 0);
-  __Pyx_TraceCall("__setstate_cython__", __pyx_f[1], 3, 0, __PYX_ERR(1, 3, __pyx_L1_error));
-
-  /* "(tree fragment)":4
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- * def __setstate_cython__(self, __pyx_state):
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
- */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__22, 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.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.base_lmdb_store.BaseLmdbStore.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-static struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore;
-
-static PyObject *__pyx_tp_new_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *p;
-  PyObject *o;
-  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_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)o);
-  p->__pyx_vtab = __pyx_vtabptr_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore;
-  p->env_path = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  return o;
-}
-
-static void __pyx_tp_dealloc_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore(PyObject *o) {
-  struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *p = (struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)o;
-  #if CYTHON_USE_TP_FINALIZE
-  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
-    if (PyObject_CallFinalizerFromDealloc(o)) return;
-  }
-  #endif
-  {
-    PyObject *etype, *eval, *etb;
-    PyErr_Fetch(&etype, &eval, &etb);
-    ++Py_REFCNT(o);
-    __pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_3__dealloc__(o);
-    --Py_REFCNT(o);
-    PyErr_Restore(etype, eval, etb);
-  }
-  Py_CLEAR(p->env_path);
-  (*Py_TYPE(o)->tp_free)(o);
-}
-
-static PyObject *__pyx_getprop_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_is_open(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7is_open_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_readers(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7readers_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_is_txn_open(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_11is_txn_open_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__open(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_5_open_1__get__(o);
-}
-
-static int __pyx_setprop_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__open(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
-  if (v) {
-    return __pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_5_open_3__set__(o, v);
-  }
-  else {
-    PyErr_SetString(PyExc_NotImplementedError, "__del__");
-    return -1;
-  }
-}
-
-static PyObject *__pyx_getprop_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_env_path(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_8env_path_1__get__(o);
-}
-
-static PyMethodDef __pyx_methods_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore[] = {
-  {"open_env", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_5open_env, METH_O, __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_4open_env},
-  {"close_env", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_7close_env, METH_VARARGS|METH_KEYWORDS, 0},
-  {"destroy", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_9destroy, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_8destroy},
-  {"txn_ctx", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_11txn_ctx, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_10txn_ctx},
-  {"begin", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_14begin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_13begin},
-  {"commit", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_16commit, METH_NOARGS, __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_15commit},
-  {"abort", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_18abort, METH_NOARGS, __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_17abort},
-  {"rollback", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_20rollback, METH_NOARGS, __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_19rollback},
-  {"key_exists", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_22key_exists, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_21key_exists},
-  {"put", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_24put, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_23put},
-  {"get_data", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_26get_data, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_25get_data},
-  {"delete", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_28delete, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_27delete},
-  {"stats", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_30stats, METH_NOARGS, __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_29stats},
-  {"txn_id", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_32txn_id, METH_NOARGS, 0},
-  {"__reduce_cython__", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_34__reduce_cython__, METH_NOARGS, 0},
-  {"__setstate_cython__", (PyCFunction)__pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_36__setstate_cython__, METH_O, 0},
-  {0, 0, 0, 0}
-};
-
-static struct PyGetSetDef __pyx_getsets_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore[] = {
-  {(char *)"is_open", __pyx_getprop_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_is_open, 0, (char *)0, 0},
-  {(char *)"readers", __pyx_getprop_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_readers, 0, (char *)0, 0},
-  {(char *)"is_txn_open", __pyx_getprop_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_is_txn_open, 0, (char *)0, 0},
-  {(char *)"_open", __pyx_getprop_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__open, __pyx_setprop_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__open, (char *)0, 0},
-  {(char *)"env_path", __pyx_getprop_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_env_path, 0, (char *)0, 0},
-  {0, 0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "lakesuperior.store.base_lmdb_store.BaseLmdbStore", /*tp_name*/
-  sizeof(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #endif
-  #if PY_MAJOR_VERSION >= 3
-  0, /*tp_as_async*/
-  #endif
-  0, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  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, /*tp_flags*/
-  "\n    Generic LMDB store abstract class.\n\n    This class contains convenience method to create an LMDB store for any\n    purpose and provides some convenience methods to wrap cursors and\n    transactions into contexts.\n\n    Example usage::\n\n        >>> class MyStore(BaseLmdbStore):\n        ...     path = '/base/store/path'\n        ...     dbi_flags = ('db1', 'db2')\n        ...\n        >>> ms = MyStore()\n        >>> # \"with\" wraps the operation in a transaction.\n        >>> with ms.cur(index='db1', write=True):\n        ...     cur.put(b'key1', b'val1')\n        True\n\n    ", /*tp_doc*/
-  0, /*tp_traverse*/
-  0, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  __pyx_methods_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore, /*tp_methods*/
-  0, /*tp_members*/
-  __pyx_getsets_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  __pyx_pw_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_1__init__, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore, /*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*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-
-static struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx *__pyx_freelist_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx[8];
-static int __pyx_freecount_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx = 0;
-
-static PyObject *__pyx_tp_new_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  PyObject *o;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx)))) {
-    o = (PyObject*)__pyx_freelist_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx[--__pyx_freecount_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx];
-    memset(o, 0, sizeof(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx));
-    (void) PyObject_INIT(o, t);
-    PyObject_GC_Track(o);
-  } else {
-    o = (*t->tp_alloc)(t, 0);
-    if (unlikely(!o)) return 0;
-  }
-  return o;
-}
-
-static void __pyx_tp_dealloc_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx(PyObject *o) {
-  struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx *p = (struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx *)o;
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->__pyx_v_self);
-  Py_CLEAR(p->__pyx_v_write);
-  Py_CLEAR(p->__pyx_t_0);
-  Py_CLEAR(p->__pyx_t_1);
-  Py_CLEAR(p->__pyx_t_2);
-  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx)))) {
-    __pyx_freelist_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx[__pyx_freecount_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx++] = ((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx *)o);
-  } else {
-    (*Py_TYPE(o)->tp_free)(o);
-  }
-}
-
-static int __pyx_tp_traverse_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx *p = (struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx *)o;
-  if (p->__pyx_v_self) {
-    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
-  }
-  if (p->__pyx_v_write) {
-    e = (*v)(p->__pyx_v_write, a); if (e) return e;
-  }
-  if (p->__pyx_t_0) {
-    e = (*v)(p->__pyx_t_0, a); if (e) return e;
-  }
-  if (p->__pyx_t_1) {
-    e = (*v)(p->__pyx_t_1, a); if (e) return e;
-  }
-  if (p->__pyx_t_2) {
-    e = (*v)(p->__pyx_t_2, a); if (e) return e;
-  }
-  return 0;
-}
-
-static PyTypeObject __pyx_type_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "lakesuperior.store.base_lmdb_store.__pyx_scope_struct__txn_ctx", /*tp_name*/
-  sizeof(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #endif
-  #if PY_MAJOR_VERSION >= 3
-  0, /*tp_as_async*/
-  #endif
-  0, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  0, /*tp_setattro*/
-  0, /*tp_as_buffer*/
-  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  0, /*tp_doc*/
-  __pyx_tp_traverse_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx, /*tp_traverse*/
-  0, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  0, /*tp_methods*/
-  0, /*tp_members*/
-  0, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  0, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx, /*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*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-
-static PyMethodDef __pyx_methods[] = {
-  {0, 0, 0, 0}
-};
-
-#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_base_lmdb_store(PyObject* module); /*proto*/
-static PyModuleDef_Slot __pyx_moduledef_slots[] = {
-  {Py_mod_create, (void*)__pyx_pymod_create},
-  {Py_mod_exec, (void*)__pyx_pymod_exec_base_lmdb_store},
-  {0, NULL}
-};
-#endif
-
-static struct PyModuleDef __pyx_moduledef = {
-    PyModuleDef_HEAD_INIT,
-    "base_lmdb_store",
-    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 */
-};
-#endif
-
-static __Pyx_StringTabEntry __pyx_string_tab[] = {
-  {&__pyx_kp_u_, __pyx_k_, sizeof(__pyx_k_), 0, 1, 0, 0},
-  {&__pyx_n_s_BaseLmdbStore_txn_ctx, __pyx_k_BaseLmdbStore_txn_ctx, sizeof(__pyx_k_BaseLmdbStore_txn_ctx), 0, 0, 1, 1},
-  {&__pyx_kp_u_Cleaning_up_store_env, __pyx_k_Cleaning_up_store_env, sizeof(__pyx_k_Cleaning_up_store_env), 0, 1, 0, 0},
-  {&__pyx_kp_u_Cleared_stale_readers, __pyx_k_Cleared_stale_readers, sizeof(__pyx_k_Cleared_stale_readers), 0, 1, 0, 0},
-  {&__pyx_kp_u_Closing_store_env, __pyx_k_Closing_store_env, sizeof(__pyx_k_Closing_store_env), 0, 1, 0, 0},
-  {&__pyx_kp_u_Could_not_create_store_at_Error, __pyx_k_Could_not_create_store_at_Error, sizeof(__pyx_k_Could_not_create_store_at_Error), 0, 1, 0, 0},
-  {&__pyx_kp_u_Created_DB, __pyx_k_Created_DB, sizeof(__pyx_k_Created_DB), 0, 1, 0, 0},
-  {&__pyx_kp_u_Created_DBenv_x, __pyx_k_Created_DBenv_x, sizeof(__pyx_k_Created_DBenv_x), 0, 1, 0, 0},
-  {&__pyx_kp_u_Creating_DBs, __pyx_k_Creating_DBs, sizeof(__pyx_k_Creating_DBs), 0, 1, 0, 0},
-  {&__pyx_kp_u_DBI, __pyx_k_DBI, sizeof(__pyx_k_DBI), 0, 1, 0, 0},
-  {&__pyx_kp_u_DBenv_address_x, __pyx_k_DBenv_address_x, sizeof(__pyx_k_DBenv_address_x), 0, 1, 0, 0},
-  {&__pyx_kp_u_Environment_already_open, __pyx_k_Environment_already_open, sizeof(__pyx_k_Environment_already_open), 0, 1, 0, 0},
-  {&__pyx_kp_u_Error_creating_DB_environment_ha, __pyx_k_Error_creating_DB_environment_ha, sizeof(__pyx_k_Error_creating_DB_environment_ha), 0, 1, 0, 0},
-  {&__pyx_kp_u_Error_getting_data_for_key, __pyx_k_Error_getting_data_for_key, sizeof(__pyx_k_Error_getting_data_for_key), 0, 1, 0, 0},
-  {&__pyx_kp_u_Error_getting_datbase_stats, __pyx_k_Error_getting_datbase_stats, sizeof(__pyx_k_Error_getting_datbase_stats), 0, 1, 0, 0},
-  {&__pyx_kp_u_Error_opening_cursor, __pyx_k_Error_opening_cursor, sizeof(__pyx_k_Error_opening_cursor), 0, 1, 0, 0},
-  {&__pyx_kp_u_Error_opening_the_database_envir, __pyx_k_Error_opening_the_database_envir, sizeof(__pyx_k_Error_opening_the_database_envir), 0, 1, 0, 0},
-  {&__pyx_kp_u_Error_opening_transaction, __pyx_k_Error_opening_transaction, sizeof(__pyx_k_Error_opening_transaction), 0, 1, 0, 0},
-  {&__pyx_kp_u_Error_putting_data, __pyx_k_Error_putting_data, sizeof(__pyx_k_Error_putting_data), 0, 1, 0, 0},
-  {&__pyx_kp_u_Error_setting_map_size, __pyx_k_Error_setting_map_size, sizeof(__pyx_k_Error_setting_map_size), 0, 1, 0, 0},
-  {&__pyx_kp_u_Error_setting_max_databases, __pyx_k_Error_setting_max_databases, sizeof(__pyx_k_Error_setting_max_databases), 0, 1, 0, 0},
-  {&__pyx_kp_u_Error_setting_max_readers, __pyx_k_Error_setting_max_readers, sizeof(__pyx_k_Error_setting_max_readers), 0, 1, 0, 0},
-  {&__pyx_n_s_FileNotFoundError, __pyx_k_FileNotFoundError, sizeof(__pyx_k_FileNotFoundError), 0, 0, 1, 1},
-  {&__pyx_kp_u_Getting_DBI_without_label, __pyx_k_Getting_DBI_without_label, sizeof(__pyx_k_Getting_DBI_without_label), 0, 1, 0, 0},
-  {&__pyx_kp_u_Internal_error, __pyx_k_Internal_error, sizeof(__pyx_k_Internal_error), 0, 1, 0, 0},
-  {&__pyx_n_s_KeyExistsError, __pyx_k_KeyExistsError, sizeof(__pyx_k_KeyExistsError), 0, 0, 1, 1},
-  {&__pyx_n_s_KeyNotFoundError, __pyx_k_KeyNotFoundError, sizeof(__pyx_k_KeyNotFoundError), 0, 0, 1, 1},
-  {&__pyx_kp_u_LMDB_Error, __pyx_k_LMDB_Error, sizeof(__pyx_k_LMDB_Error), 0, 1, 0, 0},
-  {&__pyx_n_s_LmdbError, __pyx_k_LmdbError, sizeof(__pyx_k_LmdbError), 0, 0, 1, 1},
-  {&__pyx_kp_u_Max_readers, __pyx_k_Max_readers, sizeof(__pyx_k_Max_readers), 0, 1, 0, 0},
-  {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1},
-  {&__pyx_kp_u_None, __pyx_k_None, sizeof(__pyx_k_None), 0, 1, 0, 0},
-  {&__pyx_kp_u_Opened_transaction_x, __pyx_k_Opened_transaction_x, sizeof(__pyx_k_Opened_transaction_x), 0, 1, 0, 0},
-  {&__pyx_kp_u_Opening_cursor_for_DB, __pyx_k_Opening_cursor_for_DB, sizeof(__pyx_k_Opening_cursor_for_DB), 0, 1, 0, 0},
-  {&__pyx_kp_u_Opening_environment_at, __pyx_k_Opening_environment_at, sizeof(__pyx_k_Opening_environment_at), 0, 1, 0, 0},
-  {&__pyx_kp_u_Opening_transaction_in_PID_threa, __pyx_k_Opening_transaction_in_PID_threa, sizeof(__pyx_k_Opening_transaction_in_PID_threa), 0, 1, 0, 0},
-  {&__pyx_n_u_RO, __pyx_k_RO, sizeof(__pyx_k_RO), 0, 1, 0, 1},
-  {&__pyx_n_u_RW, __pyx_k_RW, sizeof(__pyx_k_RW), 0, 1, 0, 1},
-  {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
-  {&__pyx_kp_u_Store_is_not_open, __pyx_k_Store_is_not_open, sizeof(__pyx_k_Store_is_not_open), 0, 1, 0, 0},
-  {&__pyx_kp_u_Store_must_be_opened_first, __pyx_k_Store_must_be_opened_first, sizeof(__pyx_k_Store_must_be_opened_first), 0, 1, 0, 0},
-  {&__pyx_kp_u_Transaction_aborted, __pyx_k_Transaction_aborted, sizeof(__pyx_k_Transaction_aborted), 0, 1, 0, 0},
-  {&__pyx_kp_u_Transaction_committed, __pyx_k_Transaction_committed, sizeof(__pyx_k_Transaction_committed), 0, 1, 0, 0},
-  {&__pyx_kp_u_Transaction_is_already_active_No, __pyx_k_Transaction_is_already_active_No, sizeof(__pyx_k_Transaction_is_already_active_No), 0, 1, 0, 0},
-  {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
-  {&__pyx_kp_u__20, __pyx_k__20, sizeof(__pyx_k__20), 0, 1, 0, 0},
-  {&__pyx_kp_u__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 1, 0, 0},
-  {&__pyx_kp_u__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0, 0},
-  {&__pyx_n_s_abort, __pyx_k_abort, sizeof(__pyx_k_abort), 0, 0, 1, 1},
-  {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 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_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
-  {&__pyx_n_s_close_env, __pyx_k_close_env, sizeof(__pyx_k_close_env), 0, 0, 1, 1},
-  {&__pyx_n_s_commit_pending_transaction, __pyx_k_commit_pending_transaction, sizeof(__pyx_k_commit_pending_transaction), 0, 0, 1, 1},
-  {&__pyx_n_s_contextlib, __pyx_k_contextlib, sizeof(__pyx_k_contextlib), 0, 0, 1, 1},
-  {&__pyx_n_s_contextmanager, __pyx_k_contextmanager, sizeof(__pyx_k_contextmanager), 0, 0, 1, 1},
-  {&__pyx_n_s_create, __pyx_k_create, sizeof(__pyx_k_create), 0, 0, 1, 1},
-  {&__pyx_n_s_currentThread, __pyx_k_currentThread, sizeof(__pyx_k_currentThread), 0, 0, 1, 1},
-  {&__pyx_n_s_current_process, __pyx_k_current_process, sizeof(__pyx_k_current_process), 0, 0, 1, 1},
-  {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1},
-  {&__pyx_n_s_data_v, __pyx_k_data_v, sizeof(__pyx_k_data_v), 0, 0, 1, 1},
-  {&__pyx_n_u_db_stats, __pyx_k_db_stats, sizeof(__pyx_k_db_stats), 0, 1, 0, 1},
-  {&__pyx_n_s_dbi, __pyx_k_dbi, sizeof(__pyx_k_dbi), 0, 0, 1, 1},
-  {&__pyx_n_s_dbi_flags, __pyx_k_dbi_flags, sizeof(__pyx_k_dbi_flags), 0, 0, 1, 1},
-  {&__pyx_n_s_dbi_labels, __pyx_k_dbi_labels, sizeof(__pyx_k_dbi_labels), 0, 0, 1, 1},
-  {&__pyx_n_s_dblabel, __pyx_k_dblabel, sizeof(__pyx_k_dblabel), 0, 0, 1, 1},
-  {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1},
-  {&__pyx_n_s_destroy, __pyx_k_destroy, sizeof(__pyx_k_destroy), 0, 0, 1, 1},
-  {&__pyx_n_s_dirname, __pyx_k_dirname, sizeof(__pyx_k_dirname), 0, 0, 1, 1},
-  {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
-  {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1},
-  {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1},
-  {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1},
-  {&__pyx_n_s_env, __pyx_k_env, sizeof(__pyx_k_env), 0, 0, 1, 1},
-  {&__pyx_n_s_env_flags, __pyx_k_env_flags, sizeof(__pyx_k_env_flags), 0, 0, 1, 1},
-  {&__pyx_n_s_env_path, __pyx_k_env_path, sizeof(__pyx_k_env_path), 0, 0, 1, 1},
-  {&__pyx_n_s_env_perms, __pyx_k_env_perms, sizeof(__pyx_k_env_perms), 0, 0, 1, 1},
-  {&__pyx_n_u_env_size, __pyx_k_env_size, sizeof(__pyx_k_env_size), 0, 1, 0, 1},
-  {&__pyx_n_u_env_stats, __pyx_k_env_stats, sizeof(__pyx_k_env_stats), 0, 1, 0, 1},
-  {&__pyx_n_s_exist_ok, __pyx_k_exist_ok, sizeof(__pyx_k_exist_ok), 0, 0, 1, 1},
-  {&__pyx_n_s_exists, __pyx_k_exists, sizeof(__pyx_k_exists), 0, 0, 1, 1},
-  {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1},
-  {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1},
-  {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
-  {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1},
-  {&__pyx_n_s_getLogger, __pyx_k_getLogger, sizeof(__pyx_k_getLogger), 0, 0, 1, 1},
-  {&__pyx_n_s_getName, __pyx_k_getName, sizeof(__pyx_k_getName), 0, 0, 1, 1},
-  {&__pyx_n_s_get_data, __pyx_k_get_data, sizeof(__pyx_k_get_data), 0, 0, 1, 1},
-  {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
-  {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1},
-  {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
-  {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1},
-  {&__pyx_n_s_info, __pyx_k_info, sizeof(__pyx_k_info), 0, 0, 1, 1},
-  {&__pyx_n_s_is_open, __pyx_k_is_open, sizeof(__pyx_k_is_open), 0, 0, 1, 1},
-  {&__pyx_n_s_is_txn_rw, __pyx_k_is_txn_rw, sizeof(__pyx_k_is_txn_rw), 0, 0, 1, 1},
-  {&__pyx_n_s_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 0, 1, 1},
-  {&__pyx_n_s_key_v, __pyx_k_key_v, sizeof(__pyx_k_key_v), 0, 0, 1, 1},
-  {&__pyx_n_s_lakesuperior, __pyx_k_lakesuperior, sizeof(__pyx_k_lakesuperior), 0, 0, 1, 1},
-  {&__pyx_n_s_lakesuperior_store_base_lmdb_sto, __pyx_k_lakesuperior_store_base_lmdb_sto, sizeof(__pyx_k_lakesuperior_store_base_lmdb_sto), 0, 0, 1, 1},
-  {&__pyx_kp_u_lock, __pyx_k_lock, sizeof(__pyx_k_lock), 0, 1, 0, 0},
-  {&__pyx_n_s_logger, __pyx_k_logger, sizeof(__pyx_k_logger), 0, 0, 1, 1},
-  {&__pyx_n_s_logging, __pyx_k_logging, sizeof(__pyx_k_logging), 0, 0, 1, 1},
-  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
-  {&__pyx_n_s_makedirs, __pyx_k_makedirs, sizeof(__pyx_k_makedirs), 0, 0, 1, 1},
-  {&__pyx_n_u_map_size, __pyx_k_map_size, sizeof(__pyx_k_map_size), 0, 1, 0, 1},
-  {&__pyx_n_u_max_dbs, __pyx_k_max_dbs, sizeof(__pyx_k_max_dbs), 0, 1, 0, 1},
-  {&__pyx_n_u_max_spare_txns, __pyx_k_max_spare_txns, sizeof(__pyx_k_max_spare_txns), 0, 1, 0, 1},
-  {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1},
-  {&__pyx_n_s_mode, __pyx_k_mode, sizeof(__pyx_k_mode), 0, 0, 1, 1},
-  {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1},
-  {&__pyx_n_s_ms_branch_pages, __pyx_k_ms_branch_pages, sizeof(__pyx_k_ms_branch_pages), 0, 0, 1, 1},
-  {&__pyx_n_s_ms_depth, __pyx_k_ms_depth, sizeof(__pyx_k_ms_depth), 0, 0, 1, 1},
-  {&__pyx_n_s_ms_entries, __pyx_k_ms_entries, sizeof(__pyx_k_ms_entries), 0, 0, 1, 1},
-  {&__pyx_n_s_ms_leaf_pages, __pyx_k_ms_leaf_pages, sizeof(__pyx_k_ms_leaf_pages), 0, 0, 1, 1},
-  {&__pyx_n_s_ms_overflow_pages, __pyx_k_ms_overflow_pages, sizeof(__pyx_k_ms_overflow_pages), 0, 0, 1, 1},
-  {&__pyx_n_s_ms_psize, __pyx_k_ms_psize, sizeof(__pyx_k_ms_psize), 0, 0, 1, 1},
-  {&__pyx_n_s_multiprocessing, __pyx_k_multiprocessing, sizeof(__pyx_k_multiprocessing), 0, 0, 1, 1},
-  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
-  {&__pyx_n_s_new_txn, __pyx_k_new_txn, sizeof(__pyx_k_new_txn), 0, 0, 1, 1},
-  {&__pyx_n_s_open_env, __pyx_k_open_env, sizeof(__pyx_k_open_env), 0, 0, 1, 1},
-  {&__pyx_kp_u_opened_x, __pyx_k_opened_x, sizeof(__pyx_k_opened_x), 0, 1, 0, 0},
-  {&__pyx_n_s_options, __pyx_k_options, sizeof(__pyx_k_options), 0, 0, 1, 1},
-  {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1},
-  {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1},
-  {&__pyx_n_s_path_2, __pyx_k_path_2, sizeof(__pyx_k_path_2), 0, 0, 1, 1},
-  {&__pyx_n_s_pid, __pyx_k_pid, sizeof(__pyx_k_pid), 0, 0, 1, 1},
-  {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
-  {&__pyx_n_s_pyx_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 0, 0, 1, 1},
-  {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
-  {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1},
-  {&__pyx_n_s_rc, __pyx_k_rc, sizeof(__pyx_k_rc), 0, 0, 1, 1},
-  {&__pyx_n_s_readers_mult, __pyx_k_readers_mult, sizeof(__pyx_k_readers_mult), 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_rmtree, __pyx_k_rmtree, sizeof(__pyx_k_rmtree), 0, 0, 1, 1},
-  {&__pyx_kp_s_self_curs_self_dbenv_self_dbis_s, __pyx_k_self_curs_self_dbenv_self_dbis_s, sizeof(__pyx_k_self_curs_self_dbenv_self_dbis_s), 0, 0, 1, 0},
-  {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
-  {&__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_shutil, __pyx_k_shutil, sizeof(__pyx_k_shutil), 0, 0, 1, 1},
-  {&__pyx_n_s_st_size, __pyx_k_st_size, sizeof(__pyx_k_st_size), 0, 0, 1, 1},
-  {&__pyx_n_s_stat, __pyx_k_stat, sizeof(__pyx_k_stat), 0, 0, 1, 1},
-  {&__pyx_n_s_stats, __pyx_k_stats, sizeof(__pyx_k_stats), 0, 0, 1, 1},
-  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
-  {&__pyx_n_s_threading, __pyx_k_threading, sizeof(__pyx_k_threading), 0, 0, 1, 1},
-  {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1},
-  {&__pyx_n_s_txn_ctx, __pyx_k_txn_ctx, sizeof(__pyx_k_txn_ctx), 0, 0, 1, 1},
-  {&__pyx_n_s_txn_id, __pyx_k_txn_id, sizeof(__pyx_k_txn_id), 0, 0, 1, 1},
-  {&__pyx_kp_u_txn_is_open, __pyx_k_txn_is_open, sizeof(__pyx_k_txn_is_open), 0, 1, 0, 0},
-  {&__pyx_n_s_unlink, __pyx_k_unlink, sizeof(__pyx_k_unlink), 0, 0, 1, 1},
-  {&__pyx_n_s_warning, __pyx_k_warning, sizeof(__pyx_k_warning), 0, 0, 1, 1},
-  {&__pyx_n_s_workers, __pyx_k_workers, sizeof(__pyx_k_workers), 0, 0, 1, 1},
-  {&__pyx_n_s_write, __pyx_k_write, sizeof(__pyx_k_write), 0, 0, 1, 1},
-  {&__pyx_n_s_wsgi, __pyx_k_wsgi, sizeof(__pyx_k_wsgi), 0, 0, 1, 1},
-  {&__pyx_kp_u_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 1, 0, 0},
-  {0, 0, 0, 0, 0, 0, 0}
-};
-static int __Pyx_InitCachedBuiltins(void) {
-  __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(0, 252, __pyx_L1_error)
-  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 267, __pyx_L1_error)
-  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 375, __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;
-}
-
-static int __Pyx_InitCachedConstants(void) {
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":166
- *         """
- *         if self.is_open:
- *             logger.warning('Environment already open.')             # <<<<<<<<<<<<<<
- *             return
- * 
- */
-  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_u_Environment_already_open); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 166, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__2);
-  __Pyx_GIVEREF(__pyx_tuple__2);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":195
- *         # Set map size.
- *         _check(
- *                 lmdb.mdb_env_set_mapsize(self.dbenv, self.options.get(             # <<<<<<<<<<<<<<
- *                     'map_size', 1024 ** 3)),
- *                 'Error setting map size: {}')
- */
-  __pyx_tuple__3 = PyTuple_Pack(2, __pyx_n_u_map_size, __pyx_int_1073741824); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 195, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__3);
-  __Pyx_GIVEREF(__pyx_tuple__3);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":264
- *         txn_flags = 0 if create else lmdb.MDB_RDONLY
- *         rc = lmdb.mdb_txn_begin(self.dbenv, NULL, txn_flags, &txn)
- *         logger.info(f'Creating DBs.')             # <<<<<<<<<<<<<<
- *         try:
- *             if len(self.dbi_labels):
- */
-  __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Creating_DBs); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 264, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__5);
-  __Pyx_GIVEREF(__pyx_tuple__5);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":289
- * 
- *     cpdef void close_env(self, bint commit_pending_transaction=False) except *:
- *         logger.debug('Cleaning up store env.')             # <<<<<<<<<<<<<<
- *         if self.is_open:
- *             logger.debug('Closing store env.')
- */
-  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_Cleaning_up_store_env); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 289, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__7);
-  __Pyx_GIVEREF(__pyx_tuple__7);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":291
- *         logger.debug('Cleaning up store env.')
- *         if self.is_open:
- *             logger.debug('Closing store env.')             # <<<<<<<<<<<<<<
- *             if self.is_txn_open is True:
- *                 if commit_pending_transaction:
- */
-  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_Closing_store_env); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 291, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__8);
-  __Pyx_GIVEREF(__pyx_tuple__8);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":343
- *         """
- *         if not self.is_open:
- *             raise LmdbError('Store is not open.')             # <<<<<<<<<<<<<<
- * 
- *         if self.is_txn_open:
- */
-  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_Store_is_not_open); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 343, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__9);
-  __Pyx_GIVEREF(__pyx_tuple__9);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":346
- * 
- *         if self.is_txn_open:
- *             logger.debug(             # <<<<<<<<<<<<<<
- *                     'Transaction is already active. Not opening another one.')
- *             #logger.debug('before yield')
- */
-  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Transaction_is_already_active_No); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 346, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__10);
-  __Pyx_GIVEREF(__pyx_tuple__10);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":375
- *         """
- *         if not self.is_open:
- *             raise RuntimeError('Store must be opened first.')             # <<<<<<<<<<<<<<
- *         #logger.debug('Beginning a {} transaction.'.format(
- *         #    'read/write' if write else 'read-only'))
- */
-  __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_u_Store_must_be_opened_first); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 375, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__11);
-  __Pyx_GIVEREF(__pyx_tuple__11);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":407
- *         """
- *         if new_txn is True:
- *             with self.txn_ctx():             # <<<<<<<<<<<<<<
- *                 return self._key_exists(
- *                         key, len(key), dblabel=dblabel.encode())
- */
-  __pyx_tuple__12 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 407, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__12);
-  __Pyx_GIVEREF(__pyx_tuple__12);
-  __pyx_tuple__13 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 407, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__13);
-  __Pyx_GIVEREF(__pyx_tuple__13);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":608
- *     cdef void _txn_begin(self, write=True, lmdb.MDB_txn *parent=NULL) except *:
- *         if not self.is_open:
- *             raise LmdbError('Store is not open.')             # <<<<<<<<<<<<<<
- * 
- *         cdef:
- */
-  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u_Store_is_not_open); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 608, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__18);
-  __Pyx_GIVEREF(__pyx_tuple__18);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":668
- * 
- *         if dblabel is NULL:
- *             logger.debug('Getting DBI without label.')             # <<<<<<<<<<<<<<
- *         dbidx = (
- *                 0 if dblabel is NULL
- */
-  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_u_Getting_DBI_without_label); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 668, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__19);
-  __Pyx_GIVEREF(__pyx_tuple__19);
-
-  /* "(tree fragment)":2
- * def __reduce_cython__(self):
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- */
-  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_self_curs_self_dbenv_self_dbis_s); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 2, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__21);
-  __Pyx_GIVEREF(__pyx_tuple__21);
-
-  /* "(tree fragment)":4
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- * def __setstate_cython__(self, __pyx_state):
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
- */
-  __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_self_curs_self_dbenv_self_dbis_s); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 4, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__22);
-  __Pyx_GIVEREF(__pyx_tuple__22);
-  __Pyx_RefNannyFinishContext();
-  return 0;
-  __pyx_L1_error:;
-  __Pyx_RefNannyFinishContext();
-  return -1;
-}
-
-static int __Pyx_InitGlobals(void) {
-  /* InitThreads.init */
-  #ifdef WITH_THREAD
-PyEval_InitThreads();
-#endif
-
-if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)
-
-  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_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __pyx_int_416 = PyInt_FromLong(416); if (unlikely(!__pyx_int_416)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __pyx_int_488 = PyInt_FromLong(488); if (unlikely(!__pyx_int_488)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __pyx_int_1073741824 = PyInt_FromLong(1073741824L); if (unlikely(!__pyx_int_1073741824)) __PYX_ERR(0, 1, __pyx_L1_error)
-  return 0;
-  __pyx_L1_error:;
-  return -1;
-}
-
-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
-  __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 ---*/
-  if (__Pyx_ExportVoidPtr(__pyx_n_s_rc, (void *)&__pyx_v_12lakesuperior_5store_15base_lmdb_store_rc, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ExportVoidPtr(__pyx_n_s_i, (void *)&__pyx_v_12lakesuperior_5store_15base_lmdb_store_i, "size_t") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ExportVoidPtr(__pyx_n_s_key_v, (void *)&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v, "struct MDB_val") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ExportVoidPtr(__pyx_n_s_data_v, (void *)&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v, "struct MDB_val") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ExportVoidPtr(__pyx_n_s_dbi, (void *)&__pyx_v_12lakesuperior_5store_15base_lmdb_store_dbi, "MDB_dbi") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_RefNannyFinishContext();
-  return 0;
-  __pyx_L1_error:;
-  __Pyx_RefNannyFinishContext();
-  return -1;
-}
-
-static int __Pyx_modinit_function_export_code(void) {
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
-  /*--- Function export code ---*/
-  if (__Pyx_ExportFunction("_check", (void (*)(void))__pyx_f_12lakesuperior_5store_15base_lmdb_store__check, "void (int, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check *__pyx_optional_args)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_RefNannyFinishContext();
-  return 0;
-  __pyx_L1_error:;
-  __Pyx_RefNannyFinishContext();
-  return -1;
-}
-
-static int __Pyx_modinit_type_init_code(void) {
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
-  /*--- Type init code ---*/
-  __pyx_vtabptr_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore = &__pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore._clear_stale_readers = (void (*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__clear_stale_readers;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore._cur_close = (void (*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, MDB_cursor *))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_close;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore._init_dbis = (void (*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__init_dbis *__pyx_optional_args))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__init_dbis;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore._txn_begin = (void (*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_begin *__pyx_optional_args))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_begin;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore._txn_commit = (void (*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_commit;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore._txn_abort = (void (*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_abort;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore._key_exists = (int (*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, unsigned char *, unsigned char, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists *__pyx_optional_args))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore._txn_id = (size_t (*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_id;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore._cur_open = (MDB_cursor *(*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open *__pyx_optional_args))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore.get_dbi = (MDB_dbi (*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi *__pyx_optional_args))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore._put = (void (*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, unsigned char *, size_t, unsigned char *, size_t, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__put *__pyx_optional_args))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__put;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore._get_data = (void (*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, unsigned char *, size_t, struct MDB_val *, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__get_data *__pyx_optional_args))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__get_data;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore._delete = (void (*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, unsigned char *, size_t, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__delete *__pyx_optional_args))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__delete;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore._stats = (PyObject *(*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__stats;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore.close_env = (void (*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_close_env *__pyx_optional_args))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_close_env;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore.destroy = (void (*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_destroy *__pyx_optional_args))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_destroy;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore.get_data = (PyObject *(*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_data *__pyx_optional_args))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_data;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore.stats = (PyObject *(*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, int __pyx_skip_dispatch))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_stats;
-  __pyx_vtable_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore.txn_id = (int (*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, int __pyx_skip_dispatch))__pyx_f_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_txn_id;
-  if (PyType_Ready(&__pyx_type_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore) < 0) __PYX_ERR(0, 49, __pyx_L1_error)
-  __pyx_type_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore.tp_print = 0;
-  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore.tp_dictoffset && __pyx_type_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore.tp_getattro == PyObject_GenericGetAttr)) {
-    __pyx_type_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore.tp_getattro = __Pyx_PyObject_GenericGetAttr;
-  }
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 49, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore___init__.doc = __pyx_doc_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore___init__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore___init__;
-    }
-  }
-  #endif
-  if (__Pyx_SetVtable(__pyx_type_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore.tp_dict, __pyx_vtabptr_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore) < 0) __PYX_ERR(0, 49, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "BaseLmdbStore", (PyObject *)&__pyx_type_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore) < 0) __PYX_ERR(0, 49, __pyx_L1_error)
-  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore) < 0) __PYX_ERR(0, 49, __pyx_L1_error)
-  __pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore = &__pyx_type_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore;
-  if (PyType_Ready(&__pyx_type_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx) < 0) __PYX_ERR(0, 334, __pyx_L1_error)
-  __pyx_type_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx.tp_print = 0;
-  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx.tp_dictoffset && __pyx_type_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx.tp_getattro == PyObject_GenericGetAttr)) {
-    __pyx_type_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
-  }
-  __pyx_ptype_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx = &__pyx_type_12lakesuperior_5store_15base_lmdb_store___pyx_scope_struct__txn_ctx;
-  __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_RefNannyFinishContext();
-  return 0;
-}
-
-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 initbase_lmdb_store(void) CYTHON_SMALL_CODE; /*proto*/
-__Pyx_PyMODINIT_FUNC initbase_lmdb_store(void)
-#else
-__Pyx_PyMODINIT_FUNC PyInit_base_lmdb_store(void) CYTHON_SMALL_CODE; /*proto*/
-__Pyx_PyMODINIT_FUNC PyInit_base_lmdb_store(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_base_lmdb_store(PyObject *__pyx_pyinit_module)
-#endif
-#endif
-{
-  __Pyx_TraceDeclarations
-  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;
-  __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_base_lmdb_store(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("base_lmdb_store", __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 (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
-  /*--- Initialize various global constants etc. ---*/
-  if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  #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_ERR(0, 1, __pyx_L1_error)
-  #endif
-  if (__pyx_module_is_main_lakesuperior__store__base_lmdb_store) {
-    if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  }
-  #if PY_MAJOR_VERSION >= 3
-  {
-    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
-    if (!PyDict_GetItemString(modules, "lakesuperior.store.base_lmdb_store")) {
-      if (unlikely(PyDict_SetItemString(modules, "lakesuperior.store.base_lmdb_store", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
-    }
-  }
-  #endif
-  /*--- 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();
-  if (unlikely(__Pyx_modinit_variable_export_code() != 0)) goto __pyx_L1_error;
-  if (unlikely(__Pyx_modinit_function_export_code() != 0)) goto __pyx_L1_error;
-  if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error;
-  (void)__Pyx_modinit_type_import_code();
-  (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
-  __Pyx_TraceCall("__Pyx_PyMODINIT_FUNC PyInit_base_lmdb_store(void)", __pyx_f[0], 1, 0, __PYX_ERR(0, 1, __pyx_L1_error));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":1
- * import logging             # <<<<<<<<<<<<<<
- * import os
- * import threading
- */
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_logging, 0, 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_logging, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":2
- * import logging
- * import os             # <<<<<<<<<<<<<<
- * import threading
- * import multiprocessing
- */
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_os, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_1) < 0) __PYX_ERR(0, 2, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":3
- * import logging
- * import os
- * import threading             # <<<<<<<<<<<<<<
- * import multiprocessing
- * 
- */
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_threading, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_threading, __pyx_t_1) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":4
- * import os
- * import threading
- * import multiprocessing             # <<<<<<<<<<<<<<
- * 
- * from contextlib import contextmanager
- */
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_multiprocessing, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_multiprocessing, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":6
- * import multiprocessing
- * 
- * from contextlib import contextmanager             # <<<<<<<<<<<<<<
- * from os import makedirs, path
- * from shutil import rmtree
- */
-  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_n_s_contextmanager);
-  __Pyx_GIVEREF(__pyx_n_s_contextmanager);
-  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_contextmanager);
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_contextlib, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_contextmanager); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_contextmanager, __pyx_t_1) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":7
- * 
- * from contextlib import contextmanager
- * from os import makedirs, path             # <<<<<<<<<<<<<<
- * from shutil import rmtree
- * 
- */
-  __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_makedirs);
-  __Pyx_GIVEREF(__pyx_n_s_makedirs);
-  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_makedirs);
-  __Pyx_INCREF(__pyx_n_s_path);
-  __Pyx_GIVEREF(__pyx_n_s_path);
-  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_path);
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_os, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_makedirs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_makedirs, __pyx_t_2) < 0) __PYX_ERR(0, 7, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_path, __pyx_t_2) < 0) __PYX_ERR(0, 7, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":8
- * from contextlib import contextmanager
- * from os import makedirs, path
- * from shutil import rmtree             # <<<<<<<<<<<<<<
- * 
- * from lakesuperior import env, wsgi
- */
-  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_n_s_rmtree);
-  __Pyx_GIVEREF(__pyx_n_s_rmtree);
-  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_rmtree);
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_shutil, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_rmtree); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_rmtree, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":10
- * from shutil import rmtree
- * 
- * from lakesuperior import env, wsgi             # <<<<<<<<<<<<<<
- * 
- * from lakesuperior.cy_include cimport cylmdb as lmdb
- */
-  __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_env);
-  __Pyx_GIVEREF(__pyx_n_s_env);
-  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_env);
-  __Pyx_INCREF(__pyx_n_s_wsgi);
-  __Pyx_GIVEREF(__pyx_n_s_wsgi);
-  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_wsgi);
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_lakesuperior, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_env); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_env, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_wsgi); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_wsgi, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":19
- * 
- * 
- * logger = logging.getLogger(__name__)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_logger, __pyx_t_3) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":38
- * 
- * 
- * class LmdbError(Exception):             # <<<<<<<<<<<<<<
- *     pass
- * 
- */
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 38, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
-  __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
-  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
-  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 38, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_3, __pyx_n_s_LmdbError, __pyx_n_s_LmdbError, (PyObject *) NULL, __pyx_n_s_lakesuperior_store_base_lmdb_sto, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 38, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_LmdbError, __pyx_t_3, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 38, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LmdbError, __pyx_t_4) < 0) __PYX_ERR(0, 38, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __Pyx_DECREF(__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;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":41
- *     pass
- * 
- * class KeyNotFoundError(LmdbError):             # <<<<<<<<<<<<<<
- *     pass
- * 
- */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_LmdbError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 41, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 41, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_3);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
-  __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 41, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_1, __pyx_n_s_KeyNotFoundError, __pyx_n_s_KeyNotFoundError, (PyObject *) NULL, __pyx_n_s_lakesuperior_store_base_lmdb_sto, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_KeyNotFoundError, __pyx_t_1, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 41, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_KeyNotFoundError, __pyx_t_4) < 0) __PYX_ERR(0, 41, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":44
- *     pass
- * 
- * class KeyExistsError(LmdbError):             # <<<<<<<<<<<<<<
- *     pass
- * 
- */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_LmdbError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 44, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_3, __pyx_n_s_KeyExistsError, __pyx_n_s_KeyExistsError, (PyObject *) NULL, __pyx_n_s_lakesuperior_store_base_lmdb_sto, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 44, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_KeyExistsError, __pyx_t_3, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 44, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_KeyExistsError, __pyx_t_4) < 0) __PYX_ERR(0, 44, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __Pyx_DECREF(__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;
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":71
- *     """
- * 
- *     dbi_labels = []             # <<<<<<<<<<<<<<
- *     dbi_flags = {}
- *     """
- */
-  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore->tp_dict, __pyx_n_s_dbi_labels, __pyx_t_3) < 0) __PYX_ERR(0, 71, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":72
- * 
- *     dbi_labels = []
- *     dbi_flags = {}             # <<<<<<<<<<<<<<
- *     """
- *     Configuration of databases in the environment.
- */
-  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore->tp_dict, __pyx_n_s_dbi_flags, __pyx_t_3) < 0) __PYX_ERR(0, 72, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":87
- *     """
- * 
- *     env_flags = 0             # <<<<<<<<<<<<<<
- *     """
- *     LMDB environment flags.
- */
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore->tp_dict, __pyx_n_s_env_flags, __pyx_int_0) < 0) __PYX_ERR(0, 87, __pyx_L1_error)
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":95
- *     """
- * 
- *     env_perms = 0o640             # <<<<<<<<<<<<<<
- *     """
- *     The UNIX permissions to set on created environment files and semaphores.
- */
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore->tp_dict, __pyx_n_s_env_perms, __pyx_int_416) < 0) __PYX_ERR(0, 95, __pyx_L1_error)
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":103
- *     """
- * 
- *     options = {}             # <<<<<<<<<<<<<<
- *     """
- *     LMDB environment option overrides. Setting this is not required.
- */
-  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore->tp_dict, __pyx_n_s_options, __pyx_t_3) < 0) __PYX_ERR(0, 103, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":122
- *     """
- * 
- *     readers_mult = 4             # <<<<<<<<<<<<<<
- *     """
- *     Number to multiply WSGI workers by to set the numer of LMDB reader slots.
- */
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore->tp_dict, __pyx_n_s_readers_mult, __pyx_int_4) < 0) __PYX_ERR(0, 122, __pyx_L1_error)
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":333
- *     ### PYTHON-ACCESSIBLE METHODS ###
- * 
- *     @contextmanager             # <<<<<<<<<<<<<<
- *     def txn_ctx(self, write=False):
- *         """
- */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_contextmanager); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":334
- * 
- *     @contextmanager
- *     def txn_ctx(self, write=False):             # <<<<<<<<<<<<<<
- *         """
- *         Transaction context manager.
- */
-  __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore, __pyx_n_s_txn_ctx); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 334, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
-    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
-    if (likely(__pyx_t_4)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-      __Pyx_INCREF(__pyx_t_4);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_1, function);
-    }
-  }
-  if (!__pyx_t_4) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 333, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_GOTREF(__pyx_t_3);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_1)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
-      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 333, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
-      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 333, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 333, __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_2);
-      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
-      __pyx_t_2 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 333, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore->tp_dict, __pyx_n_s_txn_ctx, __pyx_t_3) < 0) __PYX_ERR(0, 334, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore);
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":416
- *     cdef inline bint _key_exists(
- *             self, unsigned char *key, unsigned char klen,
- *             unsigned char *dblabel=b'') except -1:             # <<<<<<<<<<<<<<
- *         """
- *         Return whether a key exists in a database.
- */
-  __pyx_k__14 = ((unsigned char *)((char const *)""));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":449
- *     cdef void _put(
- *             self, unsigned char *key, size_t key_size, unsigned char *data,
- *             size_t data_size, unsigned char *dblabel='',             # <<<<<<<<<<<<<<
- *             lmdb.MDB_txn *txn=NULL, unsigned int flags=0) except *:
- *         """
- */
-  __pyx_k__15 = ((unsigned char *)((char const *)""));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":484
- *     cdef void _get_data(
- *             self, unsigned char *key, size_t klen, lmdb.MDB_val *rv,
- *             unsigned char *dblabel='') except *:             # <<<<<<<<<<<<<<
- *         """
- *         Get a single value (non-dup) for a key.
- */
-  __pyx_k__16 = ((unsigned char *)((char const *)""));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":508
- *     cdef void _delete(
- *             self, unsigned char *key, size_t klen,
- *             unsigned char *dblabel=b'') except *:             # <<<<<<<<<<<<<<
- *         """
- *         Delete one single value by key from a non-dup database.
- */
-  __pyx_k__17 = ((unsigned char *)((char const *)""));
-
-  /* "lakesuperior/store/base_lmdb_store.pyx":1
- * import logging             # <<<<<<<<<<<<<<
- * import os
- * import threading
- */
-  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_TraceReturn(Py_None, 0);
-
-  /*--- Wrapped vars code ---*/
-
-  goto __pyx_L0;
-  __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);
-  if (__pyx_m) {
-    if (__pyx_d) {
-      __Pyx_AddTraceback("init lakesuperior.store.base_lmdb_store", 0, __pyx_lineno, __pyx_filename);
-    }
-    Py_DECREF(__pyx_m); __pyx_m = 0;
-  } else if (!PyErr_Occurred()) {
-    PyErr_SetString(PyExc_ImportError, "init lakesuperior.store.base_lmdb_store");
-  }
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  #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 --- */
-/* Refnanny */
-#if CYTHON_REFNANNY
-static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
-    PyObject *m = NULL, *p = NULL;
-    void *r = NULL;
-    m = PyImport_ImportModule((char *)modname);
-    if (!m) goto end;
-    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
-    if (!p) goto end;
-    r = PyLong_AsVoidPtr(p);
-end:
-    Py_XDECREF(p);
-    Py_XDECREF(m);
-    return (__Pyx_RefNannyAPIStruct *)r;
-}
-#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)) {
-        PyErr_Format(PyExc_NameError,
-#if PY_MAJOR_VERSION >= 3
-            "name '%U' is not defined", name);
-#else
-            "name '%.200s' is not defined", PyString_AS_STRING(name));
-#endif
-    }
-    return result;
-}
-
-/* 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
-
-/* Profile */
-#if CYTHON_PROFILE
-static int __Pyx_TraceSetupAndCall(PyCodeObject** code,
-                                   PyFrameObject** frame,
-                                   PyThreadState* tstate,
-                                   const char *funcname,
-                                   const char *srcfile,
-                                   int firstlineno) {
-    PyObject *type, *value, *traceback;
-    int retval;
-    if (*frame == NULL || !CYTHON_PROFILE_REUSE_FRAME) {
-        if (*code == NULL) {
-            *code = __Pyx_createFrameCodeObject(funcname, srcfile, firstlineno);
-            if (*code == NULL) return 0;
-        }
-        *frame = PyFrame_New(
-            tstate,                          /*PyThreadState *tstate*/
-            *code,                           /*PyCodeObject *code*/
-            __pyx_d,                  /*PyObject *globals*/
-            0                                /*PyObject *locals*/
-        );
-        if (*frame == NULL) return 0;
-        if (CYTHON_TRACE && (*frame)->f_trace == NULL) {
-            Py_INCREF(Py_None);
-            (*frame)->f_trace = Py_None;
-        }
-#if PY_VERSION_HEX < 0x030400B1
-    } else {
-        (*frame)->f_tstate = tstate;
-#endif
-    }
-      __Pyx_PyFrame_SetLineNumber(*frame, firstlineno);
-    retval = 1;
-    tstate->tracing++;
-    tstate->use_tracing = 0;
-    __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
-    #if CYTHON_TRACE
-    if (tstate->c_tracefunc)
-        retval = tstate->c_tracefunc(tstate->c_traceobj, *frame, PyTrace_CALL, NULL) == 0;
-    if (retval && tstate->c_profilefunc)
-    #endif
-        retval = tstate->c_profilefunc(tstate->c_profileobj, *frame, PyTrace_CALL, NULL) == 0;
-    tstate->use_tracing = (tstate->c_profilefunc ||
-                           (CYTHON_TRACE && tstate->c_tracefunc));
-    tstate->tracing--;
-    if (retval) {
-        __Pyx_ErrRestoreInState(tstate, type, value, traceback);
-        return tstate->use_tracing && retval;
-    } else {
-        Py_XDECREF(type);
-        Py_XDECREF(value);
-        Py_XDECREF(traceback);
-        return -1;
-    }
-}
-static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno) {
-    PyObject *py_srcfile = 0;
-    PyObject *py_funcname = 0;
-    PyCodeObject *py_code = 0;
-    #if PY_MAJOR_VERSION < 3
-    py_funcname = PyString_FromString(funcname);
-    py_srcfile = PyString_FromString(srcfile);
-    #else
-    py_funcname = PyUnicode_FromString(funcname);
-    py_srcfile = PyUnicode_FromString(srcfile);
-    #endif
-    if (!py_funcname | !py_srcfile) goto bad;
-    py_code = PyCode_New(
-        0,
-        #if PY_MAJOR_VERSION >= 3
-        0,
-        #endif
-        0,
-        0,
-        CO_OPTIMIZED | CO_NEWLOCALS,
-        __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,*/
-        firstlineno,
-        __pyx_empty_bytes      /*PyObject *lnotab*/
-    );
-bad:
-    Py_XDECREF(py_srcfile);
-    Py_XDECREF(py_funcname);
-    return py_code;
-}
-#endif
-
-/* GetModuleGlobalName */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
-    PyObject *result;
-#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 (likely(result)) {
-        Py_INCREF(result);
-    } else {
-#endif
-#else
-    result = PyObject_GetItem(__pyx_d, name);
-    if (!result) {
-        PyErr_Clear();
-#endif
-        result = __Pyx_GetBuiltinName(name);
-    }
-    return result;
-}
-
-/* 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 {
-        return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
-    }
-}
-#endif
-
-/* 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;
-}
-#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
-    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
-
-/* 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
-
-/* 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;
-    else
-        Py_INCREF(value);
-    if (!tb || tb == Py_None)
-        tb = NULL;
-    else {
-        Py_INCREF(tb);
-        if (!PyTraceBack_Check(tb)) {
-            PyErr_SetString(PyExc_TypeError,
-                "raise: arg 3 must be a traceback or None");
-            goto raise_error;
-        }
-    }
-    if (PyType_Check(type)) {
-#if CYTHON_COMPILING_IN_PYPY
-        if (!value) {
-            Py_INCREF(Py_None);
-            value = Py_None;
-        }
-#endif
-        PyErr_NormalizeException(&type, &value, &tb);
-    } else {
-        if (value) {
-            PyErr_SetString(PyExc_TypeError,
-                "instance exception may not have a separate value");
-            goto raise_error;
-        }
-        value = type;
-        type = (PyObject*) Py_TYPE(type);
-        Py_INCREF(type);
-        if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
-            PyErr_SetString(PyExc_TypeError,
-                "raise: exception class must be a subclass of BaseException");
-            goto raise_error;
-        }
-    }
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrRestore(type, value, tb);
-    return;
-raise_error:
-    Py_XDECREF(value);
-    Py_XDECREF(type);
-    Py_XDECREF(tb);
-    return;
-}
-#else
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
-    PyObject* owned_instance = NULL;
-    if (tb == Py_None) {
-        tb = 0;
-    } else if (tb && !PyTraceBack_Check(tb)) {
-        PyErr_SetString(PyExc_TypeError,
-            "raise: arg 3 must be a traceback or None");
-        goto bad;
-    }
-    if (value == Py_None)
-        value = 0;
-    if (PyExceptionInstance_Check(type)) {
-        if (value) {
-            PyErr_SetString(PyExc_TypeError,
-                "instance exception may not have a separate value");
-            goto bad;
-        }
-        value = type;
-        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 (cause) {
-        PyObject *fixed_cause;
-        if (cause == Py_None) {
-            fixed_cause = NULL;
-        } else if (PyExceptionClass_Check(cause)) {
-            fixed_cause = PyObject_CallObject(cause, NULL);
-            if (fixed_cause == NULL)
-                goto bad;
-        } else if (PyExceptionInstance_Check(cause)) {
-            fixed_cause = cause;
-            Py_INCREF(fixed_cause);
-        } else {
-            PyErr_SetString(PyExc_TypeError,
-                            "exception causes must derive from "
-                            "BaseException");
-            goto bad;
-        }
-        PyException_SetCause(value, fixed_cause);
-    }
-    PyErr_SetObject(type, value);
-    if (tb) {
-#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);
-    return;
-}
-#endif
-
-/* decode_c_string */
-      static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
-         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
-         const char* encoding, const char* errors,
-         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
-    Py_ssize_t length;
-    if (unlikely((start < 0) | (stop < 0))) {
-        size_t slen = strlen(cstring);
-        if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "c-string too long to convert to Python");
-            return NULL;
-        }
-        length = (Py_ssize_t) slen;
-        if (start < 0) {
-            start += length;
-            if (start < 0)
-                start = 0;
-        }
-        if (stop < 0)
-            stop += length;
-    }
-    length = stop - start;
-    if (unlikely(length <= 0))
-        return PyUnicode_FromUnicode(NULL, 0);
-    cstring += start;
-    if (decode_func) {
-        return decode_func(cstring, length, errors);
-    } else {
-        return PyUnicode_Decode(cstring, length, encoding, errors);
-    }
-}
-
-/* RaiseDoubleKeywords */
-      static void __Pyx_RaiseDoubleKeywordsError(
-    const char* func_name,
-    PyObject* kw_name)
-{
-    PyErr_Format(PyExc_TypeError,
-        #if PY_MAJOR_VERSION >= 3
-        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
-        #else
-        "%s() got multiple values for keyword argument '%s'", func_name,
-        PyString_AsString(kw_name));
-        #endif
-}
-
-/* ParseKeywords */
-      static int __Pyx_ParseOptionalKeywords(
-    PyObject *kwds,
-    PyObject **argnames[],
-    PyObject *kwds2,
-    PyObject *values[],
-    Py_ssize_t num_pos_args,
-    const char* function_name)
-{
-    PyObject *key = 0, *value = 0;
-    Py_ssize_t pos = 0;
-    PyObject*** name;
-    PyObject*** first_kw_arg = argnames + num_pos_args;
-    while (PyDict_Next(kwds, &pos, &key, &value)) {
-        name = first_kw_arg;
-        while (*name && (**name != key)) name++;
-        if (*name) {
-            values[name-argnames] = value;
-            continue;
-        }
-        name = first_kw_arg;
-        #if PY_MAJOR_VERSION < 3
-        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
-            while (*name) {
-                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
-                        && _PyString_Eq(**name, key)) {
-                    values[name-argnames] = value;
-                    break;
-                }
-                name++;
-            }
-            if (*name) continue;
-            else {
-                PyObject*** argname = argnames;
-                while (argname != first_kw_arg) {
-                    if ((**argname == key) || (
-                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
-                             && _PyString_Eq(**argname, key))) {
-                        goto arg_passed_twice;
-                    }
-                    argname++;
-                }
-            }
-        } else
-        #endif
-        if (likely(PyUnicode_Check(key))) {
-            while (*name) {
-                int cmp = (**name == key) ? 0 :
-                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
-                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
-                #endif
-                    PyUnicode_Compare(**name, key);
-                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
-                if (cmp == 0) {
-                    values[name-argnames] = value;
-                    break;
-                }
-                name++;
-            }
-            if (*name) continue;
-            else {
-                PyObject*** argname = argnames;
-                while (argname != first_kw_arg) {
-                    int cmp = (**argname == key) ? 0 :
-                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
-                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
-                    #endif
-                        PyUnicode_Compare(**argname, key);
-                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
-                    if (cmp == 0) goto arg_passed_twice;
-                    argname++;
-                }
-            }
-        } else
-            goto invalid_keyword_type;
-        if (kwds2) {
-            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
-        } else {
-            goto invalid_keyword;
-        }
-    }
-    return 0;
-arg_passed_twice:
-    __Pyx_RaiseDoubleKeywordsError(function_name, key);
-    goto bad;
-invalid_keyword_type:
-    PyErr_Format(PyExc_TypeError,
-        "%.200s() keywords must be strings", function_name);
-    goto bad;
-invalid_keyword:
-    PyErr_Format(PyExc_TypeError,
-    #if PY_MAJOR_VERSION < 3
-        "%.200s() got an unexpected keyword argument '%.200s'",
-        function_name, PyString_AsString(key));
-    #else
-        "%s() got an unexpected keyword argument '%U'",
-        function_name, key);
-    #endif
-bad:
-    return -1;
-}
-
-/* RaiseArgTupleInvalid */
-      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)
-{
-    Py_ssize_t num_expected;
-    const char *more_or_less;
-    if (num_found < num_min) {
-        num_expected = num_min;
-        more_or_less = "at least";
-    } else {
-        num_expected = num_max;
-        more_or_less = "at most";
-    }
-    if (exact) {
-        more_or_less = "exactly";
-    }
-    PyErr_Format(PyExc_TypeError,
-                 "%.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);
-}
-
-/* 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
-}
-
-/* SaveResetException */
-      #if CYTHON_FAST_THREAD_STATE
-static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
-    #if PY_VERSION_HEX >= 0x030700A3
-    *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 >= 0x030700A3
-    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
-
-/* PyErrExceptionMatches */
-      #if CYTHON_FAST_THREAD_STATE
-static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
-    Py_ssize_t i, n;
-    n = PyTuple_GET_SIZE(tuple);
-#if PY_MAJOR_VERSION >= 3
-    for (i=0; i<n; i++) {
-        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
-    }
-#endif
-    for (i=0; i<n; i++) {
-        if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
-    }
-    return 0;
-}
-static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
-    PyObject *exc_type = tstate->curexc_type;
-    if (exc_type == err) return 1;
-    if (unlikely(!exc_type)) return 0;
-    if (unlikely(PyTuple_Check(err)))
-        return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
-    return __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
-}
-#endif
-
-/* 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 (local_tb) {
-        if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
-            goto bad;
-    }
-    #endif
-    Py_XINCREF(local_tb);
-    Py_XINCREF(local_type);
-    Py_XINCREF(local_value);
-    *type = local_type;
-    *value = local_value;
-    *tb = local_tb;
-#if CYTHON_FAST_THREAD_STATE
-    #if PY_VERSION_HEX >= 0x030700A3
-    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;
-    #endif
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-#else
-    PyErr_SetExcInfo(local_type, local_value, local_tb);
-#endif
-    return 0;
-bad:
-    *type = 0;
-    *value = 0;
-    *tb = 0;
-    Py_XDECREF(local_type);
-    Py_XDECREF(local_value);
-    Py_XDECREF(local_tb);
-    return -1;
-}
-
-/* SwapException */
-        #if CYTHON_FAST_THREAD_STATE
-static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    #if PY_VERSION_HEX >= 0x030700A3
-    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
-    *type = tmp_type;
-    *value = tmp_value;
-    *tb = tmp_tb;
-}
-#else
-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
-    PyErr_SetExcInfo(*type, *value, *tb);
-    *type = tmp_type;
-    *value = tmp_value;
-    *tb = tmp_tb;
-}
-#endif
-
-/* PyUnicode_Unicode */
-        static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj) {
-    if (unlikely(obj == Py_None))
-        obj = __pyx_kp_u_None;
-    return __Pyx_NewRef(obj);
-}
-
-/* JoinPyUnicode */
-        static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
-                                      CYTHON_UNUSED Py_UCS4 max_char) {
-#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-    PyObject *result_uval;
-    int result_ukind;
-    Py_ssize_t i, char_pos;
-    void *result_udata;
-#if CYTHON_PEP393_ENABLED
-    result_uval = PyUnicode_New(result_ulength, max_char);
-    if (unlikely(!result_uval)) return NULL;
-    result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND;
-    result_udata = PyUnicode_DATA(result_uval);
-#else
-    result_uval = PyUnicode_FromUnicode(NULL, result_ulength);
-    if (unlikely(!result_uval)) return NULL;
-    result_ukind = sizeof(Py_UNICODE);
-    result_udata = PyUnicode_AS_UNICODE(result_uval);
-#endif
-    char_pos = 0;
-    for (i=0; i < value_count; i++) {
-        int ukind;
-        Py_ssize_t ulength;
-        void *udata;
-        PyObject *uval = PyTuple_GET_ITEM(value_tuple, i);
-        if (unlikely(__Pyx_PyUnicode_READY(uval)))
-            goto bad;
-        ulength = __Pyx_PyUnicode_GET_LENGTH(uval);
-        if (unlikely(!ulength))
-            continue;
-        if (unlikely(char_pos + ulength < 0))
-            goto overflow;
-        ukind = __Pyx_PyUnicode_KIND(uval);
-        udata = __Pyx_PyUnicode_DATA(uval);
-        if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) {
-            memcpy((char *)result_udata + char_pos * result_ukind, udata, (size_t) (ulength * result_ukind));
-        } else {
-            #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters)
-            _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength);
-            #else
-            Py_ssize_t j;
-            for (j=0; j < ulength; j++) {
-                Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j);
-                __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar);
-            }
-            #endif
-        }
-        char_pos += ulength;
-    }
-    return result_uval;
-overflow:
-    PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string");
-bad:
-    Py_DECREF(result_uval);
-    return NULL;
-#else
-    result_ulength++;
-    value_count++;
-    return PyUnicode_Join(__pyx_empty_unicode, value_tuple);
-#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 int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
-    Py_ssize_t i, n;
-    assert(PyExceptionClass_Check(exc_type));
-    n = PyTuple_GET_SIZE(tuple);
-#if PY_MAJOR_VERSION >= 3
-    for (i=0; i<n; i++) {
-        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
-    }
-#endif
-    for (i=0; i<n; i++) {
-        PyObject *t = PyTuple_GET_ITEM(tuple, i);
-        #if PY_MAJOR_VERSION < 3
-        if (likely(exc_type == t)) return 1;
-        #endif
-        if (likely(PyExceptionClass_Check(t))) {
-            if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
-        } else {
-        }
-    }
-    return 0;
-}
-static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
-    if (likely(err == exc_type)) return 1;
-    if (likely(PyExceptionClass_Check(err))) {
-        if (likely(PyExceptionClass_Check(exc_type))) {
-            return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
-        } else if (likely(PyTuple_Check(exc_type))) {
-            return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
-        } else {
-        }
-    }
-    return PyErr_GivenExceptionMatches(err, exc_type);
-}
-static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
-    assert(PyExceptionClass_Check(exc_type1));
-    assert(PyExceptionClass_Check(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
-
-/* 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
-
-/* PyIntBinop */
-        #if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
-    #if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_CheckExact(op1))) {
-        const long b = intval;
-        long x;
-        long a = PyInt_AS_LONG(op1);
-            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(op1))) {
-        const long b = intval;
-        long a, x;
-#ifdef HAVE_LONG_LONG
-        const PY_LONG_LONG llb = intval;
-        PY_LONG_LONG lla, llx;
-#endif
-        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;
-#ifdef HAVE_LONG_LONG
-                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
-                        lla = -(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) {
-                        a = (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) {
-                        lla = (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) {
-                        a = -(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) {
-                        lla = -(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) {
-                        a = (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) {
-                        lla = (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) {
-                        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;
-#ifdef HAVE_LONG_LONG
-                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
-                        lla = -(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) {
-                        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;
-#ifdef HAVE_LONG_LONG
-                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
-                        lla = (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(op1)) {
-        const long b = intval;
-        double a = PyFloat_AS_DOUBLE(op1);
-            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
-
-/* DictGetItem */
-        #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
-static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
-    PyObject *value;
-    value = PyDict_GetItemWithError(d, key);
-    if (unlikely(!value)) {
-        if (!PyErr_Occurred()) {
-            PyObject* args = PyTuple_Pack(1, key);
-            if (likely(args))
-                PyErr_SetObject(PyExc_KeyError, args);
-            Py_XDECREF(args);
-        }
-        return NULL;
-    }
-    Py_INCREF(value);
-    return value;
-}
-#endif
-
-/* 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
-
-/* SetVTable */
-        static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
-#if PY_VERSION_HEX >= 0x02070000
-    PyObject *ob = PyCapsule_New(vtable, 0, 0);
-#else
-    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
-#endif
-    if (!ob)
-        goto bad;
-    if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
-        goto bad;
-    Py_DECREF(ob);
-    return 0;
-bad:
-    Py_XDECREF(ob);
-    return -1;
-}
-
-/* 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,
-        #if PY_MAJOR_VERSION < 3
-            "cannot import name %.230s", PyString_AS_STRING(name));
-        #else
-            "cannot import name %S", name);
-        #endif
-    }
-    return value;
-}
-
-/* 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;
-}
-
-/* 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;
-}
-
-/* GetNameInClass */
-        static PyObject *__Pyx_GetGlobalNameAfterAttributeLookup(PyObject *name) {
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
-        return NULL;
-    __Pyx_PyErr_Clear();
-    return __Pyx_GetModuleGlobalName(name);
-}
-static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name) {
-    PyObject *result;
-    result = __Pyx_PyObject_GetAttrStr(nmspace, name);
-    if (!result) {
-        result = __Pyx_GetGlobalNameAfterAttributeLookup(name);
-    }
-    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
-    PyObject **cython_runtime_dict;
-#endif
-    if (unlikely(!__pyx_cython_runtime)) {
-        return c_line;
-    }
-    __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
-#if CYTHON_COMPILING_IN_CPYTHON
-    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
-
-/* 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;
-    }
-    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;
-        }
-    }
-    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, (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
-    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 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);
-    }
-    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_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);
-}
-
-/* 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 (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
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(int),
-                                     little, !is_unsigned);
-    }
-}
-
-/* CIntToPy */
-        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value) {
-    const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(unsigned int) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(unsigned int) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-#ifdef HAVE_LONG_LONG
-        } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-#endif
-        }
-    } else {
-        if (sizeof(unsigned int) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-#ifdef HAVE_LONG_LONG
-        } else if (sizeof(unsigned int) <= 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 int),
-                                     little, !is_unsigned);
-    }
-}
-
-/* CIntToPy */
-        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value) {
-    const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned long) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(unsigned long) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(unsigned long) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-#ifdef HAVE_LONG_LONG
-        } else if (sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-#endif
-        }
-    } else {
-        if (sizeof(unsigned long) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-#ifdef HAVE_LONG_LONG
-        } else if (sizeof(unsigned long) <= 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 long),
-                                     little, !is_unsigned);
-    }
-}
-
-/* CIntFromPyVerify */
-        #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
-    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
-#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
-    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
-#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
-    {\
-        func_type value = func_value;\
-        if (sizeof(target_type) < sizeof(func_type)) {\
-            if (unlikely(value != (func_type) (target_type) value)) {\
-                func_type zero = 0;\
-                if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
-                    return (target_type) -1;\
-                if (is_unsigned && unlikely(value < zero))\
-                    goto raise_neg_overflow;\
-                else\
-                    goto raise_overflow;\
-            }\
-        }\
-        return (target_type) value;\
-    }
-
-/* CIntToPy */
-        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
-    const long neg_one = (long) -1, const_zero = (long) 0;
-    const int is_unsigned = neg_one > const_zero;
-    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
-        }
-    } 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
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(long),
-                                     little, !is_unsigned);
-    }
-}
-
-/* CIntToPy */
-        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MDB_dbi(MDB_dbi value) {
-    const MDB_dbi neg_one = (MDB_dbi) -1, const_zero = (MDB_dbi) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(MDB_dbi) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(MDB_dbi) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-#ifdef HAVE_LONG_LONG
-        } else if (sizeof(MDB_dbi) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-#endif
-        }
-    } else {
-        if (sizeof(MDB_dbi) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-#ifdef HAVE_LONG_LONG
-        } else if (sizeof(MDB_dbi) <= 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(MDB_dbi),
-                                     little, !is_unsigned);
-    }
-}
-
-static PyObject* __pyx_convert__to_py_struct__MDB_stat(struct MDB_stat s) {
-          PyObject* res;
-          PyObject* member;
-          res = __Pyx_PyDict_NewPresized(6); if (unlikely(!res)) return NULL;
-          member = __Pyx_PyInt_From_unsigned_int(s.ms_psize); if (unlikely(!member)) goto bad;
-          if (unlikely(PyDict_SetItem(res, __pyx_n_s_ms_psize, member) < 0)) goto bad;
-          Py_DECREF(member);
-          member = __Pyx_PyInt_From_unsigned_int(s.ms_depth); if (unlikely(!member)) goto bad;
-          if (unlikely(PyDict_SetItem(res, __pyx_n_s_ms_depth, member) < 0)) goto bad;
-          Py_DECREF(member);
-          member = __Pyx_PyInt_FromSize_t(s.ms_branch_pages); if (unlikely(!member)) goto bad;
-          if (unlikely(PyDict_SetItem(res, __pyx_n_s_ms_branch_pages, member) < 0)) goto bad;
-          Py_DECREF(member);
-          member = __Pyx_PyInt_FromSize_t(s.ms_leaf_pages); if (unlikely(!member)) goto bad;
-          if (unlikely(PyDict_SetItem(res, __pyx_n_s_ms_leaf_pages, member) < 0)) goto bad;
-          Py_DECREF(member);
-          member = __Pyx_PyInt_FromSize_t(s.ms_overflow_pages); if (unlikely(!member)) goto bad;
-          if (unlikely(PyDict_SetItem(res, __pyx_n_s_ms_overflow_pages, member) < 0)) goto bad;
-          Py_DECREF(member);
-          member = __Pyx_PyInt_FromSize_t(s.ms_entries); if (unlikely(!member)) goto bad;
-          if (unlikely(PyDict_SetItem(res, __pyx_n_s_ms_entries, member) < 0)) goto bad;
-          Py_DECREF(member);
-          return res;
-          bad:
-          Py_XDECREF(member);
-          Py_DECREF(res);
-          return NULL;
-        }
-        /* 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))) {
-        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;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-#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
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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 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
-            return (size_t) -1;
-        }
-    } else {
-        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;
-    }
-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 MDB_dbi __Pyx_PyInt_As_MDB_dbi(PyObject *x) {
-    const MDB_dbi neg_one = (MDB_dbi) -1, const_zero = (MDB_dbi) 0;
-    const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(MDB_dbi) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(MDB_dbi, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
-            }
-            return (MDB_dbi) val;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (MDB_dbi) 0;
-                case  1: __PYX_VERIFY_RETURN_INT(MDB_dbi, digit, digits[0])
-                case 2:
-                    if (8 * sizeof(MDB_dbi) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(MDB_dbi, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(MDB_dbi) >= 2 * PyLong_SHIFT) {
-                            return (MDB_dbi) (((((MDB_dbi)digits[1]) << PyLong_SHIFT) | (MDB_dbi)digits[0]));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(MDB_dbi) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(MDB_dbi, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(MDB_dbi) >= 3 * PyLong_SHIFT) {
-                            return (MDB_dbi) (((((((MDB_dbi)digits[2]) << PyLong_SHIFT) | (MDB_dbi)digits[1]) << PyLong_SHIFT) | (MDB_dbi)digits[0]));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(MDB_dbi) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(MDB_dbi, 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(MDB_dbi) >= 4 * PyLong_SHIFT) {
-                            return (MDB_dbi) (((((((((MDB_dbi)digits[3]) << PyLong_SHIFT) | (MDB_dbi)digits[2]) << PyLong_SHIFT) | (MDB_dbi)digits[1]) << PyLong_SHIFT) | (MDB_dbi)digits[0]));
-                        }
-                    }
-                    break;
-            }
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-#else
-            {
-                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
-                if (unlikely(result < 0))
-                    return (MDB_dbi) -1;
-                if (unlikely(result == 1))
-                    goto raise_neg_overflow;
-            }
-#endif
-            if (sizeof(MDB_dbi) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(MDB_dbi, unsigned long, PyLong_AsUnsignedLong(x))
-#ifdef HAVE_LONG_LONG
-            } else if (sizeof(MDB_dbi) <= sizeof(unsigned PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(MDB_dbi, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
-#endif
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (MDB_dbi) 0;
-                case -1: __PYX_VERIFY_RETURN_INT(MDB_dbi, sdigit, (sdigit) (-(sdigit)digits[0]))
-                case  1: __PYX_VERIFY_RETURN_INT(MDB_dbi,  digit, +digits[0])
-                case -2:
-                    if (8 * sizeof(MDB_dbi) - 1 > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(MDB_dbi, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(MDB_dbi) - 1 > 2 * PyLong_SHIFT) {
-                            return (MDB_dbi) (((MDB_dbi)-1)*(((((MDB_dbi)digits[1]) << PyLong_SHIFT) | (MDB_dbi)digits[0])));
-                        }
-                    }
-                    break;
-                case 2:
-                    if (8 * sizeof(MDB_dbi) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(MDB_dbi, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(MDB_dbi) - 1 > 2 * PyLong_SHIFT) {
-                            return (MDB_dbi) ((((((MDB_dbi)digits[1]) << PyLong_SHIFT) | (MDB_dbi)digits[0])));
-                        }
-                    }
-                    break;
-                case -3:
-                    if (8 * sizeof(MDB_dbi) - 1 > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(MDB_dbi, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(MDB_dbi) - 1 > 3 * PyLong_SHIFT) {
-                            return (MDB_dbi) (((MDB_dbi)-1)*(((((((MDB_dbi)digits[2]) << PyLong_SHIFT) | (MDB_dbi)digits[1]) << PyLong_SHIFT) | (MDB_dbi)digits[0])));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(MDB_dbi) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(MDB_dbi, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(MDB_dbi) - 1 > 3 * PyLong_SHIFT) {
-                            return (MDB_dbi) ((((((((MDB_dbi)digits[2]) << PyLong_SHIFT) | (MDB_dbi)digits[1]) << PyLong_SHIFT) | (MDB_dbi)digits[0])));
-                        }
-                    }
-                    break;
-                case -4:
-                    if (8 * sizeof(MDB_dbi) - 1 > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(MDB_dbi, 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(MDB_dbi) - 1 > 4 * PyLong_SHIFT) {
-                            return (MDB_dbi) (((MDB_dbi)-1)*(((((((((MDB_dbi)digits[3]) << PyLong_SHIFT) | (MDB_dbi)digits[2]) << PyLong_SHIFT) | (MDB_dbi)digits[1]) << PyLong_SHIFT) | (MDB_dbi)digits[0])));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(MDB_dbi) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(MDB_dbi, 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(MDB_dbi) - 1 > 4 * PyLong_SHIFT) {
-                            return (MDB_dbi) ((((((((((MDB_dbi)digits[3]) << PyLong_SHIFT) | (MDB_dbi)digits[2]) << PyLong_SHIFT) | (MDB_dbi)digits[1]) << PyLong_SHIFT) | (MDB_dbi)digits[0])));
-                        }
-                    }
-                    break;
-            }
-#endif
-            if (sizeof(MDB_dbi) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(MDB_dbi, long, PyLong_AsLong(x))
-#ifdef HAVE_LONG_LONG
-            } else if (sizeof(MDB_dbi) <= sizeof(PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(MDB_dbi, 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
-            MDB_dbi 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 (MDB_dbi) -1;
-        }
-    } else {
-        MDB_dbi val;
-        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
-        if (!tmp) return (MDB_dbi) -1;
-        val = __Pyx_PyInt_As_MDB_dbi(tmp);
-        Py_DECREF(tmp);
-        return val;
-    }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to MDB_dbi");
-    return (MDB_dbi) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to MDB_dbi");
-    return (MDB_dbi) -1;
-}
-
-/* CIntFromPy */
-        static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) {
-    const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
-    const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(unsigned int) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(unsigned int, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
-            }
-            return (unsigned int) val;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (unsigned int) 0;
-                case  1: __PYX_VERIFY_RETURN_INT(unsigned int, digit, digits[0])
-                case 2:
-                    if (8 * sizeof(unsigned int) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(unsigned int) >= 2 * PyLong_SHIFT) {
-                            return (unsigned int) (((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(unsigned int) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(unsigned int) >= 3 * PyLong_SHIFT) {
-                            return (unsigned int) (((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(unsigned int) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned 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(unsigned int) >= 4 * PyLong_SHIFT) {
-                            return (unsigned int) (((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
-                        }
-                    }
-                    break;
-            }
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-#else
-            {
-                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
-                if (unlikely(result < 0))
-                    return (unsigned int) -1;
-                if (unlikely(result == 1))
-                    goto raise_neg_overflow;
-            }
-#endif
-            if (sizeof(unsigned int) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned long, PyLong_AsUnsignedLong(x))
-#ifdef HAVE_LONG_LONG
-            } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
-#endif
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (unsigned int) 0;
-                case -1: __PYX_VERIFY_RETURN_INT(unsigned int, sdigit, (sdigit) (-(sdigit)digits[0]))
-                case  1: __PYX_VERIFY_RETURN_INT(unsigned int,  digit, +digits[0])
-                case -2:
-                    if (8 * sizeof(unsigned int) - 1 > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) {
-                            return (unsigned int) (((unsigned int)-1)*(((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
-                        }
-                    }
-                    break;
-                case 2:
-                    if (8 * sizeof(unsigned int) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) {
-                            return (unsigned int) ((((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
-                        }
-                    }
-                    break;
-                case -3:
-                    if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) {
-                            return (unsigned int) (((unsigned int)-1)*(((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(unsigned int) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) {
-                            return (unsigned int) ((((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
-                        }
-                    }
-                    break;
-                case -4:
-                    if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned 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(unsigned int) - 1 > 4 * PyLong_SHIFT) {
-                            return (unsigned int) (((unsigned int)-1)*(((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(unsigned int) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned 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(unsigned int) - 1 > 4 * PyLong_SHIFT) {
-                            return (unsigned int) ((((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
-                        }
-                    }
-                    break;
-            }
-#endif
-            if (sizeof(unsigned int) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, long, PyLong_AsLong(x))
-#ifdef HAVE_LONG_LONG
-            } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, 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
-            unsigned 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
-            return (unsigned int) -1;
-        }
-    } else {
-        unsigned int val;
-        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
-        if (!tmp) return (unsigned int) -1;
-        val = __Pyx_PyInt_As_unsigned_int(tmp);
-        Py_DECREF(tmp);
-        return val;
-    }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to unsigned int");
-    return (unsigned int) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to unsigned int");
-    return (unsigned int) -1;
-}
-
-/* CIntFromPy */
-        static CYTHON_INLINE mode_t __Pyx_PyInt_As_mode_t(PyObject *x) {
-    const mode_t neg_one = (mode_t) -1, const_zero = (mode_t) 0;
-    const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(mode_t) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(mode_t, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
-            }
-            return (mode_t) val;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (mode_t) 0;
-                case  1: __PYX_VERIFY_RETURN_INT(mode_t, digit, digits[0])
-                case 2:
-                    if (8 * sizeof(mode_t) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(mode_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(mode_t) >= 2 * PyLong_SHIFT) {
-                            return (mode_t) (((((mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0]));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(mode_t) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(mode_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(mode_t) >= 3 * PyLong_SHIFT) {
-                            return (mode_t) (((((((mode_t)digits[2]) << PyLong_SHIFT) | (mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0]));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(mode_t) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(mode_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(mode_t) >= 4 * PyLong_SHIFT) {
-                            return (mode_t) (((((((((mode_t)digits[3]) << PyLong_SHIFT) | (mode_t)digits[2]) << PyLong_SHIFT) | (mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0]));
-                        }
-                    }
-                    break;
-            }
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-#else
-            {
-                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
-                if (unlikely(result < 0))
-                    return (mode_t) -1;
-                if (unlikely(result == 1))
-                    goto raise_neg_overflow;
-            }
-#endif
-            if (sizeof(mode_t) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(mode_t, unsigned long, PyLong_AsUnsignedLong(x))
-#ifdef HAVE_LONG_LONG
-            } else if (sizeof(mode_t) <= sizeof(unsigned PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(mode_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
-#endif
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (mode_t) 0;
-                case -1: __PYX_VERIFY_RETURN_INT(mode_t, sdigit, (sdigit) (-(sdigit)digits[0]))
-                case  1: __PYX_VERIFY_RETURN_INT(mode_t,  digit, +digits[0])
-                case -2:
-                    if (8 * sizeof(mode_t) - 1 > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(mode_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(mode_t) - 1 > 2 * PyLong_SHIFT) {
-                            return (mode_t) (((mode_t)-1)*(((((mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0])));
-                        }
-                    }
-                    break;
-                case 2:
-                    if (8 * sizeof(mode_t) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(mode_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(mode_t) - 1 > 2 * PyLong_SHIFT) {
-                            return (mode_t) ((((((mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0])));
-                        }
-                    }
-                    break;
-                case -3:
-                    if (8 * sizeof(mode_t) - 1 > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(mode_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(mode_t) - 1 > 3 * PyLong_SHIFT) {
-                            return (mode_t) (((mode_t)-1)*(((((((mode_t)digits[2]) << PyLong_SHIFT) | (mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0])));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(mode_t) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(mode_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(mode_t) - 1 > 3 * PyLong_SHIFT) {
-                            return (mode_t) ((((((((mode_t)digits[2]) << PyLong_SHIFT) | (mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0])));
-                        }
-                    }
-                    break;
-                case -4:
-                    if (8 * sizeof(mode_t) - 1 > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(mode_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(mode_t) - 1 > 4 * PyLong_SHIFT) {
-                            return (mode_t) (((mode_t)-1)*(((((((((mode_t)digits[3]) << PyLong_SHIFT) | (mode_t)digits[2]) << PyLong_SHIFT) | (mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0])));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(mode_t) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(mode_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(mode_t) - 1 > 4 * PyLong_SHIFT) {
-                            return (mode_t) ((((((((((mode_t)digits[3]) << PyLong_SHIFT) | (mode_t)digits[2]) << PyLong_SHIFT) | (mode_t)digits[1]) << PyLong_SHIFT) | (mode_t)digits[0])));
-                        }
-                    }
-                    break;
-            }
-#endif
-            if (sizeof(mode_t) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(mode_t, long, PyLong_AsLong(x))
-#ifdef HAVE_LONG_LONG
-            } else if (sizeof(mode_t) <= sizeof(PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(mode_t, 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
-            mode_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
-            return (mode_t) -1;
-        }
-    } else {
-        mode_t val;
-        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
-        if (!tmp) return (mode_t) -1;
-        val = __Pyx_PyInt_As_mode_t(tmp);
-        Py_DECREF(tmp);
-        return val;
-    }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to mode_t");
-    return (mode_t) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to mode_t");
-    return (mode_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))) {
-        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;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-#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
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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 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
-            return (int) -1;
-        }
-    } else {
-        int val;
-        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
-        if (!tmp) return (int) -1;
-        val = __Pyx_PyInt_As_int(tmp);
-        Py_DECREF(tmp);
-        return val;
-    }
-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 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))) {
-        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;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                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
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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 (long) -1;
-        }
-    } else {
-        long val;
-        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
-        if (!tmp) return (long) -1;
-        val = __Pyx_PyInt_As_long(tmp);
-        Py_DECREF(tmp);
-        return val;
-    }
-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;
-}
-
-/* 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;
-}
-
-/* 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;
-}
-
-/* CoroutineBase */
-        #include <structmember.h>
-#include <frameobject.h>
-#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
-static int __Pyx_PyGen__FetchStopIterationValue(CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject **pvalue) {
-    PyObject *et, *ev, *tb;
-    PyObject *value = NULL;
-    __Pyx_ErrFetch(&et, &ev, &tb);
-    if (!et) {
-        Py_XDECREF(tb);
-        Py_XDECREF(ev);
-        Py_INCREF(Py_None);
-        *pvalue = Py_None;
-        return 0;
-    }
-    if (likely(et == PyExc_StopIteration)) {
-        if (!ev) {
-            Py_INCREF(Py_None);
-            value = Py_None;
-        }
-#if PY_VERSION_HEX >= 0x030300A0
-        else if (Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) {
-            value = ((PyStopIterationObject *)ev)->value;
-            Py_INCREF(value);
-            Py_DECREF(ev);
-        }
-#endif
-        else if (unlikely(PyTuple_Check(ev))) {
-            if (PyTuple_GET_SIZE(ev) >= 1) {
-#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-                value = PyTuple_GET_ITEM(ev, 0);
-                Py_INCREF(value);
-#else
-                value = PySequence_ITEM(ev, 0);
-#endif
-            } else {
-                Py_INCREF(Py_None);
-                value = Py_None;
-            }
-            Py_DECREF(ev);
-        }
-        else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) {
-            value = ev;
-        }
-        if (likely(value)) {
-            Py_XDECREF(tb);
-            Py_DECREF(et);
-            *pvalue = value;
-            return 0;
-        }
-    } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) {
-        __Pyx_ErrRestore(et, ev, tb);
-        return -1;
-    }
-    PyErr_NormalizeException(&et, &ev, &tb);
-    if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) {
-        __Pyx_ErrRestore(et, ev, tb);
-        return -1;
-    }
-    Py_XDECREF(tb);
-    Py_DECREF(et);
-#if PY_VERSION_HEX >= 0x030300A0
-    value = ((PyStopIterationObject *)ev)->value;
-    Py_INCREF(value);
-    Py_DECREF(ev);
-#else
-    {
-        PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args);
-        Py_DECREF(ev);
-        if (likely(args)) {
-            value = PySequence_GetItem(args, 0);
-            Py_DECREF(args);
-        }
-        if (unlikely(!value)) {
-            __Pyx_ErrRestore(NULL, NULL, NULL);
-            Py_INCREF(Py_None);
-            value = Py_None;
-        }
-    }
-#endif
-    *pvalue = value;
-    return 0;
-}
-static CYTHON_INLINE
-void __Pyx_Coroutine_ExceptionClear(__pyx_CoroutineObject *self) {
-    PyObject *exc_type = self->exc_type;
-    PyObject *exc_value = self->exc_value;
-    PyObject *exc_traceback = self->exc_traceback;
-    self->exc_type = NULL;
-    self->exc_value = NULL;
-    self->exc_traceback = NULL;
-    Py_XDECREF(exc_type);
-    Py_XDECREF(exc_value);
-    Py_XDECREF(exc_traceback);
-}
-#define __Pyx_Coroutine_AlreadyRunningError(gen)  (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL)
-static void __Pyx__Coroutine_AlreadyRunningError(CYTHON_UNUSED __pyx_CoroutineObject *gen) {
-    const char *msg;
-    if (0) {
-    #ifdef __Pyx_Coroutine_USED
-    } else if (__Pyx_Coroutine_Check((PyObject*)gen)) {
-        msg = "coroutine already executing";
-    #endif
-    #ifdef __Pyx_AsyncGen_USED
-    } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) {
-        msg = "async generator already executing";
-    #endif
-    } else {
-        msg = "generator already executing";
-    }
-    PyErr_SetString(PyExc_ValueError, msg);
-}
-#define __Pyx_Coroutine_NotStartedError(gen)  (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL)
-static void __Pyx__Coroutine_NotStartedError(CYTHON_UNUSED PyObject *gen) {
-    const char *msg;
-    if (0) {
-    #ifdef __Pyx_Coroutine_USED
-    } else if (__Pyx_Coroutine_Check(gen)) {
-        msg = "can't send non-None value to a just-started coroutine";
-    #endif
-    #ifdef __Pyx_AsyncGen_USED
-    } else if (__Pyx_AsyncGen_CheckExact(gen)) {
-        msg = "can't send non-None value to a just-started async generator";
-    #endif
-    } else {
-        msg = "can't send non-None value to a just-started generator";
-    }
-    PyErr_SetString(PyExc_TypeError, msg);
-}
-#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing)  (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL)
-static void __Pyx__Coroutine_AlreadyTerminatedError(CYTHON_UNUSED PyObject *gen, PyObject *value, CYTHON_UNUSED int closing) {
-    #ifdef __Pyx_Coroutine_USED
-    if (!closing && __Pyx_Coroutine_Check(gen)) {
-        PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine");
-    } else
-    #endif
-    if (value) {
-        #ifdef __Pyx_AsyncGen_USED
-        if (__Pyx_AsyncGen_CheckExact(gen))
-            PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
-        else
-        #endif
-        PyErr_SetNone(PyExc_StopIteration);
-    }
-}
-static
-PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) {
-    __Pyx_PyThreadState_declare
-    PyThreadState *tstate;
-    PyObject *retval;
-    assert(!self->is_running);
-    if (unlikely(self->resume_label == 0)) {
-        if (unlikely(value && value != Py_None)) {
-            return __Pyx_Coroutine_NotStartedError((PyObject*)self);
-        }
-    }
-    if (unlikely(self->resume_label == -1)) {
-        return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing);
-    }
-#if CYTHON_FAST_THREAD_STATE
-    __Pyx_PyThreadState_assign
-    tstate = __pyx_tstate;
-#else
-    tstate = __Pyx_PyThreadState_Current;
-#endif
-    if (self->exc_type) {
-#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
-#else
-        if (self->exc_traceback) {
-            PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
-            PyFrameObject *f = tb->tb_frame;
-            Py_XINCREF(tstate->frame);
-            assert(f->f_back == NULL);
-            f->f_back = tstate->frame;
-        }
-#endif
-        __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
-                            &self->exc_traceback);
-    } else {
-        __Pyx_Coroutine_ExceptionClear(self);
-        __Pyx_ExceptionSave(&self->exc_type, &self->exc_value, &self->exc_traceback);
-    }
-    self->is_running = 1;
-    retval = self->body((PyObject *) self, tstate, value);
-    self->is_running = 0;
-    return retval;
-}
-static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__pyx_CoroutineObject *self) {
-    if (likely(self->exc_traceback)) {
-#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
-#else
-        PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
-        PyFrameObject *f = tb->tb_frame;
-        Py_CLEAR(f->f_back);
-#endif
-    }
-}
-static CYTHON_INLINE
-PyObject *__Pyx_Coroutine_MethodReturn(CYTHON_UNUSED PyObject* gen, PyObject *retval) {
-    if (unlikely(!retval)) {
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        if (!__Pyx_PyErr_Occurred()) {
-            PyObject *exc = PyExc_StopIteration;
-            #ifdef __Pyx_AsyncGen_USED
-            if (__Pyx_AsyncGen_CheckExact(gen))
-                exc = __Pyx_PyExc_StopAsyncIteration;
-            #endif
-            __Pyx_PyErr_SetNone(exc);
-        }
-    }
-    return retval;
-}
-static CYTHON_INLINE
-PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) {
-    PyObject *ret;
-    PyObject *val = NULL;
-    __Pyx_Coroutine_Undelegate(gen);
-    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val);
-    ret = __Pyx_Coroutine_SendEx(gen, val, 0);
-    Py_XDECREF(val);
-    return ret;
-}
-static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) {
-    PyObject *retval;
-    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
-    PyObject *yf = gen->yieldfrom;
-    if (unlikely(gen->is_running))
-        return __Pyx_Coroutine_AlreadyRunningError(gen);
-    if (yf) {
-        PyObject *ret;
-        gen->is_running = 1;
-        #ifdef __Pyx_Generator_USED
-        if (__Pyx_Generator_CheckExact(yf)) {
-            ret = __Pyx_Coroutine_Send(yf, value);
-        } else
-        #endif
-        #ifdef __Pyx_Coroutine_USED
-        if (__Pyx_Coroutine_Check(yf)) {
-            ret = __Pyx_Coroutine_Send(yf, value);
-        } else
-        #endif
-        #ifdef __Pyx_AsyncGen_USED
-        if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
-            ret = __Pyx_async_gen_asend_send(yf, value);
-        } else
-        #endif
-        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
-        if (PyGen_CheckExact(yf)) {
-            ret = _PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
-        } else
-        #endif
-        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
-        if (PyCoro_CheckExact(yf)) {
-            ret = _PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
-        } else
-        #endif
-        {
-            if (value == Py_None)
-                ret = Py_TYPE(yf)->tp_iternext(yf);
-            else
-                ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value);
-        }
-        gen->is_running = 0;
-        if (likely(ret)) {
-            return ret;
-        }
-        retval = __Pyx_Coroutine_FinishDelegation(gen);
-    } else {
-        retval = __Pyx_Coroutine_SendEx(gen, value, 0);
-    }
-    return __Pyx_Coroutine_MethodReturn(self, retval);
-}
-static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) {
-    PyObject *retval = NULL;
-    int err = 0;
-    #ifdef __Pyx_Generator_USED
-    if (__Pyx_Generator_CheckExact(yf)) {
-        retval = __Pyx_Coroutine_Close(yf);
-        if (!retval)
-            return -1;
-    } else
-    #endif
-    #ifdef __Pyx_Coroutine_USED
-    if (__Pyx_Coroutine_Check(yf)) {
-        retval = __Pyx_Coroutine_Close(yf);
-        if (!retval)
-            return -1;
-    } else
-    if (__Pyx_CoroutineAwait_CheckExact(yf)) {
-        retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf);
-        if (!retval)
-            return -1;
-    } else
-    #endif
-    #ifdef __Pyx_AsyncGen_USED
-    if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
-        retval = __Pyx_async_gen_asend_close(yf, NULL);
-    } else
-    if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) {
-        retval = __Pyx_async_gen_athrow_close(yf, NULL);
-    } else
-    #endif
-    {
-        PyObject *meth;
-        gen->is_running = 1;
-        meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_close);
-        if (unlikely(!meth)) {
-            if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
-                PyErr_WriteUnraisable(yf);
-            }
-            PyErr_Clear();
-        } else {
-            retval = PyObject_CallFunction(meth, NULL);
-            Py_DECREF(meth);
-            if (!retval)
-                err = -1;
-        }
-        gen->is_running = 0;
-    }
-    Py_XDECREF(retval);
-    return err;
-}
-static PyObject *__Pyx_Generator_Next(PyObject *self) {
-    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
-    PyObject *yf = gen->yieldfrom;
-    if (unlikely(gen->is_running))
-        return __Pyx_Coroutine_AlreadyRunningError(gen);
-    if (yf) {
-        PyObject *ret;
-        gen->is_running = 1;
-        #ifdef __Pyx_Generator_USED
-        if (__Pyx_Generator_CheckExact(yf)) {
-            ret = __Pyx_Generator_Next(yf);
-        } else
-        #endif
-        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
-        if (PyGen_CheckExact(yf)) {
-            ret = _PyGen_Send((PyGenObject*)yf, NULL);
-        } else
-        #endif
-        #ifdef __Pyx_Coroutine_USED
-        if (__Pyx_Coroutine_Check(yf)) {
-            ret = __Pyx_Coroutine_Send(yf, Py_None);
-        } else
-        #endif
-            ret = Py_TYPE(yf)->tp_iternext(yf);
-        gen->is_running = 0;
-        if (likely(ret)) {
-            return ret;
-        }
-        return __Pyx_Coroutine_FinishDelegation(gen);
-    }
-    return __Pyx_Coroutine_SendEx(gen, Py_None, 0);
-}
-static PyObject *__Pyx_Coroutine_Close(PyObject *self) {
-    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
-    PyObject *retval, *raised_exception;
-    PyObject *yf = gen->yieldfrom;
-    int err = 0;
-    if (unlikely(gen->is_running))
-        return __Pyx_Coroutine_AlreadyRunningError(gen);
-    if (yf) {
-        Py_INCREF(yf);
-        err = __Pyx_Coroutine_CloseIter(gen, yf);
-        __Pyx_Coroutine_Undelegate(gen);
-        Py_DECREF(yf);
-    }
-    if (err == 0)
-        PyErr_SetNone(PyExc_GeneratorExit);
-    retval = __Pyx_Coroutine_SendEx(gen, NULL, 1);
-    if (unlikely(retval)) {
-        const char *msg;
-        Py_DECREF(retval);
-        if ((0)) {
-        #ifdef __Pyx_Coroutine_USED
-        } else if (__Pyx_Coroutine_Check(self)) {
-            msg = "coroutine ignored GeneratorExit";
-        #endif
-        #ifdef __Pyx_AsyncGen_USED
-        } else if (__Pyx_AsyncGen_CheckExact(self)) {
-#if PY_VERSION_HEX < 0x03060000
-            msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)";
-#else
-            msg = "async generator ignored GeneratorExit";
-#endif
-        #endif
-        } else {
-            msg = "generator ignored GeneratorExit";
-        }
-        PyErr_SetString(PyExc_RuntimeError, msg);
-        return NULL;
-    }
-    raised_exception = PyErr_Occurred();
-    if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) {
-        if (raised_exception) PyErr_Clear();
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return NULL;
-}
-static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb,
-                                        PyObject *args, int close_on_genexit) {
-    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
-    PyObject *yf = gen->yieldfrom;
-    if (unlikely(gen->is_running))
-        return __Pyx_Coroutine_AlreadyRunningError(gen);
-    if (yf) {
-        PyObject *ret;
-        Py_INCREF(yf);
-        if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) {
-            int err = __Pyx_Coroutine_CloseIter(gen, yf);
-            Py_DECREF(yf);
-            __Pyx_Coroutine_Undelegate(gen);
-            if (err < 0)
-                return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
-            goto throw_here;
-        }
-        gen->is_running = 1;
-        if (0
-        #ifdef __Pyx_Generator_USED
-            || __Pyx_Generator_CheckExact(yf)
-        #endif
-        #ifdef __Pyx_Coroutine_USED
-            || __Pyx_Coroutine_Check(yf)
-        #endif
-            ) {
-            ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit);
-        #ifdef __Pyx_Coroutine_USED
-        } else if (__Pyx_CoroutineAwait_CheckExact(yf)) {
-            ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit);
-        #endif
-        } else {
-            PyObject *meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_throw);
-            if (unlikely(!meth)) {
-                Py_DECREF(yf);
-                if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
-                    gen->is_running = 0;
-                    return NULL;
-                }
-                PyErr_Clear();
-                __Pyx_Coroutine_Undelegate(gen);
-                gen->is_running = 0;
-                goto throw_here;
-            }
-            if (likely(args)) {
-                ret = PyObject_CallObject(meth, args);
-            } else {
-                ret = PyObject_CallFunctionObjArgs(meth, typ, val, tb, NULL);
-            }
-            Py_DECREF(meth);
-        }
-        gen->is_running = 0;
-        Py_DECREF(yf);
-        if (!ret) {
-            ret = __Pyx_Coroutine_FinishDelegation(gen);
-        }
-        return __Pyx_Coroutine_MethodReturn(self, ret);
-    }
-throw_here:
-    __Pyx_Raise(typ, val, tb, NULL);
-    return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
-}
-static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) {
-    PyObject *typ;
-    PyObject *val = NULL;
-    PyObject *tb = NULL;
-    if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))
-        return NULL;
-    return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1);
-}
-static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) {
-    Py_VISIT(gen->closure);
-    Py_VISIT(gen->classobj);
-    Py_VISIT(gen->yieldfrom);
-    Py_VISIT(gen->exc_type);
-    Py_VISIT(gen->exc_value);
-    Py_VISIT(gen->exc_traceback);
-    return 0;
-}
-static int __Pyx_Coroutine_clear(PyObject *self) {
-    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
-    Py_CLEAR(gen->closure);
-    Py_CLEAR(gen->classobj);
-    Py_CLEAR(gen->yieldfrom);
-    Py_CLEAR(gen->exc_type);
-    Py_CLEAR(gen->exc_value);
-    Py_CLEAR(gen->exc_traceback);
-#ifdef __Pyx_AsyncGen_USED
-    if (__Pyx_AsyncGen_CheckExact(self)) {
-        Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer);
-    }
-#endif
-    Py_CLEAR(gen->gi_code);
-    Py_CLEAR(gen->gi_name);
-    Py_CLEAR(gen->gi_qualname);
-    Py_CLEAR(gen->gi_modulename);
-    return 0;
-}
-static void __Pyx_Coroutine_dealloc(PyObject *self) {
-    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
-    PyObject_GC_UnTrack(gen);
-    if (gen->gi_weakreflist != NULL)
-        PyObject_ClearWeakRefs(self);
-    if (gen->resume_label >= 0) {
-        PyObject_GC_Track(self);
-#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE
-        if (PyObject_CallFinalizerFromDealloc(self))
-#else
-        Py_TYPE(gen)->tp_del(self);
-        if (self->ob_refcnt > 0)
-#endif
-        {
-            return;
-        }
-        PyObject_GC_UnTrack(self);
-    }
-#ifdef __Pyx_AsyncGen_USED
-    if (__Pyx_AsyncGen_CheckExact(self)) {
-        /* We have to handle this case for asynchronous generators
-           right here, because this code has to be between UNTRACK
-           and GC_Del. */
-        Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer);
-    }
-#endif
-    __Pyx_Coroutine_clear(self);
-    PyObject_GC_Del(gen);
-}
-static void __Pyx_Coroutine_del(PyObject *self) {
-    PyObject *error_type, *error_value, *error_traceback;
-    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
-    __Pyx_PyThreadState_declare
-    if (gen->resume_label < 0) {
-        return;
-    }
-#if !CYTHON_USE_TP_FINALIZE
-    assert(self->ob_refcnt == 0);
-    self->ob_refcnt = 1;
-#endif
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
-#ifdef __Pyx_AsyncGen_USED
-    if (__Pyx_AsyncGen_CheckExact(self)) {
-        __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self;
-        PyObject *finalizer = agen->ag_finalizer;
-        if (finalizer && !agen->ag_closed) {
-            PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self);
-            if (unlikely(!res)) {
-                PyErr_WriteUnraisable(self);
-            } else {
-                Py_DECREF(res);
-            }
-            __Pyx_ErrRestore(error_type, error_value, error_traceback);
-            return;
-        }
-    }
-#endif
-    if (unlikely(gen->resume_label == 0 && !error_value)) {
-#ifdef __Pyx_Coroutine_USED
-#ifdef __Pyx_Generator_USED
-    if (!__Pyx_Generator_CheckExact(self))
-#endif
-        {
-        PyObject_GC_UnTrack(self);
-#if PY_MAJOR_VERSION >= 3  || defined(PyErr_WarnFormat)
-        if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0))
-            PyErr_WriteUnraisable(self);
-#else
-        {PyObject *msg;
-        char *cmsg;
-        #if CYTHON_COMPILING_IN_PYPY
-        msg = NULL;
-        cmsg = (char*) "coroutine was never awaited";
-        #else
-        char *cname;
-        PyObject *qualname;
-        qualname = gen->gi_qualname;
-        cname = PyString_AS_STRING(qualname);
-        msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname);
-        if (unlikely(!msg)) {
-            PyErr_Clear();
-            cmsg = (char*) "coroutine was never awaited";
-        } else {
-            cmsg = PyString_AS_STRING(msg);
-        }
-        #endif
-        if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0))
-            PyErr_WriteUnraisable(self);
-        Py_XDECREF(msg);}
-#endif
-        PyObject_GC_Track(self);
-        }
-#endif
-    } else {
-        PyObject *res = __Pyx_Coroutine_Close(self);
-        if (unlikely(!res)) {
-            if (PyErr_Occurred())
-                PyErr_WriteUnraisable(self);
-        } else {
-            Py_DECREF(res);
-        }
-    }
-    __Pyx_ErrRestore(error_type, error_value, error_traceback);
-#if !CYTHON_USE_TP_FINALIZE
-    assert(self->ob_refcnt > 0);
-    if (--self->ob_refcnt == 0) {
-        return;
-    }
-    {
-        Py_ssize_t refcnt = self->ob_refcnt;
-        _Py_NewReference(self);
-        self->ob_refcnt = refcnt;
-    }
-#if CYTHON_COMPILING_IN_CPYTHON
-    assert(PyType_IS_GC(self->ob_type) &&
-           _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
-    _Py_DEC_REFTOTAL;
-#endif
-#ifdef COUNT_ALLOCS
-    --Py_TYPE(self)->tp_frees;
-    --Py_TYPE(self)->tp_allocs;
-#endif
-#endif
-}
-static PyObject *
-__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self)
-{
-    PyObject *name = self->gi_name;
-    if (unlikely(!name)) name = Py_None;
-    Py_INCREF(name);
-    return name;
-}
-static int
-__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value)
-{
-    PyObject *tmp;
-#if PY_MAJOR_VERSION >= 3
-    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
-#else
-    if (unlikely(value == NULL || !PyString_Check(value))) {
-#endif
-        PyErr_SetString(PyExc_TypeError,
-                        "__name__ must be set to a string object");
-        return -1;
-    }
-    tmp = self->gi_name;
-    Py_INCREF(value);
-    self->gi_name = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-static PyObject *
-__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self)
-{
-    PyObject *name = self->gi_qualname;
-    if (unlikely(!name)) name = Py_None;
-    Py_INCREF(name);
-    return name;
-}
-static int
-__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value)
-{
-    PyObject *tmp;
-#if PY_MAJOR_VERSION >= 3
-    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
-#else
-    if (unlikely(value == NULL || !PyString_Check(value))) {
-#endif
-        PyErr_SetString(PyExc_TypeError,
-                        "__qualname__ must be set to a string object");
-        return -1;
-    }
-    tmp = self->gi_qualname;
-    Py_INCREF(value);
-    self->gi_qualname = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-static __pyx_CoroutineObject *__Pyx__Coroutine_New(
-            PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
-            PyObject *name, PyObject *qualname, PyObject *module_name) {
-    __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type);
-    if (unlikely(!gen))
-        return NULL;
-    return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name);
-}
-static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
-            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
-            PyObject *name, PyObject *qualname, PyObject *module_name) {
-    gen->body = body;
-    gen->closure = closure;
-    Py_XINCREF(closure);
-    gen->is_running = 0;
-    gen->resume_label = 0;
-    gen->classobj = NULL;
-    gen->yieldfrom = NULL;
-    gen->exc_type = NULL;
-    gen->exc_value = NULL;
-    gen->exc_traceback = NULL;
-    gen->gi_weakreflist = NULL;
-    Py_XINCREF(qualname);
-    gen->gi_qualname = qualname;
-    Py_XINCREF(name);
-    gen->gi_name = name;
-    Py_XINCREF(module_name);
-    gen->gi_modulename = module_name;
-    Py_XINCREF(code);
-    gen->gi_code = code;
-    PyObject_GC_Track(gen);
-    return gen;
-}
-
-/* PatchModuleWithCoroutine */
-            static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) {
-#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
-    int result;
-    PyObject *globals, *result_obj;
-    globals = PyDict_New();  if (unlikely(!globals)) goto ignore;
-    result = PyDict_SetItemString(globals, "_cython_coroutine_type",
-    #ifdef __Pyx_Coroutine_USED
-        (PyObject*)__pyx_CoroutineType);
-    #else
-        Py_None);
-    #endif
-    if (unlikely(result < 0)) goto ignore;
-    result = PyDict_SetItemString(globals, "_cython_generator_type",
-    #ifdef __Pyx_Generator_USED
-        (PyObject*)__pyx_GeneratorType);
-    #else
-        Py_None);
-    #endif
-    if (unlikely(result < 0)) goto ignore;
-    if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore;
-    if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore;
-    result_obj = PyRun_String(py_code, Py_file_input, globals, globals);
-    if (unlikely(!result_obj)) goto ignore;
-    Py_DECREF(result_obj);
-    Py_DECREF(globals);
-    return module;
-ignore:
-    Py_XDECREF(globals);
-    PyErr_WriteUnraisable(module);
-    if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) {
-        Py_DECREF(module);
-        module = NULL;
-    }
-#else
-    py_code++;
-#endif
-    return module;
-}
-
-/* PatchGeneratorABC */
-            #ifndef CYTHON_REGISTER_ABCS
-#define CYTHON_REGISTER_ABCS 1
-#endif
-#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
-static PyObject* __Pyx_patch_abc_module(PyObject *module);
-static PyObject* __Pyx_patch_abc_module(PyObject *module) {
-    module = __Pyx_Coroutine_patch_module(
-        module, ""
-"if _cython_generator_type is not None:\n"
-"    try: Generator = _module.Generator\n"
-"    except AttributeError: pass\n"
-"    else: Generator.register(_cython_generator_type)\n"
-"if _cython_coroutine_type is not None:\n"
-"    try: Coroutine = _module.Coroutine\n"
-"    except AttributeError: pass\n"
-"    else: Coroutine.register(_cython_coroutine_type)\n"
-    );
-    return module;
-}
-#endif
-static int __Pyx_patch_abc(void) {
-#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
-    static int abc_patched = 0;
-    if (CYTHON_REGISTER_ABCS && !abc_patched) {
-        PyObject *module;
-        module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections");
-        if (!module) {
-            PyErr_WriteUnraisable(NULL);
-            if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning,
-                    ((PY_MAJOR_VERSION >= 3) ?
-                        "Cython module failed to register with collections.abc module" :
-                        "Cython module failed to register with collections module"), 1) < 0)) {
-                return -1;
-            }
-        } else {
-            module = __Pyx_patch_abc_module(module);
-            abc_patched = 1;
-            if (unlikely(!module))
-                return -1;
-            Py_DECREF(module);
-        }
-        module = PyImport_ImportModule("backports_abc");
-        if (module) {
-            module = __Pyx_patch_abc_module(module);
-            Py_XDECREF(module);
-        }
-        if (!module) {
-            PyErr_Clear();
-        }
-    }
-#else
-    if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL);
-#endif
-    return 0;
-}
-
-/* Generator */
-            static PyMethodDef __pyx_Generator_methods[] = {
-    {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
-     (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")},
-    {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
-     (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")},
-    {"close", (PyCFunction) __Pyx_Coroutine_Close, METH_NOARGS,
-     (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")},
-    {0, 0, 0, 0}
-};
-static PyMemberDef __pyx_Generator_memberlist[] = {
-    {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL},
-    {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
-     (char*) PyDoc_STR("object being iterated by 'yield from', or None")},
-    {(char*) "gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL},
-    {0, 0, 0, 0, 0}
-};
-static PyGetSetDef __pyx_Generator_getsets[] = {
-    {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
-     (char*) PyDoc_STR("name of the generator"), 0},
-    {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
-     (char*) PyDoc_STR("qualified name of the generator"), 0},
-    {0, 0, 0, 0, 0}
-};
-static PyTypeObject __pyx_GeneratorType_type = {
-    PyVarObject_HEAD_INIT(0, 0)
-    "generator",
-    sizeof(__pyx_CoroutineObject),
-    0,
-    (destructor) __Pyx_Coroutine_dealloc,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
-    0,
-    (traverseproc) __Pyx_Coroutine_traverse,
-    0,
-    0,
-    offsetof(__pyx_CoroutineObject, gi_weakreflist),
-    0,
-    (iternextfunc) __Pyx_Generator_Next,
-    __pyx_Generator_methods,
-    __pyx_Generator_memberlist,
-    __pyx_Generator_getsets,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-#if CYTHON_USE_TP_FINALIZE
-    0,
-#else
-    __Pyx_Coroutine_del,
-#endif
-    0,
-#if CYTHON_USE_TP_FINALIZE
-    __Pyx_Coroutine_del,
-#elif PY_VERSION_HEX >= 0x030400a1
-    0,
-#endif
-};
-static int __pyx_Generator_init(void) {
-    __pyx_GeneratorType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
-    __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter;
-    __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type);
-    if (unlikely(!__pyx_GeneratorType)) {
-        return -1;
-    }
-    return 0;
-}
-
-/* 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());
-    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
-        char message[200];
-        PyOS_snprintf(message, sizeof(message),
-                      "compiletime version %s of module '%.100s' "
-                      "does not match runtime version %s",
-                      ctversion, __Pyx_MODULE_NAME, rtversion);
-        return PyErr_WarnEx(NULL, message, 1);
-    }
-    return 0;
-}
-
-/* VoidPtrExport */
-            static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) {
-    PyObject *d;
-    PyObject *cobj = 0;
-    d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi);
-    Py_XINCREF(d);
-    if (!d) {
-        d = PyDict_New();
-        if (!d)
-            goto bad;
-        if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0)
-            goto bad;
-    }
-#if PY_VERSION_HEX >= 0x02070000
-    cobj = PyCapsule_New(p, sig, 0);
-#else
-    cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0);
-#endif
-    if (!cobj)
-        goto bad;
-    if (PyDict_SetItem(d, name, cobj) < 0)
-        goto bad;
-    Py_DECREF(cobj);
-    Py_DECREF(d);
-    return 0;
-bad:
-    Py_XDECREF(cobj);
-    Py_XDECREF(d);
-    return -1;
-}
-
-/* FunctionExport */
-            static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
-    PyObject *d = 0;
-    PyObject *cobj = 0;
-    union {
-        void (*fp)(void);
-        void *p;
-    } tmp;
-    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
-    if (!d) {
-        PyErr_Clear();
-        d = PyDict_New();
-        if (!d)
-            goto bad;
-        Py_INCREF(d);
-        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
-            goto bad;
-    }
-    tmp.fp = f;
-#if PY_VERSION_HEX >= 0x02070000
-    cobj = PyCapsule_New(tmp.p, sig, 0);
-#else
-    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
-#endif
-    if (!cobj)
-        goto bad;
-    if (PyDict_SetItemString(d, name, cobj) < 0)
-        goto bad;
-    Py_DECREF(cobj);
-    Py_DECREF(d);
-    return 0;
-bad:
-    Py_XDECREF(cobj);
-    Py_XDECREF(d);
-    return -1;
-}
-
-/* InitStrings */
-            static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
-    while (t->p) {
-        #if PY_MAJOR_VERSION < 3
-        if (t->is_unicode) {
-            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
-        } else if (t->intern) {
-            *t->p = PyString_InternFromString(t->s);
-        } else {
-            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
-        }
-        #else
-        if (t->is_unicode | t->is_str) {
-            if (t->intern) {
-                *t->p = PyUnicode_InternFromString(t->s);
-            } else if (t->encoding) {
-                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
-            } else {
-                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
-            }
-        } else {
-            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
-        }
-        #endif
-        if (!*t->p)
-            return -1;
-        if (PyObject_Hash(*t->p) == -1)
-            return -1;
-        ++t;
-    }
-    return 0;
-}
-
-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 const char* __Pyx_PyObject_AsString(PyObject* o) {
-    Py_ssize_t ignore;
-    return __Pyx_PyObject_AsStringAndSize(o, &ignore);
-}
-#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)) {
-        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
-    {
-        char* result;
-        int r = PyBytes_AsStringAndSize(o, &result, length);
-        if (unlikely(r < 0)) {
-            return NULL;
-        } else {
-            return result;
-        }
-    }
-}
-static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
-   int is_true = x == Py_True;
-   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
-   else return PyObject_IsTrue(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 (likely(PyInt_Check(x) || PyLong_Check(x)))
-#else
-  if (likely(PyLong_Check(x)))
-#endif
-    return __Pyx_NewRef(x);
-#if CYTHON_USE_TYPE_SLOTS
-  m = Py_TYPE(x)->tp_as_number;
-  #if PY_MAJOR_VERSION < 3
-  if (m && m->nb_int) {
-    name = "int";
-    res = m->nb_int(x);
-  }
-  else if (m && m->nb_long) {
-    name = "long";
-    res = m->nb_long(x);
-  }
-  #else
-  if (likely(m && m->nb_int)) {
-    name = "int";
-    res = m->nb_int(x);
-  }
-  #endif
-#else
-  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
-    res = PyNumber_Int(x);
-  }
-#endif
-  if (likely(res)) {
-#if PY_MAJOR_VERSION < 3
-    if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
-#else
-    if (unlikely(!PyLong_CheckExact(res))) {
-#endif
-        return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
-    }
-  }
-  else if (!PyErr_Occurred()) {
-    PyErr_SetString(PyExc_TypeError,
-                    "an integer is required");
-  }
-  return res;
-}
-static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
-  Py_ssize_t ival;
-  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) {
-    return PyInt_FromSize_t(ival);
-}
-
-
-#endif /* Py_PYTHON_H */

+ 0 - 39269
lakesuperior/store/ldp_rs/lmdb_triplestore.c

@@ -1,39269 +0,0 @@
-/* Generated by Cython 0.28.4 */
-
-/* BEGIN: Cython Metadata
-{
-    "distutils": {
-        "depends": [
-            "/home/scossu/code/lsup/src/ext/include/lmdb.h"
-        ],
-        "extra_compile_args": [
-            "-fopenmp"
-        ],
-        "extra_link_args": [
-            "-fopenmp"
-        ],
-        "include_dirs": [
-            "/home/scossu/code/lsup/src/ext/include",
-            "/home/scossu/code/lsup/src/lakesuperior/cy_include"
-        ],
-        "libraries": [
-            "crypto"
-        ],
-        "name": "lakesuperior.store.ldp_rs.lmdb_triplestore",
-        "sources": [
-            "/home/scossu/code/lsup/src/lakesuperior/store/ldp_rs/lmdb_triplestore.pyx",
-            "/home/scossu/code/lsup/src/ext/lib/mdb.c",
-            "/home/scossu/code/lsup/src/ext/lib/midl.c"
-        ]
-    },
-    "module_name": "lakesuperior.store.ldp_rs.lmdb_triplestore"
-}
-END: Cython Metadata */
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#ifndef Py_PYTHON_H
-    #error Python headers needed to compile C extensions, please install development version of Python.
-#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
-    #error Cython requires Python 2.6+ or Python 3.3+.
-#else
-#define CYTHON_ABI "0_28_4"
-#define CYTHON_FUTURE_DIVISION 1
-#include <stddef.h>
-#ifndef offsetof
-  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
-#endif
-#if !defined(WIN32) && !defined(MS_WINDOWS)
-  #ifndef __stdcall
-    #define __stdcall
-  #endif
-  #ifndef __cdecl
-    #define __cdecl
-  #endif
-  #ifndef __fastcall
-    #define __fastcall
-  #endif
-#endif
-#ifndef DL_IMPORT
-  #define DL_IMPORT(t) t
-#endif
-#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
-#ifndef Py_HUGE_VAL
-  #define Py_HUGE_VAL HUGE_VAL
-#endif
-#ifdef PYPY_VERSION
-  #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_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<class T> 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
-   #include <stdint.h>
-#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+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)\
-          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
-  #define __Pyx_DefaultClassType PyType_Type
-#endif
-#ifndef Py_TPFLAGS_CHECKTYPES
-  #define Py_TPFLAGS_CHECKTYPES 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_INDEX
-  #define Py_TPFLAGS_HAVE_INDEX 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
-  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
-#endif
-#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)) ?\
-                                              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_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
-  #define PyStringObject               PyUnicodeObject
-  #define PyString_Type                PyUnicode_Type
-  #define PyString_Check               PyUnicode_Check
-  #define PyString_CheckExact          PyUnicode_CheckExact
-  #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_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
-#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
-  #define PyInt_Check(op)              PyLong_Check(op)
-  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
-  #define PyInt_FromString             PyLong_FromString
-  #define PyInt_FromUnicode            PyLong_FromUnicode
-  #define PyInt_FromLong               PyLong_FromLong
-  #define PyInt_FromSize_t             PyLong_FromSize_t
-  #define PyInt_FromSsize_t            PyLong_FromSsize_t
-  #define PyInt_AsLong                 PyLong_AsLong
-  #define PyInt_AS_LONG                PyLong_AS_LONG
-  #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_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
-#else
-  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
-  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
-#endif
-#if PY_MAJOR_VERSION >= 3
-  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func))
-#else
-  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
-#endif
-#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 __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
-  #endif
-#else
-  #define __Pyx_PyType_AsAsync(obj) NULL
-#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 <math.h>
-#ifdef NAN
-#define __PYX_NAN() ((float) NAN)
-#else
-static CYTHON_INLINE float __PYX_NAN() {
-  float value;
-  memset(&value, 0xFF, sizeof(value));
-  return value;
-}
-#endif
-#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
-#define __Pyx_truncl trunc
-#else
-#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"
-  #else
-    #define __PYX_EXTERN_C extern
-  #endif
-#endif
-
-#define __PYX_HAVE__lakesuperior__store__ldp_rs__lmdb_triplestore
-#define __PYX_HAVE_API__lakesuperior__store__ldp_rs__lmdb_triplestore
-/* Early includes */
-#include <stdint.h>
-#include <sys/types.h>
-#include "lmdb.h"
-#include <string.h>
-#include <stdlib.h>
-#include <openssl/sha.h>
-#ifdef _OPENMP
-#include <omp.h>
-#endif /* _OPENMP */
-
-#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
-#define CYTHON_WITHOUT_ASSERTIONS
-#endif
-
-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
-#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 <cstdlib>
-    #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(const char*);
-#if PY_MAJOR_VERSION < 3
-    #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
-    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
-#else
-    #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
-    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
-#endif
-#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 (size_t)(u_end - u - 1);
-}
-#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_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_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);
-#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(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) 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 {
-        char ascii_chars[128];
-        int c;
-        for (c = 0; c < 128; c++) {
-            ascii_chars[c] = c;
-        }
-        __Pyx_sys_getdefaultencoding_not_ascii = 1;
-        ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
-        if (!ascii_chars_u) goto bad;
-        ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
-        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 '%.200s' is not a superset of ascii.",
-                default_encoding_c);
-            goto bad;
-        }
-        Py_DECREF(ascii_chars_u);
-        Py_DECREF(ascii_chars_b);
-    }
-    Py_DECREF(default_encoding);
-    return 0;
-bad:
-    Py_XDECREF(default_encoding);
-    Py_XDECREF(ascii_chars_u);
-    Py_XDECREF(ascii_chars_b);
-    return -1;
-}
-#endif
-#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
-#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
-#else
-#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(void) {
-    PyObject* sys;
-    PyObject* default_encoding = NULL;
-    char* default_encoding_c;
-    sys = PyImport_ImportModule("sys");
-    if (!sys) goto bad;
-    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
-    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(default_encoding);
-    return 0;
-bad:
-    Py_XDECREF(default_encoding);
-    return -1;
-}
-#endif
-#endif
-
-
-/* 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 = 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__;
-static const char *__pyx_filename;
-
-
-static const char *__pyx_f[] = {
-  "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx",
-  "stringsource",
-};
-/* NoFastGil.proto */
-#define __Pyx_PyGILState_Ensure PyGILState_Ensure
-#define __Pyx_PyGILState_Release PyGILState_Release
-#define __Pyx_FastGIL_Remember()
-#define __Pyx_FastGIL_Forget()
-#define __Pyx_FastGilFuncInit()
-
-
-/*--- Type declarations ---*/
-struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore;
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet;
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph;
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr;
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore;
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple;
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr;
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts;
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples;
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__init_dbis;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_begin;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__put;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__get_data;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__delete;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_close_env;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_destroy;
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_data;
-
-/* "lakesuperior/store/base_lmdb_store.pxd":10
- *     lmdb.MDB_dbi dbi
- * 
- *     void _check(int rc, str message=*) except *             # <<<<<<<<<<<<<<
- * 
- * 
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check {
-  int __pyx_n;
-  PyObject *message;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":26
- *         void _clear_stale_readers(self) except *
- *         void _cur_close(self, lmdb.MDB_cursor *cur) except *
- *         void _init_dbis(self, create=*) except *             # <<<<<<<<<<<<<<
- *         void _txn_begin(self, write=*, lmdb.MDB_txn *parent=*) except *
- *         void _txn_commit(self) except *
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__init_dbis {
-  int __pyx_n;
-  PyObject *create;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":27
- *         void _cur_close(self, lmdb.MDB_cursor *cur) except *
- *         void _init_dbis(self, create=*) except *
- *         void _txn_begin(self, write=*, lmdb.MDB_txn *parent=*) except *             # <<<<<<<<<<<<<<
- *         void _txn_commit(self) except *
- *         void _txn_abort(self) except *
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_begin {
-  int __pyx_n;
-  PyObject *write;
-  MDB_txn *parent;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":30
- *         void _txn_commit(self) except *
- *         void _txn_abort(self) except *
- *         inline bint _key_exists(             # <<<<<<<<<<<<<<
- *             self, unsigned char *key, unsigned char klen,
- *             unsigned char *dblabel=*) except -1
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists {
-  int __pyx_n;
-  unsigned char *dblabel;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":35
- * 
- *         size_t _txn_id(self) except -1
- *         lmdb.MDB_cursor *_cur_open(             # <<<<<<<<<<<<<<
- *                 self, unsigned char *dblabel=*, lmdb.MDB_txn *txn=*) except *
- * 
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open {
-  int __pyx_n;
-  unsigned char *dblabel;
-  MDB_txn *txn;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":38
- *                 self, unsigned char *dblabel=*, lmdb.MDB_txn *txn=*) except *
- * 
- *         lmdb.MDB_dbi get_dbi(             # <<<<<<<<<<<<<<
- *                 self, unsigned char *dblabel=*, lmdb.MDB_txn *txn=*)
- * 
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi {
-  int __pyx_n;
-  unsigned char *dblabel;
-  MDB_txn *txn;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":41
- *                 self, unsigned char *dblabel=*, lmdb.MDB_txn *txn=*)
- * 
- *         void _put(             # <<<<<<<<<<<<<<
- *                 self, unsigned char *key, size_t key_size, unsigned char *data,
- *                 size_t data_size, unsigned char *dblabel=*,
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__put {
-  int __pyx_n;
-  unsigned char *dblabel;
-  MDB_txn *txn;
-  unsigned int flags;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":46
- *                 lmdb.MDB_txn *txn=*, unsigned int flags=*) except *
- * 
- *         void _get_data(             # <<<<<<<<<<<<<<
- *                 self, unsigned char *key, size_t klen, lmdb.MDB_val *rv,
- *                 unsigned char *dblabel=*) except *
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__get_data {
-  int __pyx_n;
-  unsigned char *dblabel;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":50
- *                 unsigned char *dblabel=*) except *
- * 
- *         void _delete(             # <<<<<<<<<<<<<<
- *                 self, unsigned char *key, size_t klen,
- *                 unsigned char *dblabel=*) except *
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__delete {
-  int __pyx_n;
-  unsigned char *dblabel;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":57
- *         #int _reader_list_callback(self, const unsigned char *msg, void *str_)
- * 
- *     cpdef void close_env(self, bint commit_pending_transaction=*) except *             # <<<<<<<<<<<<<<
- *     cpdef void destroy(self, _path=*) except *
- *     #cpdef get_dup_data(self, unsigned char *key, db=*)
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_close_env {
-  int __pyx_n;
-  int commit_pending_transaction;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":58
- * 
- *     cpdef void close_env(self, bint commit_pending_transaction=*) except *
- *     cpdef void destroy(self, _path=*) except *             # <<<<<<<<<<<<<<
- *     #cpdef get_dup_data(self, unsigned char *key, db=*)
- *     #cpdef get_all_pairs(self, db=*)
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_destroy {
-  int __pyx_n;
-  PyObject *_path;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":61
- *     #cpdef get_dup_data(self, unsigned char *key, db=*)
- *     #cpdef get_all_pairs(self, db=*)
- *     cpdef bytes get_data(self, key, dblabel=*)             # <<<<<<<<<<<<<<
- *     cpdef dict stats(self)
- *     cpdef int txn_id(self)
- */
-struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_data {
-  int __pyx_n;
-  PyObject *dblabel;
-};
-struct __pyx_t_12lakesuperior_5store_6ldp_rs_4term_IdentifierTerm;
-struct __pyx_t_12lakesuperior_5store_6ldp_rs_4term_LiteralTerm;
-
-/* "lakesuperior/store/ldp_rs/term.pxd":10
- *     #size_t pack_size
- * 
- *     struct IdentifierTerm:             # <<<<<<<<<<<<<<
- *         char type
- *         unsigned char *data
- */
-struct __pyx_t_12lakesuperior_5store_6ldp_rs_4term_IdentifierTerm {
-  char type;
-  unsigned char *data;
-};
-
-/* "lakesuperior/store/ldp_rs/term.pxd":14
- *         unsigned char *data
- * 
- *     struct LiteralTerm:             # <<<<<<<<<<<<<<
- *         char type
- *         unsigned char *data
- */
-struct __pyx_t_12lakesuperior_5store_6ldp_rs_4term_LiteralTerm {
-  char type;
-  unsigned char *data;
-  unsigned char *datatype;
-  unsigned char *lang;
-};
-struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__len;
-struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_add;
-struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__remove;
-struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_triple_keys;
-struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_all_contexts;
-struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__append;
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":77
- * 
- * 
- * ctypedef unsigned char Key[KLEN]             # <<<<<<<<<<<<<<
- * ctypedef unsigned char DoubleKey[DBL_KLEN]
- * ctypedef unsigned char TripleKey[TRP_KLEN]
- */
-typedef unsigned char __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key[5];
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":78
- * 
- * ctypedef unsigned char Key[KLEN]
- * ctypedef unsigned char DoubleKey[DBL_KLEN]             # <<<<<<<<<<<<<<
- * ctypedef unsigned char TripleKey[TRP_KLEN]
- * ctypedef unsigned char QuadKey[QUAD_KLEN]
- */
-typedef unsigned char __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_DoubleKey[10];
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":79
- * ctypedef unsigned char Key[KLEN]
- * ctypedef unsigned char DoubleKey[DBL_KLEN]
- * ctypedef unsigned char TripleKey[TRP_KLEN]             # <<<<<<<<<<<<<<
- * ctypedef unsigned char QuadKey[QUAD_KLEN]
- * ctypedef unsigned char Hash[HLEN]
- */
-typedef unsigned char __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_TripleKey[15];
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":80
- * ctypedef unsigned char DoubleKey[DBL_KLEN]
- * ctypedef unsigned char TripleKey[TRP_KLEN]
- * ctypedef unsigned char QuadKey[QUAD_KLEN]             # <<<<<<<<<<<<<<
- * ctypedef unsigned char Hash[HLEN]
- * 
- */
-typedef unsigned char __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_QuadKey[20];
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":81
- * ctypedef unsigned char TripleKey[TRP_KLEN]
- * ctypedef unsigned char QuadKey[QUAD_KLEN]
- * ctypedef unsigned char Hash[HLEN]             # <<<<<<<<<<<<<<
- * 
- * 
- */
-typedef unsigned char __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Hash[20];
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":759
- * 
- * 
- *     cpdef size_t _len(self, context=None) except -1:             # <<<<<<<<<<<<<<
- *         """
- *         Return the length of the dataset.
- */
-struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__len {
-  int __pyx_n;
-  PyObject *context;
-};
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":794
- *     # Triple and graph methods.
- * 
- *     cpdef add(self, triple, context=None, quoted=False):             # <<<<<<<<<<<<<<
- *         """
- *         Add a triple and start indexing.
- */
-struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_add {
-  int __pyx_n;
-  PyObject *context;
-  PyObject *quoted;
-};
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":973
- * 
- * 
- *     cpdef void _remove(self, tuple triple_pattern, context=None) except *:             # <<<<<<<<<<<<<<
- *         cdef:
- *             unsigned char spok[TRP_KLEN]
- */
-struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__remove {
-  int __pyx_n;
-  PyObject *context;
-};
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1327
- * 
- * 
- *     cpdef ResultSet triple_keys(self, tuple triple_pattern, context=None):             # <<<<<<<<<<<<<<
- *         """
- *         Top-level lookup method.
- */
-struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_triple_keys {
-  int __pyx_n;
-  PyObject *context;
-};
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1882
- * 
- * 
- *     cpdef tuple all_contexts(self, triple=None):             # <<<<<<<<<<<<<<
- *         """
- *         Get a list of all contexts.
- */
-struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_all_contexts {
-  int __pyx_n;
-  PyObject *triple;
-};
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2037
- * 
- * 
- *     cdef void _append(             # <<<<<<<<<<<<<<
- *             self, unsigned char *value, size_t vlen, Key *nkey,
- *             unsigned char *dblabel=b'', lmdb.MDB_txn *txn=NULL,
- */
-struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__append {
-  int __pyx_n;
-  unsigned char *dblabel;
-  MDB_txn *txn;
-  unsigned int flags;
-};
-
-/* "lakesuperior/store/base_lmdb_store.pxd":13
- * 
- * 
- * cdef class BaseLmdbStore:             # <<<<<<<<<<<<<<
- *     cdef:
- *         readonly bint is_txn_open
- */
-struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore {
-  PyObject_HEAD
-  struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_vtab;
-  int is_txn_open;
-  int _open;
-  unsigned int _readers;
-  PyObject *env_path;
-  MDB_dbi *dbis;
-  MDB_env *dbenv;
-  MDB_txn *txn;
-  MDB_cursor **curs;
-};
-
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":127
- * 
- * 
- * cdef class ResultSet:             # <<<<<<<<<<<<<<
- *     """
- *     Pre-allocated result set.
- */
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet {
-  PyObject_HEAD
-  struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_vtab;
-  unsigned char *data;
-  unsigned char itemsize;
-  size_t ct;
-  size_t size;
-};
-
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":264
- * 
- * 
- * cdef class SimpleGraph:             # <<<<<<<<<<<<<<
- *     """
- *     Fast and simple implementation of a graph.
- */
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph {
-  PyObject_HEAD
-  struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_vtab;
-  PyObject *data;
-};
-
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":533
- * 
- * 
- * cdef class Imr(SimpleGraph):             # <<<<<<<<<<<<<<
- *     """
- *     In-memory resource data container.
- */
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph __pyx_base;
-  PyObject *uri;
-};
-
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":683
- * 
- * 
- * cdef class LmdbTriplestore(BaseLmdbStore):             # <<<<<<<<<<<<<<
- *     """
- *     Low-level storage layer.
- */
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore {
-  struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore __pyx_base;
-};
-
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":219
- *     # Access methods.
- * 
- *     def to_tuple(self):             # <<<<<<<<<<<<<<
- *         """
- *         Return the data set as a Python tuple.
- */
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple {
-  PyObject_HEAD
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self;
-};
-
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":226
- *         """
- *         return tuple(
- *                 self.data[i: i + self.itemsize]             # <<<<<<<<<<<<<<
- *                 for i in range(0, self.size, self.itemsize))
- * 
- */
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr {
-  PyObject_HEAD
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple *__pyx_outer_scope;
-  PyObject *__pyx_v_i;
-  PyObject *__pyx_t_0;
-  Py_ssize_t __pyx_t_1;
-  PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1255
- * 
- *     # TODO Deprecate RDFLib API?
- *     def contexts(self, triple=None):             # <<<<<<<<<<<<<<
- *         """
- *         Get a list of all contexts.
- */
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts {
-  PyObject_HEAD
-  PyObject *__pyx_v_ctx_uri;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self;
-  PyObject *__pyx_v_triple;
-  PyObject *__pyx_t_0;
-  Py_ssize_t __pyx_t_1;
-};
-
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1265
- * 
- * 
- *     def triples(self, triple_pattern, context=None):             # <<<<<<<<<<<<<<
- *         """
- *         Generator over matching triples.
- */
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples {
-  PyObject_HEAD
-  PyObject *__pyx_v_c_uri;
-  unsigned char __pyx_v_ck[5];
-  PyObject *__pyx_v_context;
-  PyObject *__pyx_v_contexts;
-  MDB_cursor *__pyx_v_cur;
-  struct MDB_val __pyx_v_data_v;
-  size_t __pyx_v_i;
-  size_t __pyx_v_j;
-  struct MDB_val __pyx_v_key_v;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_rset;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self;
-  unsigned char __pyx_v_spok[15];
-  PyObject *__pyx_v_triple_pattern;
-  size_t __pyx_t_0;
-  size_t __pyx_t_1;
-  size_t __pyx_t_2;
-};
-
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1839
- * 
- * 
- *     def all_terms(self, term_type):             # <<<<<<<<<<<<<<
- *         """
- *         Return all terms of a type (``s``, ``p``, or ``o``) in the store.
- */
-struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms {
-  PyObject_HEAD
-  PyObject *__pyx_v_key;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self;
-  PyObject *__pyx_v_term_type;
-  PyObject *__pyx_t_0;
-  Py_ssize_t __pyx_t_1;
-  PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
-
-/* "lakesuperior/store/base_lmdb_store.pxd":13
- * 
- * 
- * cdef class BaseLmdbStore:             # <<<<<<<<<<<<<<
- *     cdef:
- *         readonly bint is_txn_open
- */
-
-struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore {
-  void (*_clear_stale_readers)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *);
-  void (*_cur_close)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, MDB_cursor *);
-  void (*_init_dbis)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__init_dbis *__pyx_optional_args);
-  void (*_txn_begin)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__txn_begin *__pyx_optional_args);
-  void (*_txn_commit)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *);
-  void (*_txn_abort)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *);
-  int (*_key_exists)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, unsigned char *, unsigned char, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists *__pyx_optional_args);
-  size_t (*_txn_id)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *);
-  MDB_cursor *(*_cur_open)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open *__pyx_optional_args);
-  MDB_dbi (*get_dbi)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi *__pyx_optional_args);
-  void (*_put)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, unsigned char *, size_t, unsigned char *, size_t, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__put *__pyx_optional_args);
-  void (*_get_data)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, unsigned char *, size_t, struct MDB_val *, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__get_data *__pyx_optional_args);
-  void (*_delete)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, unsigned char *, size_t, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__delete *__pyx_optional_args);
-  PyObject *(*_stats)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *);
-  void (*close_env)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_close_env *__pyx_optional_args);
-  void (*destroy)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_destroy *__pyx_optional_args);
-  PyObject *(*get_data)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_data *__pyx_optional_args);
-  PyObject *(*stats)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, int __pyx_skip_dispatch);
-  int (*txn_id)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, int __pyx_skip_dispatch);
-};
-static struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *__pyx_vtabptr_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore;
-
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":127
- * 
- * 
- * cdef class ResultSet:             # <<<<<<<<<<<<<<
- *     """
- *     Pre-allocated result set.
- */
-
-struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet {
-  void (*resize)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *, size_t);
-  unsigned char *(*get_item)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *, PyObject *);
-};
-static struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet;
-
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":264
- * 
- * 
- * cdef class SimpleGraph:             # <<<<<<<<<<<<<<
- *     """
- *     Fast and simple implementation of a graph.
- */
-
-struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph {
-  void (*_data_from_lookup)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, PyObject *, struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *);
-  void (*set)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, PyObject *, int __pyx_skip_dispatch);
-  void (*remove_triples)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, PyObject *, int __pyx_skip_dispatch);
-  PyObject *(*as_rdflib)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, int __pyx_skip_dispatch);
-  PyObject *(*_slice)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, PyObject *, PyObject *, PyObject *);
-  PyObject *(*lookup)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch);
-  PyObject *(*terms)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, PyObject *, int __pyx_skip_dispatch);
-};
-static struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph;
-
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":533
- * 
- * 
- * cdef class Imr(SimpleGraph):             # <<<<<<<<<<<<<<
- *     """
- *     In-memory resource data container.
- */
-
-struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr {
-  struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph __pyx_base;
-};
-static struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr;
-
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":683
- * 
- * 
- * cdef class LmdbTriplestore(BaseLmdbStore):             # <<<<<<<<<<<<<<
- *     """
- *     Low-level storage layer.
- */
-
-struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore {
-  struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore __pyx_base;
-  size_t (*_len)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__len *__pyx_optional_args);
-  PyObject *(*add)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_add *__pyx_optional_args);
-  PyObject *(*add_graph)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, int __pyx_skip_dispatch);
-  void (*_add_graph)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, unsigned char *, size_t, int __pyx_skip_dispatch);
-  void (*_remove)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__remove *__pyx_optional_args);
-  void (*_index_triple)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, unsigned char *);
-  void (*_remove_graph)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, int __pyx_skip_dispatch);
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *(*triple_keys)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_triple_keys *__pyx_optional_args);
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *(*_lookup)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *);
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *(*_lookup_1bound)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, unsigned char, PyObject *);
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *(*_lookup_2bound)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, unsigned char, PyObject *, unsigned char, PyObject *);
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *(*_all_term_keys)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, int __pyx_skip_dispatch);
-  PyObject *(*all_namespaces)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, int __pyx_skip_dispatch);
-  PyObject *(*all_contexts)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_all_contexts *__pyx_optional_args);
-  PyObject *(*from_key)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, unsigned char *);
-  PyObject *(*from_trp_key)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, unsigned char *);
-  void (*_to_key)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key *);
-  void (*_to_triple_key)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_TripleKey *);
-  void (*_append)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, unsigned char *, size_t, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key *, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__append *__pyx_optional_args);
-  void (*_next_key)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, unsigned char *, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key *);
-};
-static struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore;
-static CYTHON_INLINE void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_key(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key *);
-static CYTHON_INLINE void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_triple_key(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_TripleKey *);
-
-/* --- Runtime support code (head) --- */
-/* Refnanny.proto */
-#ifndef CYTHON_REFNANNY
-  #define CYTHON_REFNANNY 0
-#endif
-#if CYTHON_REFNANNY
-  typedef struct {
-    void (*INCREF)(void*, PyObject*, int);
-    void (*DECREF)(void*, PyObject*, int);
-    void (*GOTREF)(void*, PyObject*, int);
-    void (*GIVEREF)(void*, PyObject*, int);
-    void* (*SetupContext)(const char*, int, const char*);
-    void (*FinishContext)(void**);
-  } __Pyx_RefNannyAPIStruct;
-  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
-  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__);\
-          }
-#else
-  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
-          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
-#endif
-  #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__)
-  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
-  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
-  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
-  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
-  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
-  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
-#else
-  #define __Pyx_RefNannyDeclarations
-  #define __Pyx_RefNannySetupContext(name, acquire_gil)
-  #define __Pyx_RefNannyFinishContext()
-  #define __Pyx_INCREF(r) Py_INCREF(r)
-  #define __Pyx_DECREF(r) Py_DECREF(r)
-  #define __Pyx_GOTREF(r)
-  #define __Pyx_GIVEREF(r)
-  #define __Pyx_XINCREF(r) Py_XINCREF(r)
-  #define __Pyx_XDECREF(r) Py_XDECREF(r)
-  #define __Pyx_XGOTREF(r)
-  #define __Pyx_XGIVEREF(r)
-#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)
-
-/* 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
-
-/* GetBuiltinName.proto */
-static PyObject *__Pyx_GetBuiltinName(PyObject *name);
-
-/* 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
-
-/* Profile.proto */
-#ifndef CYTHON_PROFILE
-#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
-  #define CYTHON_PROFILE 0
-#else
-  #define CYTHON_PROFILE 1
-#endif
-#endif
-#ifndef CYTHON_TRACE_NOGIL
-  #define CYTHON_TRACE_NOGIL 0
-#else
-  #if CYTHON_TRACE_NOGIL && !defined(CYTHON_TRACE)
-    #define CYTHON_TRACE 1
-  #endif
-#endif
-#ifndef CYTHON_TRACE
-  #define CYTHON_TRACE 0
-#endif
-#if CYTHON_TRACE
-  #undef CYTHON_PROFILE_REUSE_FRAME
-#endif
-#ifndef CYTHON_PROFILE_REUSE_FRAME
-  #define CYTHON_PROFILE_REUSE_FRAME 0
-#endif
-#if CYTHON_PROFILE || CYTHON_TRACE
-  #include "compile.h"
-  #include "frameobject.h"
-  #include "traceback.h"
-  #if CYTHON_PROFILE_REUSE_FRAME
-    #define CYTHON_FRAME_MODIFIER static
-    #define CYTHON_FRAME_DEL(frame)
-  #else
-    #define CYTHON_FRAME_MODIFIER
-    #define CYTHON_FRAME_DEL(frame) Py_CLEAR(frame)
-  #endif
-  #define __Pyx_TraceDeclarations\
-  static PyCodeObject *__pyx_frame_code = NULL;\
-  CYTHON_FRAME_MODIFIER PyFrameObject *__pyx_frame = NULL;\
-  int __Pyx_use_tracing = 0;
-  #define __Pyx_TraceFrameInit(codeobj)\
-  if (codeobj) __pyx_frame_code = (PyCodeObject*) codeobj;
-  #ifdef WITH_THREAD
-  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
-  if (nogil) {\
-      if (CYTHON_TRACE_NOGIL) {\
-          PyThreadState *tstate;\
-          PyGILState_STATE state = PyGILState_Ensure();\
-          tstate = __Pyx_PyThreadState_Current;\
-          if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
-                  (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
-              __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
-          }\
-          PyGILState_Release(state);\
-          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
-      }\
-  } else {\
-      PyThreadState* tstate = PyThreadState_GET();\
-      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
-              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
-          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
-          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
-      }\
-  }
-  #else
-  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
-  {   PyThreadState* tstate = PyThreadState_GET();\
-      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
-              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
-          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
-          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
-      }\
-  }
-  #endif
-  #define __Pyx_TraceException()\
-  if (likely(!__Pyx_use_tracing)); else {\
-      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
-      if (tstate->use_tracing &&\
-              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
-          tstate->tracing++;\
-          tstate->use_tracing = 0;\
-          PyObject *exc_info = __Pyx_GetExceptionTuple(tstate);\
-          if (exc_info) {\
-              if (CYTHON_TRACE && tstate->c_tracefunc)\
-                  tstate->c_tracefunc(\
-                      tstate->c_traceobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
-              tstate->c_profilefunc(\
-                  tstate->c_profileobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
-              Py_DECREF(exc_info);\
-          }\
-          tstate->use_tracing = 1;\
-          tstate->tracing--;\
-      }\
-  }
-  static void __Pyx_call_return_trace_func(PyThreadState *tstate, PyFrameObject *frame, PyObject *result) {
-      PyObject *type, *value, *traceback;
-      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
-      tstate->tracing++;
-      tstate->use_tracing = 0;
-      if (CYTHON_TRACE && tstate->c_tracefunc)
-          tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_RETURN, result);
-      if (tstate->c_profilefunc)
-          tstate->c_profilefunc(tstate->c_profileobj, frame, PyTrace_RETURN, result);
-      CYTHON_FRAME_DEL(frame);
-      tstate->use_tracing = 1;
-      tstate->tracing--;
-      __Pyx_ErrRestoreInState(tstate, type, value, traceback);
-  }
-  #ifdef WITH_THREAD
-  #define __Pyx_TraceReturn(result, nogil)\
-  if (likely(!__Pyx_use_tracing)); else {\
-      if (nogil) {\
-          if (CYTHON_TRACE_NOGIL) {\
-              PyThreadState *tstate;\
-              PyGILState_STATE state = PyGILState_Ensure();\
-              tstate = __Pyx_PyThreadState_Current;\
-              if (tstate->use_tracing) {\
-                  __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
-              }\
-              PyGILState_Release(state);\
-          }\
-      } else {\
-          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
-          if (tstate->use_tracing) {\
-              __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
-          }\
-      }\
-  }
-  #else
-  #define __Pyx_TraceReturn(result, nogil)\
-  if (likely(!__Pyx_use_tracing)); else {\
-      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
-      if (tstate->use_tracing) {\
-          __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
-      }\
-  }
-  #endif
-  static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno);
-  static int __Pyx_TraceSetupAndCall(PyCodeObject** code, PyFrameObject** frame, PyThreadState* tstate, const char *funcname, const char *srcfile, int firstlineno);
-#else
-  #define __Pyx_TraceDeclarations
-  #define __Pyx_TraceFrameInit(codeobj)
-  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)   if ((1)); else goto_error;
-  #define __Pyx_TraceException()
-  #define __Pyx_TraceReturn(result, nogil)
-#endif
-#if CYTHON_TRACE
-  static int __Pyx_call_line_trace_func(PyThreadState *tstate, PyFrameObject *frame, int lineno) {
-      int ret;
-      PyObject *type, *value, *traceback;
-      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
-      __Pyx_PyFrame_SetLineNumber(frame, lineno);
-      tstate->tracing++;
-      tstate->use_tracing = 0;
-      ret = tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_LINE, NULL);
-      tstate->use_tracing = 1;
-      tstate->tracing--;
-      if (likely(!ret)) {
-          __Pyx_ErrRestoreInState(tstate, type, value, traceback);
-      } else {
-          Py_XDECREF(type);
-          Py_XDECREF(value);
-          Py_XDECREF(traceback);
-      }
-      return ret;
-  }
-  #ifdef WITH_THREAD
-  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
-  if (likely(!__Pyx_use_tracing)); else {\
-      if (nogil) {\
-          if (CYTHON_TRACE_NOGIL) {\
-              int ret = 0;\
-              PyThreadState *tstate;\
-              PyGILState_STATE state = PyGILState_Ensure();\
-              tstate = __Pyx_PyThreadState_Current;\
-              if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
-                  ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
-              }\
-              PyGILState_Release(state);\
-              if (unlikely(ret)) goto_error;\
-          }\
-      } else {\
-          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
-          if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
-              int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
-              if (unlikely(ret)) goto_error;\
-          }\
-      }\
-  }
-  #else
-  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
-  if (likely(!__Pyx_use_tracing)); else {\
-      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
-      if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
-          int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
-          if (unlikely(ret)) goto_error;\
-      }\
-  }
-  #endif
-#else
-  #define __Pyx_TraceLine(lineno, nogil, goto_error)   if ((1)); else goto_error;
-#endif
-
-/* WriteUnraisableException.proto */
-static void __Pyx_WriteUnraisable(const char *name, int clineno,
-                                  int lineno, const char *filename,
-                                  int full_traceback, int nogil);
-
-/* 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);
-
-/* RaiseDoubleKeywords.proto */
-static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
-
-/* ParseKeywords.proto */
-static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
-    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
-    const char* function_name);
-
-/* None.proto */
-static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname);
-
-/* 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
-
-/* RaiseException.proto */
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
-
-/* 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
-
-/* PyObjectCallMethO.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
-#endif
-
-/* PyObjectCallOneArg.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-
-/* FetchCommonType.proto */
-static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
-
-/* CythonFunction.proto */
-#define __Pyx_CyFunction_USED 1
-#define __Pyx_CYFUNCTION_STATICMETHOD  0x01
-#define __Pyx_CYFUNCTION_CLASSMETHOD   0x02
-#define __Pyx_CYFUNCTION_CCLASS        0x04
-#define __Pyx_CyFunction_GetClosure(f)\
-    (((__pyx_CyFunctionObject *) (f))->func_closure)
-#define __Pyx_CyFunction_GetClassObj(f)\
-    (((__pyx_CyFunctionObject *) (f))->func_classobj)
-#define __Pyx_CyFunction_Defaults(type, f)\
-    ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
-#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
-    ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
-typedef struct {
-    PyCFunctionObject func;
-#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;
-    void *defaults;
-    int defaults_pyobjects;
-    int flags;
-    PyObject *defaults_tuple;
-    PyObject *defaults_kwdict;
-    PyObject *(*defaults_getter)(PyObject *);
-    PyObject *func_annotations;
-} __pyx_CyFunctionObject;
-static PyTypeObject *__pyx_CyFunctionType = 0;
-#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 *globals,
-                                      PyObject* code);
-static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
-                                                         size_t size,
-                                                         int pyobjects);
-static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
-                                                            PyObject *tuple);
-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);
-
-/* ArgTypeTest.proto */
-#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
-    ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\
-        __Pyx__ArgTypeTest(obj, type, name, exact))
-static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);
-
-/* ExtTypeTest.proto */
-static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
-
-/* IncludeStringH.proto */
-#include <string.h>
-
-/* pyfrozenset_new.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it);
-
-/* py_set_remove.proto */
-static CYTHON_INLINE int __Pyx_PySet_Remove(PyObject *set, PyObject *key);
-
-/* PyObjectFormatSimple.proto */
-#if CYTHON_COMPILING_IN_PYPY
-    #define __Pyx_PyObject_FormatSimple(s, f) (\
-        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
-        PyObject_Format(s, f))
-#elif PY_MAJOR_VERSION < 3
-    #define __Pyx_PyObject_FormatSimple(s, f) (\
-        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
-        likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\
-        PyObject_Format(s, f))
-#elif CYTHON_USE_TYPE_SLOTS
-    #define __Pyx_PyObject_FormatSimple(s, f) (\
-        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
-        likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_str(s) :\
-        likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_str(s) :\
-        PyObject_Format(s, f))
-#else
-    #define __Pyx_PyObject_FormatSimple(s, f) (\
-        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
-        PyObject_Format(s, f))
-#endif
-
-/* BuildPyUnicode.proto */
-static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength,
-                                                int prepend_sign, char padding_char);
-
-/* CIntToPyUnicode.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char);
-
-/* JoinPyUnicode.proto */
-static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
-                                      Py_UCS4 max_char);
-
-/* PySetContains.proto */
-static CYTHON_INLINE int __Pyx_PySet_ContainsTF(PyObject* key, PyObject* set, int eq);
-
-/* 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
-
-/* 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));
-}
-
-/* RaiseTooManyValuesToUnpack.proto */
-static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
-
-/* RaiseNeedMoreValuesToUnpack.proto */
-static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
-
-/* IterFinish.proto */
-static CYTHON_INLINE int __Pyx_IterFinish(void);
-
-/* UnpackItemEndCheck.proto */
-static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
-
-/* set_iter.proto */
-static CYTHON_INLINE PyObject* __Pyx_set_iterator(PyObject* iterable, int is_set,
-                                                  Py_ssize_t* p_orig_length, int* p_source_is_set);
-static CYTHON_INLINE int __Pyx_set_iter_next(
-        PyObject* iter_obj, Py_ssize_t orig_length,
-        Py_ssize_t* ppos, PyObject **value,
-        int source_is_set);
-
-/* 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);
-
-/* 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
-
-/* 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
-
-/* GetAttr.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
-
-/* GetAttr3.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);
-
-/* DictGetItem.proto */
-#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
-static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
-#define __Pyx_PyObject_Dict_GetItem(obj, name)\
-    (likely(PyDict_CheckExact(obj)) ?\
-     __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))
-#else
-#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
-#define __Pyx_PyObject_Dict_GetItem(obj, name)  PyObject_GetItem(obj, name)
-#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
-
-/* SwapException.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_ExceptionSwap(type, value, tb)  __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#else
-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
-#endif
-
-/* 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);
-
-/* 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))) {
-        Py_INCREF(x);
-        PyList_SET_ITEM(list, len, x);
-        Py_SIZE(list) = len+1;
-        return 0;
-    }
-    return PyList_Append(list, x);
-}
-#else
-#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
-#endif
-
-/* CIntToPyUnicode.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_size_t(size_t value, Py_ssize_t width, char padding_char, char format_char);
-
-/* RaiseNoneIterError.proto */
-static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
-
-/* CIntToPyUnicode.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_unsigned_char(unsigned char value, Py_ssize_t width, char padding_char, char format_char);
-
-/* None.proto */
-static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);
-
-/* decode_c_string_utf16.proto */
-static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) {
-    int byteorder = 0;
-    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
-}
-static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) {
-    int byteorder = -1;
-    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
-}
-static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) {
-    int byteorder = 1;
-    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
-}
-
-/* decode_c_string.proto */
-static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
-         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
-         const char* encoding, const char* errors,
-         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));
-
-/* Import.proto */
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
-
-/* ImportFrom.proto */
-static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
-
-/* HasAttr.proto */
-static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
-
-/* CallNextTpDealloc.proto */
-static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc);
-
-/* 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
-
-/* SetVTable.proto */
-static int __Pyx_SetVtable(PyObject *dict, void *vtable);
-
-/* SetupReduce.proto */
-static int __Pyx_setup_reduce(PyObject* type_obj);
-
-/* GetVTable.proto */
-static void* __Pyx_GetVtable(PyObject *dict);
-
-/* GetNameInClass.proto */
-static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name);
-
-/* 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
-
-/* 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);
-
-/* AddTraceback.proto */
-static void __Pyx_AddTraceback(const char *funcname, int c_line,
-                               int py_line, const char *filename);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_char(unsigned char value);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MDB_dbi(MDB_dbi value);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_char(char value);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE unsigned char __Pyx_PyInt_As_unsigned_char(PyObject *);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
-
-/* BytesContains.proto */
-static CYTHON_INLINE int __Pyx_BytesContains(PyObject* bytes, char character);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
-
-/* PyObjectCallMethod1.proto */
-static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
-static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg);
-
-/* CoroutineBase.proto */
-typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyThreadState *, PyObject *);
-typedef struct {
-    PyObject_HEAD
-    __pyx_coroutine_body_t body;
-    PyObject *closure;
-    PyObject *exc_type;
-    PyObject *exc_value;
-    PyObject *exc_traceback;
-    PyObject *gi_weakreflist;
-    PyObject *classobj;
-    PyObject *yieldfrom;
-    PyObject *gi_name;
-    PyObject *gi_qualname;
-    PyObject *gi_modulename;
-    PyObject *gi_code;
-    int resume_label;
-    char is_running;
-} __pyx_CoroutineObject;
-static __pyx_CoroutineObject *__Pyx__Coroutine_New(
-    PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
-    PyObject *name, PyObject *qualname, PyObject *module_name);
-static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
-            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
-            PyObject *name, PyObject *qualname, PyObject *module_name);
-static int __Pyx_Coroutine_clear(PyObject *self);
-static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
-static PyObject *__Pyx_Coroutine_Close(PyObject *self);
-static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
-#define __Pyx_Coroutine_SwapException(self) {\
-    __Pyx_ExceptionSwap(&(self)->exc_type, &(self)->exc_value, &(self)->exc_traceback);\
-    __Pyx_Coroutine_ResetFrameBackpointer(self);\
-    }
-#define __Pyx_Coroutine_ResetAndClearException(self) {\
-    __Pyx_ExceptionReset((self)->exc_type, (self)->exc_value, (self)->exc_traceback);\
-    (self)->exc_type = (self)->exc_value = (self)->exc_traceback = NULL;\
-    }
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
-    __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue)
-#else
-#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
-    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue)
-#endif
-static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue);
-static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__pyx_CoroutineObject *self);
-
-/* PatchModuleWithCoroutine.proto */
-static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code);
-
-/* PatchGeneratorABC.proto */
-static int __Pyx_patch_abc(void);
-
-/* Generator.proto */
-#define __Pyx_Generator_USED
-static PyTypeObject *__pyx_GeneratorType = 0;
-#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType)
-#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\
-    __Pyx__Coroutine_New(__pyx_GeneratorType, body, code, closure, name, qualname, module_name)
-static PyObject *__Pyx_Generator_Next(PyObject *self);
-static int __pyx_Generator_init(void);
-
-/* 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)
-#else
-  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
-#endif
-#endif
-
-/* ModuleImport.proto */
-static PyObject *__Pyx_ImportModule(const char *name);
-
-/* TypeImport.proto */
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);
-
-/* VoidPtrImport.proto */
-static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig);
-
-/* FunctionImport.proto */
-static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig);
-
-/* InitStrings.proto */
-static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
-
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_resize(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self, size_t __pyx_v_ct); /* proto*/
-static unsigned char *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_get_item(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self, PyObject *__pyx_v_i); /* proto*/
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph__data_from_lookup(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_lookup, struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_store); /* proto*/
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_set(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_trp, int __pyx_skip_dispatch); /* proto*/
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_remove_triples(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_pattern, int __pyx_skip_dispatch); /* proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_as_rdflib(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph__slice(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_s, PyObject *__pyx_v_p, PyObject *__pyx_v_o); /* proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_lookup(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_s, PyObject *__pyx_v_p, PyObject *__pyx_v_o, int __pyx_skip_dispatch); /* proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_terms(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_type, int __pyx_skip_dispatch); /* proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_as_rdflib(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_stats(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
-static size_t __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__len(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__len *__pyx_optional_args); /* proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_add(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_add *__pyx_optional_args); /* proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_add_graph(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_graph, int __pyx_skip_dispatch); /* proto*/
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__add_graph(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char *__pyx_v_pk_c, size_t __pyx_v_pk_size, int __pyx_skip_dispatch); /* proto*/
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__remove(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple_pattern, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__remove *__pyx_optional_args); /* proto*/
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__index_triple(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_op, unsigned char *__pyx_v_spok); /* proto*/
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__remove_graph(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_gr_uri, int __pyx_skip_dispatch); /* proto*/
-static struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_triple_keys(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple_pattern, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_triple_keys *__pyx_optional_args); /* proto*/
-static struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__lookup(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple_pattern); /* proto*/
-static struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__lookup_1bound(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char __pyx_v_idx, PyObject *__pyx_v_term); /* proto*/
-static struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__lookup_2bound(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char __pyx_v_idx1, PyObject *__pyx_v_term1, unsigned char __pyx_v_idx2, PyObject *__pyx_v_term2); /* proto*/
-static struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__all_term_keys(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_term_type, int __pyx_skip_dispatch); /* proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_all_namespaces(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_all_contexts(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_all_contexts *__pyx_optional_args); /* proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_from_key(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char *__pyx_v_key); /* proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_from_trp_key(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char *__pyx_v_key); /* proto*/
-static CYTHON_INLINE void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_key(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_term, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key *__pyx_v_key); /* proto*/
-static CYTHON_INLINE void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_triple_key(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_terms, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_TripleKey *__pyx_v_tkey); /* proto*/
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__append(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char *__pyx_v_value, size_t __pyx_v_vlen, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key *__pyx_v_nkey, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__append *__pyx_optional_args); /* proto*/
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__next_key(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char *__pyx_v_key, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key *__pyx_v_nkey); /* proto*/
-
-/* Module declarations from 'libc.stdint' */
-
-/* Module declarations from 'posix.types' */
-
-/* Module declarations from 'lakesuperior.cy_include.cylmdb' */
-
-/* Module declarations from 'lakesuperior.store.base_lmdb_store' */
-static PyTypeObject *__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore = 0;
-static int *__pyx_vp_12lakesuperior_5store_15base_lmdb_store_rc = 0;
-#define __pyx_v_12lakesuperior_5store_15base_lmdb_store_rc (*__pyx_vp_12lakesuperior_5store_15base_lmdb_store_rc)
-static size_t *__pyx_vp_12lakesuperior_5store_15base_lmdb_store_i = 0;
-#define __pyx_v_12lakesuperior_5store_15base_lmdb_store_i (*__pyx_vp_12lakesuperior_5store_15base_lmdb_store_i)
-static struct MDB_val *__pyx_vp_12lakesuperior_5store_15base_lmdb_store_key_v = 0;
-#define __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v (*__pyx_vp_12lakesuperior_5store_15base_lmdb_store_key_v)
-static struct MDB_val *__pyx_vp_12lakesuperior_5store_15base_lmdb_store_data_v = 0;
-#define __pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v (*__pyx_vp_12lakesuperior_5store_15base_lmdb_store_data_v)
-static MDB_dbi *__pyx_vp_12lakesuperior_5store_15base_lmdb_store_dbi = 0;
-#define __pyx_v_12lakesuperior_5store_15base_lmdb_store_dbi (*__pyx_vp_12lakesuperior_5store_15base_lmdb_store_dbi)
-static void (*__pyx_f_12lakesuperior_5store_15base_lmdb_store__check)(int, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check *__pyx_optional_args); /*proto*/
-
-/* Module declarations from 'cpython.mem' */
-
-/* Module declarations from 'libc.string' */
-
-/* Module declarations from 'libc.stdlib' */
-
-/* Module declarations from 'lakesuperior.store.ldp_rs.term' */
-static unsigned char *__pyx_vp_12lakesuperior_5store_6ldp_rs_4term_term_type = 0;
-#define __pyx_v_12lakesuperior_5store_6ldp_rs_4term_term_type (*__pyx_vp_12lakesuperior_5store_6ldp_rs_4term_term_type)
-static unsigned char **__pyx_vp_12lakesuperior_5store_6ldp_rs_4term_pack_fmt = 0;
-#define __pyx_v_12lakesuperior_5store_6ldp_rs_4term_pack_fmt (*__pyx_vp_12lakesuperior_5store_6ldp_rs_4term_pack_fmt)
-static unsigned char **__pyx_vp_12lakesuperior_5store_6ldp_rs_4term_term_data = 0;
-#define __pyx_v_12lakesuperior_5store_6ldp_rs_4term_term_data (*__pyx_vp_12lakesuperior_5store_6ldp_rs_4term_term_data)
-static unsigned char **__pyx_vp_12lakesuperior_5store_6ldp_rs_4term_term_datatype = 0;
-#define __pyx_v_12lakesuperior_5store_6ldp_rs_4term_term_datatype (*__pyx_vp_12lakesuperior_5store_6ldp_rs_4term_term_datatype)
-static unsigned char **__pyx_vp_12lakesuperior_5store_6ldp_rs_4term_term_lang = 0;
-#define __pyx_v_12lakesuperior_5store_6ldp_rs_4term_term_lang (*__pyx_vp_12lakesuperior_5store_6ldp_rs_4term_term_lang)
-static int (*__pyx_f_12lakesuperior_5store_6ldp_rs_4term_serialize)(PyObject *, unsigned char **, size_t *); /*proto*/
-static PyObject *(*__pyx_f_12lakesuperior_5store_6ldp_rs_4term_deserialize)(unsigned char *, size_t); /*proto*/
-
-/* Module declarations from 'lakesuperior.store.ldp_rs.lmdb_triplestore' */
-static PyTypeObject *__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet = 0;
-static PyTypeObject *__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph = 0;
-static PyTypeObject *__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr = 0;
-static PyTypeObject *__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore = 0;
-static PyTypeObject *__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple = 0;
-static PyTypeObject *__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr = 0;
-static PyTypeObject *__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts = 0;
-static PyTypeObject *__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples = 0;
-static PyTypeObject *__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms = 0;
-static unsigned char __pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_first_key[5];
-static unsigned char __pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_lookup_rank[3];
-static unsigned char __pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_lookup_ordering[3][3];
-static unsigned char __pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_lookup_ordering_2bound[3][3];
-static CYTHON_INLINE void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore__hash(unsigned char const *, size_t, unsigned char *); /*proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_unpickle_SimpleGraph__set_state(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, PyObject *); /*proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_unpickle_Imr__set_state(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *, PyObject *); /*proto*/
-#define __Pyx_MODULE_NAME "lakesuperior.store.ldp_rs.lmdb_triplestore"
-extern int __pyx_module_is_main_lakesuperior__store__ldp_rs__lmdb_triplestore;
-int __pyx_module_is_main_lakesuperior__store__ldp_rs__lmdb_triplestore = 0;
-
-/* Implementation of 'lakesuperior.store.ldp_rs.lmdb_triplestore' */
-static PyObject *__pyx_builtin_MemoryError;
-static PyObject *__pyx_builtin_range;
-static PyObject *__pyx_builtin_TypeError;
-static PyObject *__pyx_builtin_ValueError;
-static PyObject *__pyx_builtin_hex;
-static PyObject *__pyx_builtin_id;
-static PyObject *__pyx_builtin_super;
-static PyObject *__pyx_builtin_RuntimeError;
-static PyObject *__pyx_builtin_enumerate;
-static PyObject *__pyx_builtin_all;
-static PyObject *__pyx_builtin_any;
-static const char __pyx_k_c[] = "c:";
-static const char __pyx_k_o[] = "o";
-static const char __pyx_k_p[] = "p";
-static const char __pyx_k_s[] = "s";
-static const char __pyx_k__8[] = "<";
-static const char __pyx_k__9[] = " @";
-static const char __pyx_k_ct[] = "ct";
-static const char __pyx_k_eq[] = "__eq__";
-static const char __pyx_k_fn[] = "fn";
-static const char __pyx_k_id[] = "id";
-static const char __pyx_k_or[] = "__or__";
-static const char __pyx_k_Add[] = "Add ";
-static const char __pyx_k_DBI[] = "DBI: ";
-static const char __pyx_k_Key[] = "Key ";
-static const char __pyx_k__10[] = ">";
-static const char __pyx_k__11[] = ".";
-static const char __pyx_k__12[] = ", ";
-static const char __pyx_k__27[] = ": ";
-static const char __pyx_k_add[] = "add";
-static const char __pyx_k_all[] = "all";
-static const char __pyx_k_and[] = "__and__";
-static const char __pyx_k_any[] = "any";
-static const char __pyx_k_hex[] = "hex";
-static const char __pyx_k_ior[] = "__ior__";
-static const char __pyx_k_len[] = "_len";
-static const char __pyx_k_luk[] = "luk: {}";
-static const char __pyx_k_new[] = "__new__";
-static const char __pyx_k_set[] = "set";
-static const char __pyx_k_spo[] = "spo";
-static const char __pyx_k_sub[] = "__sub__";
-static const char __pyx_k_uri[] = "uri";
-static const char __pyx_k_xor[] = "__xor__";
-static const char __pyx_k_Node[] = "Node";
-static const char __pyx_k_args[] = "args";
-static const char __pyx_k_data[] = "data";
-static const char __pyx_k_dict[] = "__dict__";
-static const char __pyx_k_iand[] = "__iand__";
-static const char __pyx_k_init[] = "__init__";
-static const char __pyx_k_isub[] = "__isub__";
-static const char __pyx_k_iter[] = "__iter__";
-static const char __pyx_k_ixor[] = "__ixor__";
-static const char __pyx_k_luk1[] = "luk1: {}";
-static const char __pyx_k_luk2[] = "luk2: {}";
-static const char __pyx_k_main[] = "__main__";
-static const char __pyx_k_name[] = "__name__";
-static const char __pyx_k_o_sp[] = "o:sp";
-static const char __pyx_k_p_so[] = "p:so";
-static const char __pyx_k_pk_c[] = "pk_c";
-static const char __pyx_k_po_s[] = "po:s";
-static const char __pyx_k_s_po[] = "s:po";
-static const char __pyx_k_self[] = "self";
-static const char __pyx_k_send[] = "send";
-static const char __pyx_k_so_p[] = "so:p";
-static const char __pyx_k_sp_o[] = "sp:o";
-static const char __pyx_k_step[] = "step";
-static const char __pyx_k_stop[] = "stop";
-static const char __pyx_k_t_st[] = "t:st";
-static const char __pyx_k_test[] = "__test__";
-static const char __pyx_k_th_t[] = "th:t";
-static const char __pyx_k_Graph[] = "Graph";
-static const char __pyx_k_bytes[] = " bytes.";
-static const char __pyx_k_c_spo[] = "c:spo";
-static const char __pyx_k_class[] = "__class__";
-static const char __pyx_k_close[] = "close";
-static const char __pyx_k_debug[] = "debug";
-static const char __pyx_k_flags[] = "flags";
-static const char __pyx_k_index[] = "index";
-static const char __pyx_k_other[] = "other";
-static const char __pyx_k_range[] = "range";
-static const char __pyx_k_spo_c[] = "spo:c";
-static const char __pyx_k_start[] = "start";
-static const char __pyx_k_stats[] = "stats";
-static const char __pyx_k_store[] = "store";
-static const char __pyx_k_super[] = "super";
-static const char __pyx_k_terms[] = "terms";
-static const char __pyx_k_throw[] = "throw";
-static const char __pyx_k_uri_2[] = " uri=";
-static const char __pyx_k_wraps[] = "wraps";
-static const char __pyx_k_Remove[] = "Remove ";
-static const char __pyx_k_format[] = "format";
-static const char __pyx_k_import[] = "__import__";
-static const char __pyx_k_length[] = " length=";
-static const char __pyx_k_logger[] = "logger";
-static const char __pyx_k_lookup[] = "lookup";
-static const char __pyx_k_ns_pfx[] = "ns:pfx";
-static const char __pyx_k_pfx_ns[] = "pfx:ns";
-static const char __pyx_k_pickle[] = "pickle";
-static const char __pyx_k_quoted[] = "quoted";
-static const char __pyx_k_rdflib[] = "rdflib";
-static const char __pyx_k_reduce[] = "__reduce__";
-static const char __pyx_k_remove[] = "_remove";
-static const char __pyx_k_strict[] = "strict";
-static const char __pyx_k_triple[] = "triple";
-static const char __pyx_k_update[] = "update";
-static const char __pyx_k_Removed[] = "Removed: ";
-static const char __pyx_k_asm_rng[] = "asm_rng: {}";
-static const char __pyx_k_context[] = "context";
-static const char __pyx_k_genexpr[] = "genexpr";
-static const char __pyx_k_idx_add[] = "_idx_add";
-static const char __pyx_k_logging[] = "logging";
-static const char __pyx_k_options[] = "options";
-static const char __pyx_k_pk_size[] = "pk_size";
-static const char __pyx_k_triples[] = "triples";
-static const char __pyx_k_wrapper[] = "_wrapper";
-static const char __pyx_k_DB_label[] = "DB label: ";
-static const char __pyx_k_Removing[] = "Removing ";
-static const char __pyx_k_and_term[] = " and term ";
-static const char __pyx_k_contexts[] = "contexts";
-static const char __pyx_k_db_stats[] = "db_stats";
-static const char __pyx_k_getstate[] = "__getstate__";
-static const char __pyx_k_itemsize[] = "itemsize";
-static const char __pyx_k_length_2[] = ", length=";
-static const char __pyx_k_map_size[] = "map_size";
-static const char __pyx_k_pyx_type[] = "__pyx_type";
-static const char __pyx_k_resource[] = "resource";
-static const char __pyx_k_setstate[] = "__setstate__";
-static const char __pyx_k_to_tuple[] = "to_tuple";
-static const char __pyx_k_use_data[] = "use_data";
-static const char __pyx_k_Allocated[] = "Allocated ";
-static const char __pyx_k_LmdbError[] = "LmdbError";
-static const char __pyx_k_Page_size[] = "Page size: ";
-static const char __pyx_k_TypeError[] = "TypeError";
-static const char __pyx_k_add_graph[] = "add_graph";
-static const char __pyx_k_all_terms[] = "all_terms";
-static const char __pyx_k_as_rdflib[] = "as_rdflib";
-static const char __pyx_k_dbi_flags[] = "dbi_flags";
-static const char __pyx_k_enumerate[] = "enumerate";
-static const char __pyx_k_from_main[] = " from main.";
-static const char __pyx_k_functools[] = "functools";
-static const char __pyx_k_getLogger[] = "getLogger";
-static const char __pyx_k_is_txn_rw[] = "is_txn_rw";
-static const char __pyx_k_pyx_state[] = "__pyx_state";
-static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
-static const char __pyx_k_Double_key[] = "Double key ";
-static const char __pyx_k_Lookup_key[] = "Lookup key: {}";
-static const char __pyx_k_Term_order[] = "Term order: {}";
-static const char __pyx_k_ValueError[] = "ValueError";
-static const char __pyx_k_dbi_labels[] = "dbi_labels";
-static const char __pyx_k_identifier[] = "identifier";
-static const char __pyx_k_idx_remove[] = "_idx_remove";
-static const char __pyx_k_ms_entries[] = "ms_entries";
-static const char __pyx_k_pyx_result[] = "__pyx_result";
-static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
-static const char __pyx_k_ret_offset[] = "ret_offset: {}";
-static const char __pyx_k_term_order[] = "term order: {}";
-static const char __pyx_k_to_indices[] = " to indices.";
-static const char __pyx_k_Entries_for[] = "Entries for ";
-static const char __pyx_k_LUK_offsets[] = "LUK offsets: {}, {}";
-static const char __pyx_k_MemoryError[] = "MemoryError";
-static const char __pyx_k_PickleError[] = "PickleError";
-static const char __pyx_k_add_graph_2[] = "_add_graph";
-static const char __pyx_k_at_position[] = " at position ";
-static const char __pyx_k_i_in_0bound[] = "i in 0bound: ";
-static const char __pyx_k_num_triples[] = "num_triples";
-static const char __pyx_k_rdflib_term[] = "rdflib.term";
-static const char __pyx_k_triple_keys[] = "triple_keys";
-static const char __pyx_k_RuntimeError[] = "RuntimeError";
-static const char __pyx_k_all_contexts[] = "all_contexts";
-static const char __pyx_k_from_indices[] = " from indices.";
-static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
-static const char __pyx_k_rdflib_graph[] = "rdflib.graph";
-static const char __pyx_k_remove_graph[] = "_remove_graph";
-static const char __pyx_k_stringsource[] = "stringsource";
-static const char __pyx_k_Triples_found[] = "Triples found: ";
-static const char __pyx_k_all_term_keys[] = "_all_term_keys";
-static const char __pyx_k_bytes_of_data[] = " bytes of data.";
-static const char __pyx_k_lookup_1bound[] = "lookup 1bound: ";
-static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
-static const char __pyx_k_Database_label[] = "Database label: {}";
-static const char __pyx_k_Invalid_triple[] = "Invalid triple: ";
-static const char __pyx_k_KeyExistsError[] = "KeyExistsError";
-static const char __pyx_k_Looking_in_key[] = "Looking in key: {}";
-static const char __pyx_k_all_namespaces[] = "all_namespaces";
-static const char __pyx_k_exists_already[] = " exists already.";
-static const char __pyx_k_lookup_indices[] = "lookup_indices";
-static const char __pyx_k_remove_triples[] = "remove_triples";
-static const char __pyx_k_triple_pattern[] = "triple_pattern";
-static const char __pyx_k_Adding_to_index[] = "Adding to index `{}`: {}, {}";
-static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
-static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
-static const char __pyx_k_Entries_in_c_spo[] = "Entries in c:spo: ";
-static const char __pyx_k_KeyNotFoundError[] = "KeyNotFoundError";
-static const char __pyx_k_pyx_unpickle_Imr[] = "__pyx_unpickle_Imr";
-static const char __pyx_k_Error_setting_key[] = "Error setting key {}.";
-static const char __pyx_k_normalize_context[] = "_normalize_context";
-static const char __pyx_k_Got_data_in_2bound[] = "Got data in 2bound ({}): {}";
-static const char __pyx_k_Not_found_in_index[] = "Not found in index: ";
-static const char __pyx_k_Wrong_slice_format[] = "Wrong slice format: ";
-static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
-static const char __pyx_k_Getting_triples_for[] = "Getting triples for: {}, {}";
-static const char __pyx_k_Looking_up_in_graph[] = "Looking up in graph: ";
-static const char __pyx_k_Removing_from_graph[] = "Removing from graph: ";
-static const char __pyx_k_2bound_lookup_for_term[] = "2bound lookup for term ";
-static const char __pyx_k_Getting_all_DB_triples[] = "Getting all DB triples.";
-static const char __pyx_k_LmdbTriplestore_triples[] = "LmdbTriplestore.triples";
-static const char __pyx_k_to_tuple_locals_genexpr[] = "to_tuple.<locals>.genexpr";
-static const char __pyx_k_DATASET_DEFAULT_GRAPH_ID[] = "DATASET_DEFAULT_GRAPH_ID";
-static const char __pyx_k_Error_gathering_DB_stats[] = "Error gathering DB stats.";
-static const char __pyx_k_LmdbTriplestore_contexts[] = "LmdbTriplestore.contexts";
-static const char __pyx_k_RDFLIB_DEFAULT_GRAPH_URI[] = "RDFLIB_DEFAULT_GRAPH_URI";
-static const char __pyx_k_pyx_unpickle_SimpleGraph[] = "__pyx_unpickle_SimpleGraph";
-static const char __pyx_k_use_data_locals__wrapper[] = "use_data.<locals>._wrapper";
-static const char __pyx_k_LmdbTriplestore_all_terms[] = "LmdbTriplestore.all_terms";
-static const char __pyx_k_Error_getting_data_for_key[] = "Error getting data for key '{}'.";
-static const char __pyx_k_More_than_one_value_found_for[] = "More than one value found for {}, {}.";
-static const char __pyx_k_BAD_DAY_Sequence_exhausted_No_mo[] = "BAD DAY: Sequence exhausted. No more combinations are possible.";
-static const char __pyx_k_Incompatible_checksums_s_vs_0x8d[] = "Incompatible checksums (%s vs 0x8d777f3 = (data))";
-static const char __pyx_k_Incompatible_checksums_s_vs_0xbf[] = "Incompatible checksums (%s vs 0xbf84141 = (data, uri))";
-static const char __pyx_k_Index_operation_is_not_supported[] = "Index operation '{}' is not supported.";
-static const char __pyx_k_Indices_and_not_found_in_LU_keys[] = "Indices {} and {} not found in LU keys.";
-static const char __pyx_k_Store_not_specified_for_triple_l[] = "Store not specified for triple lookup.";
-static const char __pyx_k_lakesuperior_store_base_lmdb_sto[] = "lakesuperior.store.base_lmdb_store";
-static const char __pyx_k_lakesuperior_store_ldp_rs_lmdb_t[] = "lakesuperior.store.ldp_rs.lmdb_triplestore";
-static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__";
-static const char __pyx_k_self_curs_self_dbenv_self_dbis_s[] = "self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling";
-static const char __pyx_k_lakesuperior_store_ldp_rs_lmdb_t_2[] = "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx";
-static PyObject *__pyx_kp_u_2bound_lookup_for_term;
-static PyObject *__pyx_kp_u_Add;
-static PyObject *__pyx_kp_u_Adding_to_index;
-static PyObject *__pyx_kp_u_Allocated;
-static PyObject *__pyx_kp_u_BAD_DAY_Sequence_exhausted_No_mo;
-static PyObject *__pyx_n_s_DATASET_DEFAULT_GRAPH_ID;
-static PyObject *__pyx_kp_u_DBI;
-static PyObject *__pyx_kp_u_DB_label;
-static PyObject *__pyx_kp_u_Database_label;
-static PyObject *__pyx_kp_u_Double_key;
-static PyObject *__pyx_kp_u_Entries_for;
-static PyObject *__pyx_kp_u_Entries_in_c_spo;
-static PyObject *__pyx_kp_u_Error_gathering_DB_stats;
-static PyObject *__pyx_kp_u_Error_getting_data_for_key;
-static PyObject *__pyx_kp_u_Error_setting_key;
-static PyObject *__pyx_kp_u_Getting_all_DB_triples;
-static PyObject *__pyx_kp_u_Getting_triples_for;
-static PyObject *__pyx_kp_u_Got_data_in_2bound;
-static PyObject *__pyx_n_s_Graph;
-static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x8d;
-static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xbf;
-static PyObject *__pyx_kp_u_Index_operation_is_not_supported;
-static PyObject *__pyx_kp_u_Indices_and_not_found_in_LU_keys;
-static PyObject *__pyx_kp_u_Invalid_triple;
-static PyObject *__pyx_kp_u_Key;
-static PyObject *__pyx_n_s_KeyExistsError;
-static PyObject *__pyx_n_s_KeyNotFoundError;
-static PyObject *__pyx_kp_u_LUK_offsets;
-static PyObject *__pyx_n_s_LmdbError;
-static PyObject *__pyx_n_s_LmdbTriplestore_all_terms;
-static PyObject *__pyx_n_s_LmdbTriplestore_contexts;
-static PyObject *__pyx_n_s_LmdbTriplestore_triples;
-static PyObject *__pyx_kp_u_Looking_in_key;
-static PyObject *__pyx_kp_u_Looking_up_in_graph;
-static PyObject *__pyx_kp_u_Lookup_key;
-static PyObject *__pyx_n_s_MemoryError;
-static PyObject *__pyx_kp_u_More_than_one_value_found_for;
-static PyObject *__pyx_n_s_Node;
-static PyObject *__pyx_kp_u_Not_found_in_index;
-static PyObject *__pyx_kp_u_Page_size;
-static PyObject *__pyx_n_s_PickleError;
-static PyObject *__pyx_n_s_RDFLIB_DEFAULT_GRAPH_URI;
-static PyObject *__pyx_kp_u_Remove;
-static PyObject *__pyx_kp_u_Removed;
-static PyObject *__pyx_kp_u_Removing;
-static PyObject *__pyx_kp_u_Removing_from_graph;
-static PyObject *__pyx_n_s_RuntimeError;
-static PyObject *__pyx_kp_u_Store_not_specified_for_triple_l;
-static PyObject *__pyx_kp_u_Term_order;
-static PyObject *__pyx_kp_u_Triples_found;
-static PyObject *__pyx_n_s_TypeError;
-static PyObject *__pyx_n_s_ValueError;
-static PyObject *__pyx_kp_u_Wrong_slice_format;
-static PyObject *__pyx_kp_u__10;
-static PyObject *__pyx_kp_u__11;
-static PyObject *__pyx_kp_u__12;
-static PyObject *__pyx_kp_u__27;
-static PyObject *__pyx_kp_u__8;
-static PyObject *__pyx_kp_u__9;
-static PyObject *__pyx_n_s_add;
-static PyObject *__pyx_n_s_add_graph;
-static PyObject *__pyx_n_s_add_graph_2;
-static PyObject *__pyx_n_s_all;
-static PyObject *__pyx_n_s_all_contexts;
-static PyObject *__pyx_n_s_all_namespaces;
-static PyObject *__pyx_n_s_all_term_keys;
-static PyObject *__pyx_n_s_all_terms;
-static PyObject *__pyx_n_s_and;
-static PyObject *__pyx_kp_u_and_term;
-static PyObject *__pyx_n_s_any;
-static PyObject *__pyx_n_s_args;
-static PyObject *__pyx_n_s_as_rdflib;
-static PyObject *__pyx_kp_u_asm_rng;
-static PyObject *__pyx_kp_u_at_position;
-static PyObject *__pyx_kp_u_bytes;
-static PyObject *__pyx_kp_u_bytes_of_data;
-static PyObject *__pyx_kp_u_c;
-static PyObject *__pyx_kp_u_c_spo;
-static PyObject *__pyx_n_s_class;
-static PyObject *__pyx_n_s_cline_in_traceback;
-static PyObject *__pyx_n_s_close;
-static PyObject *__pyx_n_s_context;
-static PyObject *__pyx_n_s_contexts;
-static PyObject *__pyx_n_s_ct;
-static PyObject *__pyx_n_s_data;
-static PyObject *__pyx_n_u_db_stats;
-static PyObject *__pyx_n_s_dbi_flags;
-static PyObject *__pyx_n_s_dbi_labels;
-static PyObject *__pyx_n_s_debug;
-static PyObject *__pyx_n_s_dict;
-static PyObject *__pyx_n_s_enumerate;
-static PyObject *__pyx_n_s_eq;
-static PyObject *__pyx_kp_u_exists_already;
-static PyObject *__pyx_n_s_flags;
-static PyObject *__pyx_n_s_fn;
-static PyObject *__pyx_n_s_format;
-static PyObject *__pyx_kp_u_from_indices;
-static PyObject *__pyx_kp_u_from_main;
-static PyObject *__pyx_n_s_functools;
-static PyObject *__pyx_n_s_genexpr;
-static PyObject *__pyx_n_s_getLogger;
-static PyObject *__pyx_n_s_getstate;
-static PyObject *__pyx_n_s_hex;
-static PyObject *__pyx_kp_u_i_in_0bound;
-static PyObject *__pyx_n_s_iand;
-static PyObject *__pyx_n_s_id;
-static PyObject *__pyx_n_s_identifier;
-static PyObject *__pyx_n_u_idx_add;
-static PyObject *__pyx_n_u_idx_remove;
-static PyObject *__pyx_n_s_import;
-static PyObject *__pyx_n_s_index;
-static PyObject *__pyx_n_s_init;
-static PyObject *__pyx_n_s_ior;
-static PyObject *__pyx_n_s_is_txn_rw;
-static PyObject *__pyx_n_s_isub;
-static PyObject *__pyx_n_s_itemsize;
-static PyObject *__pyx_n_s_iter;
-static PyObject *__pyx_n_s_ixor;
-static PyObject *__pyx_n_s_lakesuperior_store_base_lmdb_sto;
-static PyObject *__pyx_n_s_lakesuperior_store_ldp_rs_lmdb_t;
-static PyObject *__pyx_kp_s_lakesuperior_store_ldp_rs_lmdb_t_2;
-static PyObject *__pyx_n_s_len;
-static PyObject *__pyx_kp_u_length;
-static PyObject *__pyx_kp_u_length_2;
-static PyObject *__pyx_n_s_logger;
-static PyObject *__pyx_n_s_logging;
-static PyObject *__pyx_n_s_lookup;
-static PyObject *__pyx_kp_u_lookup_1bound;
-static PyObject *__pyx_n_s_lookup_indices;
-static PyObject *__pyx_kp_u_luk;
-static PyObject *__pyx_kp_u_luk1;
-static PyObject *__pyx_kp_u_luk2;
-static PyObject *__pyx_n_s_main;
-static PyObject *__pyx_n_u_map_size;
-static PyObject *__pyx_n_u_ms_entries;
-static PyObject *__pyx_n_s_name;
-static PyObject *__pyx_n_s_new;
-static PyObject *__pyx_kp_s_no_default___reduce___due_to_non;
-static PyObject *__pyx_n_s_normalize_context;
-static PyObject *__pyx_kp_u_ns_pfx;
-static PyObject *__pyx_n_u_num_triples;
-static PyObject *__pyx_n_s_o;
-static PyObject *__pyx_kp_b_o_sp;
-static PyObject *__pyx_kp_u_o_sp;
-static PyObject *__pyx_n_s_options;
-static PyObject *__pyx_n_s_or;
-static PyObject *__pyx_n_s_other;
-static PyObject *__pyx_n_s_p;
-static PyObject *__pyx_kp_b_p_so;
-static PyObject *__pyx_kp_u_p_so;
-static PyObject *__pyx_kp_u_pfx_ns;
-static PyObject *__pyx_n_s_pickle;
-static PyObject *__pyx_n_s_pk_c;
-static PyObject *__pyx_n_s_pk_size;
-static PyObject *__pyx_kp_b_po_s;
-static PyObject *__pyx_kp_u_po_s;
-static PyObject *__pyx_n_s_pyx_PickleError;
-static PyObject *__pyx_n_s_pyx_checksum;
-static PyObject *__pyx_n_s_pyx_result;
-static PyObject *__pyx_n_s_pyx_state;
-static PyObject *__pyx_n_s_pyx_type;
-static PyObject *__pyx_n_s_pyx_unpickle_Imr;
-static PyObject *__pyx_n_s_pyx_unpickle_SimpleGraph;
-static PyObject *__pyx_n_s_pyx_vtable;
-static PyObject *__pyx_n_s_quoted;
-static PyObject *__pyx_n_s_range;
-static PyObject *__pyx_n_s_rdflib;
-static PyObject *__pyx_n_s_rdflib_graph;
-static PyObject *__pyx_n_s_rdflib_term;
-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_remove;
-static PyObject *__pyx_n_s_remove_graph;
-static PyObject *__pyx_n_s_remove_triples;
-static PyObject *__pyx_n_s_resource;
-static PyObject *__pyx_kp_u_ret_offset;
-static PyObject *__pyx_n_s_s;
-static PyObject *__pyx_kp_b_s_po;
-static PyObject *__pyx_kp_u_s_po;
-static PyObject *__pyx_n_s_self;
-static PyObject *__pyx_kp_s_self_curs_self_dbenv_self_dbis_s;
-static PyObject *__pyx_n_s_send;
-static PyObject *__pyx_n_s_set;
-static PyObject *__pyx_n_s_setstate;
-static PyObject *__pyx_n_s_setstate_cython;
-static PyObject *__pyx_kp_b_so_p;
-static PyObject *__pyx_kp_u_so_p;
-static PyObject *__pyx_kp_b_sp_o;
-static PyObject *__pyx_kp_u_sp_o;
-static PyObject *__pyx_n_u_spo;
-static PyObject *__pyx_kp_u_spo_c;
-static PyObject *__pyx_n_s_start;
-static PyObject *__pyx_n_s_stats;
-static PyObject *__pyx_n_s_step;
-static PyObject *__pyx_n_s_stop;
-static PyObject *__pyx_n_s_store;
-static PyObject *__pyx_n_s_strict;
-static PyObject *__pyx_kp_s_stringsource;
-static PyObject *__pyx_n_s_sub;
-static PyObject *__pyx_n_s_super;
-static PyObject *__pyx_kp_u_t_st;
-static PyObject *__pyx_kp_u_term_order;
-static PyObject *__pyx_n_s_terms;
-static PyObject *__pyx_n_s_test;
-static PyObject *__pyx_kp_u_th_t;
-static PyObject *__pyx_n_s_throw;
-static PyObject *__pyx_kp_u_to_indices;
-static PyObject *__pyx_n_s_to_tuple;
-static PyObject *__pyx_n_s_to_tuple_locals_genexpr;
-static PyObject *__pyx_n_s_triple;
-static PyObject *__pyx_n_s_triple_keys;
-static PyObject *__pyx_n_s_triple_pattern;
-static PyObject *__pyx_n_s_triples;
-static PyObject *__pyx_n_s_update;
-static PyObject *__pyx_n_s_uri;
-static PyObject *__pyx_kp_u_uri_2;
-static PyObject *__pyx_n_s_use_data;
-static PyObject *__pyx_n_s_use_data_locals__wrapper;
-static PyObject *__pyx_n_s_wrapper;
-static PyObject *__pyx_n_s_wraps;
-static PyObject *__pyx_n_s_xor;
-static int __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet___cinit__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self, size_t __pyx_v_ct, unsigned char __pyx_v_itemsize); /* proto */
-static void __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_2__dealloc__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_8to_tuple_genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4to_tuple(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_6get_item_obj(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4data___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_8itemsize___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_2ct___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4size___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_8use_data__wrapper(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_use_data(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fn); /* proto */
-static int __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph___init__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_lookup, PyObject *__pyx_v_store); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_2add(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_dataset); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_4remove(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_item); /* proto */
-static Py_ssize_t __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_6__len__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_8__eq__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_10__repr__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_12__str__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_14__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_16__isub__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_18__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_20__iand__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_22__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_24__ior__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_26__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_28__ixor__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static int __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_30__contains__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_item); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_32__iter__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_34__getitem__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_item); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_36set(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_trp); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_38remove_triples(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_pattern); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_40as_rdflib(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_42lookup(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_s, PyObject *__pyx_v_p, PyObject *__pyx_v_o); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_44terms(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_type); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_4data___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_46__reduce_cython__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_48__setstate_cython__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
-static int __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr___init__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self, PyObject *__pyx_v_uri, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_10identifier___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_5graph___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_2__repr__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_4__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_6__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_8__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_10__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_12__getitem__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self, PyObject *__pyx_v_item); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_14value(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self, PyObject *__pyx_v_p, PyObject *__pyx_v_strict); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_16as_rdflib(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_3uri___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_18__reduce_cython__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_20__setstate_cython__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_stats(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_2_len(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_context); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_4add(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple, PyObject *__pyx_v_context, PyObject *__pyx_v_quoted); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_6add_graph(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_graph); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_8_add_graph(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char *__pyx_v_pk_c, size_t __pyx_v_pk_size); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_10_remove(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple_pattern, PyObject *__pyx_v_context); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_12_remove_graph(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_gr_uri); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_14contexts(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_17triples(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple_pattern, PyObject *__pyx_v_context); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_20triple_keys(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple_pattern, PyObject *__pyx_v_context); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_22_all_term_keys(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_term_type); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_24all_terms(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_term_type); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_27all_namespaces(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_29all_contexts(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_31__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_33__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_2__pyx_unpickle_SimpleGraph(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_4__pyx_unpickle_Imr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_int_0;
-static PyObject *__pyx_int_1;
-static PyObject *__pyx_int_5;
-static PyObject *__pyx_int_10;
-static PyObject *__pyx_int_15;
-static PyObject *__pyx_int_148338675;
-static PyObject *__pyx_int_200819009;
-static PyObject *__pyx_int_1099511627776;
-static PyObject *__pyx_k__6;
-static unsigned char *__pyx_k__30;
-static PyObject *__pyx_tuple_;
-static PyObject *__pyx_tuple__2;
-static PyObject *__pyx_tuple__4;
-static PyObject *__pyx_tuple__7;
-static PyObject *__pyx_tuple__13;
-static PyObject *__pyx_tuple__14;
-static PyObject *__pyx_tuple__15;
-static PyObject *__pyx_tuple__16;
-static PyObject *__pyx_tuple__17;
-static PyObject *__pyx_tuple__18;
-static PyObject *__pyx_tuple__19;
-static PyObject *__pyx_tuple__20;
-static PyObject *__pyx_tuple__21;
-static PyObject *__pyx_tuple__22;
-static PyObject *__pyx_tuple__23;
-static PyObject *__pyx_tuple__24;
-static PyObject *__pyx_tuple__25;
-static PyObject *__pyx_tuple__26;
-static PyObject *__pyx_tuple__28;
-static PyObject *__pyx_tuple__29;
-static PyObject *__pyx_tuple__31;
-static PyObject *__pyx_tuple__32;
-static PyObject *__pyx_tuple__33;
-static PyObject *__pyx_tuple__36;
-static PyObject *__pyx_tuple__37;
-static PyObject *__pyx_tuple__38;
-static PyObject *__pyx_codeobj__3;
-static PyObject *__pyx_codeobj__5;
-static PyObject *__pyx_codeobj__34;
-static PyObject *__pyx_codeobj__35;
-/* Late includes */
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":118
- * 
- * 
- * cdef inline void _hash(             # <<<<<<<<<<<<<<
- *         const unsigned char *message, size_t message_size, Hash digest):
- *     """Get the hash value of a serialized object."""
- */
-
-static CYTHON_INLINE void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore__hash(unsigned char const *__pyx_v_message, size_t __pyx_v_message_size, unsigned char *__pyx_v_digest) {
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("_hash", 0);
-  __Pyx_TraceCall("_hash", __pyx_f[0], 118, 0, __PYX_ERR(0, 118, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":121
- *         const unsigned char *message, size_t message_size, Hash digest):
- *     """Get the hash value of a serialized object."""
- *     SHA1(message, message_size, digest)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  (void)(SHA1(__pyx_v_message, __pyx_v_message_size, __pyx_v_digest));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":118
- * 
- * 
- * cdef inline void _hash(             # <<<<<<<<<<<<<<
- *         const unsigned char *message, size_t message_size, Hash digest):
- *     """Get the hash value of a serialized object."""
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_WriteUnraisable("lakesuperior.store.ldp_rs.lmdb_triplestore._hash", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":148
- *         readonly size_t ct, size
- * 
- *     def __cinit__(self, size_t ct, unsigned char itemsize):             # <<<<<<<<<<<<<<
- *         """
- *         Initialize and allocate memory for the data set.
- */
-
-/* Python wrapper */
-static int __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  size_t __pyx_v_ct;
-  unsigned char __pyx_v_itemsize;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ct,&__pyx_n_s_itemsize,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] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ct)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_itemsize)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(0, 148, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 148, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_ct = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_ct == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 148, __pyx_L3_error)
-    __pyx_v_itemsize = __Pyx_PyInt_As_unsigned_char(values[1]); if (unlikely((__pyx_v_itemsize == (unsigned char)-1) && PyErr_Occurred())) __PYX_ERR(0, 148, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 148, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.ResultSet.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return -1;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet___cinit__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_v_self), __pyx_v_ct, __pyx_v_itemsize);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet___cinit__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self, size_t __pyx_v_ct, unsigned char __pyx_v_itemsize) {
-  int __pyx_r;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  __Pyx_RefNannySetupContext("__cinit__", 0);
-  __Pyx_TraceCall("__cinit__", __pyx_f[0], 148, 0, __PYX_ERR(0, 148, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":159
- *             char variables.
- *         """
- *         self.ct = ct             # <<<<<<<<<<<<<<
- *         self.itemsize = itemsize
- *         self.size = self.itemsize * self.ct
- */
-  __pyx_v_self->ct = __pyx_v_ct;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":160
- *         """
- *         self.ct = ct
- *         self.itemsize = itemsize             # <<<<<<<<<<<<<<
- *         self.size = self.itemsize * self.ct
- * 
- */
-  __pyx_v_self->itemsize = __pyx_v_itemsize;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":161
- *         self.ct = ct
- *         self.itemsize = itemsize
- *         self.size = self.itemsize * self.ct             # <<<<<<<<<<<<<<
- * 
- *         #logger.debug('Got malloc sizes: {}, {}'.format(ct, itemsize))
- */
-  __pyx_v_self->size = (__pyx_v_self->itemsize * __pyx_v_self->ct);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":167
- *         #    'Allocating {0} ({1}x{2}) bytes of ResultSet data...'.format(
- *         #        self.size, self.ct, self.itemsize))
- *         self.data = <unsigned char *>PyMem_Malloc(ct * itemsize)             # <<<<<<<<<<<<<<
- *         if not self.data:
- *             raise MemoryError()
- */
-  __pyx_v_self->data = ((unsigned char *)PyMem_Malloc((__pyx_v_ct * __pyx_v_itemsize)));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":168
- *         #        self.size, self.ct, self.itemsize))
- *         self.data = <unsigned char *>PyMem_Malloc(ct * itemsize)
- *         if not self.data:             # <<<<<<<<<<<<<<
- *             raise MemoryError()
- *         #logger.debug('...done allocating @ {0:x}.'.format(
- */
-  __pyx_t_1 = ((!(__pyx_v_self->data != 0)) != 0);
-  if (unlikely(__pyx_t_1)) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":169
- *         self.data = <unsigned char *>PyMem_Malloc(ct * itemsize)
- *         if not self.data:
- *             raise MemoryError()             # <<<<<<<<<<<<<<
- *         #logger.debug('...done allocating @ {0:x}.'.format(
- *         #        <unsigned long>self.data))
- */
-    PyErr_NoMemory(); __PYX_ERR(0, 169, __pyx_L1_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":168
- *         #        self.size, self.ct, self.itemsize))
- *         self.data = <unsigned char *>PyMem_Malloc(ct * itemsize)
- *         if not self.data:             # <<<<<<<<<<<<<<
- *             raise MemoryError()
- *         #logger.debug('...done allocating @ {0:x}.'.format(
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":148
- *         readonly size_t ct, size
- * 
- *     def __cinit__(self, size_t ct, unsigned char itemsize):             # <<<<<<<<<<<<<<
- *         """
- *         Initialize and allocate memory for the data set.
- */
-
-  /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.ResultSet.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":174
- * 
- * 
- *     def __dealloc__(self):             # <<<<<<<<<<<<<<
- *         """
- *         Free the memory.
- */
-
-/* Python wrapper */
-static void __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
-static void __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_3__dealloc__(PyObject *__pyx_v_self) {
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
-  __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_2__dealloc__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-}
-
-static void __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_2__dealloc__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self) {
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__dealloc__", 0);
-  __Pyx_TraceCall("__dealloc__", __pyx_f[0], 174, 0, __PYX_ERR(0, 174, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":185
- *         #        self.size, self.ct, self.itemsize,
- *         #        <unsigned long>self.data))
- *         PyMem_Free(self.data)             # <<<<<<<<<<<<<<
- *         #logger.debug('...done releasing.')
- * 
- */
-  PyMem_Free(__pyx_v_self->data);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":174
- * 
- * 
- *     def __dealloc__(self):             # <<<<<<<<<<<<<<
- *         """
- *         Free the memory.
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_WriteUnraisable("lakesuperior.store.ldp_rs.lmdb_triplestore.ResultSet.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":189
- * 
- * 
- *     cdef void resize(self, size_t ct) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Resize the result set. Uses ``PyMem_Realloc``.
- */
-
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_resize(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self, size_t __pyx_v_ct) {
-  unsigned char *__pyx_v_tmp;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  __Pyx_RefNannySetupContext("resize", 0);
-  __Pyx_TraceCall("resize", __pyx_f[0], 189, 0, __PYX_ERR(0, 189, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":202
- *         """
- *         cdef unsigned char *tmp
- *         self.ct = ct             # <<<<<<<<<<<<<<
- *         self.size = self.itemsize * self.ct
- * 
- */
-  __pyx_v_self->ct = __pyx_v_ct;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":203
- *         cdef unsigned char *tmp
- *         self.ct = ct
- *         self.size = self.itemsize * self.ct             # <<<<<<<<<<<<<<
- * 
- *         #logger.debug(
- */
-  __pyx_v_self->size = (__pyx_v_self->itemsize * __pyx_v_self->ct);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":209
- *         #        self.itemsize * ct, ct, self.itemsize,
- *         #        <unsigned long>self.data))
- *         tmp = <unsigned char *>PyMem_Realloc(self.data, ct * self.itemsize)             # <<<<<<<<<<<<<<
- *         if not tmp:
- *             raise MemoryError()
- */
-  __pyx_v_tmp = ((unsigned char *)PyMem_Realloc(__pyx_v_self->data, (__pyx_v_ct * __pyx_v_self->itemsize)));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":210
- *         #        <unsigned long>self.data))
- *         tmp = <unsigned char *>PyMem_Realloc(self.data, ct * self.itemsize)
- *         if not tmp:             # <<<<<<<<<<<<<<
- *             raise MemoryError()
- *         #logger.debug('...done resizing.')
- */
-  __pyx_t_1 = ((!(__pyx_v_tmp != 0)) != 0);
-  if (unlikely(__pyx_t_1)) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":211
- *         tmp = <unsigned char *>PyMem_Realloc(self.data, ct * self.itemsize)
- *         if not tmp:
- *             raise MemoryError()             # <<<<<<<<<<<<<<
- *         #logger.debug('...done resizing.')
- * 
- */
-    PyErr_NoMemory(); __PYX_ERR(0, 211, __pyx_L1_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":210
- *         #        <unsigned long>self.data))
- *         tmp = <unsigned char *>PyMem_Realloc(self.data, ct * self.itemsize)
- *         if not tmp:             # <<<<<<<<<<<<<<
- *             raise MemoryError()
- *         #logger.debug('...done resizing.')
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":214
- *         #logger.debug('...done resizing.')
- * 
- *         self.data = tmp             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_v_self->data = __pyx_v_tmp;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":189
- * 
- * 
- *     cdef void resize(self, size_t ct) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Resize the result set. Uses ``PyMem_Realloc``.
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.ResultSet.resize", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":219
- *     # Access methods.
- * 
- *     def to_tuple(self):             # <<<<<<<<<<<<<<
- *         """
- *         Return the data set as a Python tuple.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_5to_tuple(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4to_tuple[] = "\n        Return the data set as a Python tuple.\n\n        :rtype: tuple\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_5to_tuple(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("to_tuple (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4to_tuple(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-static PyObject *__pyx_gb_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_8to_tuple_2generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":226
- *         """
- *         return tuple(
- *                 self.data[i: i + self.itemsize]             # <<<<<<<<<<<<<<
- *                 for i in range(0, self.size, self.itemsize))
- * 
- */
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_8to_tuple_genexpr(PyObject *__pyx_self) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr *__pyx_cur_scope;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("genexpr", 0);
-  __pyx_cur_scope = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr *)__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr, __pyx_empty_tuple, NULL);
-  if (unlikely(!__pyx_cur_scope)) {
-    __pyx_cur_scope = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr *)Py_None);
-    __Pyx_INCREF(Py_None);
-    __PYX_ERR(0, 226, __pyx_L1_error)
-  } else {
-    __Pyx_GOTREF(__pyx_cur_scope);
-  }
-  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple *) __pyx_self;
-  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
-  {
-    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_8to_tuple_2generator3, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_to_tuple_locals_genexpr, __pyx_n_s_lakesuperior_store_ldp_rs_lmdb_t); if (unlikely(!gen)) __PYX_ERR(0, 226, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_cur_scope);
-    __Pyx_RefNannyFinishContext();
-    return (PyObject *) gen;
-  }
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.ResultSet.to_tuple.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_gb_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_8to_tuple_2generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
-{
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr *__pyx_cur_scope = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr *)__pyx_generator->closure);
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  Py_ssize_t __pyx_t_4;
-  PyObject *(*__pyx_t_5)(PyObject *);
-  Py_ssize_t __pyx_t_6;
-  Py_ssize_t __pyx_t_7;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("genexpr", 0);
-  __Pyx_TraceCall("genexpr", __pyx_f[0], 226, 0, __PYX_ERR(0, 226, __pyx_L1_error));
-  switch (__pyx_generator->resume_label) {
-    case 0: goto __pyx_L3_first_run;
-    case 1: goto __pyx_L6_resume_from_yield;
-    default: /* CPython raises the right error here */
-    __Pyx_TraceReturn(Py_None, 0);
-    __Pyx_RefNannyFinishContext();
-    return NULL;
-  }
-  __pyx_L3_first_run:;
-  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 226, __pyx_L1_error)
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":227
- *         return tuple(
- *                 self.data[i: i + self.itemsize]
- *                 for i in range(0, self.size, self.itemsize))             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 227, __pyx_L1_error) }
-  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 227, __pyx_L1_error) }
-  __pyx_t_2 = __Pyx_PyInt_From_unsigned_char(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 227, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 227, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_INCREF(__pyx_int_0);
-  __Pyx_GIVEREF(__pyx_int_0);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_0);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
-  __pyx_t_1 = 0;
-  __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 227, __pyx_L1_error)
-  __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, 227, __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, 227, __pyx_L1_error)
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  for (;;) {
-    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, 227, __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, 227, __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, 227, __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, 227, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        #endif
-      }
-    } else {
-      __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, 227, __pyx_L1_error)
-        }
-        break;
-      }
-      __Pyx_GOTREF(__pyx_t_2);
-    }
-    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i);
-    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":226
- *         """
- *         return tuple(
- *                 self.data[i: i + self.itemsize]             # <<<<<<<<<<<<<<
- *                 for i in range(0, self.size, self.itemsize))
- * 
- */
-    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 226, __pyx_L1_error) }
-    __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_cur_scope->__pyx_v_i); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 226, __pyx_L1_error)
-    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 226, __pyx_L1_error) }
-    __pyx_t_2 = __Pyx_PyInt_From_unsigned_char(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 226, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = PyNumber_Add(__pyx_cur_scope->__pyx_v_i, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 226, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->data) + __pyx_t_6, __pyx_t_7 - __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_r = __pyx_t_1;
-    __pyx_t_1 = 0;
-    __Pyx_XGIVEREF(__pyx_t_3);
-    __pyx_cur_scope->__pyx_t_0 = __pyx_t_3;
-    __pyx_cur_scope->__pyx_t_1 = __pyx_t_4;
-    __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
-    __Pyx_XGIVEREF(__pyx_r);
-    __Pyx_TraceReturn(__pyx_r, 0);
-    __Pyx_RefNannyFinishContext();
-    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
-    /* return from generator, yielding value */
-    __pyx_generator->resume_label = 1;
-    return __pyx_r;
-    __pyx_L6_resume_from_yield:;
-    __pyx_t_3 = __pyx_cur_scope->__pyx_t_0;
-    __pyx_cur_scope->__pyx_t_0 = 0;
-    __Pyx_XGOTREF(__pyx_t_3);
-    __pyx_t_4 = __pyx_cur_scope->__pyx_t_1;
-    __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
-    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 226, __pyx_L1_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":227
- *         return tuple(
- *                 self.data[i: i + self.itemsize]
- *                 for i in range(0, self.size, self.itemsize))             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":226
- *         """
- *         return tuple(
- *                 self.data[i: i + self.itemsize]             # <<<<<<<<<<<<<<
- *                 for i in range(0, self.size, self.itemsize))
- * 
- */
-
-  /* function exit code */
-  PyErr_SetNone(PyExc_StopIteration);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
-  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
-  __pyx_generator->resume_label = -1;
-  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":219
- *     # Access methods.
- * 
- *     def to_tuple(self):             # <<<<<<<<<<<<<<
- *         """
- *         Return the data set as a Python tuple.
- */
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4to_tuple(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple *__pyx_cur_scope;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  __Pyx_RefNannySetupContext("to_tuple", 0);
-  __pyx_cur_scope = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple *)__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple, __pyx_empty_tuple, NULL);
-  if (unlikely(!__pyx_cur_scope)) {
-    __pyx_cur_scope = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple *)Py_None);
-    __Pyx_INCREF(Py_None);
-    __PYX_ERR(0, 219, __pyx_L1_error)
-  } else {
-    __Pyx_GOTREF(__pyx_cur_scope);
-  }
-  __Pyx_TraceCall("to_tuple", __pyx_f[0], 219, 0, __PYX_ERR(0, 219, __pyx_L1_error));
-  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
-  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
-  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":225
- *         :rtype: tuple
- *         """
- *         return tuple(             # <<<<<<<<<<<<<<
- *                 self.data[i: i + self.itemsize]
- *                 for i in range(0, self.size, self.itemsize))
- */
-  __Pyx_XDECREF(__pyx_r);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":226
- *         """
- *         return tuple(
- *                 self.data[i: i + self.itemsize]             # <<<<<<<<<<<<<<
- *                 for i in range(0, self.size, self.itemsize))
- * 
- */
-  __pyx_t_1 = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_8to_tuple_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":225
- *         :rtype: tuple
- *         """
- *         return tuple(             # <<<<<<<<<<<<<<
- *                 self.data[i: i + self.itemsize]
- *                 for i in range(0, self.size, self.itemsize))
- */
-  __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 225, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":219
- *     # Access methods.
- * 
- *     def to_tuple(self):             # <<<<<<<<<<<<<<
- *         """
- *         Return the data set as a Python tuple.
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.ResultSet.to_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":230
- * 
- * 
- *     def get_item_obj(self, i):             # <<<<<<<<<<<<<<
- *         """
- *         Get an item at a given index position.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_7get_item_obj(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_6get_item_obj[] = "\n        Get an item at a given index position.\n\n        :rtype: bytes\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_7get_item_obj(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("get_item_obj (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_6get_item_obj(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_v_self), ((PyObject *)__pyx_v_i));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_6get_item_obj(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self, PyObject *__pyx_v_i) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("get_item_obj", 0);
-  __Pyx_TraceCall("get_item_obj", __pyx_f[0], 230, 0, __PYX_ERR(0, 230, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":236
- *         :rtype: bytes
- *         """
- *         return self.get_item(i)[: self.itemsize]             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(((const char*)((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_v_self->__pyx_vtab)->get_item(__pyx_v_self, __pyx_v_i)) + 0, __pyx_v_self->itemsize - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 236, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":230
- * 
- * 
- *     def get_item_obj(self, i):             # <<<<<<<<<<<<<<
- *         """
- *         Get an item at a given index position.
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.ResultSet.get_item_obj", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":239
- * 
- * 
- *     cdef unsigned char *get_item(self, i):             # <<<<<<<<<<<<<<
- *         """
- *         Get an item at a given index position. Cython-level method.
- */
-
-static unsigned char *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_get_item(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self, PyObject *__pyx_v_i) {
-  unsigned char *__pyx_r;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  unsigned char *__pyx_t_4;
-  __Pyx_RefNannySetupContext("get_item", 0);
-  __Pyx_TraceCall("get_item", __pyx_f[0], 239, 0, __PYX_ERR(0, 239, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":247
- *         :rtype: unsigned char*
- *         """
- *         return self.data + self.itemsize * i             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_1 = __Pyx_PyBytes_FromCString(__pyx_v_self->data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 247, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_From_unsigned_char(__pyx_v_self->itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 247, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 247, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 247, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_4 = __Pyx_PyObject_AsWritableUString(__pyx_t_2); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 247, __pyx_L1_error)
-  __pyx_r = __pyx_t_4;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":239
- * 
- * 
- *     cdef unsigned char *get_item(self, i):             # <<<<<<<<<<<<<<
- *         """
- *         Get an item at a given index position. Cython-level method.
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_WriteUnraisable("lakesuperior.store.ldp_rs.lmdb_triplestore.ResultSet.get_item", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":144
- *     """
- *     cdef:
- *         readonly unsigned char *data             # <<<<<<<<<<<<<<
- *         readonly unsigned char itemsize
- *         readonly size_t ct, size
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4data_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4data_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4data___get__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4data___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_TraceCall("__get__", __pyx_f[0], 144, 0, __PYX_ERR(0, 144, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBytes_FromCString(__pyx_v_self->data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.ResultSet.data.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":145
- *     cdef:
- *         readonly unsigned char *data
- *         readonly unsigned char itemsize             # <<<<<<<<<<<<<<
- *         readonly size_t ct, size
- * 
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_8itemsize_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_8itemsize_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_8itemsize___get__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_8itemsize___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_TraceCall("__get__", __pyx_f[0], 145, 0, __PYX_ERR(0, 145, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_unsigned_char(__pyx_v_self->itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.ResultSet.itemsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":146
- *         readonly unsigned char *data
- *         readonly unsigned char itemsize
- *         readonly size_t ct, size             # <<<<<<<<<<<<<<
- * 
- *     def __cinit__(self, size_t ct, unsigned char itemsize):
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_2ct_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_2ct_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_2ct___get__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_2ct___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_TraceCall("__get__", __pyx_f[0], 146, 0, __PYX_ERR(0, 146, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->ct); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.ResultSet.ct.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4size_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4size___get__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4size___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_TraceCall("__get__", __pyx_f[0], 146, 0, __PYX_ERR(0, 146, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.ResultSet.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
- *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state):
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_9__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_9__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_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_8__reduce_cython__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__reduce_cython__", 0);
-  __Pyx_TraceCall("__reduce_cython__", __pyx_f[1], 1, 0, __PYX_ERR(1, 1, __pyx_L1_error));
-
-  /* "(tree fragment)":2
- * def __reduce_cython__(self):
- *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple_, 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("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state):
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.ResultSet.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "(tree fragment)":3
- * def __reduce_cython__(self):
- *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
- *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_11__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_11__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_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_10__setstate_cython__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__setstate_cython__", 0);
-  __Pyx_TraceCall("__setstate_cython__", __pyx_f[1], 3, 0, __PYX_ERR(1, 3, __pyx_L1_error));
-
-  /* "(tree fragment)":4
- *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state):
- *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
- */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__2, 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("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
- *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.ResultSet.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":251
- * 
- * 
- * def use_data(fn):             # <<<<<<<<<<<<<<
- *     """
- *     Decorator to indicate that a set operation between two SimpleGraph
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_1use_data(PyObject *__pyx_self, PyObject *__pyx_v_fn); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_use_data[] = "\n    Decorator to indicate that a set operation between two SimpleGraph\n    instances should use the ``data`` property of the second term. The second\n    term can also be a simple set.\n    ";
-static PyMethodDef __pyx_mdef_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_1use_data = {"use_data", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_1use_data, METH_O, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_use_data};
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_1use_data(PyObject *__pyx_self, PyObject *__pyx_v_fn) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("use_data (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_use_data(__pyx_self, ((PyObject *)__pyx_v_fn));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":258
- *     """
- *     @wraps(fn)
- *     def _wrapper(self, other):             # <<<<<<<<<<<<<<
- *         if isinstance(other, SimpleGraph):
- *             other = other.data
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_8use_data_1_wrapper(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_8use_data_1_wrapper = {"_wrapper", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_8use_data_1_wrapper, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_8use_data_1_wrapper(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  CYTHON_UNUSED PyObject *__pyx_v_self = 0;
-  PyObject *__pyx_v_other = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("_wrapper (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_other,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] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_other)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("_wrapper", 1, 2, 2, 1); __PYX_ERR(0, 258, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_wrapper") < 0)) __PYX_ERR(0, 258, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_self = values[0];
-    __pyx_v_other = values[1];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("_wrapper", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 258, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.use_data._wrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_8use_data__wrapper(__pyx_self, __pyx_v_self, __pyx_v_other);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_8use_data__wrapper(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  __Pyx_RefNannySetupContext("_wrapper", 0);
-  __Pyx_TraceCall("_wrapper", __pyx_f[0], 258, 0, __PYX_ERR(0, 258, __pyx_L1_error));
-  __Pyx_INCREF(__pyx_v_other);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":259
- *     @wraps(fn)
- *     def _wrapper(self, other):
- *         if isinstance(other, SimpleGraph):             # <<<<<<<<<<<<<<
- *             other = other.data
- *     return _wrapper
- */
-  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":260
- *     def _wrapper(self, other):
- *         if isinstance(other, SimpleGraph):
- *             other = other.data             # <<<<<<<<<<<<<<
- *     return _wrapper
- * 
- */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 260, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF_SET(__pyx_v_other, __pyx_t_3);
-    __pyx_t_3 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":259
- *     @wraps(fn)
- *     def _wrapper(self, other):
- *         if isinstance(other, SimpleGraph):             # <<<<<<<<<<<<<<
- *             other = other.data
- *     return _wrapper
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":258
- *     """
- *     @wraps(fn)
- *     def _wrapper(self, other):             # <<<<<<<<<<<<<<
- *         if isinstance(other, SimpleGraph):
- *             other = other.data
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.use_data._wrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_other);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":251
- * 
- * 
- * def use_data(fn):             # <<<<<<<<<<<<<<
- *     """
- *     Decorator to indicate that a set operation between two SimpleGraph
- */
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_use_data(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fn) {
-  PyObject *__pyx_v__wrapper = 0;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  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;
-  __Pyx_TraceFrameInit(__pyx_codeobj__3)
-  __Pyx_RefNannySetupContext("use_data", 0);
-  __Pyx_TraceCall("use_data", __pyx_f[0], 251, 0, __PYX_ERR(0, 251, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":257
- *     term can also be a simple set.
- *     """
- *     @wraps(fn)             # <<<<<<<<<<<<<<
- *     def _wrapper(self, other):
- *         if isinstance(other, SimpleGraph):
- */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_wraps); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 257, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-    if (likely(__pyx_t_4)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-      __Pyx_INCREF(__pyx_t_4);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_3, function);
-    }
-  }
-  if (!__pyx_t_4) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_fn); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 257, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_fn};
-      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 257, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_GOTREF(__pyx_t_2);
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_fn};
-      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 257, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_GOTREF(__pyx_t_2);
-    } else
-    #endif
-    {
-      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 257, __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_INCREF(__pyx_v_fn);
-      __Pyx_GIVEREF(__pyx_v_fn);
-      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_fn);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 257, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":258
- *     """
- *     @wraps(fn)
- *     def _wrapper(self, other):             # <<<<<<<<<<<<<<
- *         if isinstance(other, SimpleGraph):
- *             other = other.data
- */
-  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_8use_data_1_wrapper, 0, __pyx_n_s_use_data_locals__wrapper, NULL, __pyx_n_s_lakesuperior_store_ldp_rs_lmdb_t, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 258, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_5 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_5)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_5);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  if (!__pyx_t_5) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 257, __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_5, __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, 257, __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_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_5, __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, 257, __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_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 257, __pyx_L1_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_GIVEREF(__pyx_t_3);
-      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3);
-      __pyx_t_3 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 257, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_v__wrapper = __pyx_t_1;
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":261
- *         if isinstance(other, SimpleGraph):
- *             other = other.data
- *     return _wrapper             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v__wrapper);
-  __pyx_r = __pyx_v__wrapper;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":251
- * 
- * 
- * def use_data(fn):             # <<<<<<<<<<<<<<
- *     """
- *     Decorator to indicate that a set operation between two SimpleGraph
- */
-
-  /* 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("lakesuperior.store.ldp_rs.lmdb_triplestore.use_data", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v__wrapper);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":277
- *         readonly set data
- * 
- *     def __init__(             # <<<<<<<<<<<<<<
- *             self, set data=set(), tuple lookup=(), store=None):
- *         """
- */
-
-/* Python wrapper */
-static int __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph___init__[] = "\n        Initialize the graph with pre-existing data or by looking up a store.\n\n        Either ``data``, or both ``lookup`` and ``store``, can be provided.\n        ``lookup`` and ``store`` have precedence. If none of them is specified,\n        an empty graph is initialized.\n\n        :param rdflib.URIRef uri: The graph URI.\n            This will serve as the subject for some queries.\n        :param set data: Initial data as a set of 3-tuples of RDFLib terms.\n        :param tuple lookup: tuple of a 3-tuple of lookup terms, and a context.\n            E.g. ``((URIRef('urn:ns:a'), None, None), URIRef('urn:ns:ctx'))``.\n            Any and all elements may be ``None``.\n        :param lmdbStore store: the store to look data up.\n        ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph___init__;
-#endif
-static int __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_data = 0;
-  PyObject *__pyx_v_lookup = 0;
-  PyObject *__pyx_v_store = 0;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_lookup,&__pyx_n_s_store,0};
-    PyObject* values[3] = {0,0,0};
-    values[0] = __pyx_k__6;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":278
- * 
- *     def __init__(
- *             self, set data=set(), tuple lookup=(), store=None):             # <<<<<<<<<<<<<<
- *         """
- *         Initialize the graph with pre-existing data or by looking up a store.
- */
-    values[1] = ((PyObject*)__pyx_empty_tuple);
-    values[2] = ((PyObject *)Py_None);
-    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 (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data);
-          if (value) { values[0] = value; kw_args--; }
-        }
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lookup);
-          if (value) { values[1] = value; kw_args--; }
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_store);
-          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_ERR(0, 277, __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;
-      }
-    }
-    __pyx_v_data = ((PyObject*)values[0]);
-    __pyx_v_lookup = ((PyObject*)values[1]);
-    __pyx_v_store = values[2];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 277, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return -1;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), (&PySet_Type), 1, "data", 1))) __PYX_ERR(0, 278, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lookup), (&PyTuple_Type), 1, "lookup", 1))) __PYX_ERR(0, 278, __pyx_L1_error)
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph___init__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), __pyx_v_data, __pyx_v_lookup, __pyx_v_store);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":277
- *         readonly set data
- * 
- *     def __init__(             # <<<<<<<<<<<<<<
- *             self, set data=set(), tuple lookup=(), store=None):
- *         """
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph___init__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_lookup, PyObject *__pyx_v_store) {
-  int __pyx_r;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_t_3;
-  __Pyx_RefNannySetupContext("__init__", 0);
-  __Pyx_TraceCall("__init__", __pyx_f[0], 277, 0, __PYX_ERR(0, 277, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":294
- *         :param lmdbStore store: the store to look data up.
- *         """
- *         if data:             # <<<<<<<<<<<<<<
- *             self.data = set(data)
- *         else:
- */
-  __pyx_t_1 = (__pyx_v_data != Py_None)&&(PySet_GET_SIZE(__pyx_v_data) != 0);
-  if (__pyx_t_1) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":295
- *         """
- *         if data:
- *             self.data = set(data)             # <<<<<<<<<<<<<<
- *         else:
- *             if not lookup:
- */
-    __pyx_t_2 = PySet_New(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 295, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __Pyx_GOTREF(__pyx_v_self->data);
-    __Pyx_DECREF(__pyx_v_self->data);
-    __pyx_v_self->data = ((PyObject*)__pyx_t_2);
-    __pyx_t_2 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":294
- *         :param lmdbStore store: the store to look data up.
- *         """
- *         if data:             # <<<<<<<<<<<<<<
- *             self.data = set(data)
- *         else:
- */
-    goto __pyx_L3;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":297
- *             self.data = set(data)
- *         else:
- *             if not lookup:             # <<<<<<<<<<<<<<
- *                 self.data = set()
- *             else:
- */
-  /*else*/ {
-    __pyx_t_1 = (__pyx_v_lookup != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_lookup) != 0);
-    __pyx_t_3 = ((!__pyx_t_1) != 0);
-    if (__pyx_t_3) {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":298
- *         else:
- *             if not lookup:
- *                 self.data = set()             # <<<<<<<<<<<<<<
- *             else:
- *                 if store is None:
- */
-      __pyx_t_2 = PySet_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 298, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_GIVEREF(__pyx_t_2);
-      __Pyx_GOTREF(__pyx_v_self->data);
-      __Pyx_DECREF(__pyx_v_self->data);
-      __pyx_v_self->data = ((PyObject*)__pyx_t_2);
-      __pyx_t_2 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":297
- *             self.data = set(data)
- *         else:
- *             if not lookup:             # <<<<<<<<<<<<<<
- *                 self.data = set()
- *             else:
- */
-      goto __pyx_L4;
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":300
- *                 self.data = set()
- *             else:
- *                 if store is None:             # <<<<<<<<<<<<<<
- *                     raise ValueError('Store not specified for triple lookup.')
- *                 self._data_from_lookup(lookup, store)
- */
-    /*else*/ {
-      __pyx_t_3 = (__pyx_v_store == Py_None);
-      __pyx_t_1 = (__pyx_t_3 != 0);
-      if (unlikely(__pyx_t_1)) {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":301
- *             else:
- *                 if store is None:
- *                     raise ValueError('Store not specified for triple lookup.')             # <<<<<<<<<<<<<<
- *                 self._data_from_lookup(lookup, store)
- * 
- */
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 301, __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_ERR(0, 301, __pyx_L1_error)
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":300
- *                 self.data = set()
- *             else:
- *                 if store is None:             # <<<<<<<<<<<<<<
- *                     raise ValueError('Store not specified for triple lookup.')
- *                 self._data_from_lookup(lookup, store)
- */
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":302
- *                 if store is None:
- *                     raise ValueError('Store not specified for triple lookup.')
- *                 self._data_from_lookup(lookup, store)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-      if (!(likely(((__pyx_v_store) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_store, __pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore))))) __PYX_ERR(0, 302, __pyx_L1_error)
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self->__pyx_vtab)->_data_from_lookup(__pyx_v_self, __pyx_v_lookup, ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_store)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 302, __pyx_L1_error)
-    }
-    __pyx_L4:;
-  }
-  __pyx_L3:;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":277
- *         readonly set data
- * 
- *     def __init__(             # <<<<<<<<<<<<<<
- *             self, set data=set(), tuple lookup=(), store=None):
- *         """
- */
-
-  /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":305
- * 
- * 
- *     cdef void _data_from_lookup(             # <<<<<<<<<<<<<<
- *             self, tuple lookup, LmdbTriplestore store) except *:
- *         """
- */
-
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph__data_from_lookup(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_lookup, struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_store) {
-  size_t __pyx_v_i;
-  unsigned char __pyx_v_spok[15];
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_keyset = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  size_t __pyx_t_3;
-  size_t __pyx_t_4;
-  size_t __pyx_t_5;
-  unsigned char *__pyx_t_6;
-  int __pyx_t_7;
-  __Pyx_RefNannySetupContext("_data_from_lookup", 0);
-  __Pyx_TraceCall("_data_from_lookup", __pyx_f[0], 305, 0, __PYX_ERR(0, 305, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":318
- *             unsigned char spok[TRP_KLEN]
- * 
- *         self.data = set()             # <<<<<<<<<<<<<<
- *         keyset = store.triple_keys(*lookup)
- * 
- */
-  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 318, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->data);
-  __Pyx_DECREF(__pyx_v_self->data);
-  __pyx_v_self->data = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":319
- * 
- *         self.data = set()
- *         keyset = store.triple_keys(*lookup)             # <<<<<<<<<<<<<<
- * 
- *         for i in range(keyset.ct):
- */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_store), __pyx_n_s_triple_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 319, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (unlikely(__pyx_v_lookup == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    __PYX_ERR(0, 319, __pyx_L1_error)
-  }
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_lookup, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet))))) __PYX_ERR(0, 319, __pyx_L1_error)
-  __pyx_v_keyset = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_2);
-  __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":321
- *         keyset = store.triple_keys(*lookup)
- * 
- *         for i in range(keyset.ct):             # <<<<<<<<<<<<<<
- *             spok = keyset.data + i * TRP_KLEN
- *             self.data.add(store.from_trp_key(spok[: TRP_KLEN]))
- */
-  __pyx_t_3 = __pyx_v_keyset->ct;
-  __pyx_t_4 = __pyx_t_3;
-  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
-    __pyx_v_i = __pyx_t_5;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":322
- * 
- *         for i in range(keyset.ct):
- *             spok = keyset.data + i * TRP_KLEN             # <<<<<<<<<<<<<<
- *             self.data.add(store.from_trp_key(spok[: TRP_KLEN]))
- * 
- */
-    memcpy(&(__pyx_v_spok[0]), (__pyx_v_keyset->data + (__pyx_v_i * 15)), sizeof(__pyx_v_spok[0]) * (15 - 0));
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":323
- *         for i in range(keyset.ct):
- *             spok = keyset.data + i * TRP_KLEN
- *             self.data.add(store.from_trp_key(spok[: TRP_KLEN]))             # <<<<<<<<<<<<<<
- * 
- *     # Basic set operations.
- */
-    if (unlikely(__pyx_v_self->data == Py_None)) {
-      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
-      __PYX_ERR(0, 323, __pyx_L1_error)
-    }
-    __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_spok) + 0, 15 - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_6 = __Pyx_PyBytes_AsWritableUString(__pyx_t_2); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 323, __pyx_L1_error)
-    __pyx_t_1 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_store->__pyx_base.__pyx_vtab)->from_trp_key(__pyx_v_store, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_7 = PySet_Add(__pyx_v_self->data, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 323, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":305
- * 
- * 
- *     cdef void _data_from_lookup(             # <<<<<<<<<<<<<<
- *             self, tuple lookup, LmdbTriplestore store) except *:
- *         """
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph._data_from_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_keyset);
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":327
- *     # Basic set operations.
- * 
- *     def add(self, dataset):             # <<<<<<<<<<<<<<
- *         """ Set union. """
- *         self.data.add(dataset)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_3add(PyObject *__pyx_v_self, PyObject *__pyx_v_dataset); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_2add[] = " Set union. ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_3add(PyObject *__pyx_v_self, PyObject *__pyx_v_dataset) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("add (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_2add(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), ((PyObject *)__pyx_v_dataset));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_2add(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_dataset) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  __Pyx_RefNannySetupContext("add", 0);
-  __Pyx_TraceCall("add", __pyx_f[0], 327, 0, __PYX_ERR(0, 327, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":329
- *     def add(self, dataset):
- *         """ Set union. """
- *         self.data.add(dataset)             # <<<<<<<<<<<<<<
- * 
- *     def remove(self, item):
- */
-  if (unlikely(__pyx_v_self->data == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
-    __PYX_ERR(0, 329, __pyx_L1_error)
-  }
-  __pyx_t_1 = PySet_Add(__pyx_v_self->data, __pyx_v_dataset); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 329, __pyx_L1_error)
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":327
- *     # Basic set operations.
- * 
- *     def add(self, dataset):             # <<<<<<<<<<<<<<
- *         """ Set union. """
- *         self.data.add(dataset)
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.add", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":331
- *         self.data.add(dataset)
- * 
- *     def remove(self, item):             # <<<<<<<<<<<<<<
- *         """
- *         Remove one item from the graph.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_5remove(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_4remove[] = "\n        Remove one item from the graph.\n\n        :param tuple item: A 3-tuple of RDFlib terms. Only exact terms, i.e.\n            wildcards are not accepted.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_5remove(PyObject *__pyx_v_self, PyObject *__pyx_v_item) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("remove (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_4remove(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), ((PyObject *)__pyx_v_item));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_4remove(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_item) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  __Pyx_RefNannySetupContext("remove", 0);
-  __Pyx_TraceCall("remove", __pyx_f[0], 331, 0, __PYX_ERR(0, 331, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":338
- *             wildcards are not accepted.
- *         """
- *         self.data.remove(item)             # <<<<<<<<<<<<<<
- * 
- *     def __len__(self):
- */
-  if (unlikely(__pyx_v_self->data == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "remove");
-    __PYX_ERR(0, 338, __pyx_L1_error)
-  }
-  __pyx_t_1 = __Pyx_PySet_Remove(__pyx_v_self->data, __pyx_v_item); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 338, __pyx_L1_error)
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":331
- *         self.data.add(dataset)
- * 
- *     def remove(self, item):             # <<<<<<<<<<<<<<
- *         """
- *         Remove one item from the graph.
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.remove", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":340
- *         self.data.remove(item)
- * 
- *     def __len__(self):             # <<<<<<<<<<<<<<
- *         """ Number of triples in the graph. """
- *         return len(self.data)
- */
-
-/* Python wrapper */
-static Py_ssize_t __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_7__len__(PyObject *__pyx_v_self); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_6__len__[] = " Number of triples in the graph. ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_6__len__;
-#endif
-static Py_ssize_t __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_7__len__(PyObject *__pyx_v_self) {
-  Py_ssize_t __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_6__len__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static Py_ssize_t __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_6__len__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self) {
-  Py_ssize_t __pyx_r;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  Py_ssize_t __pyx_t_2;
-  __Pyx_RefNannySetupContext("__len__", 0);
-  __Pyx_TraceCall("__len__", __pyx_f[0], 340, 0, __PYX_ERR(0, 340, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":342
- *     def __len__(self):
- *         """ Number of triples in the graph. """
- *         return len(self.data)             # <<<<<<<<<<<<<<
- * 
- *     @use_data
- */
-  __pyx_t_1 = __pyx_v_self->data;
-  __Pyx_INCREF(__pyx_t_1);
-  if (unlikely(__pyx_t_1 == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(0, 342, __pyx_L1_error)
-  }
-  __pyx_t_2 = PySet_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 342, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_r = __pyx_t_2;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":340
- *         self.data.remove(item)
- * 
- *     def __len__(self):             # <<<<<<<<<<<<<<
- *         """ Number of triples in the graph. """
- *         return len(self.data)
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":345
- * 
- *     @use_data
- *     def __eq__(self, other):             # <<<<<<<<<<<<<<
- *         """ Equality operator between ``SimpleGraph`` instances. """
- *         return self.data == other
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_9__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_8__eq__[] = " Equality operator between ``SimpleGraph`` instances. ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_8__eq__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_9__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_8__eq__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), ((PyObject *)__pyx_v_other));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_8__eq__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__eq__", 0);
-  __Pyx_TraceCall("__eq__", __pyx_f[0], 345, 0, __PYX_ERR(0, 345, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":347
- *     def __eq__(self, other):
- *         """ Equality operator between ``SimpleGraph`` instances. """
- *         return self.data == other             # <<<<<<<<<<<<<<
- * 
- *     def __repr__(self):
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyObject_RichCompare(__pyx_v_self->data, __pyx_v_other, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L1_error)
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":345
- * 
- *     @use_data
- *     def __eq__(self, other):             # <<<<<<<<<<<<<<
- *         """ Equality operator between ``SimpleGraph`` instances. """
- *         return self.data == other
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":349
- *         return self.data == other
- * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         """
- *         String representation of the graph.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_11__repr__(PyObject *__pyx_v_self); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_10__repr__[] = "\n        String representation of the graph.\n\n        It provides the number of triples in the graph and memory address of\n            the instance.\n        ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_10__repr__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_11__repr__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_10__repr__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_10__repr__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  Py_ssize_t __pyx_t_2;
-  Py_UCS4 __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  Py_ssize_t __pyx_t_6;
-  __Pyx_RefNannySetupContext("__repr__", 0);
-  __Pyx_TraceCall("__repr__", __pyx_f[0], 349, 0, __PYX_ERR(0, 349, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":356
- *             the instance.
- *         """
- *         return (f'<{self.__class__.__name__} @{hex(id(self))} '             # <<<<<<<<<<<<<<
- *             f'length={len(self.data)}>')
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyTuple_New(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = 0;
-  __pyx_t_3 = 127;
-  __Pyx_INCREF(__pyx_kp_u__8);
-  __pyx_t_2 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__8);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u__8);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 356, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3;
-  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
-  __pyx_t_4 = 0;
-  __Pyx_INCREF(__pyx_kp_u__9);
-  __pyx_t_2 += 2;
-  __Pyx_GIVEREF(__pyx_kp_u__9);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__9);
-  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_hex, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 356, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3;
-  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_4);
-  __pyx_t_4 = 0;
-  __Pyx_INCREF(__pyx_kp_u_length);
-  __pyx_t_2 += 8;
-  __Pyx_GIVEREF(__pyx_kp_u_length);
-  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u_length);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":357
- *         """
- *         return (f'<{self.__class__.__name__} @{hex(id(self))} '
- *             f'length={len(self.data)}>')             # <<<<<<<<<<<<<<
- * 
- *     def __str__(self):
- */
-  __pyx_t_4 = __pyx_v_self->data;
-  __Pyx_INCREF(__pyx_t_4);
-  if (unlikely(__pyx_t_4 == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(0, 357, __pyx_L1_error)
-  }
-  __pyx_t_6 = PySet_GET_SIZE(__pyx_t_4); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 357, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_6, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 357, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_4);
-  __pyx_t_4 = 0;
-  __Pyx_INCREF(__pyx_kp_u__10);
-  __pyx_t_2 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__10);
-  PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u__10);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":356
- *             the instance.
- *         """
- *         return (f'<{self.__class__.__name__} @{hex(id(self))} '             # <<<<<<<<<<<<<<
- *             f'length={len(self.data)}>')
- * 
- */
-  __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 7, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_r = __pyx_t_4;
-  __pyx_t_4 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":349
- *         return self.data == other
- * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         """
- *         String representation of the graph.
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":359
- *             f'length={len(self.data)}>')
- * 
- *     def __str__(self):             # <<<<<<<<<<<<<<
- *         """ String dump of the graph triples. """
- *         return str(self.data)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_13__str__(PyObject *__pyx_v_self); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_12__str__[] = " String dump of the graph triples. ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_12__str__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_13__str__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_12__str__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_12__str__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__str__", 0);
-  __Pyx_TraceCall("__str__", __pyx_f[0], 359, 0, __PYX_ERR(0, 359, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":361
- *     def __str__(self):
- *         """ String dump of the graph triples. """
- *         return str(self.data)             # <<<<<<<<<<<<<<
- * 
- *     @use_data
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_self->data); 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;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":359
- *             f'length={len(self.data)}>')
- * 
- *     def __str__(self):             # <<<<<<<<<<<<<<
- *         """ String dump of the graph triples. """
- *         return str(self.data)
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":364
- * 
- *     @use_data
- *     def __sub__(self, other):             # <<<<<<<<<<<<<<
- *         """ Set subtraction. """
- *         return self.data - other
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_15__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_14__sub__[] = " Set subtraction. ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_14__sub__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_15__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_14__sub__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_14__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  __Pyx_RefNannySetupContext("__sub__", 0);
-  __Pyx_TraceCall("__sub__", __pyx_f[0], 364, 0, __PYX_ERR(0, 364, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":366
- *     def __sub__(self, other):
- *         """ Set subtraction. """
- *         return self.data - other             # <<<<<<<<<<<<<<
- * 
- *     @use_data
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 366, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":364
- * 
- *     @use_data
- *     def __sub__(self, other):             # <<<<<<<<<<<<<<
- *         """ Set subtraction. """
- *         return self.data - other
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":369
- * 
- *     @use_data
- *     def __isub__(self, other):             # <<<<<<<<<<<<<<
- *         """ In-place set subtraction. """
- *         self.data -= other
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_17__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_16__isub__[] = " In-place set subtraction. ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_16__isub__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_17__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_16__isub__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), ((PyObject *)__pyx_v_other));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_16__isub__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__isub__", 0);
-  __Pyx_TraceCall("__isub__", __pyx_f[0], 369, 0, __PYX_ERR(0, 369, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":371
- *     def __isub__(self, other):
- *         """ In-place set subtraction. """
- *         self.data -= other             # <<<<<<<<<<<<<<
- *         return self
- * 
- */
-  __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_v_self->data, __pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 371, __pyx_L1_error)
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->data);
-  __Pyx_DECREF(__pyx_v_self->data);
-  __pyx_v_self->data = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":372
- *         """ In-place set subtraction. """
- *         self.data -= other
- *         return self             # <<<<<<<<<<<<<<
- * 
- *     @use_data
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self));
-  __pyx_r = ((PyObject *)__pyx_v_self);
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":369
- * 
- *     @use_data
- *     def __isub__(self, other):             # <<<<<<<<<<<<<<
- *         """ In-place set subtraction. """
- *         self.data -= other
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__isub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":375
- * 
- *     @use_data
- *     def __and__(self, other):             # <<<<<<<<<<<<<<
- *         """ Set intersection. """
- *         return self.data & other
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_19__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_18__and__[] = " Set intersection. ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_18__and__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_19__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__and__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_18__and__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_18__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  __Pyx_RefNannySetupContext("__and__", 0);
-  __Pyx_TraceCall("__and__", __pyx_f[0], 375, 0, __PYX_ERR(0, 375, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":377
- *     def __and__(self, other):
- *         """ Set intersection. """
- *         return self.data & other             # <<<<<<<<<<<<<<
- * 
- *     @use_data
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 377, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyNumber_And(__pyx_t_1, __pyx_v_other); 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_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":375
- * 
- *     @use_data
- *     def __and__(self, other):             # <<<<<<<<<<<<<<
- *         """ Set intersection. """
- *         return self.data & other
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__and__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":380
- * 
- *     @use_data
- *     def __iand__(self, other):             # <<<<<<<<<<<<<<
- *         """ In-place set intersection. """
- *         self.data &= other
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_21__iand__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_20__iand__[] = " In-place set intersection. ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_20__iand__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_21__iand__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__iand__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_20__iand__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), ((PyObject *)__pyx_v_other));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_20__iand__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__iand__", 0);
-  __Pyx_TraceCall("__iand__", __pyx_f[0], 380, 0, __PYX_ERR(0, 380, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":382
- *     def __iand__(self, other):
- *         """ In-place set intersection. """
- *         self.data &= other             # <<<<<<<<<<<<<<
- *         return self
- * 
- */
-  __pyx_t_1 = PyNumber_InPlaceAnd(__pyx_v_self->data, __pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 382, __pyx_L1_error)
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->data);
-  __Pyx_DECREF(__pyx_v_self->data);
-  __pyx_v_self->data = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":383
- *         """ In-place set intersection. """
- *         self.data &= other
- *         return self             # <<<<<<<<<<<<<<
- * 
- *     @use_data
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self));
-  __pyx_r = ((PyObject *)__pyx_v_self);
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":380
- * 
- *     @use_data
- *     def __iand__(self, other):             # <<<<<<<<<<<<<<
- *         """ In-place set intersection. """
- *         self.data &= other
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__iand__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":386
- * 
- *     @use_data
- *     def __or__(self, other):             # <<<<<<<<<<<<<<
- *         """ Set union. """
- *         return self.data | other
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_23__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_22__or__[] = " Set union. ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_22__or__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_23__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__or__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_22__or__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_22__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  __Pyx_RefNannySetupContext("__or__", 0);
-  __Pyx_TraceCall("__or__", __pyx_f[0], 386, 0, __PYX_ERR(0, 386, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":388
- *     def __or__(self, other):
- *         """ Set union. """
- *         return self.data | other             # <<<<<<<<<<<<<<
- * 
- *     @use_data
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 388, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyNumber_Or(__pyx_t_1, __pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 388, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":386
- * 
- *     @use_data
- *     def __or__(self, other):             # <<<<<<<<<<<<<<
- *         """ Set union. """
- *         return self.data | other
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__or__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":391
- * 
- *     @use_data
- *     def __ior__(self, other):             # <<<<<<<<<<<<<<
- *         """ In-place set union. """
- *         self.data |= other
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_25__ior__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_24__ior__[] = " In-place set union. ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_24__ior__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_25__ior__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__ior__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_24__ior__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), ((PyObject *)__pyx_v_other));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_24__ior__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__ior__", 0);
-  __Pyx_TraceCall("__ior__", __pyx_f[0], 391, 0, __PYX_ERR(0, 391, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":393
- *     def __ior__(self, other):
- *         """ In-place set union. """
- *         self.data |= other             # <<<<<<<<<<<<<<
- *         return self
- * 
- */
-  __pyx_t_1 = PyNumber_InPlaceOr(__pyx_v_self->data, __pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 393, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 393, __pyx_L1_error)
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->data);
-  __Pyx_DECREF(__pyx_v_self->data);
-  __pyx_v_self->data = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":394
- *         """ In-place set union. """
- *         self.data |= other
- *         return self             # <<<<<<<<<<<<<<
- * 
- *     @use_data
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self));
-  __pyx_r = ((PyObject *)__pyx_v_self);
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":391
- * 
- *     @use_data
- *     def __ior__(self, other):             # <<<<<<<<<<<<<<
- *         """ In-place set union. """
- *         self.data |= other
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__ior__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":397
- * 
- *     @use_data
- *     def __xor__(self, other):             # <<<<<<<<<<<<<<
- *         """ Set exclusive intersection (XOR). """
- *         return self.data ^ other
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_27__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_26__xor__[] = " Set exclusive intersection (XOR). ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_26__xor__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_27__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__xor__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_26__xor__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_26__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  __Pyx_RefNannySetupContext("__xor__", 0);
-  __Pyx_TraceCall("__xor__", __pyx_f[0], 397, 0, __PYX_ERR(0, 397, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":399
- *     def __xor__(self, other):
- *         """ Set exclusive intersection (XOR). """
- *         return self.data ^ other             # <<<<<<<<<<<<<<
- * 
- *     @use_data
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyNumber_Xor(__pyx_t_1, __pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 399, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":397
- * 
- *     @use_data
- *     def __xor__(self, other):             # <<<<<<<<<<<<<<
- *         """ Set exclusive intersection (XOR). """
- *         return self.data ^ other
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__xor__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":402
- * 
- *     @use_data
- *     def __ixor__(self, other):             # <<<<<<<<<<<<<<
- *         """ In-place set exclusive intersection (XOR). """
- *         self.data ^= other
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_29__ixor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_28__ixor__[] = " In-place set exclusive intersection (XOR). ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_28__ixor__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_29__ixor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__ixor__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_28__ixor__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), ((PyObject *)__pyx_v_other));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_28__ixor__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__ixor__", 0);
-  __Pyx_TraceCall("__ixor__", __pyx_f[0], 402, 0, __PYX_ERR(0, 402, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":404
- *     def __ixor__(self, other):
- *         """ In-place set exclusive intersection (XOR). """
- *         self.data ^= other             # <<<<<<<<<<<<<<
- *         return self
- * 
- */
-  __pyx_t_1 = PyNumber_InPlaceXor(__pyx_v_self->data, __pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 404, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 404, __pyx_L1_error)
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->data);
-  __Pyx_DECREF(__pyx_v_self->data);
-  __pyx_v_self->data = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":405
- *         """ In-place set exclusive intersection (XOR). """
- *         self.data ^= other
- *         return self             # <<<<<<<<<<<<<<
- * 
- *     def __contains__(self, item):
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self));
-  __pyx_r = ((PyObject *)__pyx_v_self);
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":402
- * 
- *     @use_data
- *     def __ixor__(self, other):             # <<<<<<<<<<<<<<
- *         """ In-place set exclusive intersection (XOR). """
- *         self.data ^= other
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__ixor__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":407
- *         return self
- * 
- *     def __contains__(self, item):             # <<<<<<<<<<<<<<
- *         """
- *         Whether the graph contains a triple.
- */
-
-/* Python wrapper */
-static int __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_31__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_30__contains__[] = "\n        Whether the graph contains a triple.\n\n        :rtype: boolean\n        ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_30__contains__;
-#endif
-static int __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_31__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__contains__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_30__contains__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), ((PyObject *)__pyx_v_item));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_30__contains__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_item) {
-  int __pyx_r;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  __Pyx_RefNannySetupContext("__contains__", 0);
-  __Pyx_TraceCall("__contains__", __pyx_f[0], 407, 0, __PYX_ERR(0, 407, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":413
- *         :rtype: boolean
- *         """
- *         return item in self.data             # <<<<<<<<<<<<<<
- * 
- *     def __iter__(self):
- */
-  if (unlikely(__pyx_v_self->data == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    __PYX_ERR(0, 413, __pyx_L1_error)
-  }
-  __pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_v_item, __pyx_v_self->data, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 413, __pyx_L1_error)
-  __pyx_r = __pyx_t_1;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":407
- *         return self
- * 
- *     def __contains__(self, item):             # <<<<<<<<<<<<<<
- *         """
- *         Whether the graph contains a triple.
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":415
- *         return item in self.data
- * 
- *     def __iter__(self):             # <<<<<<<<<<<<<<
- *         """ Graph iterator. It iterates over the set triples. """
- *         return self.data.__iter__()
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_33__iter__(PyObject *__pyx_v_self); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_32__iter__[] = " Graph iterator. It iterates over the set triples. ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_32__iter__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_33__iter__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_32__iter__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_32__iter__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  __Pyx_RefNannySetupContext("__iter__", 0);
-  __Pyx_TraceCall("__iter__", __pyx_f[0], 415, 0, __PYX_ERR(0, 415, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":417
- *     def __iter__(self):
- *         """ Graph iterator. It iterates over the set triples. """
- *         return self.data.__iter__()             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->data, __pyx_n_s_iter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 417, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __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, 417, __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, 417, __pyx_L1_error)
-  }
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":415
- *         return item in self.data
- * 
- *     def __iter__(self):             # <<<<<<<<<<<<<<
- *         """ Graph iterator. It iterates over the set triples. """
- *         return self.data.__iter__()
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":422
- *     # Slicing.
- * 
- *     def __getitem__(self, item):             # <<<<<<<<<<<<<<
- *         """
- *         Slicing function.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_35__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_34__getitem__[] = "\n        Slicing function.\n\n        It behaves similarly to `RDFLib graph slicing\n        <https://rdflib.readthedocs.io/en/stable/utilities.html#slicing-graphs>`__\n        ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_34__getitem__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_35__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_34__getitem__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), ((PyObject *)__pyx_v_item));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_34__getitem__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_item) {
-  PyObject *__pyx_v_s = NULL;
-  PyObject *__pyx_v_p = NULL;
-  PyObject *__pyx_v_o = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  Py_ssize_t __pyx_t_6;
-  Py_UCS4 __pyx_t_7;
-  __Pyx_RefNannySetupContext("__getitem__", 0);
-  __Pyx_TraceCall("__getitem__", __pyx_f[0], 422, 0, __PYX_ERR(0, 422, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":429
- *         <https://rdflib.readthedocs.io/en/stable/utilities.html#slicing-graphs>`__
- *         """
- *         if isinstance(item, slice):             # <<<<<<<<<<<<<<
- *             s, p, o = item.start, item.stop, item.step
- *             return self._slice(s, p, o)
- */
-  __pyx_t_1 = PySlice_Check(__pyx_v_item); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (likely(__pyx_t_2)) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":430
- *         """
- *         if isinstance(item, slice):
- *             s, p, o = item.start, item.stop, item.step             # <<<<<<<<<<<<<<
- *             return self._slice(s, p, o)
- *         else:
- */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_item, __pyx_n_s_start); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 430, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_item, __pyx_n_s_stop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 430, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_item, __pyx_n_s_step); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 430, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_v_s = __pyx_t_3;
-    __pyx_t_3 = 0;
-    __pyx_v_p = __pyx_t_4;
-    __pyx_t_4 = 0;
-    __pyx_v_o = __pyx_t_5;
-    __pyx_t_5 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":431
- *         if isinstance(item, slice):
- *             s, p, o = item.start, item.stop, item.step
- *             return self._slice(s, p, o)             # <<<<<<<<<<<<<<
- *         else:
- *             raise TypeError(f'Wrong slice format: {item}.')
- */
-    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_5 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self->__pyx_vtab)->_slice(__pyx_v_self, __pyx_v_s, __pyx_v_p, __pyx_v_o); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 431, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":429
- *         <https://rdflib.readthedocs.io/en/stable/utilities.html#slicing-graphs>`__
- *         """
- *         if isinstance(item, slice):             # <<<<<<<<<<<<<<
- *             s, p, o = item.start, item.stop, item.step
- *             return self._slice(s, p, o)
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":433
- *             return self._slice(s, p, o)
- *         else:
- *             raise TypeError(f'Wrong slice format: {item}.')             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  /*else*/ {
-    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 433, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = 0;
-    __pyx_t_7 = 127;
-    __Pyx_INCREF(__pyx_kp_u_Wrong_slice_format);
-    __pyx_t_6 += 20;
-    __Pyx_GIVEREF(__pyx_kp_u_Wrong_slice_format);
-    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_Wrong_slice_format);
-    __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_item, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 433, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7;
-    __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_4);
-    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
-    __pyx_t_4 = 0;
-    __Pyx_INCREF(__pyx_kp_u__11);
-    __pyx_t_6 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__11);
-    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__11);
-    __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 433, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 433, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __PYX_ERR(0, 433, __pyx_L1_error)
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":422
- *     # Slicing.
- * 
- *     def __getitem__(self, item):             # <<<<<<<<<<<<<<
- *         """
- *         Slicing function.
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_s);
-  __Pyx_XDECREF(__pyx_v_p);
-  __Pyx_XDECREF(__pyx_v_o);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":436
- * 
- * 
- *     cpdef void set(self, tuple trp) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Set a single value for subject and predicate.
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_37set(PyObject *__pyx_v_self, PyObject *__pyx_v_trp); /*proto*/
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_set(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_trp, int __pyx_skip_dispatch) {
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  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;
-  int __pyx_t_7;
-  int __pyx_t_8;
-  __Pyx_RefNannySetupContext("set", 0);
-  __Pyx_TraceCall("set", __pyx_f[0], 436, 0, __PYX_ERR(0, 436, __pyx_L1_error));
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_37set)) {
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_trp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_trp};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_trp};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        {
-          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 436, __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_INCREF(__pyx_v_trp);
-          __Pyx_GIVEREF(__pyx_v_trp);
-          PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_trp);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":442
- *         Remove all triples matching ``s`` and ``p`` before adding ``s p o``.
- *         """
- *         self.remove_triples((trp[0], trp[1], None))             # <<<<<<<<<<<<<<
- *         if None in trp:
- *             raise ValueError(f'Invalid triple: {trp}')
- */
-  if (unlikely(__pyx_v_trp == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(0, 442, __pyx_L1_error)
-  }
-  if (unlikely(__pyx_v_trp == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(0, 442, __pyx_L1_error)
-  }
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 442, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(PyTuple_GET_ITEM(__pyx_v_trp, 0));
-  __Pyx_GIVEREF(PyTuple_GET_ITEM(__pyx_v_trp, 0));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, PyTuple_GET_ITEM(__pyx_v_trp, 0));
-  __Pyx_INCREF(PyTuple_GET_ITEM(__pyx_v_trp, 1));
-  __Pyx_GIVEREF(PyTuple_GET_ITEM(__pyx_v_trp, 1));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, PyTuple_GET_ITEM(__pyx_v_trp, 1));
-  __Pyx_INCREF(Py_None);
-  __Pyx_GIVEREF(Py_None);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
-  ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self->__pyx_vtab)->remove_triples(__pyx_v_self, __pyx_t_1, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 442, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":443
- *         """
- *         self.remove_triples((trp[0], trp[1], None))
- *         if None in trp:             # <<<<<<<<<<<<<<
- *             raise ValueError(f'Invalid triple: {trp}')
- *         self.data.add(trp)
- */
-  __pyx_t_6 = (__Pyx_PySequence_ContainsTF(Py_None, __pyx_v_trp, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 443, __pyx_L1_error)
-  __pyx_t_7 = (__pyx_t_6 != 0);
-  if (unlikely(__pyx_t_7)) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":444
- *         self.remove_triples((trp[0], trp[1], None))
- *         if None in trp:
- *             raise ValueError(f'Invalid triple: {trp}')             # <<<<<<<<<<<<<<
- *         self.data.add(trp)
- * 
- */
-    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_trp, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 444, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_triple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 444, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 444, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __PYX_ERR(0, 444, __pyx_L1_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":443
- *         """
- *         self.remove_triples((trp[0], trp[1], None))
- *         if None in trp:             # <<<<<<<<<<<<<<
- *             raise ValueError(f'Invalid triple: {trp}')
- *         self.data.add(trp)
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":445
- *         if None in trp:
- *             raise ValueError(f'Invalid triple: {trp}')
- *         self.data.add(trp)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  if (unlikely(__pyx_v_self->data == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
-    __PYX_ERR(0, 445, __pyx_L1_error)
-  }
-  __pyx_t_8 = PySet_Add(__pyx_v_self->data, __pyx_v_trp); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 445, __pyx_L1_error)
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":436
- * 
- * 
- *     cpdef void set(self, tuple trp) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Set a single value for subject and predicate.
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __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("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_37set(PyObject *__pyx_v_self, PyObject *__pyx_v_trp); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_36set[] = "\n        Set a single value for subject and predicate.\n\n        Remove all triples matching ``s`` and ``p`` before adding ``s p o``.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_37set(PyObject *__pyx_v_self, PyObject *__pyx_v_trp) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("set (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_trp), (&PyTuple_Type), 1, "trp", 1))) __PYX_ERR(0, 436, __pyx_L1_error)
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_36set(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), ((PyObject*)__pyx_v_trp));
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_36set(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_trp) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("set", 0);
-  __Pyx_TraceCall("set (wrapper)", __pyx_f[0], 436, 0, __PYX_ERR(0, 436, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_set(__pyx_v_self, __pyx_v_trp, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 436, __pyx_L1_error)
-  __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":448
- * 
- * 
- *     cpdef void remove_triples(self, pattern) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Remove triples by pattern.
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_39remove_triples(PyObject *__pyx_v_self, PyObject *__pyx_v_pattern); /*proto*/
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_remove_triples(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_pattern, int __pyx_skip_dispatch) {
-  PyObject *__pyx_v_s = NULL;
-  PyObject *__pyx_v_p = NULL;
-  PyObject *__pyx_v_o = NULL;
-  PyObject *__pyx_v_match = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  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;
-  PyObject *(*__pyx_t_6)(PyObject *);
-  Py_ssize_t __pyx_t_7;
-  PyObject *(*__pyx_t_8)(PyObject *);
-  Py_ssize_t __pyx_t_9;
-  Py_UCS4 __pyx_t_10;
-  PyObject *__pyx_t_11 = NULL;
-  int __pyx_t_12;
-  __Pyx_RefNannySetupContext("remove_triples", 0);
-  __Pyx_TraceCall("remove_triples", __pyx_f[0], 448, 0, __PYX_ERR(0, 448, __pyx_L1_error));
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_remove_triples); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 448, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_39remove_triples)) {
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_pattern); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 448, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_pattern};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 448, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_pattern};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 448, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        {
-          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 448, __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_INCREF(__pyx_v_pattern);
-          __Pyx_GIVEREF(__pyx_v_pattern);
-          PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_pattern);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 448, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":454
- *         The pattern used is similar to :py:meth:`LmdbTripleStore.delete`.
- *         """
- *         s, p, o = pattern             # <<<<<<<<<<<<<<
- *         for match in self.lookup(s, p, o):
- *             logger.debug(f'Removing from graph: {match}.')
- */
-  if ((likely(PyTuple_CheckExact(__pyx_v_pattern))) || (PyList_CheckExact(__pyx_v_pattern))) {
-    PyObject* sequence = __pyx_v_pattern;
-    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
-    if (unlikely(size != 3)) {
-      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
-      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-      __PYX_ERR(0, 454, __pyx_L1_error)
-    }
-    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-    if (likely(PyTuple_CheckExact(sequence))) {
-      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
-      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
-      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); 
-    } else {
-      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
-      __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
-      __pyx_t_3 = PyList_GET_ITEM(sequence, 2); 
-    }
-    __Pyx_INCREF(__pyx_t_1);
-    __Pyx_INCREF(__pyx_t_2);
-    __Pyx_INCREF(__pyx_t_3);
-    #else
-    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 454, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 454, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    #endif
-  } else {
-    Py_ssize_t index = -1;
-    __pyx_t_5 = PyObject_GetIter(__pyx_v_pattern); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 454, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
-    index = 0; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
-    __Pyx_GOTREF(__pyx_t_1);
-    index = 1; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
-    __Pyx_GOTREF(__pyx_t_2);
-    index = 2; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
-    __Pyx_GOTREF(__pyx_t_3);
-    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 454, __pyx_L1_error)
-    __pyx_t_6 = NULL;
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    goto __pyx_L4_unpacking_done;
-    __pyx_L3_unpacking_failed:;
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_6 = NULL;
-    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-    __PYX_ERR(0, 454, __pyx_L1_error)
-    __pyx_L4_unpacking_done:;
-  }
-  __pyx_v_s = __pyx_t_1;
-  __pyx_t_1 = 0;
-  __pyx_v_p = __pyx_t_2;
-  __pyx_t_2 = 0;
-  __pyx_v_o = __pyx_t_3;
-  __pyx_t_3 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":455
- *         """
- *         s, p, o = pattern
- *         for match in self.lookup(s, p, o):             # <<<<<<<<<<<<<<
- *             logger.debug(f'Removing from graph: {match}.')
- *             self.data.remove(match)
- */
-  __pyx_t_3 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self->__pyx_vtab)->lookup(__pyx_v_self, __pyx_v_s, __pyx_v_p, __pyx_v_o, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
-    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0;
-    __pyx_t_8 = NULL;
-  } else {
-    __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 455, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_8 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 455, __pyx_L1_error)
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  for (;;) {
-    if (likely(!__pyx_t_8)) {
-      if (likely(PyList_CheckExact(__pyx_t_2))) {
-        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break;
-        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 455, __pyx_L1_error)
-        #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        #endif
-      } else {
-        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
-        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 455, __pyx_L1_error)
-        #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        #endif
-      }
-    } else {
-      __pyx_t_3 = __pyx_t_8(__pyx_t_2);
-      if (unlikely(!__pyx_t_3)) {
-        PyObject* exc_type = PyErr_Occurred();
-        if (exc_type) {
-          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 455, __pyx_L1_error)
-        }
-        break;
-      }
-      __Pyx_GOTREF(__pyx_t_3);
-    }
-    __Pyx_XDECREF_SET(__pyx_v_match, __pyx_t_3);
-    __pyx_t_3 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":456
- *         s, p, o = pattern
- *         for match in self.lookup(s, p, o):
- *             logger.debug(f'Removing from graph: {match}.')             # <<<<<<<<<<<<<<
- *             self.data.remove(match)
- * 
- */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 456, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 456, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 456, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_9 = 0;
-    __pyx_t_10 = 127;
-    __Pyx_INCREF(__pyx_kp_u_Removing_from_graph);
-    __pyx_t_9 += 21;
-    __Pyx_GIVEREF(__pyx_kp_u_Removing_from_graph);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Removing_from_graph);
-    __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_match, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 456, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_10;
-    __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_4);
-    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
-    __pyx_t_4 = 0;
-    __Pyx_INCREF(__pyx_kp_u__11);
-    __pyx_t_9 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__11);
-    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__11);
-    __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 456, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = NULL;
-    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_1)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_1);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    if (!__pyx_t_1) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 456, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_5)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4};
-        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 456, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4};
-        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 456, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 456, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_11);
-        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1); __pyx_t_1 = NULL;
-        __Pyx_GIVEREF(__pyx_t_4);
-        PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_4);
-        __pyx_t_4 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 456, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":457
- *         for match in self.lookup(s, p, o):
- *             logger.debug(f'Removing from graph: {match}.')
- *             self.data.remove(match)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-    if (unlikely(__pyx_v_self->data == Py_None)) {
-      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "remove");
-      __PYX_ERR(0, 457, __pyx_L1_error)
-    }
-    __pyx_t_12 = __Pyx_PySet_Remove(__pyx_v_self->data, __pyx_v_match); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 457, __pyx_L1_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":455
- *         """
- *         s, p, o = pattern
- *         for match in self.lookup(s, p, o):             # <<<<<<<<<<<<<<
- *             logger.debug(f'Removing from graph: {match}.')
- *             self.data.remove(match)
- */
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":448
- * 
- * 
- *     cpdef void remove_triples(self, pattern) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Remove triples by pattern.
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __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_XDECREF(__pyx_t_11);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.remove_triples", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_s);
-  __Pyx_XDECREF(__pyx_v_p);
-  __Pyx_XDECREF(__pyx_v_o);
-  __Pyx_XDECREF(__pyx_v_match);
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_39remove_triples(PyObject *__pyx_v_self, PyObject *__pyx_v_pattern); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_38remove_triples[] = "\n        Remove triples by pattern.\n\n        The pattern used is similar to :py:meth:`LmdbTripleStore.delete`.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_39remove_triples(PyObject *__pyx_v_self, PyObject *__pyx_v_pattern) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("remove_triples (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_38remove_triples(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), ((PyObject *)__pyx_v_pattern));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_38remove_triples(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_pattern) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("remove_triples", 0);
-  __Pyx_TraceCall("remove_triples (wrapper)", __pyx_f[0], 448, 0, __PYX_ERR(0, 448, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_remove_triples(__pyx_v_self, __pyx_v_pattern, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 448, __pyx_L1_error)
-  __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 448, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.remove_triples", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":460
- * 
- * 
- *     cpdef object as_rdflib(self):             # <<<<<<<<<<<<<<
- *         """
- *         Return the data set as an RDFLib Graph.
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_41as_rdflib(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_as_rdflib(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, int __pyx_skip_dispatch) {
-  PyObject *__pyx_v_gr = NULL;
-  PyObject *__pyx_v_trp = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  Py_ssize_t __pyx_t_5;
-  Py_ssize_t __pyx_t_6;
-  int __pyx_t_7;
-  int __pyx_t_8;
-  PyObject *__pyx_t_9 = NULL;
-  __Pyx_RefNannySetupContext("as_rdflib", 0);
-  __Pyx_TraceCall("as_rdflib", __pyx_f[0], 460, 0, __PYX_ERR(0, 460, __pyx_L1_error));
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_as_rdflib); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 460, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_41as_rdflib)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 460, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 460, __pyx_L1_error)
-      }
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_r = __pyx_t_2;
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":466
- *         :rtype: rdflib.Graph
- *         """
- *         gr = Graph()             # <<<<<<<<<<<<<<
- *         for trp in self.data:
- *             gr.add(trp)
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 466, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __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, 466, __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, 466, __pyx_L1_error)
-  }
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_v_gr = __pyx_t_1;
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":467
- *         """
- *         gr = Graph()
- *         for trp in self.data:             # <<<<<<<<<<<<<<
- *             gr.add(trp)
- * 
- */
-  __pyx_t_5 = 0;
-  __pyx_t_2 = __Pyx_set_iterator(__pyx_v_self->data, 1, (&__pyx_t_6), (&__pyx_t_7)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 467, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_1);
-  __pyx_t_1 = __pyx_t_2;
-  __pyx_t_2 = 0;
-  while (1) {
-    __pyx_t_8 = __Pyx_set_iter_next(__pyx_t_1, __pyx_t_6, &__pyx_t_5, &__pyx_t_2, __pyx_t_7);
-    if (unlikely(__pyx_t_8 == 0)) break;
-    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 467, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_XDECREF_SET(__pyx_v_trp, __pyx_t_2);
-    __pyx_t_2 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":468
- *         gr = Graph()
- *         for trp in self.data:
- *             gr.add(trp)             # <<<<<<<<<<<<<<
- * 
- *         return gr
- */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_gr, __pyx_n_s_add); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 468, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_4)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_4);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    if (!__pyx_t_4) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_trp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 468, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_2);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_trp};
-        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 468, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_trp};
-        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 468, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else
-      #endif
-      {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 468, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_9);
-        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __pyx_t_4 = NULL;
-        __Pyx_INCREF(__pyx_v_trp);
-        __Pyx_GIVEREF(__pyx_v_trp);
-        PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_trp);
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 468, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":470
- *             gr.add(trp)
- * 
- *         return gr             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_gr);
-  __pyx_r = __pyx_v_gr;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":460
- * 
- * 
- *     cpdef object as_rdflib(self):             # <<<<<<<<<<<<<<
- *         """
- *         Return the data set as an RDFLib Graph.
- */
-
-  /* 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_9);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.as_rdflib", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_gr);
-  __Pyx_XDECREF(__pyx_v_trp);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_41as_rdflib(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_40as_rdflib[] = "\n        Return the data set as an RDFLib Graph.\n\n        :rtype: rdflib.Graph\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_41as_rdflib(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("as_rdflib (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_40as_rdflib(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_40as_rdflib(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("as_rdflib", 0);
-  __Pyx_TraceCall("as_rdflib (wrapper)", __pyx_f[0], 460, 0, __PYX_ERR(0, 460, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_as_rdflib(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 460, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.as_rdflib", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":473
- * 
- * 
- *     cdef _slice(self, s, p, o):             # <<<<<<<<<<<<<<
- *         """
- *         Return terms filtered by other terms.
- */
-
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph__slice(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_s, PyObject *__pyx_v_p, PyObject *__pyx_v_o) {
-  PyObject *__pyx_8genexpr1__pyx_v_r = NULL;
-  PyObject *__pyx_8genexpr2__pyx_v_r = NULL;
-  PyObject *__pyx_8genexpr3__pyx_v_r = NULL;
-  PyObject *__pyx_8genexpr4__pyx_v_r = NULL;
-  PyObject *__pyx_8genexpr5__pyx_v_r = NULL;
-  PyObject *__pyx_8genexpr6__pyx_v_r = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
-  int __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  Py_ssize_t __pyx_t_6;
-  Py_ssize_t __pyx_t_7;
-  int __pyx_t_8;
-  PyObject *__pyx_t_9 = NULL;
-  int __pyx_t_10;
-  PyObject *__pyx_t_11 = NULL;
-  PyObject *__pyx_t_12 = NULL;
-  __Pyx_RefNannySetupContext("_slice", 0);
-  __Pyx_TraceCall("_slice", __pyx_f[0], 473, 0, __PYX_ERR(0, 473, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":479
- *         This behaves like the rdflib.Graph slicing policy.
- *         """
- *         if s is None and p is None and o is None:             # <<<<<<<<<<<<<<
- *             return self.data
- *         elif s is None and p is None:
- */
-  __pyx_t_2 = (__pyx_v_s == Py_None);
-  __pyx_t_3 = (__pyx_t_2 != 0);
-  if (__pyx_t_3) {
-  } else {
-    __pyx_t_1 = __pyx_t_3;
-    goto __pyx_L4_bool_binop_done;
-  }
-  __pyx_t_3 = (__pyx_v_p == Py_None);
-  __pyx_t_2 = (__pyx_t_3 != 0);
-  if (__pyx_t_2) {
-  } else {
-    __pyx_t_1 = __pyx_t_2;
-    goto __pyx_L4_bool_binop_done;
-  }
-  __pyx_t_2 = (__pyx_v_o == Py_None);
-  __pyx_t_3 = (__pyx_t_2 != 0);
-  __pyx_t_1 = __pyx_t_3;
-  __pyx_L4_bool_binop_done:;
-  if (__pyx_t_1) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":480
- *         """
- *         if s is None and p is None and o is None:
- *             return self.data             # <<<<<<<<<<<<<<
- *         elif s is None and p is None:
- *             return {(r[0], r[1]) for r in self.data if r[2] == o}
- */
-    __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(__pyx_v_self->data);
-    __pyx_r = __pyx_v_self->data;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":479
- *         This behaves like the rdflib.Graph slicing policy.
- *         """
- *         if s is None and p is None and o is None:             # <<<<<<<<<<<<<<
- *             return self.data
- *         elif s is None and p is None:
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":481
- *         if s is None and p is None and o is None:
- *             return self.data
- *         elif s is None and p is None:             # <<<<<<<<<<<<<<
- *             return {(r[0], r[1]) for r in self.data if r[2] == o}
- *         elif s is None and o is None:
- */
-  __pyx_t_3 = (__pyx_v_s == Py_None);
-  __pyx_t_2 = (__pyx_t_3 != 0);
-  if (__pyx_t_2) {
-  } else {
-    __pyx_t_1 = __pyx_t_2;
-    goto __pyx_L7_bool_binop_done;
-  }
-  __pyx_t_2 = (__pyx_v_p == Py_None);
-  __pyx_t_3 = (__pyx_t_2 != 0);
-  __pyx_t_1 = __pyx_t_3;
-  __pyx_L7_bool_binop_done:;
-  if (__pyx_t_1) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":482
- *             return self.data
- *         elif s is None and p is None:
- *             return {(r[0], r[1]) for r in self.data if r[2] == o}             # <<<<<<<<<<<<<<
- *         elif s is None and o is None:
- *             return {(r[0], r[2]) for r in self.data if r[1] == p}
- */
-    __Pyx_XDECREF(__pyx_r);
-    { /* enter inner scope */
-      __pyx_t_4 = PySet_New(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 482, __pyx_L11_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_6 = 0;
-      __pyx_t_9 = __Pyx_set_iterator(__pyx_v_self->data, 1, (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 482, __pyx_L11_error)
-      __Pyx_GOTREF(__pyx_t_9);
-      __Pyx_XDECREF(__pyx_t_5);
-      __pyx_t_5 = __pyx_t_9;
-      __pyx_t_9 = 0;
-      while (1) {
-        __pyx_t_10 = __Pyx_set_iter_next(__pyx_t_5, __pyx_t_7, &__pyx_t_6, &__pyx_t_9, __pyx_t_8);
-        if (unlikely(__pyx_t_10 == 0)) break;
-        if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 482, __pyx_L11_error)
-        __Pyx_GOTREF(__pyx_t_9);
-        __Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v_r, __pyx_t_9);
-        __pyx_t_9 = 0;
-        __pyx_t_9 = __Pyx_GetItemInt(__pyx_8genexpr1__pyx_v_r, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 482, __pyx_L11_error)
-        __Pyx_GOTREF(__pyx_t_9);
-        __pyx_t_11 = PyObject_RichCompare(__pyx_t_9, __pyx_v_o, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 482, __pyx_L11_error)
-        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 482, __pyx_L11_error)
-        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        if (__pyx_t_1) {
-          __pyx_t_11 = __Pyx_GetItemInt(__pyx_8genexpr1__pyx_v_r, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 482, __pyx_L11_error)
-          __Pyx_GOTREF(__pyx_t_11);
-          __pyx_t_9 = __Pyx_GetItemInt(__pyx_8genexpr1__pyx_v_r, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 482, __pyx_L11_error)
-          __Pyx_GOTREF(__pyx_t_9);
-          __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 482, __pyx_L11_error)
-          __Pyx_GOTREF(__pyx_t_12);
-          __Pyx_GIVEREF(__pyx_t_11);
-          PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11);
-          __Pyx_GIVEREF(__pyx_t_9);
-          PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_9);
-          __pyx_t_11 = 0;
-          __pyx_t_9 = 0;
-          if (unlikely(PySet_Add(__pyx_t_4, (PyObject*)__pyx_t_12))) __PYX_ERR(0, 482, __pyx_L11_error)
-          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_r); __pyx_8genexpr1__pyx_v_r = 0;
-      goto __pyx_L15_exit_scope;
-      __pyx_L11_error:;
-      __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_r); __pyx_8genexpr1__pyx_v_r = 0;
-      goto __pyx_L1_error;
-      __pyx_L15_exit_scope:;
-    } /* exit inner scope */
-    __pyx_r = __pyx_t_4;
-    __pyx_t_4 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":481
- *         if s is None and p is None and o is None:
- *             return self.data
- *         elif s is None and p is None:             # <<<<<<<<<<<<<<
- *             return {(r[0], r[1]) for r in self.data if r[2] == o}
- *         elif s is None and o is None:
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":483
- *         elif s is None and p is None:
- *             return {(r[0], r[1]) for r in self.data if r[2] == o}
- *         elif s is None and o is None:             # <<<<<<<<<<<<<<
- *             return {(r[0], r[2]) for r in self.data if r[1] == p}
- *         elif p is None and o is None:
- */
-  __pyx_t_3 = (__pyx_v_s == Py_None);
-  __pyx_t_2 = (__pyx_t_3 != 0);
-  if (__pyx_t_2) {
-  } else {
-    __pyx_t_1 = __pyx_t_2;
-    goto __pyx_L16_bool_binop_done;
-  }
-  __pyx_t_2 = (__pyx_v_o == Py_None);
-  __pyx_t_3 = (__pyx_t_2 != 0);
-  __pyx_t_1 = __pyx_t_3;
-  __pyx_L16_bool_binop_done:;
-  if (__pyx_t_1) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":484
- *             return {(r[0], r[1]) for r in self.data if r[2] == o}
- *         elif s is None and o is None:
- *             return {(r[0], r[2]) for r in self.data if r[1] == p}             # <<<<<<<<<<<<<<
- *         elif p is None and o is None:
- *             return {(r[1], r[2]) for r in self.data if r[0] == s}
- */
-    __Pyx_XDECREF(__pyx_r);
-    { /* enter inner scope */
-      __pyx_t_4 = PySet_New(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 484, __pyx_L20_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = 0;
-      __pyx_t_12 = __Pyx_set_iterator(__pyx_v_self->data, 1, (&__pyx_t_6), (&__pyx_t_8)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 484, __pyx_L20_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_XDECREF(__pyx_t_5);
-      __pyx_t_5 = __pyx_t_12;
-      __pyx_t_12 = 0;
-      while (1) {
-        __pyx_t_10 = __Pyx_set_iter_next(__pyx_t_5, __pyx_t_6, &__pyx_t_7, &__pyx_t_12, __pyx_t_8);
-        if (unlikely(__pyx_t_10 == 0)) break;
-        if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 484, __pyx_L20_error)
-        __Pyx_GOTREF(__pyx_t_12);
-        __Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_r, __pyx_t_12);
-        __pyx_t_12 = 0;
-        __pyx_t_12 = __Pyx_GetItemInt(__pyx_8genexpr2__pyx_v_r, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 484, __pyx_L20_error)
-        __Pyx_GOTREF(__pyx_t_12);
-        __pyx_t_9 = PyObject_RichCompare(__pyx_t_12, __pyx_v_p, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 484, __pyx_L20_error)
-        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 484, __pyx_L20_error)
-        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        if (__pyx_t_1) {
-          __pyx_t_9 = __Pyx_GetItemInt(__pyx_8genexpr2__pyx_v_r, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 484, __pyx_L20_error)
-          __Pyx_GOTREF(__pyx_t_9);
-          __pyx_t_12 = __Pyx_GetItemInt(__pyx_8genexpr2__pyx_v_r, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 484, __pyx_L20_error)
-          __Pyx_GOTREF(__pyx_t_12);
-          __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 484, __pyx_L20_error)
-          __Pyx_GOTREF(__pyx_t_11);
-          __Pyx_GIVEREF(__pyx_t_9);
-          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9);
-          __Pyx_GIVEREF(__pyx_t_12);
-          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_12);
-          __pyx_t_9 = 0;
-          __pyx_t_12 = 0;
-          if (unlikely(PySet_Add(__pyx_t_4, (PyObject*)__pyx_t_11))) __PYX_ERR(0, 484, __pyx_L20_error)
-          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_r); __pyx_8genexpr2__pyx_v_r = 0;
-      goto __pyx_L24_exit_scope;
-      __pyx_L20_error:;
-      __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_r); __pyx_8genexpr2__pyx_v_r = 0;
-      goto __pyx_L1_error;
-      __pyx_L24_exit_scope:;
-    } /* exit inner scope */
-    __pyx_r = __pyx_t_4;
-    __pyx_t_4 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":483
- *         elif s is None and p is None:
- *             return {(r[0], r[1]) for r in self.data if r[2] == o}
- *         elif s is None and o is None:             # <<<<<<<<<<<<<<
- *             return {(r[0], r[2]) for r in self.data if r[1] == p}
- *         elif p is None and o is None:
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":485
- *         elif s is None and o is None:
- *             return {(r[0], r[2]) for r in self.data if r[1] == p}
- *         elif p is None and o is None:             # <<<<<<<<<<<<<<
- *             return {(r[1], r[2]) for r in self.data if r[0] == s}
- *         elif s is None:
- */
-  __pyx_t_3 = (__pyx_v_p == Py_None);
-  __pyx_t_2 = (__pyx_t_3 != 0);
-  if (__pyx_t_2) {
-  } else {
-    __pyx_t_1 = __pyx_t_2;
-    goto __pyx_L25_bool_binop_done;
-  }
-  __pyx_t_2 = (__pyx_v_o == Py_None);
-  __pyx_t_3 = (__pyx_t_2 != 0);
-  __pyx_t_1 = __pyx_t_3;
-  __pyx_L25_bool_binop_done:;
-  if (__pyx_t_1) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":486
- *             return {(r[0], r[2]) for r in self.data if r[1] == p}
- *         elif p is None and o is None:
- *             return {(r[1], r[2]) for r in self.data if r[0] == s}             # <<<<<<<<<<<<<<
- *         elif s is None:
- *             return {r[0] for r in self.data if r[1] == p and r[2] == o}
- */
-    __Pyx_XDECREF(__pyx_r);
-    { /* enter inner scope */
-      __pyx_t_4 = PySet_New(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 486, __pyx_L29_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_6 = 0;
-      __pyx_t_11 = __Pyx_set_iterator(__pyx_v_self->data, 1, (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 486, __pyx_L29_error)
-      __Pyx_GOTREF(__pyx_t_11);
-      __Pyx_XDECREF(__pyx_t_5);
-      __pyx_t_5 = __pyx_t_11;
-      __pyx_t_11 = 0;
-      while (1) {
-        __pyx_t_10 = __Pyx_set_iter_next(__pyx_t_5, __pyx_t_7, &__pyx_t_6, &__pyx_t_11, __pyx_t_8);
-        if (unlikely(__pyx_t_10 == 0)) break;
-        if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 486, __pyx_L29_error)
-        __Pyx_GOTREF(__pyx_t_11);
-        __Pyx_XDECREF_SET(__pyx_8genexpr3__pyx_v_r, __pyx_t_11);
-        __pyx_t_11 = 0;
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_8genexpr3__pyx_v_r, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 486, __pyx_L29_error)
-        __Pyx_GOTREF(__pyx_t_11);
-        __pyx_t_12 = PyObject_RichCompare(__pyx_t_11, __pyx_v_s, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 486, __pyx_L29_error)
-        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 486, __pyx_L29_error)
-        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        if (__pyx_t_1) {
-          __pyx_t_12 = __Pyx_GetItemInt(__pyx_8genexpr3__pyx_v_r, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 486, __pyx_L29_error)
-          __Pyx_GOTREF(__pyx_t_12);
-          __pyx_t_11 = __Pyx_GetItemInt(__pyx_8genexpr3__pyx_v_r, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 486, __pyx_L29_error)
-          __Pyx_GOTREF(__pyx_t_11);
-          __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 486, __pyx_L29_error)
-          __Pyx_GOTREF(__pyx_t_9);
-          __Pyx_GIVEREF(__pyx_t_12);
-          PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_12);
-          __Pyx_GIVEREF(__pyx_t_11);
-          PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_11);
-          __pyx_t_12 = 0;
-          __pyx_t_11 = 0;
-          if (unlikely(PySet_Add(__pyx_t_4, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 486, __pyx_L29_error)
-          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_r); __pyx_8genexpr3__pyx_v_r = 0;
-      goto __pyx_L33_exit_scope;
-      __pyx_L29_error:;
-      __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_r); __pyx_8genexpr3__pyx_v_r = 0;
-      goto __pyx_L1_error;
-      __pyx_L33_exit_scope:;
-    } /* exit inner scope */
-    __pyx_r = __pyx_t_4;
-    __pyx_t_4 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":485
- *         elif s is None and o is None:
- *             return {(r[0], r[2]) for r in self.data if r[1] == p}
- *         elif p is None and o is None:             # <<<<<<<<<<<<<<
- *             return {(r[1], r[2]) for r in self.data if r[0] == s}
- *         elif s is None:
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":487
- *         elif p is None and o is None:
- *             return {(r[1], r[2]) for r in self.data if r[0] == s}
- *         elif s is None:             # <<<<<<<<<<<<<<
- *             return {r[0] for r in self.data if r[1] == p and r[2] == o}
- *         elif p is None:
- */
-  __pyx_t_1 = (__pyx_v_s == Py_None);
-  __pyx_t_3 = (__pyx_t_1 != 0);
-  if (__pyx_t_3) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":488
- *             return {(r[1], r[2]) for r in self.data if r[0] == s}
- *         elif s is None:
- *             return {r[0] for r in self.data if r[1] == p and r[2] == o}             # <<<<<<<<<<<<<<
- *         elif p is None:
- *             return {r[1] for r in self.data if r[0] == s and r[2] == o}
- */
-    __Pyx_XDECREF(__pyx_r);
-    { /* enter inner scope */
-      __pyx_t_4 = PySet_New(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 488, __pyx_L36_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = 0;
-      __pyx_t_9 = __Pyx_set_iterator(__pyx_v_self->data, 1, (&__pyx_t_6), (&__pyx_t_8)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 488, __pyx_L36_error)
-      __Pyx_GOTREF(__pyx_t_9);
-      __Pyx_XDECREF(__pyx_t_5);
-      __pyx_t_5 = __pyx_t_9;
-      __pyx_t_9 = 0;
-      while (1) {
-        __pyx_t_10 = __Pyx_set_iter_next(__pyx_t_5, __pyx_t_6, &__pyx_t_7, &__pyx_t_9, __pyx_t_8);
-        if (unlikely(__pyx_t_10 == 0)) break;
-        if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 488, __pyx_L36_error)
-        __Pyx_GOTREF(__pyx_t_9);
-        __Pyx_XDECREF_SET(__pyx_8genexpr4__pyx_v_r, __pyx_t_9);
-        __pyx_t_9 = 0;
-        __pyx_t_9 = __Pyx_GetItemInt(__pyx_8genexpr4__pyx_v_r, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 488, __pyx_L36_error)
-        __Pyx_GOTREF(__pyx_t_9);
-        __pyx_t_11 = PyObject_RichCompare(__pyx_t_9, __pyx_v_p, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 488, __pyx_L36_error)
-        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 488, __pyx_L36_error)
-        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        if (__pyx_t_1) {
-        } else {
-          __pyx_t_3 = __pyx_t_1;
-          goto __pyx_L40_bool_binop_done;
-        }
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_8genexpr4__pyx_v_r, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 488, __pyx_L36_error)
-        __Pyx_GOTREF(__pyx_t_11);
-        __pyx_t_9 = PyObject_RichCompare(__pyx_t_11, __pyx_v_o, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 488, __pyx_L36_error)
-        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 488, __pyx_L36_error)
-        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __pyx_t_3 = __pyx_t_1;
-        __pyx_L40_bool_binop_done:;
-        if (__pyx_t_3) {
-          __pyx_t_9 = __Pyx_GetItemInt(__pyx_8genexpr4__pyx_v_r, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 488, __pyx_L36_error)
-          __Pyx_GOTREF(__pyx_t_9);
-          if (unlikely(PySet_Add(__pyx_t_4, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 488, __pyx_L36_error)
-          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_XDECREF(__pyx_8genexpr4__pyx_v_r); __pyx_8genexpr4__pyx_v_r = 0;
-      goto __pyx_L42_exit_scope;
-      __pyx_L36_error:;
-      __Pyx_XDECREF(__pyx_8genexpr4__pyx_v_r); __pyx_8genexpr4__pyx_v_r = 0;
-      goto __pyx_L1_error;
-      __pyx_L42_exit_scope:;
-    } /* exit inner scope */
-    __pyx_r = __pyx_t_4;
-    __pyx_t_4 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":487
- *         elif p is None and o is None:
- *             return {(r[1], r[2]) for r in self.data if r[0] == s}
- *         elif s is None:             # <<<<<<<<<<<<<<
- *             return {r[0] for r in self.data if r[1] == p and r[2] == o}
- *         elif p is None:
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":489
- *         elif s is None:
- *             return {r[0] for r in self.data if r[1] == p and r[2] == o}
- *         elif p is None:             # <<<<<<<<<<<<<<
- *             return {r[1] for r in self.data if r[0] == s and r[2] == o}
- *         elif o is None:
- */
-  __pyx_t_3 = (__pyx_v_p == Py_None);
-  __pyx_t_1 = (__pyx_t_3 != 0);
-  if (__pyx_t_1) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":490
- *             return {r[0] for r in self.data if r[1] == p and r[2] == o}
- *         elif p is None:
- *             return {r[1] for r in self.data if r[0] == s and r[2] == o}             # <<<<<<<<<<<<<<
- *         elif o is None:
- *             return {r[2] for r in self.data if r[0] == s and r[1] == p}
- */
-    __Pyx_XDECREF(__pyx_r);
-    { /* enter inner scope */
-      __pyx_t_4 = PySet_New(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 490, __pyx_L45_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_6 = 0;
-      __pyx_t_9 = __Pyx_set_iterator(__pyx_v_self->data, 1, (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 490, __pyx_L45_error)
-      __Pyx_GOTREF(__pyx_t_9);
-      __Pyx_XDECREF(__pyx_t_5);
-      __pyx_t_5 = __pyx_t_9;
-      __pyx_t_9 = 0;
-      while (1) {
-        __pyx_t_10 = __Pyx_set_iter_next(__pyx_t_5, __pyx_t_7, &__pyx_t_6, &__pyx_t_9, __pyx_t_8);
-        if (unlikely(__pyx_t_10 == 0)) break;
-        if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 490, __pyx_L45_error)
-        __Pyx_GOTREF(__pyx_t_9);
-        __Pyx_XDECREF_SET(__pyx_8genexpr5__pyx_v_r, __pyx_t_9);
-        __pyx_t_9 = 0;
-        __pyx_t_9 = __Pyx_GetItemInt(__pyx_8genexpr5__pyx_v_r, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 490, __pyx_L45_error)
-        __Pyx_GOTREF(__pyx_t_9);
-        __pyx_t_11 = PyObject_RichCompare(__pyx_t_9, __pyx_v_s, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 490, __pyx_L45_error)
-        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 490, __pyx_L45_error)
-        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        if (__pyx_t_3) {
-        } else {
-          __pyx_t_1 = __pyx_t_3;
-          goto __pyx_L49_bool_binop_done;
-        }
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_8genexpr5__pyx_v_r, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 490, __pyx_L45_error)
-        __Pyx_GOTREF(__pyx_t_11);
-        __pyx_t_9 = PyObject_RichCompare(__pyx_t_11, __pyx_v_o, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 490, __pyx_L45_error)
-        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 490, __pyx_L45_error)
-        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __pyx_t_1 = __pyx_t_3;
-        __pyx_L49_bool_binop_done:;
-        if (__pyx_t_1) {
-          __pyx_t_9 = __Pyx_GetItemInt(__pyx_8genexpr5__pyx_v_r, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 490, __pyx_L45_error)
-          __Pyx_GOTREF(__pyx_t_9);
-          if (unlikely(PySet_Add(__pyx_t_4, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 490, __pyx_L45_error)
-          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_r); __pyx_8genexpr5__pyx_v_r = 0;
-      goto __pyx_L51_exit_scope;
-      __pyx_L45_error:;
-      __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_r); __pyx_8genexpr5__pyx_v_r = 0;
-      goto __pyx_L1_error;
-      __pyx_L51_exit_scope:;
-    } /* exit inner scope */
-    __pyx_r = __pyx_t_4;
-    __pyx_t_4 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":489
- *         elif s is None:
- *             return {r[0] for r in self.data if r[1] == p and r[2] == o}
- *         elif p is None:             # <<<<<<<<<<<<<<
- *             return {r[1] for r in self.data if r[0] == s and r[2] == o}
- *         elif o is None:
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":491
- *         elif p is None:
- *             return {r[1] for r in self.data if r[0] == s and r[2] == o}
- *         elif o is None:             # <<<<<<<<<<<<<<
- *             return {r[2] for r in self.data if r[0] == s and r[1] == p}
- *         else:
- */
-  __pyx_t_1 = (__pyx_v_o == Py_None);
-  __pyx_t_3 = (__pyx_t_1 != 0);
-  if (__pyx_t_3) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":492
- *             return {r[1] for r in self.data if r[0] == s and r[2] == o}
- *         elif o is None:
- *             return {r[2] for r in self.data if r[0] == s and r[1] == p}             # <<<<<<<<<<<<<<
- *         else:
- *             # all given
- */
-    __Pyx_XDECREF(__pyx_r);
-    { /* enter inner scope */
-      __pyx_t_4 = PySet_New(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 492, __pyx_L54_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = 0;
-      __pyx_t_9 = __Pyx_set_iterator(__pyx_v_self->data, 1, (&__pyx_t_6), (&__pyx_t_8)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 492, __pyx_L54_error)
-      __Pyx_GOTREF(__pyx_t_9);
-      __Pyx_XDECREF(__pyx_t_5);
-      __pyx_t_5 = __pyx_t_9;
-      __pyx_t_9 = 0;
-      while (1) {
-        __pyx_t_10 = __Pyx_set_iter_next(__pyx_t_5, __pyx_t_6, &__pyx_t_7, &__pyx_t_9, __pyx_t_8);
-        if (unlikely(__pyx_t_10 == 0)) break;
-        if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 492, __pyx_L54_error)
-        __Pyx_GOTREF(__pyx_t_9);
-        __Pyx_XDECREF_SET(__pyx_8genexpr6__pyx_v_r, __pyx_t_9);
-        __pyx_t_9 = 0;
-        __pyx_t_9 = __Pyx_GetItemInt(__pyx_8genexpr6__pyx_v_r, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 492, __pyx_L54_error)
-        __Pyx_GOTREF(__pyx_t_9);
-        __pyx_t_11 = PyObject_RichCompare(__pyx_t_9, __pyx_v_s, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 492, __pyx_L54_error)
-        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 492, __pyx_L54_error)
-        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        if (__pyx_t_1) {
-        } else {
-          __pyx_t_3 = __pyx_t_1;
-          goto __pyx_L58_bool_binop_done;
-        }
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_8genexpr6__pyx_v_r, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 492, __pyx_L54_error)
-        __Pyx_GOTREF(__pyx_t_11);
-        __pyx_t_9 = PyObject_RichCompare(__pyx_t_11, __pyx_v_p, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 492, __pyx_L54_error)
-        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 492, __pyx_L54_error)
-        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __pyx_t_3 = __pyx_t_1;
-        __pyx_L58_bool_binop_done:;
-        if (__pyx_t_3) {
-          __pyx_t_9 = __Pyx_GetItemInt(__pyx_8genexpr6__pyx_v_r, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 492, __pyx_L54_error)
-          __Pyx_GOTREF(__pyx_t_9);
-          if (unlikely(PySet_Add(__pyx_t_4, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 492, __pyx_L54_error)
-          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_r); __pyx_8genexpr6__pyx_v_r = 0;
-      goto __pyx_L60_exit_scope;
-      __pyx_L54_error:;
-      __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_r); __pyx_8genexpr6__pyx_v_r = 0;
-      goto __pyx_L1_error;
-      __pyx_L60_exit_scope:;
-    } /* exit inner scope */
-    __pyx_r = __pyx_t_4;
-    __pyx_t_4 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":491
- *         elif p is None:
- *             return {r[1] for r in self.data if r[0] == s and r[2] == o}
- *         elif o is None:             # <<<<<<<<<<<<<<
- *             return {r[2] for r in self.data if r[0] == s and r[1] == p}
- *         else:
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":495
- *         else:
- *             # all given
- *             return (s,p,o) in self.data             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  /*else*/ {
-    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 495, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_INCREF(__pyx_v_s);
-    __Pyx_GIVEREF(__pyx_v_s);
-    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_s);
-    __Pyx_INCREF(__pyx_v_p);
-    __Pyx_GIVEREF(__pyx_v_p);
-    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_p);
-    __Pyx_INCREF(__pyx_v_o);
-    __Pyx_GIVEREF(__pyx_v_o);
-    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_o);
-    if (unlikely(__pyx_v_self->data == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-      __PYX_ERR(0, 495, __pyx_L1_error)
-    }
-    __pyx_t_3 = (__Pyx_PySet_ContainsTF(__pyx_t_4, __pyx_v_self->data, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 495, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 495, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_r = __pyx_t_4;
-    __pyx_t_4 = 0;
-    goto __pyx_L0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":473
- * 
- * 
- *     cdef _slice(self, s, p, o):             # <<<<<<<<<<<<<<
- *         """
- *         Return terms filtered by other terms.
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_XDECREF(__pyx_t_11);
-  __Pyx_XDECREF(__pyx_t_12);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph._slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_r);
-  __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_r);
-  __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_r);
-  __Pyx_XDECREF(__pyx_8genexpr4__pyx_v_r);
-  __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_r);
-  __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_r);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":498
- * 
- * 
- *     cpdef lookup(self, s, p, o):             # <<<<<<<<<<<<<<
- *         """
- *         Look up triples by a pattern.
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_43lookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_lookup(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_s, PyObject *__pyx_v_p, PyObject *__pyx_v_o, int __pyx_skip_dispatch) {
-  PyObject *__pyx_8genexpr7__pyx_v_r = NULL;
-  PyObject *__pyx_8genexpr8__pyx_v_r = NULL;
-  PyObject *__pyx_8genexpr9__pyx_v_r = NULL;
-  PyObject *__pyx_9genexpr10__pyx_v_r = NULL;
-  PyObject *__pyx_9genexpr11__pyx_v_r = NULL;
-  PyObject *__pyx_9genexpr12__pyx_v_r = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  Py_ssize_t __pyx_t_7;
-  Py_UCS4 __pyx_t_8;
-  int __pyx_t_9;
-  int __pyx_t_10;
-  int __pyx_t_11;
-  Py_ssize_t __pyx_t_12;
-  int __pyx_t_13;
-  __Pyx_RefNannySetupContext("lookup", 0);
-  __Pyx_TraceCall("lookup", __pyx_f[0], 498, 0, __PYX_ERR(0, 498, __pyx_L1_error));
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 498, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_43lookup)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      __pyx_t_5 = 0;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-          __pyx_t_5 = 1;
-        }
-      }
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_s, __pyx_v_p, __pyx_v_o};
-        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 498, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_s, __pyx_v_p, __pyx_v_o};
-        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 498, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else
-      #endif
-      {
-        __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 498, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        if (__pyx_t_4) {
-          __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
-        }
-        __Pyx_INCREF(__pyx_v_s);
-        __Pyx_GIVEREF(__pyx_v_s);
-        PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_s);
-        __Pyx_INCREF(__pyx_v_p);
-        __Pyx_GIVEREF(__pyx_v_p);
-        PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_p);
-        __Pyx_INCREF(__pyx_v_o);
-        __Pyx_GIVEREF(__pyx_v_o);
-        PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_o);
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 498, __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_r = __pyx_t_2;
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":502
- *         Look up triples by a pattern.
- *         """
- *         logger.debug(f'Looking up in graph: {s}, {p}, {o}.')             # <<<<<<<<<<<<<<
- *         if s is None and p is None and o is None:
- *             return self.data
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 502, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 502, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 502, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_7 = 0;
-  __pyx_t_8 = 127;
-  __Pyx_INCREF(__pyx_kp_u_Looking_up_in_graph);
-  __pyx_t_7 += 21;
-  __Pyx_GIVEREF(__pyx_kp_u_Looking_up_in_graph);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_Looking_up_in_graph);
-  __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_s, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 502, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_8;
-  __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6);
-  __pyx_t_6 = 0;
-  __Pyx_INCREF(__pyx_kp_u__12);
-  __pyx_t_7 += 2;
-  __Pyx_GIVEREF(__pyx_kp_u__12);
-  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__12);
-  __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_p, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 502, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_8;
-  __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_6);
-  __pyx_t_6 = 0;
-  __Pyx_INCREF(__pyx_kp_u__12);
-  __pyx_t_7 += 2;
-  __Pyx_GIVEREF(__pyx_kp_u__12);
-  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__12);
-  __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_o, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 502, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_8;
-  __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_t_6);
-  __pyx_t_6 = 0;
-  __Pyx_INCREF(__pyx_kp_u__11);
-  __pyx_t_7 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__11);
-  PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_kp_u__11);
-  __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 7, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 502, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(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_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 502, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_GOTREF(__pyx_t_1);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_6};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 502, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_6};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 502, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 502, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
-      __Pyx_GIVEREF(__pyx_t_6);
-      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
-      __pyx_t_6 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 502, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":503
- *         """
- *         logger.debug(f'Looking up in graph: {s}, {p}, {o}.')
- *         if s is None and p is None and o is None:             # <<<<<<<<<<<<<<
- *             return self.data
- *         elif s is None and p is None:
- */
-  __pyx_t_10 = (__pyx_v_s == Py_None);
-  __pyx_t_11 = (__pyx_t_10 != 0);
-  if (__pyx_t_11) {
-  } else {
-    __pyx_t_9 = __pyx_t_11;
-    goto __pyx_L4_bool_binop_done;
-  }
-  __pyx_t_11 = (__pyx_v_p == Py_None);
-  __pyx_t_10 = (__pyx_t_11 != 0);
-  if (__pyx_t_10) {
-  } else {
-    __pyx_t_9 = __pyx_t_10;
-    goto __pyx_L4_bool_binop_done;
-  }
-  __pyx_t_10 = (__pyx_v_o == Py_None);
-  __pyx_t_11 = (__pyx_t_10 != 0);
-  __pyx_t_9 = __pyx_t_11;
-  __pyx_L4_bool_binop_done:;
-  if (__pyx_t_9) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":504
- *         logger.debug(f'Looking up in graph: {s}, {p}, {o}.')
- *         if s is None and p is None and o is None:
- *             return self.data             # <<<<<<<<<<<<<<
- *         elif s is None and p is None:
- *             return {r for r in self.data if r[2] == o}
- */
-    __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(__pyx_v_self->data);
-    __pyx_r = __pyx_v_self->data;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":503
- *         """
- *         logger.debug(f'Looking up in graph: {s}, {p}, {o}.')
- *         if s is None and p is None and o is None:             # <<<<<<<<<<<<<<
- *             return self.data
- *         elif s is None and p is None:
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":505
- *         if s is None and p is None and o is None:
- *             return self.data
- *         elif s is None and p is None:             # <<<<<<<<<<<<<<
- *             return {r for r in self.data if r[2] == o}
- *         elif s is None and o is None:
- */
-  __pyx_t_11 = (__pyx_v_s == Py_None);
-  __pyx_t_10 = (__pyx_t_11 != 0);
-  if (__pyx_t_10) {
-  } else {
-    __pyx_t_9 = __pyx_t_10;
-    goto __pyx_L7_bool_binop_done;
-  }
-  __pyx_t_10 = (__pyx_v_p == Py_None);
-  __pyx_t_11 = (__pyx_t_10 != 0);
-  __pyx_t_9 = __pyx_t_11;
-  __pyx_L7_bool_binop_done:;
-  if (__pyx_t_9) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":506
- *             return self.data
- *         elif s is None and p is None:
- *             return {r for r in self.data if r[2] == o}             # <<<<<<<<<<<<<<
- *         elif s is None and o is None:
- *             return {r for r in self.data if r[1] == p}
- */
-    __Pyx_XDECREF(__pyx_r);
-    { /* enter inner scope */
-      __pyx_t_1 = PySet_New(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L11_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_7 = 0;
-      __pyx_t_4 = __Pyx_set_iterator(__pyx_v_self->data, 1, (&__pyx_t_12), (&__pyx_t_5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 506, __pyx_L11_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_XDECREF(__pyx_t_3);
-      __pyx_t_3 = __pyx_t_4;
-      __pyx_t_4 = 0;
-      while (1) {
-        __pyx_t_13 = __Pyx_set_iter_next(__pyx_t_3, __pyx_t_12, &__pyx_t_7, &__pyx_t_4, __pyx_t_5);
-        if (unlikely(__pyx_t_13 == 0)) break;
-        if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 506, __pyx_L11_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __Pyx_XDECREF_SET(__pyx_8genexpr7__pyx_v_r, __pyx_t_4);
-        __pyx_t_4 = 0;
-        __pyx_t_4 = __Pyx_GetItemInt(__pyx_8genexpr7__pyx_v_r, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 506, __pyx_L11_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_o, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 506, __pyx_L11_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 506, __pyx_L11_error)
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        if (__pyx_t_9) {
-          if (unlikely(PySet_Add(__pyx_t_1, (PyObject*)__pyx_8genexpr7__pyx_v_r))) __PYX_ERR(0, 506, __pyx_L11_error)
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_r); __pyx_8genexpr7__pyx_v_r = 0;
-      goto __pyx_L15_exit_scope;
-      __pyx_L11_error:;
-      __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_r); __pyx_8genexpr7__pyx_v_r = 0;
-      goto __pyx_L1_error;
-      __pyx_L15_exit_scope:;
-    } /* exit inner scope */
-    __pyx_r = __pyx_t_1;
-    __pyx_t_1 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":505
- *         if s is None and p is None and o is None:
- *             return self.data
- *         elif s is None and p is None:             # <<<<<<<<<<<<<<
- *             return {r for r in self.data if r[2] == o}
- *         elif s is None and o is None:
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":507
- *         elif s is None and p is None:
- *             return {r for r in self.data if r[2] == o}
- *         elif s is None and o is None:             # <<<<<<<<<<<<<<
- *             return {r for r in self.data if r[1] == p}
- *         elif p is None and o is None:
- */
-  __pyx_t_11 = (__pyx_v_s == Py_None);
-  __pyx_t_10 = (__pyx_t_11 != 0);
-  if (__pyx_t_10) {
-  } else {
-    __pyx_t_9 = __pyx_t_10;
-    goto __pyx_L16_bool_binop_done;
-  }
-  __pyx_t_10 = (__pyx_v_o == Py_None);
-  __pyx_t_11 = (__pyx_t_10 != 0);
-  __pyx_t_9 = __pyx_t_11;
-  __pyx_L16_bool_binop_done:;
-  if (__pyx_t_9) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":508
- *             return {r for r in self.data if r[2] == o}
- *         elif s is None and o is None:
- *             return {r for r in self.data if r[1] == p}             # <<<<<<<<<<<<<<
- *         elif p is None and o is None:
- *             return {r for r in self.data if r[0] == s}
- */
-    __Pyx_XDECREF(__pyx_r);
-    { /* enter inner scope */
-      __pyx_t_1 = PySet_New(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 508, __pyx_L20_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_12 = 0;
-      __pyx_t_6 = __Pyx_set_iterator(__pyx_v_self->data, 1, (&__pyx_t_7), (&__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 508, __pyx_L20_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_XDECREF(__pyx_t_3);
-      __pyx_t_3 = __pyx_t_6;
-      __pyx_t_6 = 0;
-      while (1) {
-        __pyx_t_13 = __Pyx_set_iter_next(__pyx_t_3, __pyx_t_7, &__pyx_t_12, &__pyx_t_6, __pyx_t_5);
-        if (unlikely(__pyx_t_13 == 0)) break;
-        if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 508, __pyx_L20_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __Pyx_XDECREF_SET(__pyx_8genexpr8__pyx_v_r, __pyx_t_6);
-        __pyx_t_6 = 0;
-        __pyx_t_6 = __Pyx_GetItemInt(__pyx_8genexpr8__pyx_v_r, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 508, __pyx_L20_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_v_p, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 508, __pyx_L20_error)
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 508, __pyx_L20_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (__pyx_t_9) {
-          if (unlikely(PySet_Add(__pyx_t_1, (PyObject*)__pyx_8genexpr8__pyx_v_r))) __PYX_ERR(0, 508, __pyx_L20_error)
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_8genexpr8__pyx_v_r); __pyx_8genexpr8__pyx_v_r = 0;
-      goto __pyx_L24_exit_scope;
-      __pyx_L20_error:;
-      __Pyx_XDECREF(__pyx_8genexpr8__pyx_v_r); __pyx_8genexpr8__pyx_v_r = 0;
-      goto __pyx_L1_error;
-      __pyx_L24_exit_scope:;
-    } /* exit inner scope */
-    __pyx_r = __pyx_t_1;
-    __pyx_t_1 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":507
- *         elif s is None and p is None:
- *             return {r for r in self.data if r[2] == o}
- *         elif s is None and o is None:             # <<<<<<<<<<<<<<
- *             return {r for r in self.data if r[1] == p}
- *         elif p is None and o is None:
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":509
- *         elif s is None and o is None:
- *             return {r for r in self.data if r[1] == p}
- *         elif p is None and o is None:             # <<<<<<<<<<<<<<
- *             return {r for r in self.data if r[0] == s}
- *         elif s is None:
- */
-  __pyx_t_11 = (__pyx_v_p == Py_None);
-  __pyx_t_10 = (__pyx_t_11 != 0);
-  if (__pyx_t_10) {
-  } else {
-    __pyx_t_9 = __pyx_t_10;
-    goto __pyx_L25_bool_binop_done;
-  }
-  __pyx_t_10 = (__pyx_v_o == Py_None);
-  __pyx_t_11 = (__pyx_t_10 != 0);
-  __pyx_t_9 = __pyx_t_11;
-  __pyx_L25_bool_binop_done:;
-  if (__pyx_t_9) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":510
- *             return {r for r in self.data if r[1] == p}
- *         elif p is None and o is None:
- *             return {r for r in self.data if r[0] == s}             # <<<<<<<<<<<<<<
- *         elif s is None:
- *             return {r for r in self.data if r[1] == p and r[2] == o}
- */
-    __Pyx_XDECREF(__pyx_r);
-    { /* enter inner scope */
-      __pyx_t_1 = PySet_New(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 510, __pyx_L29_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_7 = 0;
-      __pyx_t_4 = __Pyx_set_iterator(__pyx_v_self->data, 1, (&__pyx_t_12), (&__pyx_t_5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 510, __pyx_L29_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_XDECREF(__pyx_t_3);
-      __pyx_t_3 = __pyx_t_4;
-      __pyx_t_4 = 0;
-      while (1) {
-        __pyx_t_13 = __Pyx_set_iter_next(__pyx_t_3, __pyx_t_12, &__pyx_t_7, &__pyx_t_4, __pyx_t_5);
-        if (unlikely(__pyx_t_13 == 0)) break;
-        if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 510, __pyx_L29_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __Pyx_XDECREF_SET(__pyx_8genexpr9__pyx_v_r, __pyx_t_4);
-        __pyx_t_4 = 0;
-        __pyx_t_4 = __Pyx_GetItemInt(__pyx_8genexpr9__pyx_v_r, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 510, __pyx_L29_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_s, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 510, __pyx_L29_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 510, __pyx_L29_error)
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        if (__pyx_t_9) {
-          if (unlikely(PySet_Add(__pyx_t_1, (PyObject*)__pyx_8genexpr9__pyx_v_r))) __PYX_ERR(0, 510, __pyx_L29_error)
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_8genexpr9__pyx_v_r); __pyx_8genexpr9__pyx_v_r = 0;
-      goto __pyx_L33_exit_scope;
-      __pyx_L29_error:;
-      __Pyx_XDECREF(__pyx_8genexpr9__pyx_v_r); __pyx_8genexpr9__pyx_v_r = 0;
-      goto __pyx_L1_error;
-      __pyx_L33_exit_scope:;
-    } /* exit inner scope */
-    __pyx_r = __pyx_t_1;
-    __pyx_t_1 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":509
- *         elif s is None and o is None:
- *             return {r for r in self.data if r[1] == p}
- *         elif p is None and o is None:             # <<<<<<<<<<<<<<
- *             return {r for r in self.data if r[0] == s}
- *         elif s is None:
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":511
- *         elif p is None and o is None:
- *             return {r for r in self.data if r[0] == s}
- *         elif s is None:             # <<<<<<<<<<<<<<
- *             return {r for r in self.data if r[1] == p and r[2] == o}
- *         elif p is None:
- */
-  __pyx_t_9 = (__pyx_v_s == Py_None);
-  __pyx_t_11 = (__pyx_t_9 != 0);
-  if (__pyx_t_11) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":512
- *             return {r for r in self.data if r[0] == s}
- *         elif s is None:
- *             return {r for r in self.data if r[1] == p and r[2] == o}             # <<<<<<<<<<<<<<
- *         elif p is None:
- *             return {r for r in self.data if r[0] == s and r[2] == o}
- */
-    __Pyx_XDECREF(__pyx_r);
-    { /* enter inner scope */
-      __pyx_t_1 = PySet_New(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 512, __pyx_L36_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_12 = 0;
-      __pyx_t_6 = __Pyx_set_iterator(__pyx_v_self->data, 1, (&__pyx_t_7), (&__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 512, __pyx_L36_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_XDECREF(__pyx_t_3);
-      __pyx_t_3 = __pyx_t_6;
-      __pyx_t_6 = 0;
-      while (1) {
-        __pyx_t_13 = __Pyx_set_iter_next(__pyx_t_3, __pyx_t_7, &__pyx_t_12, &__pyx_t_6, __pyx_t_5);
-        if (unlikely(__pyx_t_13 == 0)) break;
-        if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 512, __pyx_L36_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __Pyx_XDECREF_SET(__pyx_9genexpr10__pyx_v_r, __pyx_t_6);
-        __pyx_t_6 = 0;
-        __pyx_t_6 = __Pyx_GetItemInt(__pyx_9genexpr10__pyx_v_r, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 512, __pyx_L36_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_v_p, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 512, __pyx_L36_error)
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 512, __pyx_L36_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (__pyx_t_9) {
-        } else {
-          __pyx_t_11 = __pyx_t_9;
-          goto __pyx_L40_bool_binop_done;
-        }
-        __pyx_t_4 = __Pyx_GetItemInt(__pyx_9genexpr10__pyx_v_r, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 512, __pyx_L36_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_o, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 512, __pyx_L36_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 512, __pyx_L36_error)
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __pyx_t_11 = __pyx_t_9;
-        __pyx_L40_bool_binop_done:;
-        if (__pyx_t_11) {
-          if (unlikely(PySet_Add(__pyx_t_1, (PyObject*)__pyx_9genexpr10__pyx_v_r))) __PYX_ERR(0, 512, __pyx_L36_error)
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_9genexpr10__pyx_v_r); __pyx_9genexpr10__pyx_v_r = 0;
-      goto __pyx_L42_exit_scope;
-      __pyx_L36_error:;
-      __Pyx_XDECREF(__pyx_9genexpr10__pyx_v_r); __pyx_9genexpr10__pyx_v_r = 0;
-      goto __pyx_L1_error;
-      __pyx_L42_exit_scope:;
-    } /* exit inner scope */
-    __pyx_r = __pyx_t_1;
-    __pyx_t_1 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":511
- *         elif p is None and o is None:
- *             return {r for r in self.data if r[0] == s}
- *         elif s is None:             # <<<<<<<<<<<<<<
- *             return {r for r in self.data if r[1] == p and r[2] == o}
- *         elif p is None:
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":513
- *         elif s is None:
- *             return {r for r in self.data if r[1] == p and r[2] == o}
- *         elif p is None:             # <<<<<<<<<<<<<<
- *             return {r for r in self.data if r[0] == s and r[2] == o}
- *         elif o is None:
- */
-  __pyx_t_11 = (__pyx_v_p == Py_None);
-  __pyx_t_9 = (__pyx_t_11 != 0);
-  if (__pyx_t_9) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":514
- *             return {r for r in self.data if r[1] == p and r[2] == o}
- *         elif p is None:
- *             return {r for r in self.data if r[0] == s and r[2] == o}             # <<<<<<<<<<<<<<
- *         elif o is None:
- *             return {r for r in self.data if r[0] == s and r[1] == p}
- */
-    __Pyx_XDECREF(__pyx_r);
-    { /* enter inner scope */
-      __pyx_t_1 = PySet_New(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 514, __pyx_L45_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_7 = 0;
-      __pyx_t_6 = __Pyx_set_iterator(__pyx_v_self->data, 1, (&__pyx_t_12), (&__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 514, __pyx_L45_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_XDECREF(__pyx_t_3);
-      __pyx_t_3 = __pyx_t_6;
-      __pyx_t_6 = 0;
-      while (1) {
-        __pyx_t_13 = __Pyx_set_iter_next(__pyx_t_3, __pyx_t_12, &__pyx_t_7, &__pyx_t_6, __pyx_t_5);
-        if (unlikely(__pyx_t_13 == 0)) break;
-        if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 514, __pyx_L45_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __Pyx_XDECREF_SET(__pyx_9genexpr11__pyx_v_r, __pyx_t_6);
-        __pyx_t_6 = 0;
-        __pyx_t_6 = __Pyx_GetItemInt(__pyx_9genexpr11__pyx_v_r, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 514, __pyx_L45_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_v_s, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 514, __pyx_L45_error)
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 514, __pyx_L45_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (__pyx_t_11) {
-        } else {
-          __pyx_t_9 = __pyx_t_11;
-          goto __pyx_L49_bool_binop_done;
-        }
-        __pyx_t_4 = __Pyx_GetItemInt(__pyx_9genexpr11__pyx_v_r, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 514, __pyx_L45_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_o, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 514, __pyx_L45_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 514, __pyx_L45_error)
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __pyx_t_9 = __pyx_t_11;
-        __pyx_L49_bool_binop_done:;
-        if (__pyx_t_9) {
-          if (unlikely(PySet_Add(__pyx_t_1, (PyObject*)__pyx_9genexpr11__pyx_v_r))) __PYX_ERR(0, 514, __pyx_L45_error)
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_r); __pyx_9genexpr11__pyx_v_r = 0;
-      goto __pyx_L51_exit_scope;
-      __pyx_L45_error:;
-      __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_r); __pyx_9genexpr11__pyx_v_r = 0;
-      goto __pyx_L1_error;
-      __pyx_L51_exit_scope:;
-    } /* exit inner scope */
-    __pyx_r = __pyx_t_1;
-    __pyx_t_1 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":513
- *         elif s is None:
- *             return {r for r in self.data if r[1] == p and r[2] == o}
- *         elif p is None:             # <<<<<<<<<<<<<<
- *             return {r for r in self.data if r[0] == s and r[2] == o}
- *         elif o is None:
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":515
- *         elif p is None:
- *             return {r for r in self.data if r[0] == s and r[2] == o}
- *         elif o is None:             # <<<<<<<<<<<<<<
- *             return {r for r in self.data if r[0] == s and r[1] == p}
- *         else:
- */
-  __pyx_t_9 = (__pyx_v_o == Py_None);
-  __pyx_t_11 = (__pyx_t_9 != 0);
-  if (__pyx_t_11) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":516
- *             return {r for r in self.data if r[0] == s and r[2] == o}
- *         elif o is None:
- *             return {r for r in self.data if r[0] == s and r[1] == p}             # <<<<<<<<<<<<<<
- *         else:
- *             # all given
- */
-    __Pyx_XDECREF(__pyx_r);
-    { /* enter inner scope */
-      __pyx_t_1 = PySet_New(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 516, __pyx_L54_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_12 = 0;
-      __pyx_t_6 = __Pyx_set_iterator(__pyx_v_self->data, 1, (&__pyx_t_7), (&__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 516, __pyx_L54_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_XDECREF(__pyx_t_3);
-      __pyx_t_3 = __pyx_t_6;
-      __pyx_t_6 = 0;
-      while (1) {
-        __pyx_t_13 = __Pyx_set_iter_next(__pyx_t_3, __pyx_t_7, &__pyx_t_12, &__pyx_t_6, __pyx_t_5);
-        if (unlikely(__pyx_t_13 == 0)) break;
-        if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 516, __pyx_L54_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __Pyx_XDECREF_SET(__pyx_9genexpr12__pyx_v_r, __pyx_t_6);
-        __pyx_t_6 = 0;
-        __pyx_t_6 = __Pyx_GetItemInt(__pyx_9genexpr12__pyx_v_r, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 516, __pyx_L54_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_v_s, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 516, __pyx_L54_error)
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 516, __pyx_L54_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (__pyx_t_9) {
-        } else {
-          __pyx_t_11 = __pyx_t_9;
-          goto __pyx_L58_bool_binop_done;
-        }
-        __pyx_t_4 = __Pyx_GetItemInt(__pyx_9genexpr12__pyx_v_r, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 516, __pyx_L54_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_p, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 516, __pyx_L54_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 516, __pyx_L54_error)
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __pyx_t_11 = __pyx_t_9;
-        __pyx_L58_bool_binop_done:;
-        if (__pyx_t_11) {
-          if (unlikely(PySet_Add(__pyx_t_1, (PyObject*)__pyx_9genexpr12__pyx_v_r))) __PYX_ERR(0, 516, __pyx_L54_error)
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_9genexpr12__pyx_v_r); __pyx_9genexpr12__pyx_v_r = 0;
-      goto __pyx_L60_exit_scope;
-      __pyx_L54_error:;
-      __Pyx_XDECREF(__pyx_9genexpr12__pyx_v_r); __pyx_9genexpr12__pyx_v_r = 0;
-      goto __pyx_L1_error;
-      __pyx_L60_exit_scope:;
-    } /* exit inner scope */
-    __pyx_r = __pyx_t_1;
-    __pyx_t_1 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":515
- *         elif p is None:
- *             return {r for r in self.data if r[0] == s and r[2] == o}
- *         elif o is None:             # <<<<<<<<<<<<<<
- *             return {r for r in self.data if r[0] == s and r[1] == p}
- *         else:
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":519
- *         else:
- *             # all given
- *             return (s,p,o) if (s, p, o) in self.data else set()             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  /*else*/ {
-    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 519, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(__pyx_v_s);
-    __Pyx_GIVEREF(__pyx_v_s);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_s);
-    __Pyx_INCREF(__pyx_v_p);
-    __Pyx_GIVEREF(__pyx_v_p);
-    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_p);
-    __Pyx_INCREF(__pyx_v_o);
-    __Pyx_GIVEREF(__pyx_v_o);
-    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_o);
-    if (unlikely(__pyx_v_self->data == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-      __PYX_ERR(0, 519, __pyx_L1_error)
-    }
-    __pyx_t_11 = (__Pyx_PySet_ContainsTF(__pyx_t_3, __pyx_v_self->data, Py_EQ)); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 519, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if ((__pyx_t_11 != 0)) {
-      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 519, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_INCREF(__pyx_v_s);
-      __Pyx_GIVEREF(__pyx_v_s);
-      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_s);
-      __Pyx_INCREF(__pyx_v_p);
-      __Pyx_GIVEREF(__pyx_v_p);
-      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_p);
-      __Pyx_INCREF(__pyx_v_o);
-      __Pyx_GIVEREF(__pyx_v_o);
-      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_o);
-      __pyx_t_1 = __pyx_t_3;
-      __pyx_t_3 = 0;
-    } else {
-      __pyx_t_3 = PySet_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 519, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_1 = __pyx_t_3;
-      __pyx_t_3 = 0;
-    }
-    __pyx_r = __pyx_t_1;
-    __pyx_t_1 = 0;
-    goto __pyx_L0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":498
- * 
- * 
- *     cpdef lookup(self, s, p, o):             # <<<<<<<<<<<<<<
- *         """
- *         Look up triples by a pattern.
- */
-
-  /* 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_6);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_r);
-  __Pyx_XDECREF(__pyx_8genexpr8__pyx_v_r);
-  __Pyx_XDECREF(__pyx_8genexpr9__pyx_v_r);
-  __Pyx_XDECREF(__pyx_9genexpr10__pyx_v_r);
-  __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_r);
-  __Pyx_XDECREF(__pyx_9genexpr12__pyx_v_r);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_43lookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_42lookup[] = "\n        Look up triples by a pattern.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_43lookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_s = 0;
-  PyObject *__pyx_v_p = 0;
-  PyObject *__pyx_v_o = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("lookup (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_s,&__pyx_n_s_p,&__pyx_n_s_o,0};
-    PyObject* values[3] = {0,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  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] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_s)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_p)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("lookup", 1, 3, 3, 1); __PYX_ERR(0, 498, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_o)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("lookup", 1, 3, 3, 2); __PYX_ERR(0, 498, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lookup") < 0)) __PYX_ERR(0, 498, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-    }
-    __pyx_v_s = values[0];
-    __pyx_v_p = values[1];
-    __pyx_v_o = values[2];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("lookup", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 498, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_42lookup(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), __pyx_v_s, __pyx_v_p, __pyx_v_o);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_42lookup(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_s, PyObject *__pyx_v_p, PyObject *__pyx_v_o) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("lookup", 0);
-  __Pyx_TraceCall("lookup (wrapper)", __pyx_f[0], 498, 0, __PYX_ERR(0, 498, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_lookup(__pyx_v_self, __pyx_v_s, __pyx_v_p, __pyx_v_o, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 498, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":522
- * 
- * 
- *     cpdef set terms(self, str type):             # <<<<<<<<<<<<<<
- *         """
- *         Get all terms of a type: subject, predicate or object.
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_45terms(PyObject *__pyx_v_self, PyObject *__pyx_v_type); /*proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_terms(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_type, int __pyx_skip_dispatch) {
-  PyObject *__pyx_v_i = NULL;
-  PyObject *__pyx_9genexpr13__pyx_v_r = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  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;
-  Py_ssize_t __pyx_t_6;
-  Py_ssize_t __pyx_t_7;
-  int __pyx_t_8;
-  int __pyx_t_9;
-  __Pyx_RefNannySetupContext("terms", 0);
-  __Pyx_TraceCall("terms", __pyx_f[0], 522, 0, __PYX_ERR(0, 522, __pyx_L1_error));
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_terms); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_45terms)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 522, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_type};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 522, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_type};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 522, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        {
-          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 522, __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_INCREF(__pyx_v_type);
-          __Pyx_GIVEREF(__pyx_v_type);
-          PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_type);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 522, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (!(likely(PySet_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 522, __pyx_L1_error)
-      __pyx_r = ((PyObject*)__pyx_t_2);
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":528
- *         :param str type: One of ``s``, ``p`` or ``o``.
- *         """
- *         i = 'spo'.index(type)             # <<<<<<<<<<<<<<
- *         return {r[i] for r in self.data}
- * 
- */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_n_u_spo, __pyx_n_s_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 528, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __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_v_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 528, __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_type};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 528, __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_type};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 528, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-    } else
-    #endif
-    {
-      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 528, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
-      __Pyx_INCREF(__pyx_v_type);
-      __Pyx_GIVEREF(__pyx_v_type);
-      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_type);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 528, __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_i = __pyx_t_1;
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":529
- *         """
- *         i = 'spo'.index(type)
- *         return {r[i] for r in self.data}             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  { /* enter inner scope */
-    __pyx_t_1 = PySet_New(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 529, __pyx_L5_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_6 = 0;
-    __pyx_t_5 = __Pyx_set_iterator(__pyx_v_self->data, 1, (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 529, __pyx_L5_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_2);
-    __pyx_t_2 = __pyx_t_5;
-    __pyx_t_5 = 0;
-    while (1) {
-      __pyx_t_9 = __Pyx_set_iter_next(__pyx_t_2, __pyx_t_7, &__pyx_t_6, &__pyx_t_5, __pyx_t_8);
-      if (unlikely(__pyx_t_9 == 0)) break;
-      if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 529, __pyx_L5_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_XDECREF_SET(__pyx_9genexpr13__pyx_v_r, __pyx_t_5);
-      __pyx_t_5 = 0;
-      __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_9genexpr13__pyx_v_r, __pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 529, __pyx_L5_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      if (unlikely(PySet_Add(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 529, __pyx_L5_error)
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    }
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_XDECREF(__pyx_9genexpr13__pyx_v_r); __pyx_9genexpr13__pyx_v_r = 0;
-    goto __pyx_L8_exit_scope;
-    __pyx_L5_error:;
-    __Pyx_XDECREF(__pyx_9genexpr13__pyx_v_r); __pyx_9genexpr13__pyx_v_r = 0;
-    goto __pyx_L1_error;
-    __pyx_L8_exit_scope:;
-  } /* exit inner scope */
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":522
- * 
- * 
- *     cpdef set terms(self, str type):             # <<<<<<<<<<<<<<
- *         """
- *         Get all terms of a type: subject, predicate or object.
- */
-
-  /* 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("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.terms", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_i);
-  __Pyx_XDECREF(__pyx_9genexpr13__pyx_v_r);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_45terms(PyObject *__pyx_v_self, PyObject *__pyx_v_type); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_44terms[] = "\n        Get all terms of a type: subject, predicate or object.\n\n        :param str type: One of ``s``, ``p`` or ``o``.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_45terms(PyObject *__pyx_v_self, PyObject *__pyx_v_type) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("terms (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_type), (&PyUnicode_Type), 1, "type", 1))) __PYX_ERR(0, 522, __pyx_L1_error)
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_44terms(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), ((PyObject*)__pyx_v_type));
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_44terms(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v_type) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("terms", 0);
-  __Pyx_TraceCall("terms (wrapper)", __pyx_f[0], 522, 0, __PYX_ERR(0, 522, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_terms(__pyx_v_self, __pyx_v_type, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.terms", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":275
- * 
- *     cdef:
- *         readonly set data             # <<<<<<<<<<<<<<
- * 
- *     def __init__(
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_4data_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_4data_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_4data___get__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_4data___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_TraceCall("__get__", __pyx_f[0], 275, 0, __PYX_ERR(0, 275, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->data);
-  __pyx_r = __pyx_v_self->data;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.data.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
- *     cdef bint use_setstate
- *     state = (self.data,)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_47__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_47__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_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_46__reduce_cython__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_46__reduce_cython__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self) {
-  int __pyx_v_use_setstate;
-  PyObject *__pyx_v_state = NULL;
-  PyObject *__pyx_v__dict = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  int __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  __Pyx_RefNannySetupContext("__reduce_cython__", 0);
-  __Pyx_TraceCall("__reduce_cython__", __pyx_f[1], 1, 0, __PYX_ERR(1, 1, __pyx_L1_error));
-
-  /* "(tree fragment)":3
- * def __reduce_cython__(self):
- *     cdef bint use_setstate
- *     state = (self.data,)             # <<<<<<<<<<<<<<
- *     _dict = getattr(self, '__dict__', None)
- *     if _dict is not None:
- */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_v_self->data);
-  __Pyx_GIVEREF(__pyx_v_self->data);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->data);
-  __pyx_v_state = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "(tree fragment)":4
- *     cdef bint use_setstate
- *     state = (self.data,)
- *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
- *     if _dict is not None:
- *         state += (_dict,)
- */
-  __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v__dict = __pyx_t_1;
-  __pyx_t_1 = 0;
-
-  /* "(tree fragment)":5
- *     state = (self.data,)
- *     _dict = getattr(self, '__dict__', None)
- *     if _dict is not None:             # <<<<<<<<<<<<<<
- *         state += (_dict,)
- *         use_setstate = True
- */
-  __pyx_t_2 = (__pyx_v__dict != Py_None);
-  __pyx_t_3 = (__pyx_t_2 != 0);
-  if (__pyx_t_3) {
-
-    /* "(tree fragment)":6
- *     _dict = getattr(self, '__dict__', None)
- *     if _dict is not None:
- *         state += (_dict,)             # <<<<<<<<<<<<<<
- *         use_setstate = True
- *     else:
- */
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_INCREF(__pyx_v__dict);
-    __Pyx_GIVEREF(__pyx_v__dict);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
-    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
-    __pyx_t_4 = 0;
-
-    /* "(tree fragment)":7
- *     if _dict is not None:
- *         state += (_dict,)
- *         use_setstate = True             # <<<<<<<<<<<<<<
- *     else:
- *         use_setstate = self.data is not None
- */
-    __pyx_v_use_setstate = 1;
-
-    /* "(tree fragment)":5
- *     state = (self.data,)
- *     _dict = getattr(self, '__dict__', None)
- *     if _dict is not None:             # <<<<<<<<<<<<<<
- *         state += (_dict,)
- *         use_setstate = True
- */
-    goto __pyx_L3;
-  }
-
-  /* "(tree fragment)":9
- *         use_setstate = True
- *     else:
- *         use_setstate = self.data is not None             # <<<<<<<<<<<<<<
- *     if use_setstate:
- *         return __pyx_unpickle_SimpleGraph, (type(self), 0x8d777f3, None), state
- */
-  /*else*/ {
-    __pyx_t_3 = (__pyx_v_self->data != ((PyObject*)Py_None));
-    __pyx_v_use_setstate = __pyx_t_3;
-  }
-  __pyx_L3:;
-
-  /* "(tree fragment)":10
- *     else:
- *         use_setstate = self.data is not None
- *     if use_setstate:             # <<<<<<<<<<<<<<
- *         return __pyx_unpickle_SimpleGraph, (type(self), 0x8d777f3, None), state
- *     else:
- */
-  __pyx_t_3 = (__pyx_v_use_setstate != 0);
-  if (__pyx_t_3) {
-
-    /* "(tree fragment)":11
- *         use_setstate = self.data is not None
- *     if use_setstate:
- *         return __pyx_unpickle_SimpleGraph, (type(self), 0x8d777f3, None), state             # <<<<<<<<<<<<<<
- *     else:
- *         return __pyx_unpickle_SimpleGraph, (type(self), 0x8d777f3, state)
- */
-    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_SimpleGraph); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 11, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
-    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
-    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
-    __Pyx_INCREF(__pyx_int_148338675);
-    __Pyx_GIVEREF(__pyx_int_148338675);
-    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_148338675);
-    __Pyx_INCREF(Py_None);
-    __Pyx_GIVEREF(Py_None);
-    PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
-    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 11, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_GIVEREF(__pyx_t_4);
-    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
-    __Pyx_INCREF(__pyx_v_state);
-    __Pyx_GIVEREF(__pyx_v_state);
-    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
-    __pyx_t_4 = 0;
-    __pyx_t_1 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
-    /* "(tree fragment)":10
- *     else:
- *         use_setstate = self.data is not None
- *     if use_setstate:             # <<<<<<<<<<<<<<
- *         return __pyx_unpickle_SimpleGraph, (type(self), 0x8d777f3, None), state
- *     else:
- */
-  }
-
-  /* "(tree fragment)":13
- *         return __pyx_unpickle_SimpleGraph, (type(self), 0x8d777f3, None), state
- *     else:
- *         return __pyx_unpickle_SimpleGraph, (type(self), 0x8d777f3, state)             # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- *     __pyx_unpickle_SimpleGraph__set_state(self, __pyx_state)
- */
-  /*else*/ {
-    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_SimpleGraph); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
-    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
-    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
-    __Pyx_INCREF(__pyx_int_148338675);
-    __Pyx_GIVEREF(__pyx_int_148338675);
-    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_148338675);
-    __Pyx_INCREF(__pyx_v_state);
-    __Pyx_GIVEREF(__pyx_v_state);
-    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
-    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_5);
-    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
-    __Pyx_GIVEREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
-    __pyx_t_5 = 0;
-    __pyx_t_1 = 0;
-    __pyx_r = __pyx_t_4;
-    __pyx_t_4 = 0;
-    goto __pyx_L0;
-  }
-
-  /* "(tree fragment)":1
- * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
- *     cdef bint use_setstate
- *     state = (self.data,)
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_state);
-  __Pyx_XDECREF(__pyx_v__dict);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "(tree fragment)":14
- *     else:
- *         return __pyx_unpickle_SimpleGraph, (type(self), 0x8d777f3, state)
- * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
- *     __pyx_unpickle_SimpleGraph__set_state(self, __pyx_state)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_49__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_49__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_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_48__setstate_cython__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_48__setstate_cython__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__setstate_cython__", 0);
-  __Pyx_TraceCall("__setstate_cython__", __pyx_f[1], 14, 0, __PYX_ERR(1, 14, __pyx_L1_error));
-
-  /* "(tree fragment)":15
- *         return __pyx_unpickle_SimpleGraph, (type(self), 0x8d777f3, state)
- * def __setstate_cython__(self, __pyx_state):
- *     __pyx_unpickle_SimpleGraph__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
- */
-  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 15, __pyx_L1_error)
-  __pyx_t_1 = __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_unpickle_SimpleGraph__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "(tree fragment)":14
- *     else:
- *         return __pyx_unpickle_SimpleGraph, (type(self), 0x8d777f3, state)
- * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
- *     __pyx_unpickle_SimpleGraph__set_state(self, __pyx_state)
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":549
- *         readonly object uri
- * 
- *     def __init__(self, uri, *args, **kwargs):             # <<<<<<<<<<<<<<
- *         """
- *         Initialize the graph with pre-existing data or by looking up a store.
- */
-
-/* Python wrapper */
-static int __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr___init__[] = "\n        Initialize the graph with pre-existing data or by looking up a store.\n\n        Either ``data``, or ``lookup`` *and* ``store``, can be provide.\n        ``lookup`` and ``store`` have precedence. If none of them is specified,\n        an empty graph is initialized.\n\n        :param rdflib.URIRef uri: The graph URI.\n            This will serve as the subject for some queries.\n        :param set data: Initial data as a set of 3-tuples of RDFLib terms.\n        :param tuple lookup: tuple of a 3-tuple of lookup terms, and a context.\n            E.g. ``((URIRef('urn:ns:a'), None, None), URIRef('urn:ns:ctx'))``.\n            Any and all elements may be ``None``.\n        :param lmdbStore store: the store to look data up.\n        ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr___init__;
-#endif
-static int __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_uri = 0;
-  PyObject *__pyx_v_args = 0;
-  PyObject *__pyx_v_kwargs = 0;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
-  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
-  __Pyx_GOTREF(__pyx_v_kwargs);
-  if (PyTuple_GET_SIZE(__pyx_args) > 1) {
-    __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args));
-    if (unlikely(!__pyx_v_args)) {
-      __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
-      __Pyx_RefNannyFinishContext();
-      return -1;
-    }
-    __Pyx_GOTREF(__pyx_v_args);
-  } else {
-    __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
-  }
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_uri,0};
-    PyObject* values[1] = {0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        default:
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uri)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-      }
-      if (unlikely(kw_args > 0)) {
-        const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__init__") < 0)) __PYX_ERR(0, 549, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-    }
-    __pyx_v_uri = values[0];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 549, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
-  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return -1;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr___init__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)__pyx_v_self), __pyx_v_uri, __pyx_v_args, __pyx_v_kwargs);
-
-  /* function exit code */
-  __Pyx_XDECREF(__pyx_v_args);
-  __Pyx_XDECREF(__pyx_v_kwargs);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr___init__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self, PyObject *__pyx_v_uri, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
-  int __pyx_r;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  __Pyx_RefNannySetupContext("__init__", 0);
-  __Pyx_TraceCall("__init__", __pyx_f[0], 549, 0, __PYX_ERR(0, 549, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":565
- *         :param lmdbStore store: the store to look data up.
- *         """
- *         super().__init__(*args, **kwargs)             # <<<<<<<<<<<<<<
- * 
- *         self.uri = uri
- */
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 565, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr));
-  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr));
-  __Pyx_INCREF(((PyObject *)__pyx_v_self));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 565, __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_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 565, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 565, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":567
- *         super().__init__(*args, **kwargs)
- * 
- *         self.uri = uri             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __Pyx_INCREF(__pyx_v_uri);
-  __Pyx_GIVEREF(__pyx_v_uri);
-  __Pyx_GOTREF(__pyx_v_self->uri);
-  __Pyx_DECREF(__pyx_v_self->uri);
-  __pyx_v_self->uri = __pyx_v_uri;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":549
- *         readonly object uri
- * 
- *     def __init__(self, uri, *args, **kwargs):             # <<<<<<<<<<<<<<
- *         """
- *         Initialize the graph with pre-existing data or by looking up a store.
- */
-
-  /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":571
- * 
- *     @property
- *     def identifier(self):             # <<<<<<<<<<<<<<
- *         """
- *         IMR URI. For compatibility with RDFLib Resource.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_10identifier_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_10identifier_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_10identifier___get__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_10identifier___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_TraceCall("__get__", __pyx_f[0], 571, 0, __PYX_ERR(0, 571, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":577
- *         :rtype: string
- *         """
- *         return self.uri             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->uri);
-  __pyx_r = __pyx_v_self->uri;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":571
- * 
- *     @property
- *     def identifier(self):             # <<<<<<<<<<<<<<
- *         """
- *         IMR URI. For compatibility with RDFLib Resource.
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.identifier.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":581
- * 
- *     @property
- *     def graph(self):             # <<<<<<<<<<<<<<
- *         """
- *         Return a SimpleGraph with the same data.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_5graph_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_5graph_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_5graph___get__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_5graph___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_TraceCall("__get__", __pyx_f[0], 581, 0, __PYX_ERR(0, 581, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":587
- *         :rtype: SimpleGraph
- *         """
- *         return SimpleGraph(self.data)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph), __pyx_v_self->__pyx_base.data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 587, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":581
- * 
- *     @property
- *     def graph(self):             # <<<<<<<<<<<<<<
- *         """
- *         Return a SimpleGraph with the same data.
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.graph.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":590
- * 
- * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         """
- *         String representation of an Imr.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_3__repr__(PyObject *__pyx_v_self); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_2__repr__[] = "\n        String representation of an Imr.\n\n        This includes the subject URI, number of triples contained and the\n        memory address of the instance.\n        ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_2__repr__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_3__repr__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_2__repr__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_2__repr__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  Py_ssize_t __pyx_t_2;
-  Py_UCS4 __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  Py_ssize_t __pyx_t_6;
-  __Pyx_RefNannySetupContext("__repr__", 0);
-  __Pyx_TraceCall("__repr__", __pyx_f[0], 590, 0, __PYX_ERR(0, 590, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":597
- *         memory address of the instance.
- *         """
- *         return (f'<{self.__class__.__name__} @{hex(id(self))} uri={self.uri}, '             # <<<<<<<<<<<<<<
- *             f'length={len(self.data)}>')
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyTuple_New(9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = 0;
-  __pyx_t_3 = 127;
-  __Pyx_INCREF(__pyx_kp_u__8);
-  __pyx_t_2 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__8);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u__8);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 597, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 597, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 597, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3;
-  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
-  __pyx_t_4 = 0;
-  __Pyx_INCREF(__pyx_kp_u__9);
-  __pyx_t_2 += 2;
-  __Pyx_GIVEREF(__pyx_kp_u__9);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__9);
-  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 597, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_hex, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 597, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 597, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3;
-  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_4);
-  __pyx_t_4 = 0;
-  __Pyx_INCREF(__pyx_kp_u_uri_2);
-  __pyx_t_2 += 5;
-  __Pyx_GIVEREF(__pyx_kp_u_uri_2);
-  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u_uri_2);
-  __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_self->uri, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 597, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3;
-  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_4);
-  __pyx_t_4 = 0;
-  __Pyx_INCREF(__pyx_kp_u_length_2);
-  __pyx_t_2 += 9;
-  __Pyx_GIVEREF(__pyx_kp_u_length_2);
-  PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u_length_2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":598
- *         """
- *         return (f'<{self.__class__.__name__} @{hex(id(self))} uri={self.uri}, '
- *             f'length={len(self.data)}>')             # <<<<<<<<<<<<<<
- * 
- *     @use_data
- */
-  __pyx_t_4 = __pyx_v_self->__pyx_base.data;
-  __Pyx_INCREF(__pyx_t_4);
-  if (unlikely(__pyx_t_4 == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(0, 598, __pyx_L1_error)
-  }
-  __pyx_t_6 = PySet_GET_SIZE(__pyx_t_4); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 598, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_6, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 598, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_t_4);
-  __pyx_t_4 = 0;
-  __Pyx_INCREF(__pyx_kp_u__10);
-  __pyx_t_2 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__10);
-  PyTuple_SET_ITEM(__pyx_t_1, 8, __pyx_kp_u__10);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":597
- *         memory address of the instance.
- *         """
- *         return (f'<{self.__class__.__name__} @{hex(id(self))} uri={self.uri}, '             # <<<<<<<<<<<<<<
- *             f'length={len(self.data)}>')
- * 
- */
-  __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 9, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 597, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_r = __pyx_t_4;
-  __pyx_t_4 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":590
- * 
- * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         """
- *         String representation of an Imr.
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":601
- * 
- *     @use_data
- *     def __sub__(self, other):             # <<<<<<<<<<<<<<
- *         """
- *         Set difference. This creates a new Imr with the same subject URI.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_5__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_4__sub__[] = "\n        Set difference. This creates a new Imr with the same subject URI.\n        ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_4__sub__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_5__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_4__sub__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_4__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  __Pyx_RefNannySetupContext("__sub__", 0);
-  __Pyx_TraceCall("__sub__", __pyx_f[0], 601, 0, __PYX_ERR(0, 601, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":605
- *         Set difference. This creates a new Imr with the same subject URI.
- *         """
- *         return self.__class__(uri=self.uri, data=self.data - other)             # <<<<<<<<<<<<<<
- * 
- *     @use_data
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 605, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 605, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_uri); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 605, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_uri, __pyx_t_3) < 0) __PYX_ERR(0, 605, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 605, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_v_other); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 605, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_data, __pyx_t_4) < 0) __PYX_ERR(0, 605, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 605, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_r = __pyx_t_4;
-  __pyx_t_4 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":601
- * 
- *     @use_data
- *     def __sub__(self, other):             # <<<<<<<<<<<<<<
- *         """
- *         Set difference. This creates a new Imr with the same subject URI.
- */
-
-  /* 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_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":608
- * 
- *     @use_data
- *     def __and__(self, other):             # <<<<<<<<<<<<<<
- *         """
- *         Set intersection. This creates a new Imr with the same subject URI.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_7__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_6__and__[] = "\n        Set intersection. This creates a new Imr with the same subject URI.\n        ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_6__and__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_7__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__and__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_6__and__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_6__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  __Pyx_RefNannySetupContext("__and__", 0);
-  __Pyx_TraceCall("__and__", __pyx_f[0], 608, 0, __PYX_ERR(0, 608, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":612
- *         Set intersection. This creates a new Imr with the same subject URI.
- *         """
- *         return self.__class__(uri=self.uri, data=self.data & other)             # <<<<<<<<<<<<<<
- * 
- *     @use_data
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 612, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 612, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_uri); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 612, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_uri, __pyx_t_3) < 0) __PYX_ERR(0, 612, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 612, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyNumber_And(__pyx_t_3, __pyx_v_other); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 612, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_data, __pyx_t_4) < 0) __PYX_ERR(0, 612, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 612, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_r = __pyx_t_4;
-  __pyx_t_4 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":608
- * 
- *     @use_data
- *     def __and__(self, other):             # <<<<<<<<<<<<<<
- *         """
- *         Set intersection. This creates a new Imr with the same subject URI.
- */
-
-  /* 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_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.__and__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":615
- * 
- *     @use_data
- *     def __or__(self, other):             # <<<<<<<<<<<<<<
- *         """
- *         Set union. This creates a new Imr with the same subject URI.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_9__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_8__or__[] = "\n        Set union. This creates a new Imr with the same subject URI.\n        ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_8__or__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_9__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__or__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_8__or__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_8__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  __Pyx_RefNannySetupContext("__or__", 0);
-  __Pyx_TraceCall("__or__", __pyx_f[0], 615, 0, __PYX_ERR(0, 615, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":619
- *         Set union. This creates a new Imr with the same subject URI.
- *         """
- *         return self.__class__(uri=self.uri, data=self.data | other)             # <<<<<<<<<<<<<<
- * 
- *     @use_data
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 619, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_uri); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_uri, __pyx_t_3) < 0) __PYX_ERR(0, 619, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyNumber_Or(__pyx_t_3, __pyx_v_other); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 619, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_data, __pyx_t_4) < 0) __PYX_ERR(0, 619, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 619, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_r = __pyx_t_4;
-  __pyx_t_4 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":615
- * 
- *     @use_data
- *     def __or__(self, other):             # <<<<<<<<<<<<<<
- *         """
- *         Set union. This creates a new Imr with the same subject URI.
- */
-
-  /* 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_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.__or__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":622
- * 
- *     @use_data
- *     def __xor__(self, other):             # <<<<<<<<<<<<<<
- *         """
- *         Set exclusive OR (XOR). This creates a new Imr with the same subject
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_11__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_10__xor__[] = "\n        Set exclusive OR (XOR). This creates a new Imr with the same subject\n        URI.\n        ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_10__xor__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_11__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__xor__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_10__xor__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_10__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  __Pyx_RefNannySetupContext("__xor__", 0);
-  __Pyx_TraceCall("__xor__", __pyx_f[0], 622, 0, __PYX_ERR(0, 622, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":627
- *         URI.
- *         """
- *         return self.__class__(uri=self.uri, data=self.data ^ other)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 627, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_uri); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 627, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_uri, __pyx_t_3) < 0) __PYX_ERR(0, 627, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 627, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyNumber_Xor(__pyx_t_3, __pyx_v_other); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 627, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_data, __pyx_t_4) < 0) __PYX_ERR(0, 627, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 627, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_r = __pyx_t_4;
-  __pyx_t_4 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":622
- * 
- *     @use_data
- *     def __xor__(self, other):             # <<<<<<<<<<<<<<
- *         """
- *         Set exclusive OR (XOR). This creates a new Imr with the same subject
- */
-
-  /* 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_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.__xor__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":630
- * 
- * 
- *     def __getitem__(self, item):             # <<<<<<<<<<<<<<
- *         """
- *         Supports slicing notation.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_13__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_12__getitem__[] = "\n        Supports slicing notation.\n        ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_12__getitem__;
-#endif
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_13__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_12__getitem__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)__pyx_v_self), ((PyObject *)__pyx_v_item));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_12__getitem__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self, PyObject *__pyx_v_item) {
-  PyObject *__pyx_v_s = NULL;
-  PyObject *__pyx_v_p = NULL;
-  PyObject *__pyx_v_o = NULL;
-  PyObject *__pyx_9genexpr14__pyx_v_r = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  Py_ssize_t __pyx_t_6;
-  Py_ssize_t __pyx_t_7;
-  int __pyx_t_8;
-  int __pyx_t_9;
-  PyObject *__pyx_t_10 = NULL;
-  Py_UCS4 __pyx_t_11;
-  __Pyx_RefNannySetupContext("__getitem__", 0);
-  __Pyx_TraceCall("__getitem__", __pyx_f[0], 630, 0, __PYX_ERR(0, 630, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":634
- *         Supports slicing notation.
- *         """
- *         if isinstance(item, slice):             # <<<<<<<<<<<<<<
- *             s, p, o = item.start, item.stop, item.step
- *             return self._slice(s, p, o)
- */
-  __pyx_t_1 = PySlice_Check(__pyx_v_item); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":635
- *         """
- *         if isinstance(item, slice):
- *             s, p, o = item.start, item.stop, item.step             # <<<<<<<<<<<<<<
- *             return self._slice(s, p, o)
- * 
- */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_item, __pyx_n_s_start); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 635, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_item, __pyx_n_s_stop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 635, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_item, __pyx_n_s_step); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 635, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_v_s = __pyx_t_3;
-    __pyx_t_3 = 0;
-    __pyx_v_p = __pyx_t_4;
-    __pyx_t_4 = 0;
-    __pyx_v_o = __pyx_t_5;
-    __pyx_t_5 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":636
- *         if isinstance(item, slice):
- *             s, p, o = item.start, item.stop, item.step
- *             return self._slice(s, p, o)             # <<<<<<<<<<<<<<
- * 
- *         elif isinstance(item, Node):
- */
-    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_5 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._slice(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v_self), __pyx_v_s, __pyx_v_p, __pyx_v_o); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 636, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":634
- *         Supports slicing notation.
- *         """
- *         if isinstance(item, slice):             # <<<<<<<<<<<<<<
- *             s, p, o = item.start, item.stop, item.step
- *             return self._slice(s, p, o)
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":638
- *             return self._slice(s, p, o)
- * 
- *         elif isinstance(item, Node):             # <<<<<<<<<<<<<<
- *             # If a Node is given, return all values for that predicate.
- *             return {
- */
-  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_Node); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 638, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_2 = PyObject_IsInstance(__pyx_v_item, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 638, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":640
- *         elif isinstance(item, Node):
- *             # If a Node is given, return all values for that predicate.
- *             return {             # <<<<<<<<<<<<<<
- *                     r[2] for r in self.data
- *                     if r[0] == self.uri and r[1] == item}
- */
-    __Pyx_XDECREF(__pyx_r);
-    { /* enter inner scope */
-      __pyx_t_5 = PySet_New(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 640, __pyx_L6_error)
-      __Pyx_GOTREF(__pyx_t_5);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":641
- *             # If a Node is given, return all values for that predicate.
- *             return {
- *                     r[2] for r in self.data             # <<<<<<<<<<<<<<
- *                     if r[0] == self.uri and r[1] == item}
- *         else:
- */
-      __pyx_t_6 = 0;
-      __pyx_t_3 = __Pyx_set_iterator(__pyx_v_self->__pyx_base.data, 1, (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 641, __pyx_L6_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_XDECREF(__pyx_t_4);
-      __pyx_t_4 = __pyx_t_3;
-      __pyx_t_3 = 0;
-      while (1) {
-        __pyx_t_9 = __Pyx_set_iter_next(__pyx_t_4, __pyx_t_7, &__pyx_t_6, &__pyx_t_3, __pyx_t_8);
-        if (unlikely(__pyx_t_9 == 0)) break;
-        if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 641, __pyx_L6_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_XDECREF_SET(__pyx_9genexpr14__pyx_v_r, __pyx_t_3);
-        __pyx_t_3 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":642
- *             return {
- *                     r[2] for r in self.data
- *                     if r[0] == self.uri and r[1] == item}             # <<<<<<<<<<<<<<
- *         else:
- *             raise TypeError(f'Wrong slice format: {item}.')
- */
-        __pyx_t_3 = __Pyx_GetItemInt(__pyx_9genexpr14__pyx_v_r, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 642, __pyx_L6_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_10 = PyObject_RichCompare(__pyx_t_3, __pyx_v_self->uri, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 642, __pyx_L6_error)
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 642, __pyx_L6_error)
-        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        if (__pyx_t_2) {
-        } else {
-          __pyx_t_1 = __pyx_t_2;
-          goto __pyx_L10_bool_binop_done;
-        }
-        __pyx_t_10 = __Pyx_GetItemInt(__pyx_9genexpr14__pyx_v_r, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 642, __pyx_L6_error)
-        __Pyx_GOTREF(__pyx_t_10);
-        __pyx_t_3 = PyObject_RichCompare(__pyx_t_10, __pyx_v_item, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 642, __pyx_L6_error)
-        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 642, __pyx_L6_error)
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_1 = __pyx_t_2;
-        __pyx_L10_bool_binop_done:;
-        if (__pyx_t_1) {
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":641
- *             # If a Node is given, return all values for that predicate.
- *             return {
- *                     r[2] for r in self.data             # <<<<<<<<<<<<<<
- *                     if r[0] == self.uri and r[1] == item}
- *         else:
- */
-          __pyx_t_3 = __Pyx_GetItemInt(__pyx_9genexpr14__pyx_v_r, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 641, __pyx_L6_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          if (unlikely(PySet_Add(__pyx_t_5, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 641, __pyx_L6_error)
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":642
- *             return {
- *                     r[2] for r in self.data
- *                     if r[0] == self.uri and r[1] == item}             # <<<<<<<<<<<<<<
- *         else:
- *             raise TypeError(f'Wrong slice format: {item}.')
- */
-        }
-      }
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_XDECREF(__pyx_9genexpr14__pyx_v_r); __pyx_9genexpr14__pyx_v_r = 0;
-      goto __pyx_L12_exit_scope;
-      __pyx_L6_error:;
-      __Pyx_XDECREF(__pyx_9genexpr14__pyx_v_r); __pyx_9genexpr14__pyx_v_r = 0;
-      goto __pyx_L1_error;
-      __pyx_L12_exit_scope:;
-    } /* exit inner scope */
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":638
- *             return self._slice(s, p, o)
- * 
- *         elif isinstance(item, Node):             # <<<<<<<<<<<<<<
- *             # If a Node is given, return all values for that predicate.
- *             return {
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":644
- *                     if r[0] == self.uri and r[1] == item}
- *         else:
- *             raise TypeError(f'Wrong slice format: {item}.')             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  /*else*/ {
-    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 644, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_7 = 0;
-    __pyx_t_11 = 127;
-    __Pyx_INCREF(__pyx_kp_u_Wrong_slice_format);
-    __pyx_t_7 += 20;
-    __Pyx_GIVEREF(__pyx_kp_u_Wrong_slice_format);
-    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_Wrong_slice_format);
-    __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_item, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 644, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_11;
-    __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_4);
-    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
-    __pyx_t_4 = 0;
-    __Pyx_INCREF(__pyx_kp_u__11);
-    __pyx_t_7 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__11);
-    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__11);
-    __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 644, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 644, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __PYX_ERR(0, 644, __pyx_L1_error)
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":630
- * 
- * 
- *     def __getitem__(self, item):             # <<<<<<<<<<<<<<
- *         """
- *         Supports slicing notation.
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_10);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_s);
-  __Pyx_XDECREF(__pyx_v_p);
-  __Pyx_XDECREF(__pyx_v_o);
-  __Pyx_XDECREF(__pyx_9genexpr14__pyx_v_r);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":647
- * 
- * 
- *     def value(self, p, strict=False):             # <<<<<<<<<<<<<<
- *         """
- *         Get an individual value.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_15value(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_14value[] = "\n        Get an individual value.\n\n        :param rdflib.termNode p: Predicate to search for.\n        :param bool strict: If set to ``True`` the method raises an error if\n            more than one value is found. If ``False`` (the default) only\n            the first found result is returned.\n        :rtype: rdflib.term.Node\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_15value(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_p = 0;
-  PyObject *__pyx_v_strict = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("value (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_p,&__pyx_n_s_strict,0};
-    PyObject* values[2] = {0,0};
-    values[1] = ((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  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] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_p)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strict);
-          if (value) { values[1] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "value") < 0)) __PYX_ERR(0, 647, __pyx_L3_error)
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        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;
-      }
-    }
-    __pyx_v_p = values[0];
-    __pyx_v_strict = values[1];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("value", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 647, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.value", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_14value(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)__pyx_v_self), __pyx_v_p, __pyx_v_strict);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_14value(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self, PyObject *__pyx_v_p, PyObject *__pyx_v_strict) {
-  PyObject *__pyx_v_values = NULL;
-  PyObject *__pyx_v_ret = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  int __pyx_t_3;
-  Py_ssize_t __pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  int __pyx_t_7;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *(*__pyx_t_9)(PyObject *);
-  __Pyx_RefNannySetupContext("value", 0);
-  __Pyx_TraceCall("value", __pyx_f[0], 647, 0, __PYX_ERR(0, 647, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":657
- *         :rtype: rdflib.term.Node
- *         """
- *         values = self[p]             # <<<<<<<<<<<<<<
- * 
- *         if strict and len(values) > 1:
- */
-  __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_values = __pyx_t_1;
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":659
- *         values = self[p]
- * 
- *         if strict and len(values) > 1:             # <<<<<<<<<<<<<<
- *             raise RuntimeError('More than one value found for {}, {}.'.format(
- *                     self.uri, p))
- */
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_strict); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 659, __pyx_L1_error)
-  if (__pyx_t_3) {
-  } else {
-    __pyx_t_2 = __pyx_t_3;
-    goto __pyx_L4_bool_binop_done;
-  }
-  __pyx_t_4 = PyObject_Length(__pyx_v_values); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 659, __pyx_L1_error)
-  __pyx_t_3 = ((__pyx_t_4 > 1) != 0);
-  __pyx_t_2 = __pyx_t_3;
-  __pyx_L4_bool_binop_done:;
-  if (unlikely(__pyx_t_2)) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":660
- * 
- *         if strict and len(values) > 1:
- *             raise RuntimeError('More than one value found for {}, {}.'.format(             # <<<<<<<<<<<<<<
- *                     self.uri, p))
- * 
- */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_More_than_one_value_found_for, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 660, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":661
- *         if strict and len(values) > 1:
- *             raise RuntimeError('More than one value found for {}, {}.'.format(
- *                     self.uri, p))             # <<<<<<<<<<<<<<
- * 
- *         for ret in values:
- */
-    __pyx_t_6 = NULL;
-    __pyx_t_7 = 0;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-        __pyx_t_7 = 1;
-      }
-    }
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_5)) {
-      PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self->uri, __pyx_v_p};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
-      PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self->uri, __pyx_v_p};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-    } else
-    #endif
-    {
-      __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 660, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_8);
-      if (__pyx_t_6) {
-        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
-      }
-      __Pyx_INCREF(__pyx_v_self->uri);
-      __Pyx_GIVEREF(__pyx_v_self->uri);
-      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_self->uri);
-      __Pyx_INCREF(__pyx_v_p);
-      __Pyx_GIVEREF(__pyx_v_p);
-      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_p);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    }
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":660
- * 
- *         if strict and len(values) > 1:
- *             raise RuntimeError('More than one value found for {}, {}.'.format(             # <<<<<<<<<<<<<<
- *                     self.uri, p))
- * 
- */
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_RuntimeError, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 660, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __PYX_ERR(0, 660, __pyx_L1_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":659
- *         values = self[p]
- * 
- *         if strict and len(values) > 1:             # <<<<<<<<<<<<<<
- *             raise RuntimeError('More than one value found for {}, {}.'.format(
- *                     self.uri, p))
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":663
- *                     self.uri, p))
- * 
- *         for ret in values:             # <<<<<<<<<<<<<<
- *             return ret
- * 
- */
-  if (likely(PyList_CheckExact(__pyx_v_values)) || PyTuple_CheckExact(__pyx_v_values)) {
-    __pyx_t_5 = __pyx_v_values; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
-    __pyx_t_9 = NULL;
-  } else {
-    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_values); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 663, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_9 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 663, __pyx_L1_error)
-  }
-  for (;;) {
-    if (likely(!__pyx_t_9)) {
-      if (likely(PyList_CheckExact(__pyx_t_5))) {
-        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
-        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 663, __pyx_L1_error)
-        #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 663, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        #endif
-      } else {
-        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
-        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 663, __pyx_L1_error)
-        #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 663, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        #endif
-      }
-    } else {
-      __pyx_t_1 = __pyx_t_9(__pyx_t_5);
-      if (unlikely(!__pyx_t_1)) {
-        PyObject* exc_type = PyErr_Occurred();
-        if (exc_type) {
-          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 663, __pyx_L1_error)
-        }
-        break;
-      }
-      __Pyx_GOTREF(__pyx_t_1);
-    }
-    __pyx_v_ret = __pyx_t_1;
-    __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":664
- * 
- *         for ret in values:
- *             return ret             # <<<<<<<<<<<<<<
- * 
- *         return None
- */
-    __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(__pyx_v_ret);
-    __pyx_r = __pyx_v_ret;
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    goto __pyx_L0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":663
- *                     self.uri, p))
- * 
- *         for ret in values:             # <<<<<<<<<<<<<<
- *             return ret
- * 
- */
-  }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":666
- *             return ret
- * 
- *         return None             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":647
- * 
- * 
- *     def value(self, p, strict=False):             # <<<<<<<<<<<<<<
- *         """
- *         Get an individual value.
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.value", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_values);
-  __Pyx_XDECREF(__pyx_v_ret);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":669
- * 
- * 
- *     cpdef as_rdflib(self):             # <<<<<<<<<<<<<<
- *         """
- *         Return the IMR as a RDFLib Resource.
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_17as_rdflib(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_as_rdflib(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self, int __pyx_skip_dispatch) {
-  PyObject *__pyx_v_gr = NULL;
-  PyObject *__pyx_v_trp = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  Py_ssize_t __pyx_t_5;
-  Py_ssize_t __pyx_t_6;
-  int __pyx_t_7;
-  int __pyx_t_8;
-  PyObject *__pyx_t_9 = NULL;
-  __Pyx_RefNannySetupContext("as_rdflib", 0);
-  __Pyx_TraceCall("as_rdflib", __pyx_f[0], 669, 0, __PYX_ERR(0, 669, __pyx_L1_error));
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_as_rdflib); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 669, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_17as_rdflib)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 669, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 669, __pyx_L1_error)
-      }
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_r = __pyx_t_2;
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":675
- *         :rtype: rdflib.Resource
- *         """
- *         gr = Graph()             # <<<<<<<<<<<<<<
- *         for trp in self.data:
- *             gr.add(trp)
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 675, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __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, 675, __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, 675, __pyx_L1_error)
-  }
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_v_gr = __pyx_t_1;
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":676
- *         """
- *         gr = Graph()
- *         for trp in self.data:             # <<<<<<<<<<<<<<
- *             gr.add(trp)
- * 
- */
-  __pyx_t_5 = 0;
-  __pyx_t_2 = __Pyx_set_iterator(__pyx_v_self->__pyx_base.data, 1, (&__pyx_t_6), (&__pyx_t_7)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 676, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_1);
-  __pyx_t_1 = __pyx_t_2;
-  __pyx_t_2 = 0;
-  while (1) {
-    __pyx_t_8 = __Pyx_set_iter_next(__pyx_t_1, __pyx_t_6, &__pyx_t_5, &__pyx_t_2, __pyx_t_7);
-    if (unlikely(__pyx_t_8 == 0)) break;
-    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 676, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_XDECREF_SET(__pyx_v_trp, __pyx_t_2);
-    __pyx_t_2 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":677
- *         gr = Graph()
- *         for trp in self.data:
- *             gr.add(trp)             # <<<<<<<<<<<<<<
- * 
- *         return gr.resource(identifier=self.uri)
- */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_gr, __pyx_n_s_add); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 677, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_4)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_4);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    if (!__pyx_t_4) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_trp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 677, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_2);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_trp};
-        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 677, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_trp};
-        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 677, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else
-      #endif
-      {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 677, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_9);
-        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __pyx_t_4 = NULL;
-        __Pyx_INCREF(__pyx_v_trp);
-        __Pyx_GIVEREF(__pyx_v_trp);
-        PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_trp);
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 677, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":679
- *             gr.add(trp)
- * 
- *         return gr.resource(identifier=self.uri)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_gr, __pyx_n_s_resource); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 679, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_identifier, __pyx_v_self->uri) < 0) __PYX_ERR(0, 679, __pyx_L1_error)
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 679, __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_r = __pyx_t_3;
-  __pyx_t_3 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":669
- * 
- * 
- *     cpdef as_rdflib(self):             # <<<<<<<<<<<<<<
- *         """
- *         Return the IMR as a RDFLib Resource.
- */
-
-  /* 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_9);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.as_rdflib", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_gr);
-  __Pyx_XDECREF(__pyx_v_trp);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_17as_rdflib(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_16as_rdflib[] = "\n        Return the IMR as a RDFLib Resource.\n\n        :rtype: rdflib.Resource\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_17as_rdflib(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("as_rdflib (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_16as_rdflib(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_16as_rdflib(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("as_rdflib", 0);
-  __Pyx_TraceCall("as_rdflib (wrapper)", __pyx_f[0], 669, 0, __PYX_ERR(0, 669, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_as_rdflib(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 669, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.as_rdflib", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":547
- *     """
- *     cdef:
- *         readonly object uri             # <<<<<<<<<<<<<<
- * 
- *     def __init__(self, uri, *args, **kwargs):
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_3uri_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_3uri_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_3uri___get__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_3uri___get__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_TraceCall("__get__", __pyx_f[0], 547, 0, __PYX_ERR(0, 547, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->uri);
-  __pyx_r = __pyx_v_self->uri;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.uri.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
- *     cdef bint use_setstate
- *     state = (self.data, self.uri)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_19__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_19__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_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_18__reduce_cython__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_18__reduce_cython__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self) {
-  int __pyx_v_use_setstate;
-  PyObject *__pyx_v_state = NULL;
-  PyObject *__pyx_v__dict = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  int __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  __Pyx_RefNannySetupContext("__reduce_cython__", 0);
-  __Pyx_TraceCall("__reduce_cython__", __pyx_f[1], 1, 0, __PYX_ERR(1, 1, __pyx_L1_error));
-
-  /* "(tree fragment)":3
- * def __reduce_cython__(self):
- *     cdef bint use_setstate
- *     state = (self.data, self.uri)             # <<<<<<<<<<<<<<
- *     _dict = getattr(self, '__dict__', None)
- *     if _dict is not None:
- */
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_v_self->__pyx_base.data);
-  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.data);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->__pyx_base.data);
-  __Pyx_INCREF(__pyx_v_self->uri);
-  __Pyx_GIVEREF(__pyx_v_self->uri);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->uri);
-  __pyx_v_state = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "(tree fragment)":4
- *     cdef bint use_setstate
- *     state = (self.data, self.uri)
- *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
- *     if _dict is not None:
- *         state += (_dict,)
- */
-  __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v__dict = __pyx_t_1;
-  __pyx_t_1 = 0;
-
-  /* "(tree fragment)":5
- *     state = (self.data, self.uri)
- *     _dict = getattr(self, '__dict__', None)
- *     if _dict is not None:             # <<<<<<<<<<<<<<
- *         state += (_dict,)
- *         use_setstate = True
- */
-  __pyx_t_2 = (__pyx_v__dict != Py_None);
-  __pyx_t_3 = (__pyx_t_2 != 0);
-  if (__pyx_t_3) {
-
-    /* "(tree fragment)":6
- *     _dict = getattr(self, '__dict__', None)
- *     if _dict is not None:
- *         state += (_dict,)             # <<<<<<<<<<<<<<
- *         use_setstate = True
- *     else:
- */
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_INCREF(__pyx_v__dict);
-    __Pyx_GIVEREF(__pyx_v__dict);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
-    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
-    __pyx_t_4 = 0;
-
-    /* "(tree fragment)":7
- *     if _dict is not None:
- *         state += (_dict,)
- *         use_setstate = True             # <<<<<<<<<<<<<<
- *     else:
- *         use_setstate = self.data is not None or self.uri is not None
- */
-    __pyx_v_use_setstate = 1;
-
-    /* "(tree fragment)":5
- *     state = (self.data, self.uri)
- *     _dict = getattr(self, '__dict__', None)
- *     if _dict is not None:             # <<<<<<<<<<<<<<
- *         state += (_dict,)
- *         use_setstate = True
- */
-    goto __pyx_L3;
-  }
-
-  /* "(tree fragment)":9
- *         use_setstate = True
- *     else:
- *         use_setstate = self.data is not None or self.uri is not None             # <<<<<<<<<<<<<<
- *     if use_setstate:
- *         return __pyx_unpickle_Imr, (type(self), 0xbf84141, None), state
- */
-  /*else*/ {
-    __pyx_t_2 = (__pyx_v_self->__pyx_base.data != ((PyObject*)Py_None));
-    __pyx_t_5 = (__pyx_t_2 != 0);
-    if (!__pyx_t_5) {
-    } else {
-      __pyx_t_3 = __pyx_t_5;
-      goto __pyx_L4_bool_binop_done;
-    }
-    __pyx_t_5 = (__pyx_v_self->uri != Py_None);
-    __pyx_t_2 = (__pyx_t_5 != 0);
-    __pyx_t_3 = __pyx_t_2;
-    __pyx_L4_bool_binop_done:;
-    __pyx_v_use_setstate = __pyx_t_3;
-  }
-  __pyx_L3:;
-
-  /* "(tree fragment)":10
- *     else:
- *         use_setstate = self.data is not None or self.uri is not None
- *     if use_setstate:             # <<<<<<<<<<<<<<
- *         return __pyx_unpickle_Imr, (type(self), 0xbf84141, None), state
- *     else:
- */
-  __pyx_t_3 = (__pyx_v_use_setstate != 0);
-  if (__pyx_t_3) {
-
-    /* "(tree fragment)":11
- *         use_setstate = self.data is not None or self.uri is not None
- *     if use_setstate:
- *         return __pyx_unpickle_Imr, (type(self), 0xbf84141, None), state             # <<<<<<<<<<<<<<
- *     else:
- *         return __pyx_unpickle_Imr, (type(self), 0xbf84141, state)
- */
-    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Imr); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 11, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
-    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
-    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
-    __Pyx_INCREF(__pyx_int_200819009);
-    __Pyx_GIVEREF(__pyx_int_200819009);
-    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_200819009);
-    __Pyx_INCREF(Py_None);
-    __Pyx_GIVEREF(Py_None);
-    PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
-    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 11, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_GIVEREF(__pyx_t_4);
-    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
-    __Pyx_INCREF(__pyx_v_state);
-    __Pyx_GIVEREF(__pyx_v_state);
-    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
-    __pyx_t_4 = 0;
-    __pyx_t_1 = 0;
-    __pyx_r = __pyx_t_6;
-    __pyx_t_6 = 0;
-    goto __pyx_L0;
-
-    /* "(tree fragment)":10
- *     else:
- *         use_setstate = self.data is not None or self.uri is not None
- *     if use_setstate:             # <<<<<<<<<<<<<<
- *         return __pyx_unpickle_Imr, (type(self), 0xbf84141, None), state
- *     else:
- */
-  }
-
-  /* "(tree fragment)":13
- *         return __pyx_unpickle_Imr, (type(self), 0xbf84141, None), state
- *     else:
- *         return __pyx_unpickle_Imr, (type(self), 0xbf84141, state)             # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- *     __pyx_unpickle_Imr__set_state(self, __pyx_state)
- */
-  /*else*/ {
-    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Imr); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
-    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
-    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
-    __Pyx_INCREF(__pyx_int_200819009);
-    __Pyx_GIVEREF(__pyx_int_200819009);
-    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_200819009);
-    __Pyx_INCREF(__pyx_v_state);
-    __Pyx_GIVEREF(__pyx_v_state);
-    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
-    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_6);
-    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
-    __Pyx_GIVEREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
-    __pyx_t_6 = 0;
-    __pyx_t_1 = 0;
-    __pyx_r = __pyx_t_4;
-    __pyx_t_4 = 0;
-    goto __pyx_L0;
-  }
-
-  /* "(tree fragment)":1
- * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
- *     cdef bint use_setstate
- *     state = (self.data, self.uri)
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_state);
-  __Pyx_XDECREF(__pyx_v__dict);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "(tree fragment)":14
- *     else:
- *         return __pyx_unpickle_Imr, (type(self), 0xbf84141, state)
- * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
- *     __pyx_unpickle_Imr__set_state(self, __pyx_state)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_21__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_21__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_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_20__setstate_cython__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_20__setstate_cython__(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__setstate_cython__", 0);
-  __Pyx_TraceCall("__setstate_cython__", __pyx_f[1], 14, 0, __PYX_ERR(1, 14, __pyx_L1_error));
-
-  /* "(tree fragment)":15
- *         return __pyx_unpickle_Imr, (type(self), 0xbf84141, state)
- * def __setstate_cython__(self, __pyx_state):
- *     __pyx_unpickle_Imr__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
- */
-  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 15, __pyx_L1_error)
-  __pyx_t_1 = __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_unpickle_Imr__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "(tree fragment)":14
- *     else:
- *         return __pyx_unpickle_Imr, (type(self), 0xbf84141, state)
- * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
- *     __pyx_unpickle_Imr__set_state(self, __pyx_state)
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.Imr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":750
- *     # DB management methods.
- * 
- *     cpdef dict stats(self):             # <<<<<<<<<<<<<<
- *         """
- *         Gather statistics about the database."""
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_1stats(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_stats(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, int __pyx_skip_dispatch) {
-  PyObject *__pyx_v_st = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  __Pyx_RefNannySetupContext("stats", 0);
-  __Pyx_TraceCall("stats", __pyx_f[0], 750, 0, __PYX_ERR(0, 750, __pyx_L1_error));
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_1stats)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error)
-      }
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 750, __pyx_L1_error)
-      __pyx_r = ((PyObject*)__pyx_t_2);
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":753
- *         """
- *         Gather statistics about the database."""
- *         st = self._stats()             # <<<<<<<<<<<<<<
- *         st['num_triples'] = st['db_stats']['spo:c']['ms_entries']
- * 
- */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._stats(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 753, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_st = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":754
- *         Gather statistics about the database."""
- *         st = self._stats()
- *         st['num_triples'] = st['db_stats']['spo:c']['ms_entries']             # <<<<<<<<<<<<<<
- * 
- *         return st
- */
-  if (unlikely(__pyx_v_st == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(0, 754, __pyx_L1_error)
-  }
-  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_st, __pyx_n_u_db_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 754, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_t_1, __pyx_kp_u_spo_c); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_t_2, __pyx_n_u_ms_entries); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 754, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (unlikely(__pyx_v_st == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(0, 754, __pyx_L1_error)
-  }
-  if (unlikely(PyDict_SetItem(__pyx_v_st, __pyx_n_u_num_triples, __pyx_t_1) < 0)) __PYX_ERR(0, 754, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":756
- *         st['num_triples'] = st['db_stats']['spo:c']['ms_entries']
- * 
- *         return st             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_st);
-  __pyx_r = __pyx_v_st;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":750
- *     # DB management methods.
- * 
- *     cpdef dict stats(self):             # <<<<<<<<<<<<<<
- *         """
- *         Gather statistics about the database."""
- */
-
-  /* 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_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.stats", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_st);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_1stats(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_stats[] = "\n        Gather statistics about the database.";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_1stats(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("stats (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_stats(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_stats(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("stats", 0);
-  __Pyx_TraceCall("stats (wrapper)", __pyx_f[0], 750, 0, __PYX_ERR(0, 750, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_stats(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.stats", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":759
- * 
- * 
- *     cpdef size_t _len(self, context=None) except -1:             # <<<<<<<<<<<<<<
- *         """
- *         Return the length of the dataset.
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_3_len(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static size_t __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__len(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__len *__pyx_optional_args) {
-  PyObject *__pyx_v_context = ((PyObject *)Py_None);
-  size_t __pyx_v_ct;
-  MDB_cursor *__pyx_v_cur;
-  size_t __pyx_r;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  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;
-  size_t __pyx_t_6;
-  int __pyx_t_7;
-  int __pyx_t_8;
-  MDB_cursor *__pyx_t_9;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open __pyx_t_10;
-  PyObject *__pyx_t_11 = NULL;
-  PyObject *__pyx_t_12 = NULL;
-  PyObject *__pyx_t_13 = NULL;
-  int __pyx_t_14;
-  int __pyx_t_15;
-  char const *__pyx_t_16;
-  PyObject *__pyx_t_17 = NULL;
-  PyObject *__pyx_t_18 = NULL;
-  PyObject *__pyx_t_19 = NULL;
-  __Pyx_RefNannySetupContext("_len", 0);
-  __Pyx_TraceCall("_len", __pyx_f[0], 759, 0, __PYX_ERR(0, 759, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_context = __pyx_optional_args->context;
-    }
-  }
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 759, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_3_len)) {
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_context); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 759, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_context};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 759, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_context};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 759, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        {
-          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 759, __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_INCREF(__pyx_v_context);
-          __Pyx_GIVEREF(__pyx_v_context);
-          PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_context);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 759, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 759, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_r = __pyx_t_6;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":770
- *             size_t ct
- * 
- *         if context is not None:             # <<<<<<<<<<<<<<
- *             self._to_key(context, <Key *>key_v.mv_data)
- *             key_v.mv_size = KLEN
- */
-  __pyx_t_7 = (__pyx_v_context != Py_None);
-  __pyx_t_8 = (__pyx_t_7 != 0);
-  if (__pyx_t_8) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":771
- * 
- *         if context is not None:
- *             self._to_key(context, <Key *>key_v.mv_data)             # <<<<<<<<<<<<<<
- *             key_v.mv_size = KLEN
- * 
- */
-    __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_key(__pyx_v_self, __pyx_v_context, ((__pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key *)__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 771, __pyx_L1_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":772
- *         if context is not None:
- *             self._to_key(context, <Key *>key_v.mv_data)
- *             key_v.mv_size = KLEN             # <<<<<<<<<<<<<<
- * 
- *             cur = self._cur_open('c:spo')
- */
-    __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_size = 5;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":774
- *             key_v.mv_size = KLEN
- * 
- *             cur = self._cur_open('c:spo')             # <<<<<<<<<<<<<<
- *             try:
- *                 _check(lmdb.mdb_cursor_get(
- */
-    __pyx_t_10.__pyx_n = 1;
-    __pyx_t_10.dblabel = ((unsigned char *)((char const *)"c:spo"));
-    __pyx_t_9 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_10); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 774, __pyx_L1_error)
-    __pyx_v_cur = __pyx_t_9;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":775
- * 
- *             cur = self._cur_open('c:spo')
- *             try:             # <<<<<<<<<<<<<<
- *                 _check(lmdb.mdb_cursor_get(
- *                         cur, &key_v, NULL, lmdb.MDB_SET))
- */
-    /*try:*/ {
-      {
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
-        __Pyx_XGOTREF(__pyx_t_11);
-        __Pyx_XGOTREF(__pyx_t_12);
-        __Pyx_XGOTREF(__pyx_t_13);
-        /*try:*/ {
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":776
- *             cur = self._cur_open('c:spo')
- *             try:
- *                 _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                         cur, &key_v, NULL, lmdb.MDB_SET))
- *                 _check(lmdb.mdb_cursor_count(cur, &ct))
- */
-          __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_cur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), NULL, MDB_SET), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 776, __pyx_L7_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":778
- *                 _check(lmdb.mdb_cursor_get(
- *                         cur, &key_v, NULL, lmdb.MDB_SET))
- *                 _check(lmdb.mdb_cursor_count(cur, &ct))             # <<<<<<<<<<<<<<
- *             except KeyNotFoundError:
- *                 return 0
- */
-          __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_count(__pyx_v_cur, (&__pyx_v_ct)), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 778, __pyx_L7_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":775
- * 
- *             cur = self._cur_open('c:spo')
- *             try:             # <<<<<<<<<<<<<<
- *                 _check(lmdb.mdb_cursor_get(
- *                         cur, &key_v, NULL, lmdb.MDB_SET))
- */
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":782
- *                 return 0
- *             else:
- *                 return ct             # <<<<<<<<<<<<<<
- *             finally:
- *                 #pass
- */
-        /*else:*/ {
-          __pyx_r = __pyx_v_ct;
-          goto __pyx_L10_except_return;
-        }
-        __pyx_L7_error:;
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":779
- *                         cur, &key_v, NULL, lmdb.MDB_SET))
- *                 _check(lmdb.mdb_cursor_count(cur, &ct))
- *             except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                 return 0
- *             else:
- */
-        __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 779, __pyx_L9_except_error)
-        __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_14 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_5);
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-        __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
-        if (__pyx_t_14) {
-          __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._len", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 779, __pyx_L9_except_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_GOTREF(__pyx_t_1);
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":780
- *                 _check(lmdb.mdb_cursor_count(cur, &ct))
- *             except KeyNotFoundError:
- *                 return 0             # <<<<<<<<<<<<<<
- *             else:
- *                 return ct
- */
-          __pyx_r = 0;
-          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          goto __pyx_L10_except_return;
-        }
-        goto __pyx_L9_except_error;
-        __pyx_L9_except_error:;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":775
- * 
- *             cur = self._cur_open('c:spo')
- *             try:             # <<<<<<<<<<<<<<
- *                 _check(lmdb.mdb_cursor_get(
- *                         cur, &key_v, NULL, lmdb.MDB_SET))
- */
-        __Pyx_XGIVEREF(__pyx_t_11);
-        __Pyx_XGIVEREF(__pyx_t_12);
-        __Pyx_XGIVEREF(__pyx_t_13);
-        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
-        goto __pyx_L5_error;
-        __pyx_L10_except_return:;
-        __Pyx_XGIVEREF(__pyx_t_11);
-        __Pyx_XGIVEREF(__pyx_t_12);
-        __Pyx_XGIVEREF(__pyx_t_13);
-        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
-        goto __pyx_L4_return;
-      }
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":785
- *             finally:
- *                 #pass
- *                 self._cur_close(cur)             # <<<<<<<<<<<<<<
- *         else:
- *             return self.stats()['num_triples']
- */
-    /*finally:*/ {
-      __pyx_L5_error:;
-      /*exception exit:*/{
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-        if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
-        if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
-        __Pyx_XGOTREF(__pyx_t_13);
-        __Pyx_XGOTREF(__pyx_t_12);
-        __Pyx_XGOTREF(__pyx_t_11);
-        __Pyx_XGOTREF(__pyx_t_17);
-        __Pyx_XGOTREF(__pyx_t_18);
-        __Pyx_XGOTREF(__pyx_t_19);
-        __pyx_t_14 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
-        {
-          ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_cur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 785, __pyx_L16_error)
-        }
-        if (PY_MAJOR_VERSION >= 3) {
-          __Pyx_XGIVEREF(__pyx_t_17);
-          __Pyx_XGIVEREF(__pyx_t_18);
-          __Pyx_XGIVEREF(__pyx_t_19);
-          __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
-        }
-        __Pyx_XGIVEREF(__pyx_t_13);
-        __Pyx_XGIVEREF(__pyx_t_12);
-        __Pyx_XGIVEREF(__pyx_t_11);
-        __Pyx_ErrRestore(__pyx_t_13, __pyx_t_12, __pyx_t_11);
-        __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
-        __pyx_lineno = __pyx_t_14; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
-        goto __pyx_L1_error;
-        __pyx_L16_error:;
-        if (PY_MAJOR_VERSION >= 3) {
-          __Pyx_XGIVEREF(__pyx_t_17);
-          __Pyx_XGIVEREF(__pyx_t_18);
-          __Pyx_XGIVEREF(__pyx_t_19);
-          __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
-        }
-        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-        __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
-        goto __pyx_L1_error;
-      }
-      __pyx_L4_return: {
-        __pyx_t_6 = __pyx_r;
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_cur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 785, __pyx_L1_error)
-        __pyx_r = __pyx_t_6;
-        goto __pyx_L0;
-      }
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":770
- *             size_t ct
- * 
- *         if context is not None:             # <<<<<<<<<<<<<<
- *             self._to_key(context, <Key *>key_v.mv_data)
- *             key_v.mv_size = KLEN
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":787
- *                 self._cur_close(cur)
- *         else:
- *             return self.stats()['num_triples']             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  /*else*/ {
-    __pyx_t_1 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.stats(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 787, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (unlikely(__pyx_t_1 == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 787, __pyx_L1_error)
-    }
-    __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_t_1, __pyx_n_u_num_triples); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 787, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 787, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_r = __pyx_t_6;
-    goto __pyx_L0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":759
- * 
- * 
- *     cpdef size_t _len(self, context=None) except -1:             # <<<<<<<<<<<<<<
- *         """
- *         Return the length of the dataset.
- */
-
-  /* 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("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._len", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1L;
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_3_len(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_2_len[] = "\n        Return the length of the dataset.\n\n        The RDFLib interface defines `__len__` in a nonstandard way that\n        causes a Cython compilation error, so this method is called by the\n        `__len__` method of its Python counterpart.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_3_len(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_context = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("_len (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_context,0};
-    PyObject* values[1] = {0};
-    values[0] = ((PyObject *)Py_None);
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        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 (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_context);
-          if (value) { values[0] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_len") < 0)) __PYX_ERR(0, 759, __pyx_L3_error)
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_context = values[0];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("_len", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 759, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._len", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_2_len(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self), __pyx_v_context);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_2_len(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_context) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  size_t __pyx_t_1;
-  struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__len __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  __Pyx_RefNannySetupContext("_len", 0);
-  __Pyx_TraceCall("_len (wrapper)", __pyx_f[0], 759, 0, __PYX_ERR(0, 759, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2.__pyx_n = 1;
-  __pyx_t_2.context = __pyx_v_context;
-  __pyx_t_1 = __pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore->_len(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(__pyx_t_1 == ((size_t)-1L))) __PYX_ERR(0, 759, __pyx_L1_error)
-  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 759, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._len", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":794
- *     # Triple and graph methods.
- * 
- *     cpdef add(self, triple, context=None, quoted=False):             # <<<<<<<<<<<<<<
- *         """
- *         Add a triple and start indexing.
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_5add(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_add(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_add *__pyx_optional_args) {
-  PyObject *__pyx_v_context = ((PyObject *)Py_None);
-  PyObject *__pyx_v_quoted = ((PyObject *)Py_False);
-  MDB_cursor *__pyx_v_icur;
-  struct MDB_val __pyx_v_spo_v;
-  struct MDB_val __pyx_v_c_v;
-  struct MDB_val __pyx_v_null_v;
-  unsigned char __pyx_v_i;
-  unsigned char *__pyx_v_pk_t;
-  unsigned char __pyx_v_thash[20];
-  unsigned char __pyx_v_spock[20];
-  unsigned char __pyx_v_nkey[5];
-  size_t __pyx_v_term_size;
-  PyObject *__pyx_v_c = NULL;
-  PyObject *__pyx_v_s = NULL;
-  PyObject *__pyx_v_p = NULL;
-  PyObject *__pyx_v_o = NULL;
-  PyObject *__pyx_v_term = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  int __pyx_t_7;
-  int __pyx_t_8;
-  PyObject *(*__pyx_t_9)(PyObject *);
-  MDB_cursor *__pyx_t_10;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open __pyx_t_11;
-  unsigned char __pyx_t_12;
-  Py_ssize_t __pyx_t_13;
-  PyObject *__pyx_t_14 = NULL;
-  PyObject *__pyx_t_15 = NULL;
-  PyObject *__pyx_t_16 = NULL;
-  MDB_dbi __pyx_t_17;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi __pyx_t_18;
-  struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__append __pyx_t_19;
-  PyObject *__pyx_t_20 = NULL;
-  PyObject *__pyx_t_21 = NULL;
-  PyObject *__pyx_t_22 = NULL;
-  PyObject *__pyx_t_23 = NULL;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check __pyx_t_24;
-  int __pyx_t_25;
-  char const *__pyx_t_26;
-  PyObject *__pyx_t_27 = NULL;
-  PyObject *__pyx_t_28 = NULL;
-  PyObject *__pyx_t_29 = NULL;
-  unsigned char *__pyx_t_30;
-  __Pyx_RefNannySetupContext("add", 0);
-  __Pyx_TraceCall("add", __pyx_f[0], 794, 0, __PYX_ERR(0, 794, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_context = __pyx_optional_args->context;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_quoted = __pyx_optional_args->quoted;
-      }
-    }
-  }
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 794, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_5add)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      __pyx_t_5 = 0;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-          __pyx_t_5 = 1;
-        }
-      }
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_triple, __pyx_v_context, __pyx_v_quoted};
-        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 794, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_triple, __pyx_v_context, __pyx_v_quoted};
-        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 794, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else
-      #endif
-      {
-        __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 794, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        if (__pyx_t_4) {
-          __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
-        }
-        __Pyx_INCREF(__pyx_v_triple);
-        __Pyx_GIVEREF(__pyx_v_triple);
-        PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_triple);
-        __Pyx_INCREF(__pyx_v_context);
-        __Pyx_GIVEREF(__pyx_v_context);
-        PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_context);
-        __Pyx_INCREF(__pyx_v_quoted);
-        __Pyx_GIVEREF(__pyx_v_quoted);
-        PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_quoted);
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 794, __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_r = __pyx_t_2;
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":816
- *             size_t term_size
- * 
- *         c = self._normalize_context(context)             # <<<<<<<<<<<<<<
- *         if c is None:
- *             c = RDFLIB_DEFAULT_GRAPH_URI
- */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_normalize_context); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 816, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __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_v_context); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __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_context};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __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_context};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-    } else
-    #endif
-    {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 816, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
-      __Pyx_INCREF(__pyx_v_context);
-      __Pyx_GIVEREF(__pyx_v_context);
-      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_context);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_v_c = __pyx_t_1;
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":817
- * 
- *         c = self._normalize_context(context)
- *         if c is None:             # <<<<<<<<<<<<<<
- *             c = RDFLIB_DEFAULT_GRAPH_URI
- * 
- */
-  __pyx_t_7 = (__pyx_v_c == Py_None);
-  __pyx_t_8 = (__pyx_t_7 != 0);
-  if (__pyx_t_8) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":818
- *         c = self._normalize_context(context)
- *         if c is None:
- *             c = RDFLIB_DEFAULT_GRAPH_URI             # <<<<<<<<<<<<<<
- * 
- *         # TODO: figure out how the RDFLib dispatcher is inherited
- */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_RDFLIB_DEFAULT_GRAPH_URI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 818, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF_SET(__pyx_v_c, __pyx_t_1);
-    __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":817
- * 
- *         c = self._normalize_context(context)
- *         if c is None:             # <<<<<<<<<<<<<<
- *             c = RDFLIB_DEFAULT_GRAPH_URI
- * 
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":824
- *         #Store.add(self, triple, context)
- * 
- *         s, p, o = triple             # <<<<<<<<<<<<<<
- *         #logger.debug('Trying to add a triple.')
- *         icur = self._cur_open('th:t')
- */
-  if ((likely(PyTuple_CheckExact(__pyx_v_triple))) || (PyList_CheckExact(__pyx_v_triple))) {
-    PyObject* sequence = __pyx_v_triple;
-    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
-    if (unlikely(size != 3)) {
-      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
-      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-      __PYX_ERR(0, 824, __pyx_L1_error)
-    }
-    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-    if (likely(PyTuple_CheckExact(sequence))) {
-      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
-      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
-      __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); 
-    } else {
-      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
-      __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
-      __pyx_t_6 = PyList_GET_ITEM(sequence, 2); 
-    }
-    __Pyx_INCREF(__pyx_t_1);
-    __Pyx_INCREF(__pyx_t_2);
-    __Pyx_INCREF(__pyx_t_6);
-    #else
-    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 824, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 824, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 824, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    #endif
-  } else {
-    Py_ssize_t index = -1;
-    __pyx_t_3 = PyObject_GetIter(__pyx_v_triple); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 824, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_9 = Py_TYPE(__pyx_t_3)->tp_iternext;
-    index = 0; __pyx_t_1 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L4_unpacking_failed;
-    __Pyx_GOTREF(__pyx_t_1);
-    index = 1; __pyx_t_2 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed;
-    __Pyx_GOTREF(__pyx_t_2);
-    index = 2; __pyx_t_6 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed;
-    __Pyx_GOTREF(__pyx_t_6);
-    if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_3), 3) < 0) __PYX_ERR(0, 824, __pyx_L1_error)
-    __pyx_t_9 = NULL;
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    goto __pyx_L5_unpacking_done;
-    __pyx_L4_unpacking_failed:;
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_9 = NULL;
-    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-    __PYX_ERR(0, 824, __pyx_L1_error)
-    __pyx_L5_unpacking_done:;
-  }
-  __pyx_v_s = __pyx_t_1;
-  __pyx_t_1 = 0;
-  __pyx_v_p = __pyx_t_2;
-  __pyx_t_2 = 0;
-  __pyx_v_o = __pyx_t_6;
-  __pyx_t_6 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":826
- *         s, p, o = triple
- *         #logger.debug('Trying to add a triple.')
- *         icur = self._cur_open('th:t')             # <<<<<<<<<<<<<<
- *         try:
- *             for i, term in enumerate((s, p, o, c)):
- */
-  __pyx_t_11.__pyx_n = 1;
-  __pyx_t_11.dblabel = ((unsigned char *)((char const *)"th:t"));
-  __pyx_t_10 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_11); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 826, __pyx_L1_error)
-  __pyx_v_icur = __pyx_t_10;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":827
- *         #logger.debug('Trying to add a triple.')
- *         icur = self._cur_open('th:t')
- *         try:             # <<<<<<<<<<<<<<
- *             for i, term in enumerate((s, p, o, c)):
- *                 serialize(term, &pk_t, &term_size)
- */
-  /*try:*/ {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":828
- *         icur = self._cur_open('th:t')
- *         try:
- *             for i, term in enumerate((s, p, o, c)):             # <<<<<<<<<<<<<<
- *                 serialize(term, &pk_t, &term_size)
- *                 _hash(pk_t, term_size, thash)
- */
-    __pyx_t_12 = 0;
-    __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 828, __pyx_L7_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_INCREF(__pyx_v_s);
-    __Pyx_GIVEREF(__pyx_v_s);
-    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_s);
-    __Pyx_INCREF(__pyx_v_p);
-    __Pyx_GIVEREF(__pyx_v_p);
-    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_p);
-    __Pyx_INCREF(__pyx_v_o);
-    __Pyx_GIVEREF(__pyx_v_o);
-    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_o);
-    __Pyx_INCREF(__pyx_v_c);
-    __Pyx_GIVEREF(__pyx_v_c);
-    PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_v_c);
-    __pyx_t_2 = __pyx_t_6; __Pyx_INCREF(__pyx_t_2); __pyx_t_13 = 0;
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    for (;;) {
-      if (__pyx_t_13 >= 4) break;
-      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-      __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_13); __Pyx_INCREF(__pyx_t_6); __pyx_t_13++; if (unlikely(0 < 0)) __PYX_ERR(0, 828, __pyx_L7_error)
-      #else
-      __pyx_t_6 = PySequence_ITEM(__pyx_t_2, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 828, __pyx_L7_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      #endif
-      __Pyx_XDECREF_SET(__pyx_v_term, __pyx_t_6);
-      __pyx_t_6 = 0;
-      __pyx_v_i = __pyx_t_12;
-      __pyx_t_12 = (__pyx_t_12 + 1);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":829
- *         try:
- *             for i, term in enumerate((s, p, o, c)):
- *                 serialize(term, &pk_t, &term_size)             # <<<<<<<<<<<<<<
- *                 _hash(pk_t, term_size, thash)
- *                 try:
- */
-      __pyx_t_5 = __pyx_f_12lakesuperior_5store_6ldp_rs_4term_serialize(__pyx_v_term, (&__pyx_v_pk_t), (&__pyx_v_term_size)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 829, __pyx_L7_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":830
- *             for i, term in enumerate((s, p, o, c)):
- *                 serialize(term, &pk_t, &term_size)
- *                 _hash(pk_t, term_size, thash)             # <<<<<<<<<<<<<<
- *                 try:
- *                     key_v.mv_data = &thash
- */
-      __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore__hash(__pyx_v_pk_t, __pyx_v_term_size, __pyx_v_thash);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":831
- *                 serialize(term, &pk_t, &term_size)
- *                 _hash(pk_t, term_size, thash)
- *                 try:             # <<<<<<<<<<<<<<
- *                     key_v.mv_data = &thash
- *                     key_v.mv_size = HLEN
- */
-      {
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
-        __Pyx_XGOTREF(__pyx_t_14);
-        __Pyx_XGOTREF(__pyx_t_15);
-        __Pyx_XGOTREF(__pyx_t_16);
-        /*try:*/ {
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":832
- *                 _hash(pk_t, term_size, thash)
- *                 try:
- *                     key_v.mv_data = &thash             # <<<<<<<<<<<<<<
- *                     key_v.mv_size = HLEN
- *                     _check(lmdb.mdb_get(
- */
-          __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data = (&__pyx_v_thash);
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":833
- *                 try:
- *                     key_v.mv_data = &thash
- *                     key_v.mv_size = HLEN             # <<<<<<<<<<<<<<
- *                     _check(lmdb.mdb_get(
- *                             self.txn, self.get_dbi('th:t'), &key_v, &data_v))
- */
-          __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_size = 20;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":835
- *                     key_v.mv_size = HLEN
- *                     _check(lmdb.mdb_get(
- *                             self.txn, self.get_dbi('th:t'), &key_v, &data_v))             # <<<<<<<<<<<<<<
- *                     memcpy(spock + (i * KLEN), data_v.mv_data, KLEN)
- *                     #logger.debug('Hash {} found. Not adding.'.format(thash[: HLEN]))
- */
-          __pyx_t_18.__pyx_n = 1;
-          __pyx_t_18.dblabel = ((unsigned char *)((char const *)"th:t"));
-          __pyx_t_17 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.get_dbi(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_18); 
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":834
- *                     key_v.mv_data = &thash
- *                     key_v.mv_size = HLEN
- *                     _check(lmdb.mdb_get(             # <<<<<<<<<<<<<<
- *                             self.txn, self.get_dbi('th:t'), &key_v, &data_v))
- *                     memcpy(spock + (i * KLEN), data_v.mv_data, KLEN)
- */
-          __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_get(__pyx_v_self->__pyx_base.txn, __pyx_t_17, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v)), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 834, __pyx_L11_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":836
- *                     _check(lmdb.mdb_get(
- *                             self.txn, self.get_dbi('th:t'), &key_v, &data_v))
- *                     memcpy(spock + (i * KLEN), data_v.mv_data, KLEN)             # <<<<<<<<<<<<<<
- *                     #logger.debug('Hash {} found. Not adding.'.format(thash[: HLEN]))
- *                 except KeyNotFoundError:
- */
-          (void)(memcpy((__pyx_v_spock + (__pyx_v_i * 5)), __pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_data, 5));
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":831
- *                 serialize(term, &pk_t, &term_size)
- *                 _hash(pk_t, term_size, thash)
- *                 try:             # <<<<<<<<<<<<<<
- *                     key_v.mv_data = &thash
- *                     key_v.mv_size = HLEN
- */
-        }
-        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-        goto __pyx_L18_try_end;
-        __pyx_L11_error:;
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":838
- *                     memcpy(spock + (i * KLEN), data_v.mv_data, KLEN)
- *                     #logger.debug('Hash {} found. Not adding.'.format(thash[: HLEN]))
- *                 except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                     # If term is not found, add it...
- *                     #logger.debug('Hash {} not found. Adding to DB.'.format(
- */
-        __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_1, &__pyx_t_3);
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 838, __pyx_L13_except_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_6, __pyx_t_4);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_ErrRestore(__pyx_t_6, __pyx_t_1, __pyx_t_3);
-        __pyx_t_6 = 0; __pyx_t_1 = 0; __pyx_t_3 = 0;
-        if (__pyx_t_5) {
-          __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.add", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(0, 838, __pyx_L13_except_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_GOTREF(__pyx_t_6);
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":842
- *                     #logger.debug('Hash {} not found. Adding to DB.'.format(
- *                     #        thash[: HLEN]))
- *                     self._append(pk_t, term_size, &nkey, dblabel=b't:st')             # <<<<<<<<<<<<<<
- *                     free(pk_t)
- *                     memcpy(spock + (i * KLEN), nkey, KLEN)
- */
-          __pyx_t_19.__pyx_n = 1;
-          __pyx_t_19.dblabel = ((unsigned char *)((char const *)"t:st"));
-          ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_append(__pyx_v_self, __pyx_v_pk_t, __pyx_v_term_size, (&__pyx_v_nkey), &__pyx_t_19); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 842, __pyx_L13_except_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":843
- *                     #        thash[: HLEN]))
- *                     self._append(pk_t, term_size, &nkey, dblabel=b't:st')
- *                     free(pk_t)             # <<<<<<<<<<<<<<
- *                     memcpy(spock + (i * KLEN), nkey, KLEN)
- * 
- */
-          free(__pyx_v_pk_t);
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":844
- *                     self._append(pk_t, term_size, &nkey, dblabel=b't:st')
- *                     free(pk_t)
- *                     memcpy(spock + (i * KLEN), nkey, KLEN)             # <<<<<<<<<<<<<<
- * 
- *                     # ...and index it.
- */
-          (void)(memcpy((__pyx_v_spock + (__pyx_v_i * 5)), __pyx_v_nkey, 5));
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":849
- *                     #logger.debug('Indexing on th:t: {}: {}'.format(
- *                     #        thash[: HLEN], nkey[: KLEN]))
- *                     key_v.mv_data = thash             # <<<<<<<<<<<<<<
- *                     key_v.mv_size = HLEN
- *                     data_v.mv_data = nkey
- */
-          __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data = __pyx_v_thash;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":850
- *                     #        thash[: HLEN], nkey[: KLEN]))
- *                     key_v.mv_data = thash
- *                     key_v.mv_size = HLEN             # <<<<<<<<<<<<<<
- *                     data_v.mv_data = nkey
- *                     data_v.mv_size = KLEN
- */
-          __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_size = 20;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":851
- *                     key_v.mv_data = thash
- *                     key_v.mv_size = HLEN
- *                     data_v.mv_data = nkey             # <<<<<<<<<<<<<<
- *                     data_v.mv_size = KLEN
- *                     _check(
- */
-          __pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_data = __pyx_v_nkey;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":852
- *                     key_v.mv_size = HLEN
- *                     data_v.mv_data = nkey
- *                     data_v.mv_size = KLEN             # <<<<<<<<<<<<<<
- *                     _check(
- *                         lmdb.mdb_cursor_put(icur, &key_v, &data_v, 0),
- */
-          __pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_size = 5;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":855
- *                     _check(
- *                         lmdb.mdb_cursor_put(icur, &key_v, &data_v, 0),
- *                         'Error setting key {}.'.format(thash))             # <<<<<<<<<<<<<<
- *         finally:
- *             #pass
- */
-          __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Error_setting_key, __pyx_n_s_format); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 855, __pyx_L13_except_error)
-          __Pyx_GOTREF(__pyx_t_20);
-          __pyx_t_21 = __Pyx_PyObject_FromCString(__pyx_v_thash); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 855, __pyx_L13_except_error)
-          __Pyx_GOTREF(__pyx_t_21);
-          __pyx_t_22 = NULL;
-          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_20))) {
-            __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_20);
-            if (likely(__pyx_t_22)) {
-              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_20);
-              __Pyx_INCREF(__pyx_t_22);
-              __Pyx_INCREF(function);
-              __Pyx_DECREF_SET(__pyx_t_20, function);
-            }
-          }
-          if (!__pyx_t_22) {
-            __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_20, __pyx_t_21); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 855, __pyx_L13_except_error)
-            __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
-            __Pyx_GOTREF(__pyx_t_4);
-          } else {
-            #if CYTHON_FAST_PYCALL
-            if (PyFunction_Check(__pyx_t_20)) {
-              PyObject *__pyx_temp[2] = {__pyx_t_22, __pyx_t_21};
-              __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_20, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 855, __pyx_L13_except_error)
-              __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
-              __Pyx_GOTREF(__pyx_t_4);
-              __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
-            } else
-            #endif
-            #if CYTHON_FAST_PYCCALL
-            if (__Pyx_PyFastCFunction_Check(__pyx_t_20)) {
-              PyObject *__pyx_temp[2] = {__pyx_t_22, __pyx_t_21};
-              __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_20, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 855, __pyx_L13_except_error)
-              __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
-              __Pyx_GOTREF(__pyx_t_4);
-              __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
-            } else
-            #endif
-            {
-              __pyx_t_23 = PyTuple_New(1+1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 855, __pyx_L13_except_error)
-              __Pyx_GOTREF(__pyx_t_23);
-              __Pyx_GIVEREF(__pyx_t_22); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_22); __pyx_t_22 = NULL;
-              __Pyx_GIVEREF(__pyx_t_21);
-              PyTuple_SET_ITEM(__pyx_t_23, 0+1, __pyx_t_21);
-              __pyx_t_21 = 0;
-              __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_20, __pyx_t_23, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 855, __pyx_L13_except_error)
-              __Pyx_GOTREF(__pyx_t_4);
-              __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
-            }
-          }
-          __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-          if (!(likely(PyUnicode_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 855, __pyx_L13_except_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":853
- *                     data_v.mv_data = nkey
- *                     data_v.mv_size = KLEN
- *                     _check(             # <<<<<<<<<<<<<<
- *                         lmdb.mdb_cursor_put(icur, &key_v, &data_v, 0),
- *                         'Error setting key {}.'.format(thash))
- */
-          __pyx_t_24.__pyx_n = 1;
-          __pyx_t_24.message = ((PyObject*)__pyx_t_4);
-          __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_put(__pyx_v_icur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), 0), &__pyx_t_24); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 853, __pyx_L13_except_error)
-          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          goto __pyx_L12_exception_handled;
-        }
-        goto __pyx_L13_except_error;
-        __pyx_L13_except_error:;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":831
- *                 serialize(term, &pk_t, &term_size)
- *                 _hash(pk_t, term_size, thash)
- *                 try:             # <<<<<<<<<<<<<<
- *                     key_v.mv_data = &thash
- *                     key_v.mv_size = HLEN
- */
-        __Pyx_XGIVEREF(__pyx_t_14);
-        __Pyx_XGIVEREF(__pyx_t_15);
-        __Pyx_XGIVEREF(__pyx_t_16);
-        __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
-        goto __pyx_L7_error;
-        __pyx_L12_exception_handled:;
-        __Pyx_XGIVEREF(__pyx_t_14);
-        __Pyx_XGIVEREF(__pyx_t_15);
-        __Pyx_XGIVEREF(__pyx_t_16);
-        __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
-        __pyx_L18_try_end:;
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":828
- *         icur = self._cur_open('th:t')
- *         try:
- *             for i, term in enumerate((s, p, o, c)):             # <<<<<<<<<<<<<<
- *                 serialize(term, &pk_t, &term_size)
- *                 _hash(pk_t, term_size, thash)
- */
-    }
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":858
- *         finally:
- *             #pass
- *             self._cur_close(icur)             # <<<<<<<<<<<<<<
- *             #logger.debug('Triple add action completed.')
- * 
- */
-  /*finally:*/ {
-    /*normal exit:*/{
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 858, __pyx_L1_error)
-      goto __pyx_L8;
-    }
-    __pyx_L7_error:;
-    /*exception exit:*/{
-      __Pyx_PyThreadState_declare
-      __Pyx_PyThreadState_assign
-      __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0;
-      __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
-      __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
-      __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
-      __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29);
-      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_15, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_15, &__pyx_t_14);
-      __Pyx_XGOTREF(__pyx_t_16);
-      __Pyx_XGOTREF(__pyx_t_15);
-      __Pyx_XGOTREF(__pyx_t_14);
-      __Pyx_XGOTREF(__pyx_t_27);
-      __Pyx_XGOTREF(__pyx_t_28);
-      __Pyx_XGOTREF(__pyx_t_29);
-      __pyx_t_5 = __pyx_lineno; __pyx_t_25 = __pyx_clineno; __pyx_t_26 = __pyx_filename;
-      {
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 858, __pyx_L22_error)
-      }
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_27);
-        __Pyx_XGIVEREF(__pyx_t_28);
-        __Pyx_XGIVEREF(__pyx_t_29);
-        __Pyx_ExceptionReset(__pyx_t_27, __pyx_t_28, __pyx_t_29);
-      }
-      __Pyx_XGIVEREF(__pyx_t_16);
-      __Pyx_XGIVEREF(__pyx_t_15);
-      __Pyx_XGIVEREF(__pyx_t_14);
-      __Pyx_ErrRestore(__pyx_t_16, __pyx_t_15, __pyx_t_14);
-      __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0;
-      __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_25; __pyx_filename = __pyx_t_26;
-      goto __pyx_L1_error;
-      __pyx_L22_error:;
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_27);
-        __Pyx_XGIVEREF(__pyx_t_28);
-        __Pyx_XGIVEREF(__pyx_t_29);
-        __Pyx_ExceptionReset(__pyx_t_27, __pyx_t_28, __pyx_t_29);
-      }
-      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-      __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0;
-      goto __pyx_L1_error;
-    }
-    __pyx_L8:;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":861
- *             #logger.debug('Triple add action completed.')
- * 
- *         spo_v.mv_data = spock             # <<<<<<<<<<<<<<
- *         spo_v.mv_size = TRP_KLEN
- *         c_v.mv_data = spock + TRP_KLEN
- */
-  __pyx_v_spo_v.mv_data = __pyx_v_spock;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":862
- * 
- *         spo_v.mv_data = spock
- *         spo_v.mv_size = TRP_KLEN             # <<<<<<<<<<<<<<
- *         c_v.mv_data = spock + TRP_KLEN
- *         c_v.mv_size = KLEN
- */
-  __pyx_v_spo_v.mv_size = 15;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":863
- *         spo_v.mv_data = spock
- *         spo_v.mv_size = TRP_KLEN
- *         c_v.mv_data = spock + TRP_KLEN             # <<<<<<<<<<<<<<
- *         c_v.mv_size = KLEN
- *         null_v.mv_data = b''
- */
-  __pyx_v_c_v.mv_data = (__pyx_v_spock + 15);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":864
- *         spo_v.mv_size = TRP_KLEN
- *         c_v.mv_data = spock + TRP_KLEN
- *         c_v.mv_size = KLEN             # <<<<<<<<<<<<<<
- *         null_v.mv_data = b''
- *         null_v.mv_size = 0
- */
-  __pyx_v_c_v.mv_size = 5;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":865
- *         c_v.mv_data = spock + TRP_KLEN
- *         c_v.mv_size = KLEN
- *         null_v.mv_data = b''             # <<<<<<<<<<<<<<
- *         null_v.mv_size = 0
- * 
- */
-  __pyx_v_null_v.mv_data = ((char *)"");
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":866
- *         c_v.mv_size = KLEN
- *         null_v.mv_data = b''
- *         null_v.mv_size = 0             # <<<<<<<<<<<<<<
- * 
- *         #logger.debug('Adding context.')
- */
-  __pyx_v_null_v.mv_size = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":869
- * 
- *         #logger.debug('Adding context.')
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_put(
- *                 self.txn, self.get_dbi('c:'), &c_v, &null_v,
- */
-  {
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ExceptionSave(&__pyx_t_29, &__pyx_t_28, &__pyx_t_27);
-    __Pyx_XGOTREF(__pyx_t_29);
-    __Pyx_XGOTREF(__pyx_t_28);
-    __Pyx_XGOTREF(__pyx_t_27);
-    /*try:*/ {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":871
- *         try:
- *             _check(lmdb.mdb_put(
- *                 self.txn, self.get_dbi('c:'), &c_v, &null_v,             # <<<<<<<<<<<<<<
- *                 lmdb.MDB_NOOVERWRITE))
- *         except KeyExistsError:
- */
-      __pyx_t_18.__pyx_n = 1;
-      __pyx_t_18.dblabel = ((unsigned char *)((char const *)"c:"));
-      __pyx_t_17 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.get_dbi(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_18); 
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":870
- *         #logger.debug('Adding context.')
- *         try:
- *             _check(lmdb.mdb_put(             # <<<<<<<<<<<<<<
- *                 self.txn, self.get_dbi('c:'), &c_v, &null_v,
- *                 lmdb.MDB_NOOVERWRITE))
- */
-      __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_put(__pyx_v_self->__pyx_base.txn, __pyx_t_17, (&__pyx_v_c_v), (&__pyx_v_null_v), MDB_NOOVERWRITE), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 870, __pyx_L23_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":869
- * 
- *         #logger.debug('Adding context.')
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_put(
- *                 self.txn, self.get_dbi('c:'), &c_v, &null_v,
- */
-    }
-    __Pyx_XDECREF(__pyx_t_29); __pyx_t_29 = 0;
-    __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
-    __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
-    goto __pyx_L28_try_end;
-    __pyx_L23_error:;
-    __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
-    __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
-    __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
-    __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
-    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":873
- *                 self.txn, self.get_dbi('c:'), &c_v, &null_v,
- *                 lmdb.MDB_NOOVERWRITE))
- *         except KeyExistsError:             # <<<<<<<<<<<<<<
- *             pass
- *         #logger.debug('Added c:.')
- */
-    __Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_6, &__pyx_t_1);
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyExistsError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 873, __pyx_L25_except_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_25 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_3);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_ErrRestore(__pyx_t_2, __pyx_t_6, __pyx_t_1);
-    __pyx_t_2 = 0; __pyx_t_6 = 0; __pyx_t_1 = 0;
-    if (__pyx_t_25) {
-      __Pyx_ErrRestore(0,0,0);
-      goto __pyx_L24_exception_handled;
-    }
-    goto __pyx_L25_except_error;
-    __pyx_L25_except_error:;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":869
- * 
- *         #logger.debug('Adding context.')
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_put(
- *                 self.txn, self.get_dbi('c:'), &c_v, &null_v,
- */
-    __Pyx_XGIVEREF(__pyx_t_29);
-    __Pyx_XGIVEREF(__pyx_t_28);
-    __Pyx_XGIVEREF(__pyx_t_27);
-    __Pyx_ExceptionReset(__pyx_t_29, __pyx_t_28, __pyx_t_27);
-    goto __pyx_L1_error;
-    __pyx_L24_exception_handled:;
-    __Pyx_XGIVEREF(__pyx_t_29);
-    __Pyx_XGIVEREF(__pyx_t_28);
-    __Pyx_XGIVEREF(__pyx_t_27);
-    __Pyx_ExceptionReset(__pyx_t_29, __pyx_t_28, __pyx_t_27);
-    __pyx_L28_try_end:;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":876
- *             pass
- *         #logger.debug('Added c:.')
- *         try:             # <<<<<<<<<<<<<<
- *             # Add triple:context association.
- *             _check(lmdb.mdb_put(
- */
-  {
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ExceptionSave(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29);
-    __Pyx_XGOTREF(__pyx_t_27);
-    __Pyx_XGOTREF(__pyx_t_28);
-    __Pyx_XGOTREF(__pyx_t_29);
-    /*try:*/ {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":879
- *             # Add triple:context association.
- *             _check(lmdb.mdb_put(
- *                 self.txn, self.get_dbi('spo:c'), &spo_v, &c_v,             # <<<<<<<<<<<<<<
- *                 lmdb.MDB_NODUPDATA))
- *         except KeyExistsError:
- */
-      __pyx_t_18.__pyx_n = 1;
-      __pyx_t_18.dblabel = ((unsigned char *)((char const *)"spo:c"));
-      __pyx_t_17 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.get_dbi(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_18); 
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":878
- *         try:
- *             # Add triple:context association.
- *             _check(lmdb.mdb_put(             # <<<<<<<<<<<<<<
- *                 self.txn, self.get_dbi('spo:c'), &spo_v, &c_v,
- *                 lmdb.MDB_NODUPDATA))
- */
-      __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_put(__pyx_v_self->__pyx_base.txn, __pyx_t_17, (&__pyx_v_spo_v), (&__pyx_v_c_v), MDB_NODUPDATA), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 878, __pyx_L29_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":876
- *             pass
- *         #logger.debug('Added c:.')
- *         try:             # <<<<<<<<<<<<<<
- *             # Add triple:context association.
- *             _check(lmdb.mdb_put(
- */
-    }
-    __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
-    __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
-    __Pyx_XDECREF(__pyx_t_29); __pyx_t_29 = 0;
-    goto __pyx_L34_try_end;
-    __pyx_L29_error:;
-    __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
-    __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
-    __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
-    __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
-    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":881
- *                 self.txn, self.get_dbi('spo:c'), &spo_v, &c_v,
- *                 lmdb.MDB_NODUPDATA))
- *         except KeyExistsError:             # <<<<<<<<<<<<<<
- *             pass
- *         #logger.debug('Added spo:c.')
- */
-    __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_6, &__pyx_t_2);
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyExistsError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 881, __pyx_L31_except_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_25 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_3);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_ErrRestore(__pyx_t_1, __pyx_t_6, __pyx_t_2);
-    __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_2 = 0;
-    if (__pyx_t_25) {
-      __Pyx_ErrRestore(0,0,0);
-      goto __pyx_L30_exception_handled;
-    }
-    goto __pyx_L31_except_error;
-    __pyx_L31_except_error:;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":876
- *             pass
- *         #logger.debug('Added c:.')
- *         try:             # <<<<<<<<<<<<<<
- *             # Add triple:context association.
- *             _check(lmdb.mdb_put(
- */
-    __Pyx_XGIVEREF(__pyx_t_27);
-    __Pyx_XGIVEREF(__pyx_t_28);
-    __Pyx_XGIVEREF(__pyx_t_29);
-    __Pyx_ExceptionReset(__pyx_t_27, __pyx_t_28, __pyx_t_29);
-    goto __pyx_L1_error;
-    __pyx_L30_exception_handled:;
-    __Pyx_XGIVEREF(__pyx_t_27);
-    __Pyx_XGIVEREF(__pyx_t_28);
-    __Pyx_XGIVEREF(__pyx_t_29);
-    __Pyx_ExceptionReset(__pyx_t_27, __pyx_t_28, __pyx_t_29);
-    __pyx_L34_try_end:;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":884
- *             pass
- *         #logger.debug('Added spo:c.')
- *         try:             # <<<<<<<<<<<<<<
- *             # Index context:triple association.
- *             _check(lmdb.mdb_put(
- */
-  {
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ExceptionSave(&__pyx_t_29, &__pyx_t_28, &__pyx_t_27);
-    __Pyx_XGOTREF(__pyx_t_29);
-    __Pyx_XGOTREF(__pyx_t_28);
-    __Pyx_XGOTREF(__pyx_t_27);
-    /*try:*/ {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":887
- *             # Index context:triple association.
- *             _check(lmdb.mdb_put(
- *                 self.txn, self.get_dbi('c:spo'), &c_v, &spo_v,             # <<<<<<<<<<<<<<
- *                 lmdb.MDB_NODUPDATA))
- *         except KeyExistsError:
- */
-      __pyx_t_18.__pyx_n = 1;
-      __pyx_t_18.dblabel = ((unsigned char *)((char const *)"c:spo"));
-      __pyx_t_17 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.get_dbi(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_18); 
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":886
- *         try:
- *             # Index context:triple association.
- *             _check(lmdb.mdb_put(             # <<<<<<<<<<<<<<
- *                 self.txn, self.get_dbi('c:spo'), &c_v, &spo_v,
- *                 lmdb.MDB_NODUPDATA))
- */
-      __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_put(__pyx_v_self->__pyx_base.txn, __pyx_t_17, (&__pyx_v_c_v), (&__pyx_v_spo_v), MDB_NODUPDATA), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 886, __pyx_L35_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":884
- *             pass
- *         #logger.debug('Added spo:c.')
- *         try:             # <<<<<<<<<<<<<<
- *             # Index context:triple association.
- *             _check(lmdb.mdb_put(
- */
-    }
-    __Pyx_XDECREF(__pyx_t_29); __pyx_t_29 = 0;
-    __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
-    __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
-    goto __pyx_L40_try_end;
-    __pyx_L35_error:;
-    __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
-    __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
-    __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
-    __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
-    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":889
- *                 self.txn, self.get_dbi('c:spo'), &c_v, &spo_v,
- *                 lmdb.MDB_NODUPDATA))
- *         except KeyExistsError:             # <<<<<<<<<<<<<<
- *             pass
- *         #logger.debug('Added c:spo.')
- */
-    __Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_6, &__pyx_t_1);
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyExistsError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 889, __pyx_L37_except_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_25 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_3);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_ErrRestore(__pyx_t_2, __pyx_t_6, __pyx_t_1);
-    __pyx_t_2 = 0; __pyx_t_6 = 0; __pyx_t_1 = 0;
-    if (__pyx_t_25) {
-      __Pyx_ErrRestore(0,0,0);
-      goto __pyx_L36_exception_handled;
-    }
-    goto __pyx_L37_except_error;
-    __pyx_L37_except_error:;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":884
- *             pass
- *         #logger.debug('Added spo:c.')
- *         try:             # <<<<<<<<<<<<<<
- *             # Index context:triple association.
- *             _check(lmdb.mdb_put(
- */
-    __Pyx_XGIVEREF(__pyx_t_29);
-    __Pyx_XGIVEREF(__pyx_t_28);
-    __Pyx_XGIVEREF(__pyx_t_27);
-    __Pyx_ExceptionReset(__pyx_t_29, __pyx_t_28, __pyx_t_27);
-    goto __pyx_L1_error;
-    __pyx_L36_exception_handled:;
-    __Pyx_XGIVEREF(__pyx_t_29);
-    __Pyx_XGIVEREF(__pyx_t_28);
-    __Pyx_XGIVEREF(__pyx_t_27);
-    __Pyx_ExceptionReset(__pyx_t_29, __pyx_t_28, __pyx_t_27);
-    __pyx_L40_try_end:;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":894
- * 
- *         #logger.debug('All main data entered. Indexing.')
- *         self._index_triple(IDX_OP_ADD, spock[: TRP_KLEN])             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_spock) + 0, 15 - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 894, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_30 = __Pyx_PyBytes_AsWritableUString(__pyx_t_1); if (unlikely((!__pyx_t_30) && PyErr_Occurred())) __PYX_ERR(0, 894, __pyx_L1_error)
-  ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_index_triple(__pyx_v_self, __pyx_n_u_idx_add, __pyx_t_30); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 894, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":794
- *     # Triple and graph methods.
- * 
- *     cpdef add(self, triple, context=None, quoted=False):             # <<<<<<<<<<<<<<
- *         """
- *         Add a triple and start indexing.
- */
-
-  /* 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_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_20);
-  __Pyx_XDECREF(__pyx_t_21);
-  __Pyx_XDECREF(__pyx_t_22);
-  __Pyx_XDECREF(__pyx_t_23);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.add", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_c);
-  __Pyx_XDECREF(__pyx_v_s);
-  __Pyx_XDECREF(__pyx_v_p);
-  __Pyx_XDECREF(__pyx_v_o);
-  __Pyx_XDECREF(__pyx_v_term);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_5add(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_4add[] = "\n        Add a triple and start indexing.\n\n        :param tuple(rdflib.Identifier) triple: Tuple of three identifiers.\n        :param context: Context identifier. ``None`` inserts in the default\n            graph.\n        :type context: rdflib.Identifier or None\n        :param bool quoted: Not used.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_5add(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_triple = 0;
-  PyObject *__pyx_v_context = 0;
-  PyObject *__pyx_v_quoted = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("add (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_triple,&__pyx_n_s_context,&__pyx_n_s_quoted,0};
-    PyObject* values[3] = {0,0,0};
-    values[1] = ((PyObject *)Py_None);
-    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;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_triple)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_context);
-          if (value) { values[1] = value; kw_args--; }
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_quoted);
-          if (value) { values[2] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add") < 0)) __PYX_ERR(0, 794, __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;
-      }
-    }
-    __pyx_v_triple = values[0];
-    __pyx_v_context = values[1];
-    __pyx_v_quoted = values[2];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("add", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 794, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.add", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_4add(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self), __pyx_v_triple, __pyx_v_context, __pyx_v_quoted);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_4add(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple, PyObject *__pyx_v_context, PyObject *__pyx_v_quoted) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_add __pyx_t_2;
-  __Pyx_RefNannySetupContext("add", 0);
-  __Pyx_TraceCall("add (wrapper)", __pyx_f[0], 794, 0, __PYX_ERR(0, 794, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2.__pyx_n = 2;
-  __pyx_t_2.context = __pyx_v_context;
-  __pyx_t_2.quoted = __pyx_v_quoted;
-  __pyx_t_1 = __pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore->add(__pyx_v_self, __pyx_v_triple, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 794, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.add", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":897
- * 
- * 
- *     cpdef add_graph(self, graph):             # <<<<<<<<<<<<<<
- *         """
- *         Add a graph to the database.
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_7add_graph(PyObject *__pyx_v_self, PyObject *__pyx_v_graph); /*proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_add_graph(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_graph, int __pyx_skip_dispatch) {
-  unsigned char *__pyx_v_pk_c;
-  size_t __pyx_v_pk_size;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  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;
-  int __pyx_t_7;
-  int __pyx_t_8;
-  __Pyx_RefNannySetupContext("add_graph", 0);
-  __Pyx_TraceCall("add_graph", __pyx_f[0], 897, 0, __PYX_ERR(0, 897, __pyx_L1_error));
-  __Pyx_INCREF(__pyx_v_graph);
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_graph); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 897, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_7add_graph)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 897, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_graph};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 897, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_graph};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 897, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        {
-          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 897, __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_INCREF(__pyx_v_graph);
-          __Pyx_GIVEREF(__pyx_v_graph);
-          PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_graph);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 897, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_r = __pyx_t_2;
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":916
- *             size_t pk_size
- * 
- *         if isinstance(graph, Graph):             # <<<<<<<<<<<<<<
- *             graph = graph.identifier
- * 
- */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Graph); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 916, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = PyObject_IsInstance(__pyx_v_graph, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 916, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_7 = (__pyx_t_6 != 0);
-  if (__pyx_t_7) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":917
- * 
- *         if isinstance(graph, Graph):
- *             graph = graph.identifier             # <<<<<<<<<<<<<<
- * 
- *         serialize(graph, &pk_c, &pk_size)
- */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_identifier); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 917, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF_SET(__pyx_v_graph, __pyx_t_1);
-    __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":916
- *             size_t pk_size
- * 
- *         if isinstance(graph, Graph):             # <<<<<<<<<<<<<<
- *             graph = graph.identifier
- * 
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":919
- *             graph = graph.identifier
- * 
- *         serialize(graph, &pk_c, &pk_size)             # <<<<<<<<<<<<<<
- *         self._add_graph(pk_c, pk_size)
- *         free(pk_c)
- */
-  __pyx_t_8 = __pyx_f_12lakesuperior_5store_6ldp_rs_4term_serialize(__pyx_v_graph, (&__pyx_v_pk_c), (&__pyx_v_pk_size)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 919, __pyx_L1_error)
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":920
- * 
- *         serialize(graph, &pk_c, &pk_size)
- *         self._add_graph(pk_c, pk_size)             # <<<<<<<<<<<<<<
- *         free(pk_c)
- * 
- */
-  ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_add_graph(__pyx_v_self, __pyx_v_pk_c, __pyx_v_pk_size, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 920, __pyx_L1_error)
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":921
- *         serialize(graph, &pk_c, &pk_size)
- *         self._add_graph(pk_c, pk_size)
- *         free(pk_c)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  free(__pyx_v_pk_c);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":897
- * 
- * 
- *     cpdef add_graph(self, graph):             # <<<<<<<<<<<<<<
- *         """
- *         Add a graph to the database.
- */
-
-  /* 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_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.add_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_graph);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_7add_graph(PyObject *__pyx_v_self, PyObject *__pyx_v_graph); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_6add_graph[] = "\n        Add a graph to the database.\n\n        This creates an empty graph by associating the graph URI with the\n        pickled `None` value. This prevents from removing the graph when all\n        triples are removed.\n\n        This may be called by read-only operations:\n        https://github.com/RDFLib/rdflib/blob/master/rdflib/graph.py#L1623\n        In which case it needs to open a write transaction. This is not ideal\n        but the only way to handle datasets in RDFLib.\n\n        :param rdflib.URIRef graph: URI of the named graph to add.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_7add_graph(PyObject *__pyx_v_self, PyObject *__pyx_v_graph) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("add_graph (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_6add_graph(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self), ((PyObject *)__pyx_v_graph));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_6add_graph(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_graph) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("add_graph", 0);
-  __Pyx_TraceCall("add_graph (wrapper)", __pyx_f[0], 897, 0, __PYX_ERR(0, 897, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_add_graph(__pyx_v_self, __pyx_v_graph, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 897, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.add_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":924
- * 
- * 
- *     cpdef void _add_graph(             # <<<<<<<<<<<<<<
- *             self, unsigned char *pk_c, size_t pk_size) except *:
- *         """
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_9_add_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__add_graph(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char *__pyx_v_pk_c, size_t __pyx_v_pk_size, int __pyx_skip_dispatch) {
-  unsigned char __pyx_v_c_hash[20];
-  unsigned char __pyx_v_ck[5];
-  MDB_txn *__pyx_v_tmp_txn;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  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;
-  PyObject *__pyx_t_6 = NULL;
-  int __pyx_t_7;
-  PyObject *__pyx_t_8 = NULL;
-  int __pyx_t_9;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__key_exists __pyx_t_10;
-  int __pyx_t_11;
-  struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__append __pyx_t_12;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__put __pyx_t_13;
-  PyObject *__pyx_t_14 = NULL;
-  PyObject *__pyx_t_15 = NULL;
-  PyObject *__pyx_t_16 = NULL;
-  __Pyx_RefNannySetupContext("_add_graph", 0);
-  __Pyx_TraceCall("_add_graph", __pyx_f[0], 924, 0, __PYX_ERR(0, 924, __pyx_L1_error));
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_graph_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 924, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_9_add_graph)) {
-      __pyx_t_3 = __Pyx_PyBytes_FromCString(__pyx_v_pk_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 924, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_pk_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 924, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_5 = __pyx_t_1; __pyx_t_6 = NULL;
-      __pyx_t_7 = 0;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
-        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-        if (likely(__pyx_t_6)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-          __Pyx_INCREF(__pyx_t_6);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_5, function);
-          __pyx_t_7 = 1;
-        }
-      }
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_5)) {
-        PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_3, __pyx_t_4};
-        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 924, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
-        PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_3, __pyx_t_4};
-        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 924, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 924, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_8);
-        if (__pyx_t_6) {
-          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
-        }
-        __Pyx_GIVEREF(__pyx_t_3);
-        PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_3);
-        __Pyx_GIVEREF(__pyx_t_4);
-        PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4);
-        __pyx_t_3 = 0;
-        __pyx_t_4 = 0;
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 924, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      }
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":942
- *             lmdb.MDB_cursor *ck_cur
- * 
- *         _hash(pk_c, pk_size, c_hash)             # <<<<<<<<<<<<<<
- *         #logger.debug('Adding a graph.')
- *         if not self._key_exists(c_hash, HLEN, b'th:t'):
- */
-  __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore__hash(__pyx_v_pk_c, __pyx_v_pk_size, __pyx_v_c_hash);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":944
- *         _hash(pk_c, pk_size, c_hash)
- *         #logger.debug('Adding a graph.')
- *         if not self._key_exists(c_hash, HLEN, b'th:t'):             # <<<<<<<<<<<<<<
- *             # Insert context term if not existing.
- *             if self.is_txn_rw:
- */
-  __pyx_t_10.__pyx_n = 1;
-  __pyx_t_10.dblabel = ((unsigned char *)((char const *)"th:t"));
-  __pyx_t_9 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._key_exists(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_c_hash, 20, &__pyx_t_10); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 944, __pyx_L1_error)
-  __pyx_t_11 = ((!(__pyx_t_9 != 0)) != 0);
-  if (__pyx_t_11) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":946
- *         if not self._key_exists(c_hash, HLEN, b'th:t'):
- *             # Insert context term if not existing.
- *             if self.is_txn_rw:             # <<<<<<<<<<<<<<
- *                 #logger.debug('Working in existing RW transaction.')
- *                 # Use existing R/W transaction.
- */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_txn_rw); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 946, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 946, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (__pyx_t_11) {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":950
- *                 # Use existing R/W transaction.
- *                 # Main entry.
- *                 self._append(pk_c, pk_size, &ck, b't:st')             # <<<<<<<<<<<<<<
- *                 # Index.
- *                 self._put(c_hash, HLEN, ck, KLEN, b'th:t')
- */
-      __pyx_t_12.__pyx_n = 1;
-      __pyx_t_12.dblabel = ((unsigned char *)((char const *)"t:st"));
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_append(__pyx_v_self, __pyx_v_pk_c, __pyx_v_pk_size, (&__pyx_v_ck), &__pyx_t_12); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 950, __pyx_L1_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":952
- *                 self._append(pk_c, pk_size, &ck, b't:st')
- *                 # Index.
- *                 self._put(c_hash, HLEN, ck, KLEN, b'th:t')             # <<<<<<<<<<<<<<
- *                 # Add to list of contexts.
- *                 self._put(ck, KLEN, b'', 0, 'c:')
- */
-      __pyx_t_13.__pyx_n = 1;
-      __pyx_t_13.dblabel = ((unsigned char *)((char const *)"th:t"));
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._put(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_c_hash, 20, __pyx_v_ck, 5, &__pyx_t_13); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 952, __pyx_L1_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":954
- *                 self._put(c_hash, HLEN, ck, KLEN, b'th:t')
- *                 # Add to list of contexts.
- *                 self._put(ck, KLEN, b'', 0, 'c:')             # <<<<<<<<<<<<<<
- *             else:
- *                 # Open new R/W transactions.
- */
-      __pyx_t_13.__pyx_n = 1;
-      __pyx_t_13.dblabel = ((unsigned char *)((char const *)"c:"));
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._put(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_ck, 5, ((unsigned char *)((char const *)"")), 0, &__pyx_t_13); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 954, __pyx_L1_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":946
- *         if not self._key_exists(c_hash, HLEN, b'th:t'):
- *             # Insert context term if not existing.
- *             if self.is_txn_rw:             # <<<<<<<<<<<<<<
- *                 #logger.debug('Working in existing RW transaction.')
- *                 # Use existing R/W transaction.
- */
-      goto __pyx_L4;
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":958
- *                 # Open new R/W transactions.
- *                 #logger.debug('Opening a temporary RW transaction.')
- *                 _check(lmdb.mdb_txn_begin(self.dbenv, NULL, 0, &tmp_txn))             # <<<<<<<<<<<<<<
- *                 try:
- *                     self._append(
- */
-    /*else*/ {
-      __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_txn_begin(__pyx_v_self->__pyx_base.dbenv, NULL, 0, (&__pyx_v_tmp_txn)), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 958, __pyx_L1_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":959
- *                 #logger.debug('Opening a temporary RW transaction.')
- *                 _check(lmdb.mdb_txn_begin(self.dbenv, NULL, 0, &tmp_txn))
- *                 try:             # <<<<<<<<<<<<<<
- *                     self._append(
- *                             pk_c, pk_size, &ck, dblabel=b't:st', txn=tmp_txn)
- */
-      {
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
-        __Pyx_XGOTREF(__pyx_t_14);
-        __Pyx_XGOTREF(__pyx_t_15);
-        __Pyx_XGOTREF(__pyx_t_16);
-        /*try:*/ {
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":960
- *                 _check(lmdb.mdb_txn_begin(self.dbenv, NULL, 0, &tmp_txn))
- *                 try:
- *                     self._append(             # <<<<<<<<<<<<<<
- *                             pk_c, pk_size, &ck, dblabel=b't:st', txn=tmp_txn)
- *                     # Index.
- */
-          __pyx_t_12.__pyx_n = 2;
-          __pyx_t_12.dblabel = ((unsigned char *)((char const *)"t:st"));
-          __pyx_t_12.txn = __pyx_v_tmp_txn;
-          ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_append(__pyx_v_self, __pyx_v_pk_c, __pyx_v_pk_size, (&__pyx_v_ck), &__pyx_t_12); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 960, __pyx_L5_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":963
- *                             pk_c, pk_size, &ck, dblabel=b't:st', txn=tmp_txn)
- *                     # Index.
- *                     self._put(c_hash, HLEN, ck, KLEN, b'th:t', txn=tmp_txn)             # <<<<<<<<<<<<<<
- *                     # Add to list of contexts.
- *                     self._put(ck, KLEN, b'', 0, b'c:', txn=tmp_txn)
- */
-          __pyx_t_13.__pyx_n = 2;
-          __pyx_t_13.dblabel = ((unsigned char *)((char const *)"th:t"));
-          __pyx_t_13.txn = __pyx_v_tmp_txn;
-          ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._put(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_c_hash, 20, __pyx_v_ck, 5, &__pyx_t_13); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 963, __pyx_L5_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":965
- *                     self._put(c_hash, HLEN, ck, KLEN, b'th:t', txn=tmp_txn)
- *                     # Add to list of contexts.
- *                     self._put(ck, KLEN, b'', 0, b'c:', txn=tmp_txn)             # <<<<<<<<<<<<<<
- *                     _check(lmdb.mdb_txn_commit(tmp_txn))
- *                     #logger.debug('Temp RW transaction closed.')
- */
-          __pyx_t_13.__pyx_n = 2;
-          __pyx_t_13.dblabel = ((unsigned char *)((char const *)"c:"));
-          __pyx_t_13.txn = __pyx_v_tmp_txn;
-          ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._put(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_ck, 5, ((unsigned char *)((char const *)"")), 0, &__pyx_t_13); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 965, __pyx_L5_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":966
- *                     # Add to list of contexts.
- *                     self._put(ck, KLEN, b'', 0, b'c:', txn=tmp_txn)
- *                     _check(lmdb.mdb_txn_commit(tmp_txn))             # <<<<<<<<<<<<<<
- *                     #logger.debug('Temp RW transaction closed.')
- *                 except:
- */
-          __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_txn_commit(__pyx_v_tmp_txn), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 966, __pyx_L5_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":959
- *                 #logger.debug('Opening a temporary RW transaction.')
- *                 _check(lmdb.mdb_txn_begin(self.dbenv, NULL, 0, &tmp_txn))
- *                 try:             # <<<<<<<<<<<<<<
- *                     self._append(
- *                             pk_c, pk_size, &ck, dblabel=b't:st', txn=tmp_txn)
- */
-        }
-        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-        goto __pyx_L10_try_end;
-        __pyx_L5_error:;
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":968
- *                     _check(lmdb.mdb_txn_commit(tmp_txn))
- *                     #logger.debug('Temp RW transaction closed.')
- *                 except:             # <<<<<<<<<<<<<<
- *                     lmdb.mdb_txn_abort(tmp_txn)
- *                     raise
- */
-        /*except:*/ {
-          __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._add_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_5) < 0) __PYX_ERR(0, 968, __pyx_L7_except_error)
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_GOTREF(__pyx_t_5);
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":969
- *                     #logger.debug('Temp RW transaction closed.')
- *                 except:
- *                     lmdb.mdb_txn_abort(tmp_txn)             # <<<<<<<<<<<<<<
- *                     raise
- * 
- */
-          mdb_txn_abort(__pyx_v_tmp_txn);
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":970
- *                 except:
- *                     lmdb.mdb_txn_abort(tmp_txn)
- *                     raise             # <<<<<<<<<<<<<<
- * 
- * 
- */
-          __Pyx_GIVEREF(__pyx_t_1);
-          __Pyx_GIVEREF(__pyx_t_2);
-          __Pyx_XGIVEREF(__pyx_t_5);
-          __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_2, __pyx_t_5);
-          __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_5 = 0; 
-          __PYX_ERR(0, 970, __pyx_L7_except_error)
-        }
-        __pyx_L7_except_error:;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":959
- *                 #logger.debug('Opening a temporary RW transaction.')
- *                 _check(lmdb.mdb_txn_begin(self.dbenv, NULL, 0, &tmp_txn))
- *                 try:             # <<<<<<<<<<<<<<
- *                     self._append(
- *                             pk_c, pk_size, &ck, dblabel=b't:st', txn=tmp_txn)
- */
-        __Pyx_XGIVEREF(__pyx_t_14);
-        __Pyx_XGIVEREF(__pyx_t_15);
-        __Pyx_XGIVEREF(__pyx_t_16);
-        __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
-        goto __pyx_L1_error;
-        __pyx_L10_try_end:;
-      }
-    }
-    __pyx_L4:;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":944
- *         _hash(pk_c, pk_size, c_hash)
- *         #logger.debug('Adding a graph.')
- *         if not self._key_exists(c_hash, HLEN, b'th:t'):             # <<<<<<<<<<<<<<
- *             # Insert context term if not existing.
- *             if self.is_txn_rw:
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":924
- * 
- * 
- *     cpdef void _add_graph(             # <<<<<<<<<<<<<<
- *             self, unsigned char *pk_c, size_t pk_size) except *:
- *         """
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __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_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._add_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_9_add_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_8_add_graph[] = "\n        Add a graph.\n\n        :param pk_c: Pickled context URIRef object.\n        :type pk_c: unsigned char*\n        :param pk_size: Size of pickled string.\n        :type pk_size: size_t\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_9_add_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  unsigned char *__pyx_v_pk_c;
-  size_t __pyx_v_pk_size;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("_add_graph (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pk_c,&__pyx_n_s_pk_size,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] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pk_c)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pk_size)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("_add_graph", 1, 2, 2, 1); __PYX_ERR(0, 924, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_add_graph") < 0)) __PYX_ERR(0, 924, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_pk_c = __Pyx_PyObject_AsWritableUString(values[0]); if (unlikely((!__pyx_v_pk_c) && PyErr_Occurred())) __PYX_ERR(0, 925, __pyx_L3_error)
-    __pyx_v_pk_size = __Pyx_PyInt_As_size_t(values[1]); if (unlikely((__pyx_v_pk_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 925, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("_add_graph", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 924, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._add_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_8_add_graph(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self), __pyx_v_pk_c, __pyx_v_pk_size);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_8_add_graph(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char *__pyx_v_pk_c, size_t __pyx_v_pk_size) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("_add_graph", 0);
-  __Pyx_TraceCall("_add_graph (wrapper)", __pyx_f[0], 924, 0, __PYX_ERR(0, 924, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__add_graph(__pyx_v_self, __pyx_v_pk_c, __pyx_v_pk_size, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 924, __pyx_L1_error)
-  __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 924, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._add_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":973
- * 
- * 
- *     cpdef void _remove(self, tuple triple_pattern, context=None) except *:             # <<<<<<<<<<<<<<
- *         cdef:
- *             unsigned char spok[TRP_KLEN]
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_11_remove(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__remove(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple_pattern, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__remove *__pyx_optional_args) {
-  PyObject *__pyx_v_context = ((PyObject *)Py_None);
-  unsigned char __pyx_v_spok[15];
-  size_t __pyx_v_i;
-  __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key __pyx_v_ck;
-  struct MDB_val __pyx_v_spok_v;
-  struct MDB_val __pyx_v_ck_v;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_match_set = NULL;
-  MDB_cursor *__pyx_v_dcur;
-  MDB_cursor *__pyx_v_icur;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  int __pyx_t_7;
-  int __pyx_t_8;
-  PyObject *__pyx_t_9 = NULL;
-  PyObject *__pyx_t_10 = NULL;
-  PyObject *__pyx_t_11 = NULL;
-  struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_triple_keys __pyx_t_12;
-  MDB_cursor *__pyx_t_13;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open __pyx_t_14;
-  PyObject *__pyx_t_15 = NULL;
-  PyObject *__pyx_t_16 = NULL;
-  PyObject *__pyx_t_17 = NULL;
-  Py_ssize_t __pyx_t_18;
-  Py_UCS4 __pyx_t_19;
-  int __pyx_t_20;
-  char const *__pyx_t_21;
-  char const *__pyx_t_22;
-  __Pyx_RefNannySetupContext("_remove", 0);
-  __Pyx_TraceCall("_remove", __pyx_f[0], 973, 0, __PYX_ERR(0, 973, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_context = __pyx_optional_args->context;
-    }
-  }
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_remove); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 973, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_11_remove)) {
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      __pyx_t_5 = 0;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-          __pyx_t_5 = 1;
-        }
-      }
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_triple_pattern, __pyx_v_context};
-        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 973, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_triple_pattern, __pyx_v_context};
-        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 973, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else
-      #endif
-      {
-        __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 973, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        if (__pyx_t_4) {
-          __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
-        }
-        __Pyx_INCREF(__pyx_v_triple_pattern);
-        __Pyx_GIVEREF(__pyx_v_triple_pattern);
-        PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_triple_pattern);
-        __Pyx_INCREF(__pyx_v_context);
-        __Pyx_GIVEREF(__pyx_v_context);
-        PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_context);
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 973, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":976
- *         cdef:
- *             unsigned char spok[TRP_KLEN]
- *             size_t i = 0             # <<<<<<<<<<<<<<
- *             Key ck
- *             lmdb.MDB_val spok_v, ck_v
- */
-  __pyx_v_i = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":981
- * 
- *         #logger.debug('Removing triple: {}'.format(triple_pattern))
- *         if context is not None:             # <<<<<<<<<<<<<<
- *             try:
- *                 self._to_key(context, &ck)
- */
-  __pyx_t_7 = (__pyx_v_context != Py_None);
-  __pyx_t_8 = (__pyx_t_7 != 0);
-  if (__pyx_t_8) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":982
- *         #logger.debug('Removing triple: {}'.format(triple_pattern))
- *         if context is not None:
- *             try:             # <<<<<<<<<<<<<<
- *                 self._to_key(context, &ck)
- *             except KeyNotFoundError:
- */
-    {
-      __Pyx_PyThreadState_declare
-      __Pyx_PyThreadState_assign
-      __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
-      __Pyx_XGOTREF(__pyx_t_9);
-      __Pyx_XGOTREF(__pyx_t_10);
-      __Pyx_XGOTREF(__pyx_t_11);
-      /*try:*/ {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":983
- *         if context is not None:
- *             try:
- *                 self._to_key(context, &ck)             # <<<<<<<<<<<<<<
- *             except KeyNotFoundError:
- *                 # If context is specified but not found, return to avoid
- */
-        __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_key(__pyx_v_self, __pyx_v_context, (&__pyx_v_ck)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 983, __pyx_L4_error)
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":982
- *         #logger.debug('Removing triple: {}'.format(triple_pattern))
- *         if context is not None:
- *             try:             # <<<<<<<<<<<<<<
- *                 self._to_key(context, &ck)
- *             except KeyNotFoundError:
- */
-      }
-      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-      goto __pyx_L9_try_end;
-      __pyx_L4_error:;
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":984
- *             try:
- *                 self._to_key(context, &ck)
- *             except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                 # If context is specified but not found, return to avoid
- *                 # deleting the wrong triples.
- */
-      __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 984, __pyx_L6_except_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_6);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-      __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
-      if (__pyx_t_5) {
-        __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._remove", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 984, __pyx_L6_except_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_GOTREF(__pyx_t_1);
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":987
- *                 # If context is specified but not found, return to avoid
- *                 # deleting the wrong triples.
- *                 return             # <<<<<<<<<<<<<<
- * 
- *         # Get the matching pattern.
- */
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        goto __pyx_L7_except_return;
-      }
-      goto __pyx_L6_except_error;
-      __pyx_L6_except_error:;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":982
- *         #logger.debug('Removing triple: {}'.format(triple_pattern))
- *         if context is not None:
- *             try:             # <<<<<<<<<<<<<<
- *                 self._to_key(context, &ck)
- *             except KeyNotFoundError:
- */
-      __Pyx_XGIVEREF(__pyx_t_9);
-      __Pyx_XGIVEREF(__pyx_t_10);
-      __Pyx_XGIVEREF(__pyx_t_11);
-      __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-      goto __pyx_L1_error;
-      __pyx_L7_except_return:;
-      __Pyx_XGIVEREF(__pyx_t_9);
-      __Pyx_XGIVEREF(__pyx_t_10);
-      __Pyx_XGIVEREF(__pyx_t_11);
-      __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-      goto __pyx_L0;
-      __pyx_L9_try_end:;
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":981
- * 
- *         #logger.debug('Removing triple: {}'.format(triple_pattern))
- *         if context is not None:             # <<<<<<<<<<<<<<
- *             try:
- *                 self._to_key(context, &ck)
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":990
- * 
- *         # Get the matching pattern.
- *         match_set = self.triple_keys(triple_pattern, context)             # <<<<<<<<<<<<<<
- * 
- *         dcur = self._cur_open('spo:c')
- */
-  __pyx_t_12.__pyx_n = 1;
-  __pyx_t_12.context = __pyx_v_context;
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->triple_keys(__pyx_v_self, __pyx_v_triple_pattern, 0, &__pyx_t_12)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 990, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_match_set = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":992
- *         match_set = self.triple_keys(triple_pattern, context)
- * 
- *         dcur = self._cur_open('spo:c')             # <<<<<<<<<<<<<<
- *         icur = self._cur_open('c:spo')
- * 
- */
-  __pyx_t_14.__pyx_n = 1;
-  __pyx_t_14.dblabel = ((unsigned char *)((char const *)"spo:c"));
-  __pyx_t_13 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_14); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 992, __pyx_L1_error)
-  __pyx_v_dcur = __pyx_t_13;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":993
- * 
- *         dcur = self._cur_open('spo:c')
- *         icur = self._cur_open('c:spo')             # <<<<<<<<<<<<<<
- * 
- *         try:
- */
-  __pyx_t_14.__pyx_n = 1;
-  __pyx_t_14.dblabel = ((unsigned char *)((char const *)"c:spo"));
-  __pyx_t_13 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_14); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 993, __pyx_L1_error)
-  __pyx_v_icur = __pyx_t_13;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":995
- *         icur = self._cur_open('c:spo')
- * 
- *         try:             # <<<<<<<<<<<<<<
- *             spok_v.mv_size = TRP_KLEN
- *             # If context was specified, remove only associations with that context.
- */
-  /*try:*/ {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":996
- * 
- *         try:
- *             spok_v.mv_size = TRP_KLEN             # <<<<<<<<<<<<<<
- *             # If context was specified, remove only associations with that context.
- *             if context is not None:
- */
-    __pyx_v_spok_v.mv_size = 15;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":998
- *             spok_v.mv_size = TRP_KLEN
- *             # If context was specified, remove only associations with that context.
- *             if context is not None:             # <<<<<<<<<<<<<<
- *                 #logger.debug('Removing triples in matching context.')
- *                 ck_v.mv_data = ck
- */
-    __pyx_t_8 = (__pyx_v_context != Py_None);
-    __pyx_t_7 = (__pyx_t_8 != 0);
-    if (__pyx_t_7) {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1000
- *             if context is not None:
- *                 #logger.debug('Removing triples in matching context.')
- *                 ck_v.mv_data = ck             # <<<<<<<<<<<<<<
- *                 ck_v.mv_size = KLEN
- *                 while i < match_set.ct:
- */
-      __pyx_v_ck_v.mv_data = __pyx_v_ck;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1001
- *                 #logger.debug('Removing triples in matching context.')
- *                 ck_v.mv_data = ck
- *                 ck_v.mv_size = KLEN             # <<<<<<<<<<<<<<
- *                 while i < match_set.ct:
- *                     memcpy(
- */
-      __pyx_v_ck_v.mv_size = 5;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1002
- *                 ck_v.mv_data = ck
- *                 ck_v.mv_size = KLEN
- *                 while i < match_set.ct:             # <<<<<<<<<<<<<<
- *                     memcpy(
- *                             spok, match_set.data + match_set.itemsize * i,
- */
-      while (1) {
-        __pyx_t_7 = ((__pyx_v_i < __pyx_v_match_set->ct) != 0);
-        if (!__pyx_t_7) break;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1003
- *                 ck_v.mv_size = KLEN
- *                 while i < match_set.ct:
- *                     memcpy(             # <<<<<<<<<<<<<<
- *                             spok, match_set.data + match_set.itemsize * i,
- *                             TRP_KLEN)
- */
-        (void)(memcpy(__pyx_v_spok, (__pyx_v_match_set->data + (__pyx_v_match_set->itemsize * __pyx_v_i)), 15));
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1006
- *                             spok, match_set.data + match_set.itemsize * i,
- *                             TRP_KLEN)
- *                     spok_v.mv_data = spok             # <<<<<<<<<<<<<<
- *                     # Delete spo:c entry.
- *                     try:
- */
-        __pyx_v_spok_v.mv_data = __pyx_v_spok;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1008
- *                     spok_v.mv_data = spok
- *                     # Delete spo:c entry.
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                                 dcur, &spok_v, &ck_v, lmdb.MDB_GET_BOTH))
- */
-        {
-          __Pyx_PyThreadState_declare
-          __Pyx_PyThreadState_assign
-          __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
-          __Pyx_XGOTREF(__pyx_t_11);
-          __Pyx_XGOTREF(__pyx_t_10);
-          __Pyx_XGOTREF(__pyx_t_9);
-          /*try:*/ {
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1009
- *                     # Delete spo:c entry.
- *                     try:
- *                         _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                                 dcur, &spok_v, &ck_v, lmdb.MDB_GET_BOTH))
- *                     except KeyNotFoundError:
- */
-            __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_dcur, (&__pyx_v_spok_v), (&__pyx_v_ck_v), MDB_GET_BOTH), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1009, __pyx_L18_error)
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1008
- *                     spok_v.mv_data = spok
- *                     # Delete spo:c entry.
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                                 dcur, &spok_v, &ck_v, lmdb.MDB_GET_BOTH))
- */
-          }
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1014
- *                         pass
- *                     else:
- *                         _check(lmdb.mdb_cursor_del(dcur, 0))             # <<<<<<<<<<<<<<
- * 
- *                         # Restore ck after delete.
- */
-          /*else:*/ {
-            __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_del(__pyx_v_dcur, 0), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1014, __pyx_L20_except_error)
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1017
- * 
- *                         # Restore ck after delete.
- *                         ck_v.mv_data = ck             # <<<<<<<<<<<<<<
- * 
- *                         # Delete c:spo entry.
- */
-            __pyx_v_ck_v.mv_data = __pyx_v_ck;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1020
- * 
- *                         # Delete c:spo entry.
- *                         try:             # <<<<<<<<<<<<<<
- *                             _check(lmdb.mdb_cursor_get(
- *                                     icur, &ck_v, &spok_v, lmdb.MDB_GET_BOTH))
- */
-            {
-              __Pyx_PyThreadState_declare
-              __Pyx_PyThreadState_assign
-              __Pyx_ExceptionSave(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
-              __Pyx_XGOTREF(__pyx_t_15);
-              __Pyx_XGOTREF(__pyx_t_16);
-              __Pyx_XGOTREF(__pyx_t_17);
-              /*try:*/ {
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1021
- *                         # Delete c:spo entry.
- *                         try:
- *                             _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                                     icur, &ck_v, &spok_v, lmdb.MDB_GET_BOTH))
- *                         except KeyNotFoundError:
- */
-                __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_ck_v), (&__pyx_v_spok_v), MDB_GET_BOTH), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1021, __pyx_L26_error)
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1020
- * 
- *                         # Delete c:spo entry.
- *                         try:             # <<<<<<<<<<<<<<
- *                             _check(lmdb.mdb_cursor_get(
- *                                     icur, &ck_v, &spok_v, lmdb.MDB_GET_BOTH))
- */
-              }
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1026
- *                             pass
- *                         else:
- *                             _check(lmdb.mdb_cursor_del(icur, 0))             # <<<<<<<<<<<<<<
- * 
- *                         # Delete lookup indices, only if no other context
- */
-              /*else:*/ {
-                __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_del(__pyx_v_icur, 0), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1026, __pyx_L28_except_error)
-              }
-              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-              __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-              __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-              goto __pyx_L33_try_end;
-              __pyx_L26_error:;
-              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1023
- *                             _check(lmdb.mdb_cursor_get(
- *                                     icur, &ck_v, &spok_v, lmdb.MDB_GET_BOTH))
- *                         except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                             pass
- *                         else:
- */
-              __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-              __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1023, __pyx_L28_except_error)
-              __Pyx_GOTREF(__pyx_t_6);
-              __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_6);
-              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-              __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-              __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
-              if (__pyx_t_5) {
-                __Pyx_ErrRestore(0,0,0);
-                goto __pyx_L27_exception_handled;
-              }
-              goto __pyx_L28_except_error;
-              __pyx_L28_except_error:;
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1020
- * 
- *                         # Delete c:spo entry.
- *                         try:             # <<<<<<<<<<<<<<
- *                             _check(lmdb.mdb_cursor_get(
- *                                     icur, &ck_v, &spok_v, lmdb.MDB_GET_BOTH))
- */
-              __Pyx_XGIVEREF(__pyx_t_15);
-              __Pyx_XGIVEREF(__pyx_t_16);
-              __Pyx_XGIVEREF(__pyx_t_17);
-              __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
-              goto __pyx_L20_except_error;
-              __pyx_L27_exception_handled:;
-              __Pyx_XGIVEREF(__pyx_t_15);
-              __Pyx_XGIVEREF(__pyx_t_16);
-              __Pyx_XGIVEREF(__pyx_t_17);
-              __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
-              __pyx_L33_try_end:;
-            }
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1030
- *                         # Delete lookup indices, only if no other context
- *                         # association is present.
- *                         spok_v.mv_data = spok             # <<<<<<<<<<<<<<
- *                         try:
- *                             _check(lmdb.mdb_cursor_get(
- */
-            __pyx_v_spok_v.mv_data = __pyx_v_spok;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1031
- *                         # association is present.
- *                         spok_v.mv_data = spok
- *                         try:             # <<<<<<<<<<<<<<
- *                             _check(lmdb.mdb_cursor_get(
- *                                 dcur, &spok_v, NULL, lmdb.MDB_SET))
- */
-            {
-              __Pyx_PyThreadState_declare
-              __Pyx_PyThreadState_assign
-              __Pyx_ExceptionSave(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
-              __Pyx_XGOTREF(__pyx_t_17);
-              __Pyx_XGOTREF(__pyx_t_16);
-              __Pyx_XGOTREF(__pyx_t_15);
-              /*try:*/ {
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1032
- *                         spok_v.mv_data = spok
- *                         try:
- *                             _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                                 dcur, &spok_v, NULL, lmdb.MDB_SET))
- *                         except KeyNotFoundError:
- */
-                __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_dcur, (&__pyx_v_spok_v), NULL, MDB_SET), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1032, __pyx_L34_error)
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1031
- *                         # association is present.
- *                         spok_v.mv_data = spok
- *                         try:             # <<<<<<<<<<<<<<
- *                             _check(lmdb.mdb_cursor_get(
- *                                 dcur, &spok_v, NULL, lmdb.MDB_SET))
- */
-              }
-              __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-              __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-              goto __pyx_L41_try_end;
-              __pyx_L34_error:;
-              __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;
-              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1034
- *                             _check(lmdb.mdb_cursor_get(
- *                                 dcur, &spok_v, NULL, lmdb.MDB_SET))
- *                         except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                             self._index_triple(IDX_OP_REMOVE, spok)
- *                     i += 1
- */
-              __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
-              __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1034, __pyx_L36_except_error)
-              __Pyx_GOTREF(__pyx_t_6);
-              __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_6);
-              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-              __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1);
-              __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0;
-              if (__pyx_t_5) {
-                __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._remove", __pyx_clineno, __pyx_lineno, __pyx_filename);
-                if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 1034, __pyx_L36_except_error)
-                __Pyx_GOTREF(__pyx_t_1);
-                __Pyx_GOTREF(__pyx_t_2);
-                __Pyx_GOTREF(__pyx_t_3);
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1035
- *                                 dcur, &spok_v, NULL, lmdb.MDB_SET))
- *                         except KeyNotFoundError:
- *                             self._index_triple(IDX_OP_REMOVE, spok)             # <<<<<<<<<<<<<<
- *                     i += 1
- * 
- */
-                ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_index_triple(__pyx_v_self, __pyx_n_u_idx_remove, __pyx_v_spok); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1035, __pyx_L36_except_error)
-                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-                goto __pyx_L35_exception_handled;
-              }
-              goto __pyx_L36_except_error;
-              __pyx_L36_except_error:;
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1031
- *                         # association is present.
- *                         spok_v.mv_data = spok
- *                         try:             # <<<<<<<<<<<<<<
- *                             _check(lmdb.mdb_cursor_get(
- *                                 dcur, &spok_v, NULL, lmdb.MDB_SET))
- */
-              __Pyx_XGIVEREF(__pyx_t_17);
-              __Pyx_XGIVEREF(__pyx_t_16);
-              __Pyx_XGIVEREF(__pyx_t_15);
-              __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_16, __pyx_t_15);
-              goto __pyx_L20_except_error;
-              __pyx_L35_exception_handled:;
-              __Pyx_XGIVEREF(__pyx_t_17);
-              __Pyx_XGIVEREF(__pyx_t_16);
-              __Pyx_XGIVEREF(__pyx_t_15);
-              __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_16, __pyx_t_15);
-              __pyx_L41_try_end:;
-            }
-          }
-          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-          goto __pyx_L25_try_end;
-          __pyx_L18_error:;
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1011
- *                         _check(lmdb.mdb_cursor_get(
- *                                 dcur, &spok_v, &ck_v, lmdb.MDB_GET_BOTH))
- *                     except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                         pass
- *                     else:
- */
-          __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
-          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1011, __pyx_L20_except_error)
-          __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_6);
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1);
-          __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0;
-          if (__pyx_t_5) {
-            __Pyx_ErrRestore(0,0,0);
-            goto __pyx_L19_exception_handled;
-          }
-          goto __pyx_L20_except_error;
-          __pyx_L20_except_error:;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1008
- *                     spok_v.mv_data = spok
- *                     # Delete spo:c entry.
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                                 dcur, &spok_v, &ck_v, lmdb.MDB_GET_BOTH))
- */
-          __Pyx_XGIVEREF(__pyx_t_11);
-          __Pyx_XGIVEREF(__pyx_t_10);
-          __Pyx_XGIVEREF(__pyx_t_9);
-          __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-          goto __pyx_L13_error;
-          __pyx_L19_exception_handled:;
-          __Pyx_XGIVEREF(__pyx_t_11);
-          __Pyx_XGIVEREF(__pyx_t_10);
-          __Pyx_XGIVEREF(__pyx_t_9);
-          __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-          __pyx_L25_try_end:;
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1036
- *                         except KeyNotFoundError:
- *                             self._index_triple(IDX_OP_REMOVE, spok)
- *                     i += 1             # <<<<<<<<<<<<<<
- * 
- *             # If no context is specified, remove all associations.
- */
-        __pyx_v_i = (__pyx_v_i + 1);
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":998
- *             spok_v.mv_size = TRP_KLEN
- *             # If context was specified, remove only associations with that context.
- *             if context is not None:             # <<<<<<<<<<<<<<
- *                 #logger.debug('Removing triples in matching context.')
- *                 ck_v.mv_data = ck
- */
-      goto __pyx_L15;
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1042
- *                 #logger.debug('Removing triples in all contexts.')
- *                 # Loop over all SPO matching the triple pattern.
- *                 while i < match_set.ct:             # <<<<<<<<<<<<<<
- *                     spok = match_set.data + match_set.itemsize * i
- *                     spok_v.mv_data = spok
- */
-    /*else*/ {
-      while (1) {
-        __pyx_t_7 = ((__pyx_v_i < __pyx_v_match_set->ct) != 0);
-        if (!__pyx_t_7) break;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1043
- *                 # Loop over all SPO matching the triple pattern.
- *                 while i < match_set.ct:
- *                     spok = match_set.data + match_set.itemsize * i             # <<<<<<<<<<<<<<
- *                     spok_v.mv_data = spok
- *                     # Loop over all context associations for this SPO.
- */
-        memcpy(&(__pyx_v_spok[0]), (__pyx_v_match_set->data + (__pyx_v_match_set->itemsize * __pyx_v_i)), sizeof(__pyx_v_spok[0]) * (15 - 0));
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1044
- *                 while i < match_set.ct:
- *                     spok = match_set.data + match_set.itemsize * i
- *                     spok_v.mv_data = spok             # <<<<<<<<<<<<<<
- *                     # Loop over all context associations for this SPO.
- *                     try:
- */
-        __pyx_v_spok_v.mv_data = __pyx_v_spok;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1046
- *                     spok_v.mv_data = spok
- *                     # Loop over all context associations for this SPO.
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                             dcur, &spok_v, &ck_v, lmdb.MDB_SET_KEY))
- */
-        /*try:*/ {
-          {
-            __Pyx_PyThreadState_declare
-            __Pyx_PyThreadState_assign
-            __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
-            __Pyx_XGOTREF(__pyx_t_9);
-            __Pyx_XGOTREF(__pyx_t_10);
-            __Pyx_XGOTREF(__pyx_t_11);
-            /*try:*/ {
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1047
- *                     # Loop over all context associations for this SPO.
- *                     try:
- *                         _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                             dcur, &spok_v, &ck_v, lmdb.MDB_SET_KEY))
- *                     except KeyNotFoundError:
- */
-              __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_dcur, (&__pyx_v_spok_v), (&__pyx_v_ck_v), MDB_SET_KEY), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1047, __pyx_L51_error)
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1046
- *                     spok_v.mv_data = spok
- *                     # Loop over all context associations for this SPO.
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                             dcur, &spok_v, &ck_v, lmdb.MDB_SET_KEY))
- */
-            }
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1053
- *                         continue
- *                     else:
- *                         ck = <Key>ck_v.mv_data             # <<<<<<<<<<<<<<
- *                         logger.debug(f'Removing {spok[: TRP_KLEN]} from main.')
- *                         while True:
- */
-            /*else:*/ {
-              memcpy(&(__pyx_v_ck[0]), ((unsigned char *)__pyx_v_ck_v.mv_data), sizeof(__pyx_v_ck[0]) * (5));
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1054
- *                     else:
- *                         ck = <Key>ck_v.mv_data
- *                         logger.debug(f'Removing {spok[: TRP_KLEN]} from main.')             # <<<<<<<<<<<<<<
- *                         while True:
- * 
- */
-              __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1054, __pyx_L53_except_error)
-              __Pyx_GOTREF(__pyx_t_2);
-              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1054, __pyx_L53_except_error)
-              __Pyx_GOTREF(__pyx_t_3);
-              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-              __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1054, __pyx_L53_except_error)
-              __Pyx_GOTREF(__pyx_t_2);
-              __pyx_t_18 = 0;
-              __pyx_t_19 = 127;
-              __Pyx_INCREF(__pyx_kp_u_Removing);
-              __pyx_t_18 += 9;
-              __Pyx_GIVEREF(__pyx_kp_u_Removing);
-              PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_Removing);
-              __pyx_t_6 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_spok) + 0, 15 - 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1054, __pyx_L53_except_error)
-              __Pyx_GOTREF(__pyx_t_6);
-              __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1054, __pyx_L53_except_error)
-              __Pyx_GOTREF(__pyx_t_4);
-              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-              __pyx_t_19 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_19) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_19;
-              __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-              __Pyx_GIVEREF(__pyx_t_4);
-              PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4);
-              __pyx_t_4 = 0;
-              __Pyx_INCREF(__pyx_kp_u_from_main);
-              __pyx_t_18 += 11;
-              __Pyx_GIVEREF(__pyx_kp_u_from_main);
-              PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_from_main);
-              __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_18, __pyx_t_19); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1054, __pyx_L53_except_error)
-              __Pyx_GOTREF(__pyx_t_4);
-              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-              __pyx_t_2 = NULL;
-              if (CYTHON_UNPACK_METHODS && unlikely(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_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1054, __pyx_L53_except_error)
-                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-                __Pyx_GOTREF(__pyx_t_1);
-              } else {
-                #if CYTHON_FAST_PYCALL
-                if (PyFunction_Check(__pyx_t_3)) {
-                  PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
-                  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1054, __pyx_L53_except_error)
-                  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-                  __Pyx_GOTREF(__pyx_t_1);
-                  __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_2, __pyx_t_4};
-                  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1054, __pyx_L53_except_error)
-                  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-                  __Pyx_GOTREF(__pyx_t_1);
-                  __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, 1054, __pyx_L53_except_error)
-                  __Pyx_GOTREF(__pyx_t_6);
-                  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
-                  __Pyx_GIVEREF(__pyx_t_4);
-                  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
-                  __pyx_t_4 = 0;
-                  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1054, __pyx_L53_except_error)
-                  __Pyx_GOTREF(__pyx_t_1);
-                  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-                }
-              }
-              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1055
- *                         ck = <Key>ck_v.mv_data
- *                         logger.debug(f'Removing {spok[: TRP_KLEN]} from main.')
- *                         while True:             # <<<<<<<<<<<<<<
- * 
- *                             # Delete c:spo association.
- */
-              while (1) {
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1058
- * 
- *                             # Delete c:spo association.
- *                             try:             # <<<<<<<<<<<<<<
- *                                 _check(lmdb.mdb_cursor_get(
- *                                     icur, &ck_v, &spok_v, lmdb.MDB_GET_BOTH))
- */
-                {
-                  __Pyx_PyThreadState_declare
-                  __Pyx_PyThreadState_assign
-                  __Pyx_ExceptionSave(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
-                  __Pyx_XGOTREF(__pyx_t_15);
-                  __Pyx_XGOTREF(__pyx_t_16);
-                  __Pyx_XGOTREF(__pyx_t_17);
-                  /*try:*/ {
-
-                    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1059
- *                             # Delete c:spo association.
- *                             try:
- *                                 _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                                     icur, &ck_v, &spok_v, lmdb.MDB_GET_BOTH))
- *                             except KeyNotFoundError:
- */
-                    __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_ck_v), (&__pyx_v_spok_v), MDB_GET_BOTH), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1059, __pyx_L61_error)
-
-                    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1058
- * 
- *                             # Delete c:spo association.
- *                             try:             # <<<<<<<<<<<<<<
- *                                 _check(lmdb.mdb_cursor_get(
- *                                     icur, &ck_v, &spok_v, lmdb.MDB_GET_BOTH))
- */
-                  }
-
-                  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1064
- *                                 pass
- *                             else:
- *                                 lmdb.mdb_cursor_del(icur, 0)             # <<<<<<<<<<<<<<
- *                                 # Restore the pointer to the deleted SPO.
- *                                 spok_v.mv_data = spok
- */
-                  /*else:*/ {
-                    (void)(mdb_cursor_del(__pyx_v_icur, 0));
-
-                    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1066
- *                                 lmdb.mdb_cursor_del(icur, 0)
- *                                 # Restore the pointer to the deleted SPO.
- *                                 spok_v.mv_data = spok             # <<<<<<<<<<<<<<
- *                             # Move on to next associated context.
- *                             try:
- */
-                    __pyx_v_spok_v.mv_data = __pyx_v_spok;
-                  }
-                  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-                  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-                  __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-                  goto __pyx_L68_try_end;
-                  __pyx_L61_error:;
-                  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-                  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-                  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-                  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-                  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-                  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1061
- *                                 _check(lmdb.mdb_cursor_get(
- *                                     icur, &ck_v, &spok_v, lmdb.MDB_GET_BOTH))
- *                             except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                                 pass
- *                             else:
- */
-                  __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_3, &__pyx_t_6);
-                  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1061, __pyx_L63_except_error)
-                  __Pyx_GOTREF(__pyx_t_4);
-                  __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_4);
-                  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-                  __Pyx_ErrRestore(__pyx_t_1, __pyx_t_3, __pyx_t_6);
-                  __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_6 = 0;
-                  if (__pyx_t_5) {
-                    __Pyx_ErrRestore(0,0,0);
-                    goto __pyx_L62_exception_handled;
-                  }
-                  goto __pyx_L63_except_error;
-                  __pyx_L63_except_error:;
-
-                  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1058
- * 
- *                             # Delete c:spo association.
- *                             try:             # <<<<<<<<<<<<<<
- *                                 _check(lmdb.mdb_cursor_get(
- *                                     icur, &ck_v, &spok_v, lmdb.MDB_GET_BOTH))
- */
-                  __Pyx_XGIVEREF(__pyx_t_15);
-                  __Pyx_XGIVEREF(__pyx_t_16);
-                  __Pyx_XGIVEREF(__pyx_t_17);
-                  __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
-                  goto __pyx_L53_except_error;
-                  __pyx_L62_exception_handled:;
-                  __Pyx_XGIVEREF(__pyx_t_15);
-                  __Pyx_XGIVEREF(__pyx_t_16);
-                  __Pyx_XGIVEREF(__pyx_t_17);
-                  __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
-                  __pyx_L68_try_end:;
-                }
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1068
- *                                 spok_v.mv_data = spok
- *                             # Move on to next associated context.
- *                             try:             # <<<<<<<<<<<<<<
- *                                 _check(lmdb.mdb_cursor_get(
- *                                     dcur, &spok_v, &ck_v, lmdb.MDB_NEXT_DUP))
- */
-                {
-                  __Pyx_PyThreadState_declare
-                  __Pyx_PyThreadState_assign
-                  __Pyx_ExceptionSave(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
-                  __Pyx_XGOTREF(__pyx_t_17);
-                  __Pyx_XGOTREF(__pyx_t_16);
-                  __Pyx_XGOTREF(__pyx_t_15);
-                  /*try:*/ {
-
-                    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1069
- *                             # Move on to next associated context.
- *                             try:
- *                                 _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                                     dcur, &spok_v, &ck_v, lmdb.MDB_NEXT_DUP))
- *                             except KeyNotFoundError:
- */
-                    __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_dcur, (&__pyx_v_spok_v), (&__pyx_v_ck_v), MDB_NEXT_DUP), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1069, __pyx_L69_error)
-
-                    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1068
- *                                 spok_v.mv_data = spok
- *                             # Move on to next associated context.
- *                             try:             # <<<<<<<<<<<<<<
- *                                 _check(lmdb.mdb_cursor_get(
- *                                     dcur, &spok_v, &ck_v, lmdb.MDB_NEXT_DUP))
- */
-                  }
-                  __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-                  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-                  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-                  goto __pyx_L76_try_end;
-                  __pyx_L69_error:;
-                  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-                  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-                  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-                  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-                  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-
-                  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1071
- *                                 _check(lmdb.mdb_cursor_get(
- *                                     dcur, &spok_v, &ck_v, lmdb.MDB_NEXT_DUP))
- *                             except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                                 break
- *                         # Then delete the spo:c association.
- */
-                  __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_3, &__pyx_t_1);
-                  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1071, __pyx_L71_except_error)
-                  __Pyx_GOTREF(__pyx_t_4);
-                  __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_6, __pyx_t_4);
-                  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-                  __Pyx_ErrRestore(__pyx_t_6, __pyx_t_3, __pyx_t_1);
-                  __pyx_t_6 = 0; __pyx_t_3 = 0; __pyx_t_1 = 0;
-                  if (__pyx_t_5) {
-                    __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._remove", __pyx_clineno, __pyx_lineno, __pyx_filename);
-                    if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_6) < 0) __PYX_ERR(0, 1071, __pyx_L71_except_error)
-                    __Pyx_GOTREF(__pyx_t_1);
-                    __Pyx_GOTREF(__pyx_t_3);
-                    __Pyx_GOTREF(__pyx_t_6);
-
-                    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1072
- *                                     dcur, &spok_v, &ck_v, lmdb.MDB_NEXT_DUP))
- *                             except KeyNotFoundError:
- *                                 break             # <<<<<<<<<<<<<<
- *                         # Then delete the spo:c association.
- *                         try:
- */
-                    goto __pyx_L77_except_break;
-                    __pyx_L77_except_break:;
-                    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-                    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-                    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-                    goto __pyx_L74_try_break;
-                  }
-                  goto __pyx_L71_except_error;
-                  __pyx_L71_except_error:;
-
-                  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1068
- *                                 spok_v.mv_data = spok
- *                             # Move on to next associated context.
- *                             try:             # <<<<<<<<<<<<<<
- *                                 _check(lmdb.mdb_cursor_get(
- *                                     dcur, &spok_v, &ck_v, lmdb.MDB_NEXT_DUP))
- */
-                  __Pyx_XGIVEREF(__pyx_t_17);
-                  __Pyx_XGIVEREF(__pyx_t_16);
-                  __Pyx_XGIVEREF(__pyx_t_15);
-                  __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_16, __pyx_t_15);
-                  goto __pyx_L53_except_error;
-                  __pyx_L74_try_break:;
-                  __Pyx_XGIVEREF(__pyx_t_17);
-                  __Pyx_XGIVEREF(__pyx_t_16);
-                  __Pyx_XGIVEREF(__pyx_t_15);
-                  __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_16, __pyx_t_15);
-                  goto __pyx_L60_break;
-                  __pyx_L76_try_end:;
-                }
-              }
-              __pyx_L60_break:;
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1074
- *                                 break
- *                         # Then delete the spo:c association.
- *                         try:             # <<<<<<<<<<<<<<
- *                             _check(lmdb.mdb_cursor_get(
- *                                 dcur, &spok_v, &ck_v, lmdb.MDB_SET))
- */
-              {
-                __Pyx_PyThreadState_declare
-                __Pyx_PyThreadState_assign
-                __Pyx_ExceptionSave(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
-                __Pyx_XGOTREF(__pyx_t_15);
-                __Pyx_XGOTREF(__pyx_t_16);
-                __Pyx_XGOTREF(__pyx_t_17);
-                /*try:*/ {
-
-                  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1075
- *                         # Then delete the spo:c association.
- *                         try:
- *                             _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                                 dcur, &spok_v, &ck_v, lmdb.MDB_SET))
- *                         except KeyNotFoundError:
- */
-                  __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_dcur, (&__pyx_v_spok_v), (&__pyx_v_ck_v), MDB_SET), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1075, __pyx_L79_error)
-
-                  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1074
- *                                 break
- *                         # Then delete the spo:c association.
- *                         try:             # <<<<<<<<<<<<<<
- *                             _check(lmdb.mdb_cursor_get(
- *                                 dcur, &spok_v, &ck_v, lmdb.MDB_SET))
- */
-                }
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1080
- *                             pass
- *                         else:
- *                             lmdb.mdb_cursor_del(dcur, lmdb.MDB_NODUPDATA)             # <<<<<<<<<<<<<<
- *                             self._index_triple(IDX_OP_REMOVE, spok)
- *                             #ck_v.mv_data = ck # Unnecessary?
- */
-                /*else:*/ {
-                  (void)(mdb_cursor_del(__pyx_v_dcur, MDB_NODUPDATA));
-
-                  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1081
- *                         else:
- *                             lmdb.mdb_cursor_del(dcur, lmdb.MDB_NODUPDATA)
- *                             self._index_triple(IDX_OP_REMOVE, spok)             # <<<<<<<<<<<<<<
- *                             #ck_v.mv_data = ck # Unnecessary?
- *                     finally:
- */
-                  ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_index_triple(__pyx_v_self, __pyx_n_u_idx_remove, __pyx_v_spok); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1081, __pyx_L81_except_error)
-                }
-                __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-                __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-                __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-                goto __pyx_L86_try_end;
-                __pyx_L79_error:;
-                __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-                __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-                __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1077
- *                             _check(lmdb.mdb_cursor_get(
- *                                 dcur, &spok_v, &ck_v, lmdb.MDB_SET))
- *                         except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                             pass
- *                         else:
- */
-                __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_3, &__pyx_t_1);
-                __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1077, __pyx_L81_except_error)
-                __Pyx_GOTREF(__pyx_t_4);
-                __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_6, __pyx_t_4);
-                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-                __Pyx_ErrRestore(__pyx_t_6, __pyx_t_3, __pyx_t_1);
-                __pyx_t_6 = 0; __pyx_t_3 = 0; __pyx_t_1 = 0;
-                if (__pyx_t_5) {
-                  __Pyx_ErrRestore(0,0,0);
-                  goto __pyx_L80_exception_handled;
-                }
-                goto __pyx_L81_except_error;
-                __pyx_L81_except_error:;
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1074
- *                                 break
- *                         # Then delete the spo:c association.
- *                         try:             # <<<<<<<<<<<<<<
- *                             _check(lmdb.mdb_cursor_get(
- *                                 dcur, &spok_v, &ck_v, lmdb.MDB_SET))
- */
-                __Pyx_XGIVEREF(__pyx_t_15);
-                __Pyx_XGIVEREF(__pyx_t_16);
-                __Pyx_XGIVEREF(__pyx_t_17);
-                __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
-                goto __pyx_L53_except_error;
-                __pyx_L80_exception_handled:;
-                __Pyx_XGIVEREF(__pyx_t_15);
-                __Pyx_XGIVEREF(__pyx_t_16);
-                __Pyx_XGIVEREF(__pyx_t_17);
-                __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
-                __pyx_L86_try_end:;
-              }
-            }
-            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-            goto __pyx_L58_try_end;
-            __pyx_L51_error:;
-            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1049
- *                         _check(lmdb.mdb_cursor_get(
- *                             dcur, &spok_v, &ck_v, lmdb.MDB_SET_KEY))
- *                     except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                         # Move on to the next SPO.
- *                         continue
- */
-            __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_3, &__pyx_t_6);
-            __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1049, __pyx_L53_except_error)
-            __Pyx_GOTREF(__pyx_t_4);
-            __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_4);
-            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_3, __pyx_t_6);
-            __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_6 = 0;
-            if (__pyx_t_5) {
-              __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._remove", __pyx_clineno, __pyx_lineno, __pyx_filename);
-              if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_3, &__pyx_t_1) < 0) __PYX_ERR(0, 1049, __pyx_L53_except_error)
-              __Pyx_GOTREF(__pyx_t_6);
-              __Pyx_GOTREF(__pyx_t_3);
-              __Pyx_GOTREF(__pyx_t_1);
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1051
- *                     except KeyNotFoundError:
- *                         # Move on to the next SPO.
- *                         continue             # <<<<<<<<<<<<<<
- *                     else:
- *                         ck = <Key>ck_v.mv_data
- */
-              goto __pyx_L88_except_continue;
-              __pyx_L88_except_continue:;
-              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-              goto __pyx_L57_try_continue;
-            }
-            goto __pyx_L53_except_error;
-            __pyx_L53_except_error:;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1046
- *                     spok_v.mv_data = spok
- *                     # Loop over all context associations for this SPO.
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                             dcur, &spok_v, &ck_v, lmdb.MDB_SET_KEY))
- */
-            __Pyx_XGIVEREF(__pyx_t_9);
-            __Pyx_XGIVEREF(__pyx_t_10);
-            __Pyx_XGIVEREF(__pyx_t_11);
-            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-            goto __pyx_L49_error;
-            __pyx_L57_try_continue:;
-            __Pyx_XGIVEREF(__pyx_t_9);
-            __Pyx_XGIVEREF(__pyx_t_10);
-            __Pyx_XGIVEREF(__pyx_t_11);
-            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-            goto __pyx_L46_continue;
-            __pyx_L58_try_end:;
-          }
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1084
- *                             #ck_v.mv_data = ck # Unnecessary?
- *                     finally:
- *                         i += 1             # <<<<<<<<<<<<<<
- * 
- *         finally:
- */
-        /*finally:*/ {
-          /*normal exit:*/{
-            __pyx_v_i = (__pyx_v_i + 1);
-            goto __pyx_L50;
-          }
-          __pyx_L49_error:;
-          /*exception exit:*/{
-            __Pyx_PyThreadState_declare
-            __Pyx_PyThreadState_assign
-            __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_9 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0;
-            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
-            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
-            __Pyx_XGOTREF(__pyx_t_11);
-            __Pyx_XGOTREF(__pyx_t_10);
-            __Pyx_XGOTREF(__pyx_t_9);
-            __Pyx_XGOTREF(__pyx_t_17);
-            __Pyx_XGOTREF(__pyx_t_16);
-            __Pyx_XGOTREF(__pyx_t_15);
-            __pyx_t_5 = __pyx_lineno; __pyx_t_20 = __pyx_clineno; __pyx_t_21 = __pyx_filename;
-            {
-              __pyx_v_i = (__pyx_v_i + 1);
-            }
-            if (PY_MAJOR_VERSION >= 3) {
-              __Pyx_XGIVEREF(__pyx_t_17);
-              __Pyx_XGIVEREF(__pyx_t_16);
-              __Pyx_XGIVEREF(__pyx_t_15);
-              __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_16, __pyx_t_15);
-            }
-            __Pyx_XGIVEREF(__pyx_t_11);
-            __Pyx_XGIVEREF(__pyx_t_10);
-            __Pyx_XGIVEREF(__pyx_t_9);
-            __Pyx_ErrRestore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-            __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_9 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0;
-            __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_20; __pyx_filename = __pyx_t_21;
-            goto __pyx_L13_error;
-          }
-          __pyx_L46_continue: {
-            __pyx_v_i = (__pyx_v_i + 1);
-            goto __pyx_L44_continue;
-          }
-          __pyx_L50:;
-        }
-        __pyx_L44_continue:;
-      }
-    }
-    __pyx_L15:;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1089
- *             #pass
- *             #logger.debug('Closing spo:c in _remove.')
- *             self._cur_close(dcur)             # <<<<<<<<<<<<<<
- *             #logger.debug('Closing c:spo in _remove.')
- *             self._cur_close(icur)
- */
-  /*finally:*/ {
-    /*normal exit:*/{
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_dcur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1089, __pyx_L1_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1091
- *             self._cur_close(dcur)
- *             #logger.debug('Closing c:spo in _remove.')
- *             self._cur_close(icur)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1091, __pyx_L1_error)
-      goto __pyx_L14;
-    }
-    __pyx_L13_error:;
-    /*exception exit:*/{
-      __Pyx_PyThreadState_declare
-      __Pyx_PyThreadState_assign
-      __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
-      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
-      __Pyx_XGOTREF(__pyx_t_15);
-      __Pyx_XGOTREF(__pyx_t_16);
-      __Pyx_XGOTREF(__pyx_t_17);
-      __Pyx_XGOTREF(__pyx_t_9);
-      __Pyx_XGOTREF(__pyx_t_10);
-      __Pyx_XGOTREF(__pyx_t_11);
-      __pyx_t_20 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_22 = __pyx_filename;
-      {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1089
- *             #pass
- *             #logger.debug('Closing spo:c in _remove.')
- *             self._cur_close(dcur)             # <<<<<<<<<<<<<<
- *             #logger.debug('Closing c:spo in _remove.')
- *             self._cur_close(icur)
- */
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_dcur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1089, __pyx_L94_error)
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1091
- *             self._cur_close(dcur)
- *             #logger.debug('Closing c:spo in _remove.')
- *             self._cur_close(icur)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1091, __pyx_L94_error)
-      }
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_9);
-        __Pyx_XGIVEREF(__pyx_t_10);
-        __Pyx_XGIVEREF(__pyx_t_11);
-        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-      }
-      __Pyx_XGIVEREF(__pyx_t_15);
-      __Pyx_XGIVEREF(__pyx_t_16);
-      __Pyx_XGIVEREF(__pyx_t_17);
-      __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
-      __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
-      __pyx_lineno = __pyx_t_20; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_22;
-      goto __pyx_L1_error;
-      __pyx_L94_error:;
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_9);
-        __Pyx_XGIVEREF(__pyx_t_10);
-        __Pyx_XGIVEREF(__pyx_t_11);
-        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-      }
-      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-      __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
-      goto __pyx_L1_error;
-    }
-    __pyx_L14:;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":973
- * 
- * 
- *     cpdef void _remove(self, tuple triple_pattern, context=None) except *:             # <<<<<<<<<<<<<<
- *         cdef:
- *             unsigned char spok[TRP_KLEN]
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __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_6);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._remove", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_match_set);
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_11_remove(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_11_remove(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_triple_pattern = 0;
-  PyObject *__pyx_v_context = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("_remove (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_triple_pattern,&__pyx_n_s_context,0};
-    PyObject* values[2] = {0,0};
-    values[1] = ((PyObject *)Py_None);
-    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] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_triple_pattern)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_context);
-          if (value) { values[1] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_remove") < 0)) __PYX_ERR(0, 973, __pyx_L3_error)
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        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;
-      }
-    }
-    __pyx_v_triple_pattern = ((PyObject*)values[0]);
-    __pyx_v_context = values[1];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("_remove", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 973, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._remove", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_triple_pattern), (&PyTuple_Type), 1, "triple_pattern", 1))) __PYX_ERR(0, 973, __pyx_L1_error)
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_10_remove(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self), __pyx_v_triple_pattern, __pyx_v_context);
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_10_remove(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple_pattern, PyObject *__pyx_v_context) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__remove __pyx_t_1;
-  PyObject *__pyx_t_2 = NULL;
-  __Pyx_RefNannySetupContext("_remove", 0);
-  __Pyx_TraceCall("_remove (wrapper)", __pyx_f[0], 973, 0, __PYX_ERR(0, 973, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1.__pyx_n = 1;
-  __pyx_t_1.context = __pyx_v_context;
-  __pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore->_remove(__pyx_v_self, __pyx_v_triple_pattern, 1, &__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 973, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 973, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._remove", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1094
- * 
- * 
- *     cdef void _index_triple(self, str op, TripleKey spok) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Update index for a triple and context (add or remove).
- */
-
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__index_triple(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_op, unsigned char *__pyx_v_spok) {
-  unsigned char __pyx_v_keys[3][5];
-  unsigned char __pyx_v_dbl_keys[3][10];
-  size_t __pyx_v_i;
-  struct MDB_val __pyx_v_key_v;
-  struct MDB_val __pyx_v_dbl_key_v;
-  MDB_cursor *__pyx_v_cur1;
-  MDB_cursor *__pyx_v_cur2;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  Py_ssize_t __pyx_t_6;
-  Py_UCS4 __pyx_t_7;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  unsigned char *__pyx_t_10;
-  MDB_cursor *__pyx_t_11;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open __pyx_t_12;
-  size_t __pyx_t_13;
-  PyObject *__pyx_t_14 = NULL;
-  PyObject *__pyx_t_15 = NULL;
-  PyObject *__pyx_t_16 = NULL;
-  int __pyx_t_17;
-  PyObject *__pyx_t_18 = NULL;
-  PyObject *__pyx_t_19 = NULL;
-  PyObject *__pyx_t_20 = NULL;
-  PyObject *__pyx_t_21 = NULL;
-  int __pyx_t_22;
-  char const *__pyx_t_23;
-  PyObject *__pyx_t_24 = NULL;
-  PyObject *__pyx_t_25 = NULL;
-  PyObject *__pyx_t_26 = NULL;
-  __Pyx_RefNannySetupContext("_index_triple", 0);
-  __Pyx_TraceCall("_index_triple", __pyx_f[0], 1094, 0, __PYX_ERR(0, 1094, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1104
- *             unsigned char keys[3][KLEN]
- *             unsigned char dbl_keys[3][DBL_KLEN]
- *             size_t i = 0             # <<<<<<<<<<<<<<
- *             lmdb.MDB_val key_v, dbl_key_v
- * 
- */
-  __pyx_v_i = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1107
- *             lmdb.MDB_val key_v, dbl_key_v
- * 
- *         keys[0] = spok # sk             # <<<<<<<<<<<<<<
- *         keys[1] = spok + KLEN # pk
- *         keys[2] = spok + DBL_KLEN # ok
- */
-  memcpy(&((__pyx_v_keys[0])[0]), __pyx_v_spok, sizeof((__pyx_v_keys[0])[0]) * (5 - 0));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1108
- * 
- *         keys[0] = spok # sk
- *         keys[1] = spok + KLEN # pk             # <<<<<<<<<<<<<<
- *         keys[2] = spok + DBL_KLEN # ok
- * 
- */
-  memcpy(&((__pyx_v_keys[1])[0]), (__pyx_v_spok + 5), sizeof((__pyx_v_keys[1])[0]) * (5 - 0));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1109
- *         keys[0] = spok # sk
- *         keys[1] = spok + KLEN # pk
- *         keys[2] = spok + DBL_KLEN # ok             # <<<<<<<<<<<<<<
- * 
- *         dbl_keys[0] = spok + KLEN # pok
- */
-  memcpy(&((__pyx_v_keys[2])[0]), (__pyx_v_spok + 10), sizeof((__pyx_v_keys[2])[0]) * (5 - 0));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1111
- *         keys[2] = spok + DBL_KLEN # ok
- * 
- *         dbl_keys[0] = spok + KLEN # pok             # <<<<<<<<<<<<<<
- *         memcpy(&dbl_keys[1], spok, KLEN) # sok, 1st part
- *         memcpy(&dbl_keys[1][KLEN], spok + DBL_KLEN, KLEN) # sok, 2nd part
- */
-  memcpy(&((__pyx_v_dbl_keys[0])[0]), (__pyx_v_spok + 5), sizeof((__pyx_v_dbl_keys[0])[0]) * (10 - 0));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1112
- * 
- *         dbl_keys[0] = spok + KLEN # pok
- *         memcpy(&dbl_keys[1], spok, KLEN) # sok, 1st part             # <<<<<<<<<<<<<<
- *         memcpy(&dbl_keys[1][KLEN], spok + DBL_KLEN, KLEN) # sok, 2nd part
- *         dbl_keys[2] = spok # spk
- */
-  (void)(memcpy((&(__pyx_v_dbl_keys[1])), __pyx_v_spok, 5));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1113
- *         dbl_keys[0] = spok + KLEN # pok
- *         memcpy(&dbl_keys[1], spok, KLEN) # sok, 1st part
- *         memcpy(&dbl_keys[1][KLEN], spok + DBL_KLEN, KLEN) # sok, 2nd part             # <<<<<<<<<<<<<<
- *         dbl_keys[2] = spok # spk
- *         #logger.debug('''Indices:
- */
-  (void)(memcpy((&((__pyx_v_dbl_keys[1])[5])), (__pyx_v_spok + 10), 5));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1114
- *         memcpy(&dbl_keys[1], spok, KLEN) # sok, 1st part
- *         memcpy(&dbl_keys[1][KLEN], spok + DBL_KLEN, KLEN) # sok, 2nd part
- *         dbl_keys[2] = spok # spk             # <<<<<<<<<<<<<<
- *         #logger.debug('''Indices:
- *         #spok: {}
- */
-  memcpy(&((__pyx_v_dbl_keys[2])[0]), __pyx_v_spok, sizeof((__pyx_v_dbl_keys[2])[0]) * (10 - 0));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1127
- *         #        keys[0][:KLEN], keys[1][:KLEN], keys[2][:KLEN],
- *         #        dbl_keys[0][:DBL_KLEN], dbl_keys[1][:DBL_KLEN], dbl_keys[2][:DBL_KLEN]))
- *         key_v.mv_size = KLEN             # <<<<<<<<<<<<<<
- *         dbl_key_v.mv_size = DBL_KLEN
- * 
- */
-  __pyx_v_key_v.mv_size = 5;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1128
- *         #        dbl_keys[0][:DBL_KLEN], dbl_keys[1][:DBL_KLEN], dbl_keys[2][:DBL_KLEN]))
- *         key_v.mv_size = KLEN
- *         dbl_key_v.mv_size = DBL_KLEN             # <<<<<<<<<<<<<<
- * 
- *         #logger.debug('Start indexing: {}.'.format(spok[: TRP_KLEN]))
- */
-  __pyx_v_dbl_key_v.mv_size = 10;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1131
- * 
- *         #logger.debug('Start indexing: {}.'.format(spok[: TRP_KLEN]))
- *         if op == IDX_OP_REMOVE:             # <<<<<<<<<<<<<<
- *             logger.debug(f'Remove {spok[ : TRP_KLEN]} from indices.')
- *         else:
- */
-  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_op, __pyx_n_u_idx_remove, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1131, __pyx_L1_error)
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1132
- *         #logger.debug('Start indexing: {}.'.format(spok[: TRP_KLEN]))
- *         if op == IDX_OP_REMOVE:
- *             logger.debug(f'Remove {spok[ : TRP_KLEN]} from indices.')             # <<<<<<<<<<<<<<
- *         else:
- *             logger.debug(f'Add {spok[ : TRP_KLEN]} to indices.')
- */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1132, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_debug); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1132, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1132, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_6 = 0;
-    __pyx_t_7 = 127;
-    __Pyx_INCREF(__pyx_kp_u_Remove);
-    __pyx_t_6 += 7;
-    __Pyx_GIVEREF(__pyx_kp_u_Remove);
-    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_Remove);
-    __pyx_t_8 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_spok) + 0, 15 - 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1132, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1132, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_9);
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_7;
-    __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9);
-    __Pyx_GIVEREF(__pyx_t_9);
-    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_9);
-    __pyx_t_9 = 0;
-    __Pyx_INCREF(__pyx_kp_u_from_indices);
-    __pyx_t_6 += 14;
-    __Pyx_GIVEREF(__pyx_kp_u_from_indices);
-    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u_from_indices);
-    __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1132, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_9);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = NULL;
-    if (CYTHON_UNPACK_METHODS && unlikely(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_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1132, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_5)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_9};
-        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1132, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_9};
-        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1132, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1132, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_8);
-        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
-        __Pyx_GIVEREF(__pyx_t_9);
-        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_9);
-        __pyx_t_9 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1132, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1131
- * 
- *         #logger.debug('Start indexing: {}.'.format(spok[: TRP_KLEN]))
- *         if op == IDX_OP_REMOVE:             # <<<<<<<<<<<<<<
- *             logger.debug(f'Remove {spok[ : TRP_KLEN]} from indices.')
- *         else:
- */
-    goto __pyx_L3;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1134
- *             logger.debug(f'Remove {spok[ : TRP_KLEN]} from indices.')
- *         else:
- *             logger.debug(f'Add {spok[ : TRP_KLEN]} to indices.')             # <<<<<<<<<<<<<<
- * 
- *         while i < 3:
- */
-  /*else*/ {
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1134, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_debug); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1134, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1134, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = 0;
-    __pyx_t_7 = 127;
-    __Pyx_INCREF(__pyx_kp_u_Add);
-    __pyx_t_6 += 4;
-    __Pyx_GIVEREF(__pyx_kp_u_Add);
-    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_Add);
-    __pyx_t_9 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_spok) + 0, 15 - 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1134, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_9);
-    __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_9, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1134, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7;
-    __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_4);
-    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
-    __pyx_t_4 = 0;
-    __Pyx_INCREF(__pyx_kp_u_to_indices);
-    __pyx_t_6 += 12;
-    __Pyx_GIVEREF(__pyx_kp_u_to_indices);
-    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u_to_indices);
-    __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1134, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_8, function);
-      }
-    }
-    if (!__pyx_t_5) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1134, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_8)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
-        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1134, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
-        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1134, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1134, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_9);
-        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL;
-        __Pyx_GIVEREF(__pyx_t_4);
-        PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_4);
-        __pyx_t_4 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1134, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  }
-  __pyx_L3:;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1136
- *             logger.debug(f'Add {spok[ : TRP_KLEN]} to indices.')
- * 
- *         while i < 3:             # <<<<<<<<<<<<<<
- *             cur1 = self._cur_open(self.lookup_indices[i]) # s:po, p:so, o:sp
- *             cur2 = self._cur_open(self.lookup_indices[i + 3])# po:s, so:p, sp:o
- */
-  while (1) {
-    __pyx_t_2 = ((__pyx_v_i < 3) != 0);
-    if (!__pyx_t_2) break;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1137
- * 
- *         while i < 3:
- *             cur1 = self._cur_open(self.lookup_indices[i]) # s:po, p:so, o:sp             # <<<<<<<<<<<<<<
- *             cur2 = self._cur_open(self.lookup_indices[i + 3])# po:s, so:p, sp:o
- *             try:
- */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup_indices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1137, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_3, __pyx_v_i, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1137, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_10 = __Pyx_PyObject_AsWritableUString(__pyx_t_8); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 1137, __pyx_L1_error)
-    __pyx_t_12.__pyx_n = 1;
-    __pyx_t_12.dblabel = __pyx_t_10;
-    __pyx_t_11 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_12); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1137, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_v_cur1 = __pyx_t_11;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1138
- *         while i < 3:
- *             cur1 = self._cur_open(self.lookup_indices[i]) # s:po, p:so, o:sp
- *             cur2 = self._cur_open(self.lookup_indices[i + 3])# po:s, so:p, sp:o             # <<<<<<<<<<<<<<
- *             try:
- *                 key_v.mv_data = keys[i]
- */
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup_indices); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1138, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_13 = (__pyx_v_i + 3);
-    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_8, __pyx_t_13, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1138, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_t_10 = __Pyx_PyObject_AsWritableUString(__pyx_t_3); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 1138, __pyx_L1_error)
-    __pyx_t_12.__pyx_n = 1;
-    __pyx_t_12.dblabel = __pyx_t_10;
-    __pyx_t_11 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_12); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1138, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_v_cur2 = __pyx_t_11;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1139
- *             cur1 = self._cur_open(self.lookup_indices[i]) # s:po, p:so, o:sp
- *             cur2 = self._cur_open(self.lookup_indices[i + 3])# po:s, so:p, sp:o
- *             try:             # <<<<<<<<<<<<<<
- *                 key_v.mv_data = keys[i]
- *                 dbl_key_v.mv_data = dbl_keys[i]
- */
-    /*try:*/ {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1140
- *             cur2 = self._cur_open(self.lookup_indices[i + 3])# po:s, so:p, sp:o
- *             try:
- *                 key_v.mv_data = keys[i]             # <<<<<<<<<<<<<<
- *                 dbl_key_v.mv_data = dbl_keys[i]
- * 
- */
-      __pyx_v_key_v.mv_data = (__pyx_v_keys[__pyx_v_i]);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1141
- *             try:
- *                 key_v.mv_data = keys[i]
- *                 dbl_key_v.mv_data = dbl_keys[i]             # <<<<<<<<<<<<<<
- * 
- *                 # Removal op indexing.
- */
-      __pyx_v_dbl_key_v.mv_data = (__pyx_v_dbl_keys[__pyx_v_i]);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1144
- * 
- *                 # Removal op indexing.
- *                 if op == IDX_OP_REMOVE:             # <<<<<<<<<<<<<<
- *                     try:
- *                         _check(lmdb.mdb_cursor_get(
- */
-      __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_op, __pyx_n_u_idx_remove, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1144, __pyx_L9_error)
-      __pyx_t_1 = (__pyx_t_2 != 0);
-      if (__pyx_t_1) {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1145
- *                 # Removal op indexing.
- *                 if op == IDX_OP_REMOVE:
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                                 cur1, &key_v, &dbl_key_v, lmdb.MDB_GET_BOTH))
- */
-        {
-          __Pyx_PyThreadState_declare
-          __Pyx_PyThreadState_assign
-          __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
-          __Pyx_XGOTREF(__pyx_t_14);
-          __Pyx_XGOTREF(__pyx_t_15);
-          __Pyx_XGOTREF(__pyx_t_16);
-          /*try:*/ {
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1146
- *                 if op == IDX_OP_REMOVE:
- *                     try:
- *                         _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                                 cur1, &key_v, &dbl_key_v, lmdb.MDB_GET_BOTH))
- *                         logger.debug(f'Removed: {keys[i][: KLEN]}, '
- */
-            __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_cur1, (&__pyx_v_key_v), (&__pyx_v_dbl_key_v), MDB_GET_BOTH), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1146, __pyx_L12_error)
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1148
- *                         _check(lmdb.mdb_cursor_get(
- *                                 cur1, &key_v, &dbl_key_v, lmdb.MDB_GET_BOTH))
- *                         logger.debug(f'Removed: {keys[i][: KLEN]}, '             # <<<<<<<<<<<<<<
- *                                 f'{dbl_keys[i][: DBL_KLEN]}')
- *                     except KeyNotFoundError:
- */
-            __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1148, __pyx_L12_error)
-            __Pyx_GOTREF(__pyx_t_8);
-            __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_debug); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1148, __pyx_L12_error)
-            __Pyx_GOTREF(__pyx_t_9);
-            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-            __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1148, __pyx_L12_error)
-            __Pyx_GOTREF(__pyx_t_8);
-            __pyx_t_6 = 0;
-            __pyx_t_7 = 127;
-            __Pyx_INCREF(__pyx_kp_u_Removed);
-            __pyx_t_6 += 9;
-            __Pyx_GIVEREF(__pyx_kp_u_Removed);
-            PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_u_Removed);
-            __pyx_t_4 = __Pyx_PyBytes_FromStringAndSize(((const char*)(__pyx_v_keys[__pyx_v_i])) + 0, 5 - 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1148, __pyx_L12_error)
-            __Pyx_GOTREF(__pyx_t_4);
-            __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1148, __pyx_L12_error)
-            __Pyx_GOTREF(__pyx_t_5);
-            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_7;
-            __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
-            __Pyx_GIVEREF(__pyx_t_5);
-            PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_5);
-            __pyx_t_5 = 0;
-            __Pyx_INCREF(__pyx_kp_u__12);
-            __pyx_t_6 += 2;
-            __Pyx_GIVEREF(__pyx_kp_u__12);
-            PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_kp_u__12);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1149
- *                                 cur1, &key_v, &dbl_key_v, lmdb.MDB_GET_BOTH))
- *                         logger.debug(f'Removed: {keys[i][: KLEN]}, '
- *                                 f'{dbl_keys[i][: DBL_KLEN]}')             # <<<<<<<<<<<<<<
- *                     except KeyNotFoundError:
- *                         logger.debug(f'Not found in index: {keys[i][: KLEN]}, '
- */
-            __pyx_t_5 = __Pyx_PyBytes_FromStringAndSize(((const char*)(__pyx_v_dbl_keys[__pyx_v_i])) + 0, 10 - 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1149, __pyx_L12_error)
-            __Pyx_GOTREF(__pyx_t_5);
-            __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1149, __pyx_L12_error)
-            __Pyx_GOTREF(__pyx_t_4);
-            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-            __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7;
-            __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-            __Pyx_GIVEREF(__pyx_t_4);
-            PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_4);
-            __pyx_t_4 = 0;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1148
- *                         _check(lmdb.mdb_cursor_get(
- *                                 cur1, &key_v, &dbl_key_v, lmdb.MDB_GET_BOTH))
- *                         logger.debug(f'Removed: {keys[i][: KLEN]}, '             # <<<<<<<<<<<<<<
- *                                 f'{dbl_keys[i][: DBL_KLEN]}')
- *                     except KeyNotFoundError:
- */
-            __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_8, 4, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1148, __pyx_L12_error)
-            __Pyx_GOTREF(__pyx_t_4);
-            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-            __pyx_t_8 = NULL;
-            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
-              __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
-              if (likely(__pyx_t_8)) {
-                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
-                __Pyx_INCREF(__pyx_t_8);
-                __Pyx_INCREF(function);
-                __Pyx_DECREF_SET(__pyx_t_9, function);
-              }
-            }
-            if (!__pyx_t_8) {
-              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1148, __pyx_L12_error)
-              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-              __Pyx_GOTREF(__pyx_t_3);
-            } else {
-              #if CYTHON_FAST_PYCALL
-              if (PyFunction_Check(__pyx_t_9)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_4};
-                __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1148, __pyx_L12_error)
-                __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-                __Pyx_GOTREF(__pyx_t_3);
-                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-              } else
-              #endif
-              #if CYTHON_FAST_PYCCALL
-              if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_4};
-                __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1148, __pyx_L12_error)
-                __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-                __Pyx_GOTREF(__pyx_t_3);
-                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-              } else
-              #endif
-              {
-                __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1148, __pyx_L12_error)
-                __Pyx_GOTREF(__pyx_t_5);
-                __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
-                __Pyx_GIVEREF(__pyx_t_4);
-                PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
-                __pyx_t_4 = 0;
-                __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1148, __pyx_L12_error)
-                __Pyx_GOTREF(__pyx_t_3);
-                __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-              }
-            }
-            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1145
- *                 # Removal op indexing.
- *                 if op == IDX_OP_REMOVE:
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                                 cur1, &key_v, &dbl_key_v, lmdb.MDB_GET_BOTH))
- */
-          }
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1155
- *                         pass
- *                     else:
- *                         _check(lmdb.mdb_cursor_del(cur1, 0))             # <<<<<<<<<<<<<<
- * 
- *                     # Restore pointers after delete.
- */
-          /*else:*/ {
-            __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_del(__pyx_v_cur1, 0), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1155, __pyx_L14_except_error)
-          }
-          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-          goto __pyx_L19_try_end;
-          __pyx_L12_error:;
-          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1150
- *                         logger.debug(f'Removed: {keys[i][: KLEN]}, '
- *                                 f'{dbl_keys[i][: DBL_KLEN]}')
- *                     except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                         logger.debug(f'Not found in index: {keys[i][: KLEN]}, '
- *                                 f'{dbl_keys[i][: DBL_KLEN]}')
- */
-          __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_9, &__pyx_t_5);
-          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1150, __pyx_L14_except_error)
-          __Pyx_GOTREF(__pyx_t_4);
-          __pyx_t_17 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_4);
-          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_ErrRestore(__pyx_t_3, __pyx_t_9, __pyx_t_5);
-          __pyx_t_3 = 0; __pyx_t_9 = 0; __pyx_t_5 = 0;
-          if (__pyx_t_17) {
-            __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._index_triple", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_9, &__pyx_t_3) < 0) __PYX_ERR(0, 1150, __pyx_L14_except_error)
-            __Pyx_GOTREF(__pyx_t_5);
-            __Pyx_GOTREF(__pyx_t_9);
-            __Pyx_GOTREF(__pyx_t_3);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1151
- *                                 f'{dbl_keys[i][: DBL_KLEN]}')
- *                     except KeyNotFoundError:
- *                         logger.debug(f'Not found in index: {keys[i][: KLEN]}, '             # <<<<<<<<<<<<<<
- *                                 f'{dbl_keys[i][: DBL_KLEN]}')
- *                         pass
- */
-            __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1151, __pyx_L14_except_error)
-            __Pyx_GOTREF(__pyx_t_8);
-            __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_debug); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1151, __pyx_L14_except_error)
-            __Pyx_GOTREF(__pyx_t_18);
-            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-            __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1151, __pyx_L14_except_error)
-            __Pyx_GOTREF(__pyx_t_8);
-            __pyx_t_6 = 0;
-            __pyx_t_7 = 127;
-            __Pyx_INCREF(__pyx_kp_u_Not_found_in_index);
-            __pyx_t_6 += 20;
-            __Pyx_GIVEREF(__pyx_kp_u_Not_found_in_index);
-            PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_u_Not_found_in_index);
-            __pyx_t_19 = __Pyx_PyBytes_FromStringAndSize(((const char*)(__pyx_v_keys[__pyx_v_i])) + 0, 5 - 0); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1151, __pyx_L14_except_error)
-            __Pyx_GOTREF(__pyx_t_19);
-            __pyx_t_20 = __Pyx_PyObject_FormatSimple(__pyx_t_19, __pyx_empty_unicode); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1151, __pyx_L14_except_error)
-            __Pyx_GOTREF(__pyx_t_20);
-            __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-            __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_20) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_20) : __pyx_t_7;
-            __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_20);
-            __Pyx_GIVEREF(__pyx_t_20);
-            PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_20);
-            __pyx_t_20 = 0;
-            __Pyx_INCREF(__pyx_kp_u__12);
-            __pyx_t_6 += 2;
-            __Pyx_GIVEREF(__pyx_kp_u__12);
-            PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_kp_u__12);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1152
- *                     except KeyNotFoundError:
- *                         logger.debug(f'Not found in index: {keys[i][: KLEN]}, '
- *                                 f'{dbl_keys[i][: DBL_KLEN]}')             # <<<<<<<<<<<<<<
- *                         pass
- *                     else:
- */
-            __pyx_t_20 = __Pyx_PyBytes_FromStringAndSize(((const char*)(__pyx_v_dbl_keys[__pyx_v_i])) + 0, 10 - 0); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1152, __pyx_L14_except_error)
-            __Pyx_GOTREF(__pyx_t_20);
-            __pyx_t_19 = __Pyx_PyObject_FormatSimple(__pyx_t_20, __pyx_empty_unicode); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1152, __pyx_L14_except_error)
-            __Pyx_GOTREF(__pyx_t_19);
-            __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-            __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_19) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_19) : __pyx_t_7;
-            __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_19);
-            __Pyx_GIVEREF(__pyx_t_19);
-            PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_19);
-            __pyx_t_19 = 0;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1151
- *                                 f'{dbl_keys[i][: DBL_KLEN]}')
- *                     except KeyNotFoundError:
- *                         logger.debug(f'Not found in index: {keys[i][: KLEN]}, '             # <<<<<<<<<<<<<<
- *                                 f'{dbl_keys[i][: DBL_KLEN]}')
- *                         pass
- */
-            __pyx_t_19 = __Pyx_PyUnicode_Join(__pyx_t_8, 4, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1151, __pyx_L14_except_error)
-            __Pyx_GOTREF(__pyx_t_19);
-            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-            __pyx_t_8 = NULL;
-            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_18))) {
-              __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_18);
-              if (likely(__pyx_t_8)) {
-                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_18);
-                __Pyx_INCREF(__pyx_t_8);
-                __Pyx_INCREF(function);
-                __Pyx_DECREF_SET(__pyx_t_18, function);
-              }
-            }
-            if (!__pyx_t_8) {
-              __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_18, __pyx_t_19); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1151, __pyx_L14_except_error)
-              __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-              __Pyx_GOTREF(__pyx_t_4);
-            } else {
-              #if CYTHON_FAST_PYCALL
-              if (PyFunction_Check(__pyx_t_18)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_19};
-                __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_18, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1151, __pyx_L14_except_error)
-                __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-                __Pyx_GOTREF(__pyx_t_4);
-                __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-              } else
-              #endif
-              #if CYTHON_FAST_PYCCALL
-              if (__Pyx_PyFastCFunction_Check(__pyx_t_18)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_19};
-                __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_18, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1151, __pyx_L14_except_error)
-                __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-                __Pyx_GOTREF(__pyx_t_4);
-                __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-              } else
-              #endif
-              {
-                __pyx_t_20 = PyTuple_New(1+1); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1151, __pyx_L14_except_error)
-                __Pyx_GOTREF(__pyx_t_20);
-                __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_20, 0, __pyx_t_8); __pyx_t_8 = NULL;
-                __Pyx_GIVEREF(__pyx_t_19);
-                PyTuple_SET_ITEM(__pyx_t_20, 0+1, __pyx_t_19);
-                __pyx_t_19 = 0;
-                __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_18, __pyx_t_20, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1151, __pyx_L14_except_error)
-                __Pyx_GOTREF(__pyx_t_4);
-                __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-              }
-            }
-            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            goto __pyx_L13_exception_handled;
-          }
-          goto __pyx_L14_except_error;
-          __pyx_L14_except_error:;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1145
- *                 # Removal op indexing.
- *                 if op == IDX_OP_REMOVE:
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                                 cur1, &key_v, &dbl_key_v, lmdb.MDB_GET_BOTH))
- */
-          __Pyx_XGIVEREF(__pyx_t_14);
-          __Pyx_XGIVEREF(__pyx_t_15);
-          __Pyx_XGIVEREF(__pyx_t_16);
-          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
-          goto __pyx_L9_error;
-          __pyx_L13_exception_handled:;
-          __Pyx_XGIVEREF(__pyx_t_14);
-          __Pyx_XGIVEREF(__pyx_t_15);
-          __Pyx_XGIVEREF(__pyx_t_16);
-          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
-          __pyx_L19_try_end:;
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1158
- * 
- *                     # Restore pointers after delete.
- *                     key_v.mv_data = keys[i]             # <<<<<<<<<<<<<<
- *                     dbl_key_v.mv_data = dbl_keys[i]
- *                     try:
- */
-        __pyx_v_key_v.mv_data = (__pyx_v_keys[__pyx_v_i]);
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1159
- *                     # Restore pointers after delete.
- *                     key_v.mv_data = keys[i]
- *                     dbl_key_v.mv_data = dbl_keys[i]             # <<<<<<<<<<<<<<
- *                     try:
- *                         _check(lmdb.mdb_cursor_get(
- */
-        __pyx_v_dbl_key_v.mv_data = (__pyx_v_dbl_keys[__pyx_v_i]);
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1160
- *                     key_v.mv_data = keys[i]
- *                     dbl_key_v.mv_data = dbl_keys[i]
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                                 cur2, &dbl_key_v, &key_v, lmdb.MDB_GET_BOTH))
- */
-        {
-          __Pyx_PyThreadState_declare
-          __Pyx_PyThreadState_assign
-          __Pyx_ExceptionSave(&__pyx_t_16, &__pyx_t_15, &__pyx_t_14);
-          __Pyx_XGOTREF(__pyx_t_16);
-          __Pyx_XGOTREF(__pyx_t_15);
-          __Pyx_XGOTREF(__pyx_t_14);
-          /*try:*/ {
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1161
- *                     dbl_key_v.mv_data = dbl_keys[i]
- *                     try:
- *                         _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                                 cur2, &dbl_key_v, &key_v, lmdb.MDB_GET_BOTH))
- *                         logger.debug(f'Removed: {dbl_keys[i][: DBL_KLEN]}, '
- */
-            __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_cur2, (&__pyx_v_dbl_key_v), (&__pyx_v_key_v), MDB_GET_BOTH), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1161, __pyx_L22_error)
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1163
- *                         _check(lmdb.mdb_cursor_get(
- *                                 cur2, &dbl_key_v, &key_v, lmdb.MDB_GET_BOTH))
- *                         logger.debug(f'Removed: {dbl_keys[i][: DBL_KLEN]}, '             # <<<<<<<<<<<<<<
- *                                 f'{keys[i][: KLEN]}')
- *                     except KeyNotFoundError:
- */
-            __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1163, __pyx_L22_error)
-            __Pyx_GOTREF(__pyx_t_9);
-            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_debug); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1163, __pyx_L22_error)
-            __Pyx_GOTREF(__pyx_t_5);
-            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-            __pyx_t_9 = PyTuple_New(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1163, __pyx_L22_error)
-            __Pyx_GOTREF(__pyx_t_9);
-            __pyx_t_6 = 0;
-            __pyx_t_7 = 127;
-            __Pyx_INCREF(__pyx_kp_u_Removed);
-            __pyx_t_6 += 9;
-            __Pyx_GIVEREF(__pyx_kp_u_Removed);
-            PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_kp_u_Removed);
-            __pyx_t_4 = __Pyx_PyBytes_FromStringAndSize(((const char*)(__pyx_v_dbl_keys[__pyx_v_i])) + 0, 10 - 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1163, __pyx_L22_error)
-            __Pyx_GOTREF(__pyx_t_4);
-            __pyx_t_18 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_empty_unicode); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1163, __pyx_L22_error)
-            __Pyx_GOTREF(__pyx_t_18);
-            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_18) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_18) : __pyx_t_7;
-            __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_18);
-            __Pyx_GIVEREF(__pyx_t_18);
-            PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_18);
-            __pyx_t_18 = 0;
-            __Pyx_INCREF(__pyx_kp_u__12);
-            __pyx_t_6 += 2;
-            __Pyx_GIVEREF(__pyx_kp_u__12);
-            PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_kp_u__12);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1164
- *                                 cur2, &dbl_key_v, &key_v, lmdb.MDB_GET_BOTH))
- *                         logger.debug(f'Removed: {dbl_keys[i][: DBL_KLEN]}, '
- *                                 f'{keys[i][: KLEN]}')             # <<<<<<<<<<<<<<
- *                     except KeyNotFoundError:
- *                         logger.debug(f'Not found in index: '
- */
-            __pyx_t_18 = __Pyx_PyBytes_FromStringAndSize(((const char*)(__pyx_v_keys[__pyx_v_i])) + 0, 5 - 0); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1164, __pyx_L22_error)
-            __Pyx_GOTREF(__pyx_t_18);
-            __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_18, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1164, __pyx_L22_error)
-            __Pyx_GOTREF(__pyx_t_4);
-            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-            __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7;
-            __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-            __Pyx_GIVEREF(__pyx_t_4);
-            PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_4);
-            __pyx_t_4 = 0;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1163
- *                         _check(lmdb.mdb_cursor_get(
- *                                 cur2, &dbl_key_v, &key_v, lmdb.MDB_GET_BOTH))
- *                         logger.debug(f'Removed: {dbl_keys[i][: DBL_KLEN]}, '             # <<<<<<<<<<<<<<
- *                                 f'{keys[i][: KLEN]}')
- *                     except KeyNotFoundError:
- */
-            __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_9, 4, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1163, __pyx_L22_error)
-            __Pyx_GOTREF(__pyx_t_4);
-            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-            __pyx_t_9 = NULL;
-            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
-              __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
-              if (likely(__pyx_t_9)) {
-                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-                __Pyx_INCREF(__pyx_t_9);
-                __Pyx_INCREF(function);
-                __Pyx_DECREF_SET(__pyx_t_5, function);
-              }
-            }
-            if (!__pyx_t_9) {
-              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1163, __pyx_L22_error)
-              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-              __Pyx_GOTREF(__pyx_t_3);
-            } else {
-              #if CYTHON_FAST_PYCALL
-              if (PyFunction_Check(__pyx_t_5)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_4};
-                __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1163, __pyx_L22_error)
-                __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-                __Pyx_GOTREF(__pyx_t_3);
-                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-              } else
-              #endif
-              #if CYTHON_FAST_PYCCALL
-              if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_4};
-                __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1163, __pyx_L22_error)
-                __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-                __Pyx_GOTREF(__pyx_t_3);
-                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-              } else
-              #endif
-              {
-                __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1163, __pyx_L22_error)
-                __Pyx_GOTREF(__pyx_t_18);
-                __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_9); __pyx_t_9 = NULL;
-                __Pyx_GIVEREF(__pyx_t_4);
-                PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_4);
-                __pyx_t_4 = 0;
-                __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1163, __pyx_L22_error)
-                __Pyx_GOTREF(__pyx_t_3);
-                __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-              }
-            }
-            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1160
- *                     key_v.mv_data = keys[i]
- *                     dbl_key_v.mv_data = dbl_keys[i]
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                                 cur2, &dbl_key_v, &key_v, lmdb.MDB_GET_BOTH))
- */
-          }
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1171
- *                         pass
- *                     else:
- *                         _check(lmdb.mdb_cursor_del(cur2, 0))             # <<<<<<<<<<<<<<
- * 
- *                 # Addition op indexing.
- */
-          /*else:*/ {
-            __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_del(__pyx_v_cur2, 0), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1171, __pyx_L24_except_error)
-          }
-          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-          goto __pyx_L29_try_end;
-          __pyx_L22_error:;
-          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-          __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
-          __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
-          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
-          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1165
- *                         logger.debug(f'Removed: {dbl_keys[i][: DBL_KLEN]}, '
- *                                 f'{keys[i][: KLEN]}')
- *                     except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                         logger.debug(f'Not found in index: '
- *                                 f'{dbl_keys[i][: DBL_KLEN]}, '
- */
-          __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_5, &__pyx_t_18);
-          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1165, __pyx_L24_except_error)
-          __Pyx_GOTREF(__pyx_t_4);
-          __pyx_t_17 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_4);
-          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_ErrRestore(__pyx_t_3, __pyx_t_5, __pyx_t_18);
-          __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_18 = 0;
-          if (__pyx_t_17) {
-            __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._index_triple", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_18, &__pyx_t_5, &__pyx_t_3) < 0) __PYX_ERR(0, 1165, __pyx_L24_except_error)
-            __Pyx_GOTREF(__pyx_t_18);
-            __Pyx_GOTREF(__pyx_t_5);
-            __Pyx_GOTREF(__pyx_t_3);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1166
- *                                 f'{keys[i][: KLEN]}')
- *                     except KeyNotFoundError:
- *                         logger.debug(f'Not found in index: '             # <<<<<<<<<<<<<<
- *                                 f'{dbl_keys[i][: DBL_KLEN]}, '
- *                                 f'{keys[i][: KLEN]}')
- */
-            __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1166, __pyx_L24_except_error)
-            __Pyx_GOTREF(__pyx_t_9);
-            __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_debug); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1166, __pyx_L24_except_error)
-            __Pyx_GOTREF(__pyx_t_20);
-            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-            __pyx_t_9 = PyTuple_New(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1166, __pyx_L24_except_error)
-            __Pyx_GOTREF(__pyx_t_9);
-            __pyx_t_6 = 0;
-            __pyx_t_7 = 127;
-            __Pyx_INCREF(__pyx_kp_u_Not_found_in_index);
-            __pyx_t_6 += 20;
-            __Pyx_GIVEREF(__pyx_kp_u_Not_found_in_index);
-            PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_kp_u_Not_found_in_index);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1167
- *                     except KeyNotFoundError:
- *                         logger.debug(f'Not found in index: '
- *                                 f'{dbl_keys[i][: DBL_KLEN]}, '             # <<<<<<<<<<<<<<
- *                                 f'{keys[i][: KLEN]}')
- *                         pass
- */
-            __pyx_t_19 = __Pyx_PyBytes_FromStringAndSize(((const char*)(__pyx_v_dbl_keys[__pyx_v_i])) + 0, 10 - 0); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1167, __pyx_L24_except_error)
-            __Pyx_GOTREF(__pyx_t_19);
-            __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_t_19, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1167, __pyx_L24_except_error)
-            __Pyx_GOTREF(__pyx_t_8);
-            __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-            __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) : __pyx_t_7;
-            __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8);
-            __Pyx_GIVEREF(__pyx_t_8);
-            PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8);
-            __pyx_t_8 = 0;
-            __Pyx_INCREF(__pyx_kp_u__12);
-            __pyx_t_6 += 2;
-            __Pyx_GIVEREF(__pyx_kp_u__12);
-            PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_kp_u__12);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1168
- *                         logger.debug(f'Not found in index: '
- *                                 f'{dbl_keys[i][: DBL_KLEN]}, '
- *                                 f'{keys[i][: KLEN]}')             # <<<<<<<<<<<<<<
- *                         pass
- *                     else:
- */
-            __pyx_t_8 = __Pyx_PyBytes_FromStringAndSize(((const char*)(__pyx_v_keys[__pyx_v_i])) + 0, 5 - 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1168, __pyx_L24_except_error)
-            __Pyx_GOTREF(__pyx_t_8);
-            __pyx_t_19 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_empty_unicode); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1168, __pyx_L24_except_error)
-            __Pyx_GOTREF(__pyx_t_19);
-            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-            __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_19) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_19) : __pyx_t_7;
-            __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_19);
-            __Pyx_GIVEREF(__pyx_t_19);
-            PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_19);
-            __pyx_t_19 = 0;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1166
- *                                 f'{keys[i][: KLEN]}')
- *                     except KeyNotFoundError:
- *                         logger.debug(f'Not found in index: '             # <<<<<<<<<<<<<<
- *                                 f'{dbl_keys[i][: DBL_KLEN]}, '
- *                                 f'{keys[i][: KLEN]}')
- */
-            __pyx_t_19 = __Pyx_PyUnicode_Join(__pyx_t_9, 4, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1166, __pyx_L24_except_error)
-            __Pyx_GOTREF(__pyx_t_19);
-            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-            __pyx_t_9 = NULL;
-            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_20))) {
-              __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_20);
-              if (likely(__pyx_t_9)) {
-                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_20);
-                __Pyx_INCREF(__pyx_t_9);
-                __Pyx_INCREF(function);
-                __Pyx_DECREF_SET(__pyx_t_20, function);
-              }
-            }
-            if (!__pyx_t_9) {
-              __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_20, __pyx_t_19); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1166, __pyx_L24_except_error)
-              __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-              __Pyx_GOTREF(__pyx_t_4);
-            } else {
-              #if CYTHON_FAST_PYCALL
-              if (PyFunction_Check(__pyx_t_20)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_19};
-                __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_20, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1166, __pyx_L24_except_error)
-                __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-                __Pyx_GOTREF(__pyx_t_4);
-                __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-              } else
-              #endif
-              #if CYTHON_FAST_PYCCALL
-              if (__Pyx_PyFastCFunction_Check(__pyx_t_20)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_19};
-                __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_20, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1166, __pyx_L24_except_error)
-                __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-                __Pyx_GOTREF(__pyx_t_4);
-                __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-              } else
-              #endif
-              {
-                __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1166, __pyx_L24_except_error)
-                __Pyx_GOTREF(__pyx_t_8);
-                __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); __pyx_t_9 = NULL;
-                __Pyx_GIVEREF(__pyx_t_19);
-                PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_19);
-                __pyx_t_19 = 0;
-                __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_20, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1166, __pyx_L24_except_error)
-                __Pyx_GOTREF(__pyx_t_4);
-                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-              }
-            }
-            __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            goto __pyx_L23_exception_handled;
-          }
-          goto __pyx_L24_except_error;
-          __pyx_L24_except_error:;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1160
- *                     key_v.mv_data = keys[i]
- *                     dbl_key_v.mv_data = dbl_keys[i]
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                                 cur2, &dbl_key_v, &key_v, lmdb.MDB_GET_BOTH))
- */
-          __Pyx_XGIVEREF(__pyx_t_16);
-          __Pyx_XGIVEREF(__pyx_t_15);
-          __Pyx_XGIVEREF(__pyx_t_14);
-          __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_15, __pyx_t_14);
-          goto __pyx_L9_error;
-          __pyx_L23_exception_handled:;
-          __Pyx_XGIVEREF(__pyx_t_16);
-          __Pyx_XGIVEREF(__pyx_t_15);
-          __Pyx_XGIVEREF(__pyx_t_14);
-          __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_15, __pyx_t_14);
-          __pyx_L29_try_end:;
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1144
- * 
- *                 # Removal op indexing.
- *                 if op == IDX_OP_REMOVE:             # <<<<<<<<<<<<<<
- *                     try:
- *                         _check(lmdb.mdb_cursor_get(
- */
-        goto __pyx_L11;
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1174
- * 
- *                 # Addition op indexing.
- *                 elif op == IDX_OP_ADD:             # <<<<<<<<<<<<<<
- *                     logger.debug('Adding to index `{}`: {}, {}'.format(
- *                         self.lookup_indices[i],
- */
-      __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_op, __pyx_n_u_idx_add, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1174, __pyx_L9_error)
-      __pyx_t_2 = (__pyx_t_1 != 0);
-      if (likely(__pyx_t_2)) {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1175
- *                 # Addition op indexing.
- *                 elif op == IDX_OP_ADD:
- *                     logger.debug('Adding to index `{}`: {}, {}'.format(             # <<<<<<<<<<<<<<
- *                         self.lookup_indices[i],
- *                         (<unsigned char *>key_v.mv_data)[ : key_v.mv_size],
- */
-        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1175, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_debug); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1175, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_18);
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Adding_to_index, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1175, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_4);
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1176
- *                 elif op == IDX_OP_ADD:
- *                     logger.debug('Adding to index `{}`: {}, {}'.format(
- *                         self.lookup_indices[i],             # <<<<<<<<<<<<<<
- *                         (<unsigned char *>key_v.mv_data)[ : key_v.mv_size],
- *                         (<unsigned char *>dbl_key_v.mv_data)[ : dbl_key_v.mv_size]))
- */
-        __pyx_t_20 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup_indices); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1176, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_20);
-        __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_20, __pyx_v_i, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1176, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_8);
-        __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1177
- *                     logger.debug('Adding to index `{}`: {}, {}'.format(
- *                         self.lookup_indices[i],
- *                         (<unsigned char *>key_v.mv_data)[ : key_v.mv_size],             # <<<<<<<<<<<<<<
- *                         (<unsigned char *>dbl_key_v.mv_data)[ : dbl_key_v.mv_size]))
- * 
- */
-        __pyx_t_20 = __Pyx_PyBytes_FromStringAndSize(((const char*)((unsigned char *)__pyx_v_key_v.mv_data)) + 0, __pyx_v_key_v.mv_size - 0); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1177, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_20);
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1178
- *                         self.lookup_indices[i],
- *                         (<unsigned char *>key_v.mv_data)[ : key_v.mv_size],
- *                         (<unsigned char *>dbl_key_v.mv_data)[ : dbl_key_v.mv_size]))             # <<<<<<<<<<<<<<
- * 
- *                     try:
- */
-        __pyx_t_19 = __Pyx_PyBytes_FromStringAndSize(((const char*)((unsigned char *)__pyx_v_dbl_key_v.mv_data)) + 0, __pyx_v_dbl_key_v.mv_size - 0); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1178, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_19);
-        __pyx_t_9 = NULL;
-        __pyx_t_17 = 0;
-        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
-          if (likely(__pyx_t_9)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-            __Pyx_INCREF(__pyx_t_9);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_4, function);
-            __pyx_t_17 = 1;
-          }
-        }
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[4] = {__pyx_t_9, __pyx_t_8, __pyx_t_20, __pyx_t_19};
-          __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1175, __pyx_L9_error)
-          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-          __Pyx_GOTREF(__pyx_t_5);
-          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-          __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-          __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[4] = {__pyx_t_9, __pyx_t_8, __pyx_t_20, __pyx_t_19};
-          __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1175, __pyx_L9_error)
-          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-          __Pyx_GOTREF(__pyx_t_5);
-          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-          __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-          __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-        } else
-        #endif
-        {
-          __pyx_t_21 = PyTuple_New(3+__pyx_t_17); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1175, __pyx_L9_error)
-          __Pyx_GOTREF(__pyx_t_21);
-          if (__pyx_t_9) {
-            __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_9); __pyx_t_9 = NULL;
-          }
-          __Pyx_GIVEREF(__pyx_t_8);
-          PyTuple_SET_ITEM(__pyx_t_21, 0+__pyx_t_17, __pyx_t_8);
-          __Pyx_GIVEREF(__pyx_t_20);
-          PyTuple_SET_ITEM(__pyx_t_21, 1+__pyx_t_17, __pyx_t_20);
-          __Pyx_GIVEREF(__pyx_t_19);
-          PyTuple_SET_ITEM(__pyx_t_21, 2+__pyx_t_17, __pyx_t_19);
-          __pyx_t_8 = 0;
-          __pyx_t_20 = 0;
-          __pyx_t_19 = 0;
-          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_21, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1175, __pyx_L9_error)
-          __Pyx_GOTREF(__pyx_t_5);
-          __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
-        }
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_4 = NULL;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_18))) {
-          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_18);
-          if (likely(__pyx_t_4)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_18);
-            __Pyx_INCREF(__pyx_t_4);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_18, function);
-          }
-        }
-        if (!__pyx_t_4) {
-          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_18, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1175, __pyx_L9_error)
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_GOTREF(__pyx_t_3);
-        } else {
-          #if CYTHON_FAST_PYCALL
-          if (PyFunction_Check(__pyx_t_18)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
-            __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_18, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1175, __pyx_L9_error)
-            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __Pyx_GOTREF(__pyx_t_3);
-            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-          } else
-          #endif
-          #if CYTHON_FAST_PYCCALL
-          if (__Pyx_PyFastCFunction_Check(__pyx_t_18)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
-            __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_18, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1175, __pyx_L9_error)
-            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __Pyx_GOTREF(__pyx_t_3);
-            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-          } else
-          #endif
-          {
-            __pyx_t_21 = PyTuple_New(1+1); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1175, __pyx_L9_error)
-            __Pyx_GOTREF(__pyx_t_21);
-            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_4); __pyx_t_4 = NULL;
-            __Pyx_GIVEREF(__pyx_t_5);
-            PyTuple_SET_ITEM(__pyx_t_21, 0+1, __pyx_t_5);
-            __pyx_t_5 = 0;
-            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_18, __pyx_t_21, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1175, __pyx_L9_error)
-            __Pyx_GOTREF(__pyx_t_3);
-            __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
-          }
-        }
-        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1180
- *                         (<unsigned char *>dbl_key_v.mv_data)[ : dbl_key_v.mv_size]))
- * 
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_put(
- *                                 cur1, &key_v, &dbl_key_v, lmdb.MDB_NODUPDATA))
- */
-        {
-          __Pyx_PyThreadState_declare
-          __Pyx_PyThreadState_assign
-          __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
-          __Pyx_XGOTREF(__pyx_t_14);
-          __Pyx_XGOTREF(__pyx_t_15);
-          __Pyx_XGOTREF(__pyx_t_16);
-          /*try:*/ {
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1181
- * 
- *                     try:
- *                         _check(lmdb.mdb_cursor_put(             # <<<<<<<<<<<<<<
- *                                 cur1, &key_v, &dbl_key_v, lmdb.MDB_NODUPDATA))
- *                     except KeyExistsError:
- */
-            __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_put(__pyx_v_cur1, (&__pyx_v_key_v), (&__pyx_v_dbl_key_v), MDB_NODUPDATA), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1181, __pyx_L32_error)
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1180
- *                         (<unsigned char *>dbl_key_v.mv_data)[ : dbl_key_v.mv_size]))
- * 
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_put(
- *                                 cur1, &key_v, &dbl_key_v, lmdb.MDB_NODUPDATA))
- */
-          }
-          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-          goto __pyx_L39_try_end;
-          __pyx_L32_error:;
-          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-          __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
-          __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
-          __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
-          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1183
- *                         _check(lmdb.mdb_cursor_put(
- *                                 cur1, &key_v, &dbl_key_v, lmdb.MDB_NODUPDATA))
- *                     except KeyExistsError:             # <<<<<<<<<<<<<<
- *                         logger.debug(f'Key {keys[i][: KLEN]} exists already.')
- *                         pass
- */
-          __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_18, &__pyx_t_21);
-          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyExistsError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1183, __pyx_L34_except_error)
-          __Pyx_GOTREF(__pyx_t_5);
-          __pyx_t_17 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_5);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_ErrRestore(__pyx_t_3, __pyx_t_18, __pyx_t_21);
-          __pyx_t_3 = 0; __pyx_t_18 = 0; __pyx_t_21 = 0;
-          if (__pyx_t_17) {
-            __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._index_triple", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_21, &__pyx_t_18, &__pyx_t_3) < 0) __PYX_ERR(0, 1183, __pyx_L34_except_error)
-            __Pyx_GOTREF(__pyx_t_21);
-            __Pyx_GOTREF(__pyx_t_18);
-            __Pyx_GOTREF(__pyx_t_3);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1184
- *                                 cur1, &key_v, &dbl_key_v, lmdb.MDB_NODUPDATA))
- *                     except KeyExistsError:
- *                         logger.debug(f'Key {keys[i][: KLEN]} exists already.')             # <<<<<<<<<<<<<<
- *                         pass
- * 
- */
-            __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1184, __pyx_L34_except_error)
-            __Pyx_GOTREF(__pyx_t_4);
-            __pyx_t_19 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_debug); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1184, __pyx_L34_except_error)
-            __Pyx_GOTREF(__pyx_t_19);
-            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1184, __pyx_L34_except_error)
-            __Pyx_GOTREF(__pyx_t_4);
-            __pyx_t_6 = 0;
-            __pyx_t_7 = 127;
-            __Pyx_INCREF(__pyx_kp_u_Key);
-            __pyx_t_6 += 4;
-            __Pyx_GIVEREF(__pyx_kp_u_Key);
-            PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_Key);
-            __pyx_t_20 = __Pyx_PyBytes_FromStringAndSize(((const char*)(__pyx_v_keys[__pyx_v_i])) + 0, 5 - 0); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1184, __pyx_L34_except_error)
-            __Pyx_GOTREF(__pyx_t_20);
-            __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_t_20, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1184, __pyx_L34_except_error)
-            __Pyx_GOTREF(__pyx_t_8);
-            __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-            __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) : __pyx_t_7;
-            __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8);
-            __Pyx_GIVEREF(__pyx_t_8);
-            PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_8);
-            __pyx_t_8 = 0;
-            __Pyx_INCREF(__pyx_kp_u_exists_already);
-            __pyx_t_6 += 16;
-            __Pyx_GIVEREF(__pyx_kp_u_exists_already);
-            PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u_exists_already);
-            __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1184, __pyx_L34_except_error)
-            __Pyx_GOTREF(__pyx_t_8);
-            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __pyx_t_4 = NULL;
-            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_19))) {
-              __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_19);
-              if (likely(__pyx_t_4)) {
-                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_19);
-                __Pyx_INCREF(__pyx_t_4);
-                __Pyx_INCREF(function);
-                __Pyx_DECREF_SET(__pyx_t_19, function);
-              }
-            }
-            if (!__pyx_t_4) {
-              __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_19, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1184, __pyx_L34_except_error)
-              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-              __Pyx_GOTREF(__pyx_t_5);
-            } else {
-              #if CYTHON_FAST_PYCALL
-              if (PyFunction_Check(__pyx_t_19)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_8};
-                __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_19, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1184, __pyx_L34_except_error)
-                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-                __Pyx_GOTREF(__pyx_t_5);
-                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-              } else
-              #endif
-              #if CYTHON_FAST_PYCCALL
-              if (__Pyx_PyFastCFunction_Check(__pyx_t_19)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_8};
-                __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_19, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1184, __pyx_L34_except_error)
-                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-                __Pyx_GOTREF(__pyx_t_5);
-                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-              } else
-              #endif
-              {
-                __pyx_t_20 = PyTuple_New(1+1); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1184, __pyx_L34_except_error)
-                __Pyx_GOTREF(__pyx_t_20);
-                __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_20, 0, __pyx_t_4); __pyx_t_4 = NULL;
-                __Pyx_GIVEREF(__pyx_t_8);
-                PyTuple_SET_ITEM(__pyx_t_20, 0+1, __pyx_t_8);
-                __pyx_t_8 = 0;
-                __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_19, __pyx_t_20, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1184, __pyx_L34_except_error)
-                __Pyx_GOTREF(__pyx_t_5);
-                __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-              }
-            }
-            __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-            __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
-            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            goto __pyx_L33_exception_handled;
-          }
-          goto __pyx_L34_except_error;
-          __pyx_L34_except_error:;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1180
- *                         (<unsigned char *>dbl_key_v.mv_data)[ : dbl_key_v.mv_size]))
- * 
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_put(
- *                                 cur1, &key_v, &dbl_key_v, lmdb.MDB_NODUPDATA))
- */
-          __Pyx_XGIVEREF(__pyx_t_14);
-          __Pyx_XGIVEREF(__pyx_t_15);
-          __Pyx_XGIVEREF(__pyx_t_16);
-          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
-          goto __pyx_L9_error;
-          __pyx_L33_exception_handled:;
-          __Pyx_XGIVEREF(__pyx_t_14);
-          __Pyx_XGIVEREF(__pyx_t_15);
-          __Pyx_XGIVEREF(__pyx_t_16);
-          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
-          __pyx_L39_try_end:;
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1187
- *                         pass
- * 
- *                     logger.debug('Adding to index `{}`: {}, {}'.format(             # <<<<<<<<<<<<<<
- *                         self.lookup_indices[i + 3],
- *                         (<unsigned char *>dbl_key_v.mv_data)[ : dbl_key_v.mv_size],
- */
-        __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1187, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_18);
-        __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_debug); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1187, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_21);
-        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Adding_to_index, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1187, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_5);
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1188
- * 
- *                     logger.debug('Adding to index `{}`: {}, {}'.format(
- *                         self.lookup_indices[i + 3],             # <<<<<<<<<<<<<<
- *                         (<unsigned char *>dbl_key_v.mv_data)[ : dbl_key_v.mv_size],
- *                         (<unsigned char *>key_v.mv_data)[ : key_v.mv_size]))
- */
-        __pyx_t_19 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup_indices); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1188, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_19);
-        __pyx_t_13 = (__pyx_v_i + 3);
-        __pyx_t_20 = __Pyx_GetItemInt(__pyx_t_19, __pyx_t_13, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 0); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1188, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_20);
-        __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1189
- *                     logger.debug('Adding to index `{}`: {}, {}'.format(
- *                         self.lookup_indices[i + 3],
- *                         (<unsigned char *>dbl_key_v.mv_data)[ : dbl_key_v.mv_size],             # <<<<<<<<<<<<<<
- *                         (<unsigned char *>key_v.mv_data)[ : key_v.mv_size]))
- * 
- */
-        __pyx_t_19 = __Pyx_PyBytes_FromStringAndSize(((const char*)((unsigned char *)__pyx_v_dbl_key_v.mv_data)) + 0, __pyx_v_dbl_key_v.mv_size - 0); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1189, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_19);
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1190
- *                         self.lookup_indices[i + 3],
- *                         (<unsigned char *>dbl_key_v.mv_data)[ : dbl_key_v.mv_size],
- *                         (<unsigned char *>key_v.mv_data)[ : key_v.mv_size]))             # <<<<<<<<<<<<<<
- * 
- *                     try:
- */
-        __pyx_t_8 = __Pyx_PyBytes_FromStringAndSize(((const char*)((unsigned char *)__pyx_v_key_v.mv_data)) + 0, __pyx_v_key_v.mv_size - 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1190, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_8);
-        __pyx_t_4 = NULL;
-        __pyx_t_17 = 0;
-        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);
-            __pyx_t_17 = 1;
-          }
-        }
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_5)) {
-          PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_20, __pyx_t_19, __pyx_t_8};
-          __pyx_t_18 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1187, __pyx_L9_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_18);
-          __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-          __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
-          PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_20, __pyx_t_19, __pyx_t_8};
-          __pyx_t_18 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1187, __pyx_L9_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_18);
-          __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-          __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-        } else
-        #endif
-        {
-          __pyx_t_9 = PyTuple_New(3+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1187, __pyx_L9_error)
-          __Pyx_GOTREF(__pyx_t_9);
-          if (__pyx_t_4) {
-            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __pyx_t_4 = NULL;
-          }
-          __Pyx_GIVEREF(__pyx_t_20);
-          PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_17, __pyx_t_20);
-          __Pyx_GIVEREF(__pyx_t_19);
-          PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_17, __pyx_t_19);
-          __Pyx_GIVEREF(__pyx_t_8);
-          PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_17, __pyx_t_8);
-          __pyx_t_20 = 0;
-          __pyx_t_19 = 0;
-          __pyx_t_8 = 0;
-          __pyx_t_18 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1187, __pyx_L9_error)
-          __Pyx_GOTREF(__pyx_t_18);
-          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        }
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __pyx_t_5 = NULL;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_21))) {
-          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_21);
-          if (likely(__pyx_t_5)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
-            __Pyx_INCREF(__pyx_t_5);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_21, function);
-          }
-        }
-        if (!__pyx_t_5) {
-          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_21, __pyx_t_18); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1187, __pyx_L9_error)
-          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-          __Pyx_GOTREF(__pyx_t_3);
-        } else {
-          #if CYTHON_FAST_PYCALL
-          if (PyFunction_Check(__pyx_t_21)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_18};
-            __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_21, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1187, __pyx_L9_error)
-            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-            __Pyx_GOTREF(__pyx_t_3);
-            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-          } else
-          #endif
-          #if CYTHON_FAST_PYCCALL
-          if (__Pyx_PyFastCFunction_Check(__pyx_t_21)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_18};
-            __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_21, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1187, __pyx_L9_error)
-            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-            __Pyx_GOTREF(__pyx_t_3);
-            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-          } else
-          #endif
-          {
-            __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1187, __pyx_L9_error)
-            __Pyx_GOTREF(__pyx_t_9);
-            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL;
-            __Pyx_GIVEREF(__pyx_t_18);
-            PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_18);
-            __pyx_t_18 = 0;
-            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_21, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1187, __pyx_L9_error)
-            __Pyx_GOTREF(__pyx_t_3);
-            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-          }
-        }
-        __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1192
- *                         (<unsigned char *>key_v.mv_data)[ : key_v.mv_size]))
- * 
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_put(
- *                                 cur2, &dbl_key_v, &key_v, lmdb.MDB_NODUPDATA))
- */
-        {
-          __Pyx_PyThreadState_declare
-          __Pyx_PyThreadState_assign
-          __Pyx_ExceptionSave(&__pyx_t_16, &__pyx_t_15, &__pyx_t_14);
-          __Pyx_XGOTREF(__pyx_t_16);
-          __Pyx_XGOTREF(__pyx_t_15);
-          __Pyx_XGOTREF(__pyx_t_14);
-          /*try:*/ {
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1193
- * 
- *                     try:
- *                         _check(lmdb.mdb_cursor_put(             # <<<<<<<<<<<<<<
- *                                 cur2, &dbl_key_v, &key_v, lmdb.MDB_NODUPDATA))
- *                     except KeyExistsError:
- */
-            __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_put(__pyx_v_cur2, (&__pyx_v_dbl_key_v), (&__pyx_v_key_v), MDB_NODUPDATA), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1193, __pyx_L42_error)
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1192
- *                         (<unsigned char *>key_v.mv_data)[ : key_v.mv_size]))
- * 
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_put(
- *                                 cur2, &dbl_key_v, &key_v, lmdb.MDB_NODUPDATA))
- */
-          }
-          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-          goto __pyx_L49_try_end;
-          __pyx_L42_error:;
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
-          __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
-          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
-          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-          __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
-          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1195
- *                         _check(lmdb.mdb_cursor_put(
- *                                 cur2, &dbl_key_v, &key_v, lmdb.MDB_NODUPDATA))
- *                     except KeyExistsError:             # <<<<<<<<<<<<<<
- *                         logger.debug(f'Double key {dbl_keys[i][: DBL_KLEN]} exists already.')
- *                         pass
- */
-          __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_21, &__pyx_t_9);
-          __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyExistsError); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1195, __pyx_L44_except_error)
-          __Pyx_GOTREF(__pyx_t_18);
-          __pyx_t_17 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_18);
-          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-          __Pyx_ErrRestore(__pyx_t_3, __pyx_t_21, __pyx_t_9);
-          __pyx_t_3 = 0; __pyx_t_21 = 0; __pyx_t_9 = 0;
-          if (__pyx_t_17) {
-            __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._index_triple", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_21, &__pyx_t_3) < 0) __PYX_ERR(0, 1195, __pyx_L44_except_error)
-            __Pyx_GOTREF(__pyx_t_9);
-            __Pyx_GOTREF(__pyx_t_21);
-            __Pyx_GOTREF(__pyx_t_3);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1196
- *                                 cur2, &dbl_key_v, &key_v, lmdb.MDB_NODUPDATA))
- *                     except KeyExistsError:
- *                         logger.debug(f'Double key {dbl_keys[i][: DBL_KLEN]} exists already.')             # <<<<<<<<<<<<<<
- *                         pass
- *                 else:
- */
-            __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1196, __pyx_L44_except_error)
-            __Pyx_GOTREF(__pyx_t_5);
-            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_debug); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1196, __pyx_L44_except_error)
-            __Pyx_GOTREF(__pyx_t_8);
-            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-            __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1196, __pyx_L44_except_error)
-            __Pyx_GOTREF(__pyx_t_5);
-            __pyx_t_6 = 0;
-            __pyx_t_7 = 127;
-            __Pyx_INCREF(__pyx_kp_u_Double_key);
-            __pyx_t_6 += 11;
-            __Pyx_GIVEREF(__pyx_kp_u_Double_key);
-            PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_Double_key);
-            __pyx_t_19 = __Pyx_PyBytes_FromStringAndSize(((const char*)(__pyx_v_dbl_keys[__pyx_v_i])) + 0, 10 - 0); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1196, __pyx_L44_except_error)
-            __Pyx_GOTREF(__pyx_t_19);
-            __pyx_t_20 = __Pyx_PyObject_FormatSimple(__pyx_t_19, __pyx_empty_unicode); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1196, __pyx_L44_except_error)
-            __Pyx_GOTREF(__pyx_t_20);
-            __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-            __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_20) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_20) : __pyx_t_7;
-            __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_20);
-            __Pyx_GIVEREF(__pyx_t_20);
-            PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_20);
-            __pyx_t_20 = 0;
-            __Pyx_INCREF(__pyx_kp_u_exists_already);
-            __pyx_t_6 += 16;
-            __Pyx_GIVEREF(__pyx_kp_u_exists_already);
-            PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u_exists_already);
-            __pyx_t_20 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1196, __pyx_L44_except_error)
-            __Pyx_GOTREF(__pyx_t_20);
-            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-            __pyx_t_5 = NULL;
-            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
-              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
-              if (likely(__pyx_t_5)) {
-                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
-                __Pyx_INCREF(__pyx_t_5);
-                __Pyx_INCREF(function);
-                __Pyx_DECREF_SET(__pyx_t_8, function);
-              }
-            }
-            if (!__pyx_t_5) {
-              __pyx_t_18 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_20); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1196, __pyx_L44_except_error)
-              __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-              __Pyx_GOTREF(__pyx_t_18);
-            } else {
-              #if CYTHON_FAST_PYCALL
-              if (PyFunction_Check(__pyx_t_8)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_20};
-                __pyx_t_18 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1196, __pyx_L44_except_error)
-                __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-                __Pyx_GOTREF(__pyx_t_18);
-                __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-              } else
-              #endif
-              #if CYTHON_FAST_PYCCALL
-              if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_20};
-                __pyx_t_18 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1196, __pyx_L44_except_error)
-                __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-                __Pyx_GOTREF(__pyx_t_18);
-                __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-              } else
-              #endif
-              {
-                __pyx_t_19 = PyTuple_New(1+1); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1196, __pyx_L44_except_error)
-                __Pyx_GOTREF(__pyx_t_19);
-                __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_5); __pyx_t_5 = NULL;
-                __Pyx_GIVEREF(__pyx_t_20);
-                PyTuple_SET_ITEM(__pyx_t_19, 0+1, __pyx_t_20);
-                __pyx_t_20 = 0;
-                __pyx_t_18 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_19, NULL); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1196, __pyx_L44_except_error)
-                __Pyx_GOTREF(__pyx_t_18);
-                __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-              }
-            }
-            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-            __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            goto __pyx_L43_exception_handled;
-          }
-          goto __pyx_L44_except_error;
-          __pyx_L44_except_error:;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1192
- *                         (<unsigned char *>key_v.mv_data)[ : key_v.mv_size]))
- * 
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_put(
- *                                 cur2, &dbl_key_v, &key_v, lmdb.MDB_NODUPDATA))
- */
-          __Pyx_XGIVEREF(__pyx_t_16);
-          __Pyx_XGIVEREF(__pyx_t_15);
-          __Pyx_XGIVEREF(__pyx_t_14);
-          __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_15, __pyx_t_14);
-          goto __pyx_L9_error;
-          __pyx_L43_exception_handled:;
-          __Pyx_XGIVEREF(__pyx_t_16);
-          __Pyx_XGIVEREF(__pyx_t_15);
-          __Pyx_XGIVEREF(__pyx_t_14);
-          __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_15, __pyx_t_14);
-          __pyx_L49_try_end:;
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1174
- * 
- *                 # Addition op indexing.
- *                 elif op == IDX_OP_ADD:             # <<<<<<<<<<<<<<
- *                     logger.debug('Adding to index `{}`: {}, {}'.format(
- *                         self.lookup_indices[i],
- */
-        goto __pyx_L11;
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1199
- *                         pass
- *                 else:
- *                     raise ValueError(             # <<<<<<<<<<<<<<
- *                         'Index operation \'{}\' is not supported.'.format(op))
- *                 i += 1
- */
-      /*else*/ {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1200
- *                 else:
- *                     raise ValueError(
- *                         'Index operation \'{}\' is not supported.'.format(op))             # <<<<<<<<<<<<<<
- *                 i += 1
- *             finally:
- */
-        __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Index_operation_is_not_supported, __pyx_n_s_format); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1200, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_21);
-        __pyx_t_9 = NULL;
-        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_21))) {
-          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_21);
-          if (likely(__pyx_t_9)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
-            __Pyx_INCREF(__pyx_t_9);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_21, function);
-          }
-        }
-        if (!__pyx_t_9) {
-          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_21, __pyx_v_op); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1200, __pyx_L9_error)
-          __Pyx_GOTREF(__pyx_t_3);
-        } else {
-          #if CYTHON_FAST_PYCALL
-          if (PyFunction_Check(__pyx_t_21)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_op};
-            __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_21, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1200, __pyx_L9_error)
-            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-            __Pyx_GOTREF(__pyx_t_3);
-          } else
-          #endif
-          #if CYTHON_FAST_PYCCALL
-          if (__Pyx_PyFastCFunction_Check(__pyx_t_21)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_op};
-            __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_21, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1200, __pyx_L9_error)
-            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-            __Pyx_GOTREF(__pyx_t_3);
-          } else
-          #endif
-          {
-            __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1200, __pyx_L9_error)
-            __Pyx_GOTREF(__pyx_t_18);
-            __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_9); __pyx_t_9 = NULL;
-            __Pyx_INCREF(__pyx_v_op);
-            __Pyx_GIVEREF(__pyx_v_op);
-            PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_v_op);
-            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_21, __pyx_t_18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1200, __pyx_L9_error)
-            __Pyx_GOTREF(__pyx_t_3);
-            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-          }
-        }
-        __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1199
- *                         pass
- *                 else:
- *                     raise ValueError(             # <<<<<<<<<<<<<<
- *                         'Index operation \'{}\' is not supported.'.format(op))
- *                 i += 1
- */
-        __pyx_t_21 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1199, __pyx_L9_error)
-        __Pyx_GOTREF(__pyx_t_21);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_Raise(__pyx_t_21, 0, 0, 0);
-        __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
-        __PYX_ERR(0, 1199, __pyx_L9_error)
-      }
-      __pyx_L11:;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1201
- *                     raise ValueError(
- *                         'Index operation \'{}\' is not supported.'.format(op))
- *                 i += 1             # <<<<<<<<<<<<<<
- *             finally:
- *                 #pass
- */
-      __pyx_v_i = (__pyx_v_i + 1);
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1204
- *             finally:
- *                 #pass
- *                 self._cur_close(cur1)             # <<<<<<<<<<<<<<
- *                 self._cur_close(cur2)
- * 
- */
-    /*finally:*/ {
-      /*normal exit:*/{
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_cur1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1204, __pyx_L1_error)
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1205
- *                 #pass
- *                 self._cur_close(cur1)
- *                 self._cur_close(cur2)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_cur2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1205, __pyx_L1_error)
-        goto __pyx_L10;
-      }
-      __pyx_L9_error:;
-      /*exception exit:*/{
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0;
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
-        __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
-        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
-        if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26);
-        if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
-        __Pyx_XGOTREF(__pyx_t_14);
-        __Pyx_XGOTREF(__pyx_t_15);
-        __Pyx_XGOTREF(__pyx_t_16);
-        __Pyx_XGOTREF(__pyx_t_24);
-        __Pyx_XGOTREF(__pyx_t_25);
-        __Pyx_XGOTREF(__pyx_t_26);
-        __pyx_t_17 = __pyx_lineno; __pyx_t_22 = __pyx_clineno; __pyx_t_23 = __pyx_filename;
-        {
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1204
- *             finally:
- *                 #pass
- *                 self._cur_close(cur1)             # <<<<<<<<<<<<<<
- *                 self._cur_close(cur2)
- * 
- */
-          ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_cur1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1204, __pyx_L55_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1205
- *                 #pass
- *                 self._cur_close(cur1)
- *                 self._cur_close(cur2)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-          ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_cur2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1205, __pyx_L55_error)
-        }
-        if (PY_MAJOR_VERSION >= 3) {
-          __Pyx_XGIVEREF(__pyx_t_24);
-          __Pyx_XGIVEREF(__pyx_t_25);
-          __Pyx_XGIVEREF(__pyx_t_26);
-          __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_25, __pyx_t_26);
-        }
-        __Pyx_XGIVEREF(__pyx_t_14);
-        __Pyx_XGIVEREF(__pyx_t_15);
-        __Pyx_XGIVEREF(__pyx_t_16);
-        __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
-        __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0;
-        __pyx_lineno = __pyx_t_17; __pyx_clineno = __pyx_t_22; __pyx_filename = __pyx_t_23;
-        goto __pyx_L1_error;
-        __pyx_L55_error:;
-        if (PY_MAJOR_VERSION >= 3) {
-          __Pyx_XGIVEREF(__pyx_t_24);
-          __Pyx_XGIVEREF(__pyx_t_25);
-          __Pyx_XGIVEREF(__pyx_t_26);
-          __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_25, __pyx_t_26);
-        }
-        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-        __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0;
-        goto __pyx_L1_error;
-      }
-      __pyx_L10:;
-    }
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1094
- * 
- * 
- *     cdef void _index_triple(self, str op, TripleKey spok) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Update index for a triple and context (add or remove).
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_XDECREF(__pyx_t_18);
-  __Pyx_XDECREF(__pyx_t_19);
-  __Pyx_XDECREF(__pyx_t_20);
-  __Pyx_XDECREF(__pyx_t_21);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._index_triple", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1208
- * 
- * 
- *     cpdef void _remove_graph(self, object gr_uri) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Delete a context.
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_13_remove_graph(PyObject *__pyx_v_self, PyObject *__pyx_v_gr_uri); /*proto*/
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__remove_graph(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_gr_uri, int __pyx_skip_dispatch) {
-  unsigned char __pyx_v_chash[20];
-  unsigned char __pyx_v_ck[5];
-  unsigned char *__pyx_v_pk_c;
-  size_t __pyx_v_c_size;
-  struct MDB_val __pyx_v_ck_v;
-  struct MDB_val __pyx_v_chash_v;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  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;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  int __pyx_t_9;
-  struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__remove __pyx_t_10;
-  MDB_dbi __pyx_t_11;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi __pyx_t_12;
-  __Pyx_RefNannySetupContext("_remove_graph", 0);
-  __Pyx_TraceCall("_remove_graph", __pyx_f[0], 1208, 0, __PYX_ERR(0, 1208, __pyx_L1_error));
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_remove_graph); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1208, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_13_remove_graph)) {
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_gr_uri); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1208, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_gr_uri};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1208, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_gr_uri};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1208, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        {
-          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1208, __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_INCREF(__pyx_v_gr_uri);
-          __Pyx_GIVEREF(__pyx_v_gr_uri);
-          PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_gr_uri);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1208, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1223
- * 
- *         # Gather information on the graph prior to deletion.
- *         try:             # <<<<<<<<<<<<<<
- *             self._to_key(gr_uri, &ck)
- *         except KeyNotFoundError:
- */
-  {
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
-    __Pyx_XGOTREF(__pyx_t_6);
-    __Pyx_XGOTREF(__pyx_t_7);
-    __Pyx_XGOTREF(__pyx_t_8);
-    /*try:*/ {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1224
- *         # Gather information on the graph prior to deletion.
- *         try:
- *             self._to_key(gr_uri, &ck)             # <<<<<<<<<<<<<<
- *         except KeyNotFoundError:
- *             return
- */
-      __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_key(__pyx_v_self, __pyx_v_gr_uri, (&__pyx_v_ck)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1224, __pyx_L3_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1223
- * 
- *         # Gather information on the graph prior to deletion.
- *         try:             # <<<<<<<<<<<<<<
- *             self._to_key(gr_uri, &ck)
- *         except KeyNotFoundError:
- */
-    }
-    __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_L8_try_end;
-    __pyx_L3_error:;
-    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1225
- *         try:
- *             self._to_key(gr_uri, &ck)
- *         except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *             return
- * 
- */
-    __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1225, __pyx_L5_except_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_9 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_5);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-    __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
-    if (__pyx_t_9) {
-      __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._remove_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 1225, __pyx_L5_except_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_GOTREF(__pyx_t_1);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1226
- *             self._to_key(gr_uri, &ck)
- *         except KeyNotFoundError:
- *             return             # <<<<<<<<<<<<<<
- * 
- *         # Remove all triples and indices associated with the graph.
- */
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      goto __pyx_L6_except_return;
-    }
-    goto __pyx_L5_except_error;
-    __pyx_L5_except_error:;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1223
- * 
- *         # Gather information on the graph prior to deletion.
- *         try:             # <<<<<<<<<<<<<<
- *             self._to_key(gr_uri, &ck)
- *         except KeyNotFoundError:
- */
-    __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);
-    goto __pyx_L1_error;
-    __pyx_L6_except_return:;
-    __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);
-    goto __pyx_L0;
-    __pyx_L8_try_end:;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1229
- * 
- *         # Remove all triples and indices associated with the graph.
- *         self._remove((None, None, None), gr_uri)             # <<<<<<<<<<<<<<
- *         # Remove the graph if it is in triples.
- *         self._remove((gr_uri, None, None))
- */
-  __pyx_t_10.__pyx_n = 1;
-  __pyx_t_10.context = __pyx_v_gr_uri;
-  ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_remove(__pyx_v_self, __pyx_tuple__13, 0, &__pyx_t_10); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1229, __pyx_L1_error)
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1231
- *         self._remove((None, None, None), gr_uri)
- *         # Remove the graph if it is in triples.
- *         self._remove((gr_uri, None, None))             # <<<<<<<<<<<<<<
- *         self._remove((None, None, gr_uri))
- * 
- */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1231, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_v_gr_uri);
-  __Pyx_GIVEREF(__pyx_v_gr_uri);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_gr_uri);
-  __Pyx_INCREF(Py_None);
-  __Pyx_GIVEREF(Py_None);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None);
-  __Pyx_INCREF(Py_None);
-  __Pyx_GIVEREF(Py_None);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
-  ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_remove(__pyx_v_self, ((PyObject*)__pyx_t_1), 0, NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1231, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1232
- *         # Remove the graph if it is in triples.
- *         self._remove((gr_uri, None, None))
- *         self._remove((None, None, gr_uri))             # <<<<<<<<<<<<<<
- * 
- *         # Clean up all terms related to the graph.
- */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1232, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(Py_None);
-  __Pyx_GIVEREF(Py_None);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, Py_None);
-  __Pyx_INCREF(Py_None);
-  __Pyx_GIVEREF(Py_None);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None);
-  __Pyx_INCREF(__pyx_v_gr_uri);
-  __Pyx_GIVEREF(__pyx_v_gr_uri);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_gr_uri);
-  ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_remove(__pyx_v_self, ((PyObject*)__pyx_t_1), 0, NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1232, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1235
- * 
- *         # Clean up all terms related to the graph.
- *         serialize(gr_uri, &pk_c, &c_size)             # <<<<<<<<<<<<<<
- *         _hash(pk_c, c_size, chash)
- *         free(pk_c)
- */
-  __pyx_t_9 = __pyx_f_12lakesuperior_5store_6ldp_rs_4term_serialize(__pyx_v_gr_uri, (&__pyx_v_pk_c), (&__pyx_v_c_size)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 1235, __pyx_L1_error)
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1236
- *         # Clean up all terms related to the graph.
- *         serialize(gr_uri, &pk_c, &c_size)
- *         _hash(pk_c, c_size, chash)             # <<<<<<<<<<<<<<
- *         free(pk_c)
- * 
- */
-  __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore__hash(__pyx_v_pk_c, __pyx_v_c_size, __pyx_v_chash);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1237
- *         serialize(gr_uri, &pk_c, &c_size)
- *         _hash(pk_c, c_size, chash)
- *         free(pk_c)             # <<<<<<<<<<<<<<
- * 
- *         ck_v.mv_size = KLEN
- */
-  free(__pyx_v_pk_c);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1239
- *         free(pk_c)
- * 
- *         ck_v.mv_size = KLEN             # <<<<<<<<<<<<<<
- *         chash_v.mv_size = HLEN
- *         try:
- */
-  __pyx_v_ck_v.mv_size = 5;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1240
- * 
- *         ck_v.mv_size = KLEN
- *         chash_v.mv_size = HLEN             # <<<<<<<<<<<<<<
- *         try:
- *             ck_v.mv_data = ck
- */
-  __pyx_v_chash_v.mv_size = 20;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1241
- *         ck_v.mv_size = KLEN
- *         chash_v.mv_size = HLEN
- *         try:             # <<<<<<<<<<<<<<
- *             ck_v.mv_data = ck
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b'c:'), &ck_v, NULL))
- */
-  {
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
-    __Pyx_XGOTREF(__pyx_t_8);
-    __Pyx_XGOTREF(__pyx_t_7);
-    __Pyx_XGOTREF(__pyx_t_6);
-    /*try:*/ {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1242
- *         chash_v.mv_size = HLEN
- *         try:
- *             ck_v.mv_data = ck             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b'c:'), &ck_v, NULL))
- *             ck_v.mv_data = ck
- */
-      __pyx_v_ck_v.mv_data = __pyx_v_ck;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1243
- *         try:
- *             ck_v.mv_data = ck
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b'c:'), &ck_v, NULL))             # <<<<<<<<<<<<<<
- *             ck_v.mv_data = ck
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b't:st'), &ck_v, NULL))
- */
-      __pyx_t_12.__pyx_n = 1;
-      __pyx_t_12.dblabel = ((unsigned char *)((char const *)"c:"));
-      __pyx_t_11 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.get_dbi(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_12); 
-      __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_del(__pyx_v_self->__pyx_base.txn, __pyx_t_11, (&__pyx_v_ck_v), NULL), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1243, __pyx_L11_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1244
- *             ck_v.mv_data = ck
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b'c:'), &ck_v, NULL))
- *             ck_v.mv_data = ck             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b't:st'), &ck_v, NULL))
- *             chash_v.mv_data = chash
- */
-      __pyx_v_ck_v.mv_data = __pyx_v_ck;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1245
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b'c:'), &ck_v, NULL))
- *             ck_v.mv_data = ck
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b't:st'), &ck_v, NULL))             # <<<<<<<<<<<<<<
- *             chash_v.mv_data = chash
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b'th:t'), &chash_v, NULL))
- */
-      __pyx_t_12.__pyx_n = 1;
-      __pyx_t_12.dblabel = ((unsigned char *)((char const *)"t:st"));
-      __pyx_t_11 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.get_dbi(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_12); 
-      __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_del(__pyx_v_self->__pyx_base.txn, __pyx_t_11, (&__pyx_v_ck_v), NULL), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1245, __pyx_L11_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1246
- *             ck_v.mv_data = ck
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b't:st'), &ck_v, NULL))
- *             chash_v.mv_data = chash             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b'th:t'), &chash_v, NULL))
- *         except KeyNotFoundError:
- */
-      __pyx_v_chash_v.mv_data = __pyx_v_chash;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1247
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b't:st'), &ck_v, NULL))
- *             chash_v.mv_data = chash
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b'th:t'), &chash_v, NULL))             # <<<<<<<<<<<<<<
- *         except KeyNotFoundError:
- *             pass
- */
-      __pyx_t_12.__pyx_n = 1;
-      __pyx_t_12.dblabel = ((unsigned char *)((char const *)"th:t"));
-      __pyx_t_11 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.get_dbi(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_12); 
-      __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_del(__pyx_v_self->__pyx_base.txn, __pyx_t_11, (&__pyx_v_chash_v), NULL), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1247, __pyx_L11_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1241
- *         ck_v.mv_size = KLEN
- *         chash_v.mv_size = HLEN
- *         try:             # <<<<<<<<<<<<<<
- *             ck_v.mv_data = ck
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b'c:'), &ck_v, NULL))
- */
-    }
-    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    goto __pyx_L16_try_end;
-    __pyx_L11_error:;
-    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1248
- *             chash_v.mv_data = chash
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b'th:t'), &chash_v, NULL))
- *         except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *             pass
- * 
- */
-    __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1248, __pyx_L13_except_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_9 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_5);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-    __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
-    if (__pyx_t_9) {
-      __Pyx_ErrRestore(0,0,0);
-      goto __pyx_L12_exception_handled;
-    }
-    goto __pyx_L13_except_error;
-    __pyx_L13_except_error:;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1241
- *         ck_v.mv_size = KLEN
- *         chash_v.mv_size = HLEN
- *         try:             # <<<<<<<<<<<<<<
- *             ck_v.mv_data = ck
- *             _check(lmdb.mdb_del(self.txn, self.get_dbi(b'c:'), &ck_v, NULL))
- */
-    __Pyx_XGIVEREF(__pyx_t_8);
-    __Pyx_XGIVEREF(__pyx_t_7);
-    __Pyx_XGIVEREF(__pyx_t_6);
-    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
-    goto __pyx_L1_error;
-    __pyx_L12_exception_handled:;
-    __Pyx_XGIVEREF(__pyx_t_8);
-    __Pyx_XGIVEREF(__pyx_t_7);
-    __Pyx_XGIVEREF(__pyx_t_6);
-    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
-    __pyx_L16_try_end:;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1208
- * 
- * 
- *     cpdef void _remove_graph(self, object gr_uri) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Delete a context.
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __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("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._remove_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_13_remove_graph(PyObject *__pyx_v_self, PyObject *__pyx_v_gr_uri); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_12_remove_graph[] = "\n        Delete a context.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_13_remove_graph(PyObject *__pyx_v_self, PyObject *__pyx_v_gr_uri) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("_remove_graph (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_12_remove_graph(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self), ((PyObject *)__pyx_v_gr_uri));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_12_remove_graph(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_gr_uri) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("_remove_graph", 0);
-  __Pyx_TraceCall("_remove_graph (wrapper)", __pyx_f[0], 1208, 0, __PYX_ERR(0, 1208, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__remove_graph(__pyx_v_self, __pyx_v_gr_uri, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1208, __pyx_L1_error)
-  __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1208, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._remove_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-static PyObject *__pyx_gb_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_16generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1255
- * 
- *     # TODO Deprecate RDFLib API?
- *     def contexts(self, triple=None):             # <<<<<<<<<<<<<<
- *         """
- *         Get a list of all contexts.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_15contexts(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_14contexts[] = "\n        Get a list of all contexts.\n\n        :rtype: Iterator(rdflib.Graph)\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_15contexts(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_triple = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("contexts (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_triple,0};
-    PyObject* values[1] = {0};
-    values[0] = ((PyObject *)Py_None);
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        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 (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_triple);
-          if (value) { values[0] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "contexts") < 0)) __PYX_ERR(0, 1255, __pyx_L3_error)
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_triple = values[0];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("contexts", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1255, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.contexts", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_14contexts(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self), __pyx_v_triple);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_14contexts(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts *__pyx_cur_scope;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("contexts", 0);
-  __pyx_cur_scope = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts *)__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts, __pyx_empty_tuple, NULL);
-  if (unlikely(!__pyx_cur_scope)) {
-    __pyx_cur_scope = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts *)Py_None);
-    __Pyx_INCREF(Py_None);
-    __PYX_ERR(0, 1255, __pyx_L1_error)
-  } else {
-    __Pyx_GOTREF(__pyx_cur_scope);
-  }
-  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
-  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
-  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
-  __pyx_cur_scope->__pyx_v_triple = __pyx_v_triple;
-  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_triple);
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_triple);
-  {
-    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_16generator, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_contexts, __pyx_n_s_LmdbTriplestore_contexts, __pyx_n_s_lakesuperior_store_ldp_rs_lmdb_t); if (unlikely(!gen)) __PYX_ERR(0, 1255, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_cur_scope);
-    __Pyx_RefNannyFinishContext();
-    return (PyObject *) gen;
-  }
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.contexts", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_gb_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_16generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
-{
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts *__pyx_cur_scope = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts *)__pyx_generator->closure);
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_all_contexts __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  Py_ssize_t __pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
-  unsigned char *__pyx_t_6;
-  PyObject *__pyx_t_7 = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("contexts", 0);
-  __Pyx_TraceCall("contexts", __pyx_f[0], 1255, 0, __PYX_ERR(0, 1255, __pyx_L1_error));
-  switch (__pyx_generator->resume_label) {
-    case 0: goto __pyx_L3_first_run;
-    case 1: goto __pyx_L6_resume_from_yield;
-    default: /* CPython raises the right error here */
-    __Pyx_TraceReturn(Py_None, 0);
-    __Pyx_RefNannyFinishContext();
-    return NULL;
-  }
-  __pyx_L3_first_run:;
-  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1255, __pyx_L1_error)
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1261
- *         :rtype: Iterator(rdflib.Graph)
- *         """
- *         for ctx_uri in self.all_contexts(triple):             # <<<<<<<<<<<<<<
- *             yield Graph(identifier=self.from_key(ctx_uri), store=self)
- * 
- */
-  __pyx_t_2.__pyx_n = 1;
-  __pyx_t_2.triple = __pyx_cur_scope->__pyx_v_triple;
-  __pyx_t_1 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->all_contexts(__pyx_cur_scope->__pyx_v_self, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1261, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (unlikely(__pyx_t_1 == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    __PYX_ERR(0, 1261, __pyx_L1_error)
-  }
-  __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  for (;;) {
-    if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
-    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-    __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1261, __pyx_L1_error)
-    #else
-    __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1261, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    #endif
-    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_ctx_uri);
-    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_ctx_uri, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1262
- *         """
- *         for ctx_uri in self.all_contexts(triple):
- *             yield Graph(identifier=self.from_key(ctx_uri), store=self)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Graph); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1262, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1262, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_AsWritableUString(__pyx_cur_scope->__pyx_v_ctx_uri); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1262, __pyx_L1_error)
-    __pyx_t_7 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->from_key(__pyx_cur_scope->__pyx_v_self, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1262, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_7);
-    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_identifier, __pyx_t_7) < 0) __PYX_ERR(0, 1262, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_store, ((PyObject *)__pyx_cur_scope->__pyx_v_self)) < 0) __PYX_ERR(0, 1262, __pyx_L1_error)
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1262, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_7);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_r = __pyx_t_7;
-    __pyx_t_7 = 0;
-    __Pyx_XGIVEREF(__pyx_t_3);
-    __pyx_cur_scope->__pyx_t_0 = __pyx_t_3;
-    __pyx_cur_scope->__pyx_t_1 = __pyx_t_4;
-    __Pyx_XGIVEREF(__pyx_r);
-    __Pyx_TraceReturn(__pyx_r, 0);
-    __Pyx_RefNannyFinishContext();
-    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
-    /* return from generator, yielding value */
-    __pyx_generator->resume_label = 1;
-    return __pyx_r;
-    __pyx_L6_resume_from_yield:;
-    __pyx_t_3 = __pyx_cur_scope->__pyx_t_0;
-    __pyx_cur_scope->__pyx_t_0 = 0;
-    __Pyx_XGOTREF(__pyx_t_3);
-    __pyx_t_4 = __pyx_cur_scope->__pyx_t_1;
-    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1262, __pyx_L1_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1261
- *         :rtype: Iterator(rdflib.Graph)
- *         """
- *         for ctx_uri in self.all_contexts(triple):             # <<<<<<<<<<<<<<
- *             yield Graph(identifier=self.from_key(ctx_uri), store=self)
- * 
- */
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1255
- * 
- *     # TODO Deprecate RDFLib API?
- *     def contexts(self, triple=None):             # <<<<<<<<<<<<<<
- *         """
- *         Get a list of all contexts.
- */
-
-  /* function exit code */
-  PyErr_SetNone(PyExc_StopIteration);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_AddTraceback("contexts", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
-  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
-  __pyx_generator->resume_label = -1;
-  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-static PyObject *__pyx_gb_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_19generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1265
- * 
- * 
- *     def triples(self, triple_pattern, context=None):             # <<<<<<<<<<<<<<
- *         """
- *         Generator over matching triples.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_18triples(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_17triples[] = "\n        Generator over matching triples.\n\n        :param tuple triple_pattern: 3 RDFLib terms\n        :param context: Context graph, if available.\n        :type context: rdflib.Graph or None\n\n        :rtype: Iterator\n        :return: Generator over triples and contexts in which each result has\n            the following format::\n\n                (s, p, o), generator(contexts)\n\n        Where the contexts generator lists all context that the triple appears\n        in.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_18triples(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_triple_pattern = 0;
-  PyObject *__pyx_v_context = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("triples (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_triple_pattern,&__pyx_n_s_context,0};
-    PyObject* values[2] = {0,0};
-    values[1] = ((PyObject *)Py_None);
-    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] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_triple_pattern)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_context);
-          if (value) { values[1] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "triples") < 0)) __PYX_ERR(0, 1265, __pyx_L3_error)
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        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;
-      }
-    }
-    __pyx_v_triple_pattern = values[0];
-    __pyx_v_context = values[1];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("triples", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1265, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.triples", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_17triples(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self), __pyx_v_triple_pattern, __pyx_v_context);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_17triples(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple_pattern, PyObject *__pyx_v_context) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples *__pyx_cur_scope;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("triples", 0);
-  __pyx_cur_scope = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples *)__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples, __pyx_empty_tuple, NULL);
-  if (unlikely(!__pyx_cur_scope)) {
-    __pyx_cur_scope = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples *)Py_None);
-    __Pyx_INCREF(Py_None);
-    __PYX_ERR(0, 1265, __pyx_L1_error)
-  } else {
-    __Pyx_GOTREF(__pyx_cur_scope);
-  }
-  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
-  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
-  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
-  __pyx_cur_scope->__pyx_v_triple_pattern = __pyx_v_triple_pattern;
-  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_triple_pattern);
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_triple_pattern);
-  __pyx_cur_scope->__pyx_v_context = __pyx_v_context;
-  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_context);
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_context);
-  {
-    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_19generator1, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_triples, __pyx_n_s_LmdbTriplestore_triples, __pyx_n_s_lakesuperior_store_ldp_rs_lmdb_t); if (unlikely(!gen)) __PYX_ERR(0, 1265, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_cur_scope);
-    __Pyx_RefNannyFinishContext();
-    return (PyObject *) gen;
-  }
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.triples", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_gb_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_19generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
-{
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples *__pyx_cur_scope = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples *)__pyx_generator->closure);
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  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;
-  struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_triple_keys __pyx_t_8;
-  MDB_cursor *__pyx_t_9;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open __pyx_t_10;
-  size_t __pyx_t_11;
-  size_t __pyx_t_12;
-  size_t __pyx_t_13;
-  int __pyx_t_14;
-  PyObject *__pyx_t_15 = NULL;
-  PyObject *__pyx_t_16 = NULL;
-  PyObject *__pyx_t_17 = NULL;
-  unsigned char *__pyx_t_18;
-  int __pyx_t_19;
-  char const *__pyx_t_20;
-  PyObject *__pyx_t_21 = NULL;
-  PyObject *__pyx_t_22 = NULL;
-  PyObject *__pyx_t_23 = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("triples", 0);
-  __Pyx_TraceCall("triples", __pyx_f[0], 1265, 0, __PYX_ERR(0, 1265, __pyx_L1_error));
-  switch (__pyx_generator->resume_label) {
-    case 0: goto __pyx_L3_first_run;
-    case 1: goto __pyx_L21_resume_from_yield;
-    default: /* CPython raises the right error here */
-    __Pyx_TraceReturn(Py_None, 0);
-    __Pyx_RefNannyFinishContext();
-    return NULL;
-  }
-  __pyx_L3_first_run:;
-  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1265, __pyx_L1_error)
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1283
- *         """
- *         cdef:
- *             size_t i = 0, j = 0             # <<<<<<<<<<<<<<
- *             unsigned char spok[TRP_KLEN]
- *             unsigned char ck[KLEN]
- */
-  __pyx_cur_scope->__pyx_v_i = 0;
-  __pyx_cur_scope->__pyx_v_j = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1290
- *         # This sounds strange, RDFLib should be passing None at this point,
- *         # but anyway...
- *         context = self._normalize_context(context)             # <<<<<<<<<<<<<<
- * 
- *         logger.debug(
- */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_normalize_context); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1290, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __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_cur_scope->__pyx_v_context); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1290, __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_cur_scope->__pyx_v_context};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1290, __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_cur_scope->__pyx_v_context};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1290, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-    } else
-    #endif
-    {
-      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1290, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_context);
-      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_context);
-      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_context);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1290, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_context);
-  __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_context, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1292
- *         context = self._normalize_context(context)
- * 
- *         logger.debug(             # <<<<<<<<<<<<<<
- *                 'Getting triples for: {}, {}'.format(triple_pattern, context))
- *         rset = self.triple_keys(triple_pattern, context)
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1292, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1292, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1293
- * 
- *         logger.debug(
- *                 'Getting triples for: {}, {}'.format(triple_pattern, context))             # <<<<<<<<<<<<<<
- *         rset = self.triple_keys(triple_pattern, context)
- * 
- */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Getting_triples_for, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1293, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_5 = NULL;
-  __pyx_t_6 = 0;
-  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);
-      __pyx_t_6 = 1;
-    }
-  }
-  #if CYTHON_FAST_PYCALL
-  if (PyFunction_Check(__pyx_t_3)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_triple_pattern, __pyx_cur_scope->__pyx_v_context};
-    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1293, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_GOTREF(__pyx_t_2);
-  } else
-  #endif
-  #if CYTHON_FAST_PYCCALL
-  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_triple_pattern, __pyx_cur_scope->__pyx_v_context};
-    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1293, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_GOTREF(__pyx_t_2);
-  } else
-  #endif
-  {
-    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1293, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_7);
-    if (__pyx_t_5) {
-      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
-    }
-    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_triple_pattern);
-    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_triple_pattern);
-    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_triple_pattern);
-    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_context);
-    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_context);
-    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_context);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1293, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_4, function);
-    }
-  }
-  if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1292, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_GOTREF(__pyx_t_1);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_4)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1292, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1292, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1292, __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_GIVEREF(__pyx_t_2);
-      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_2);
-      __pyx_t_2 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1292, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1294
- *         logger.debug(
- *                 'Getting triples for: {}, {}'.format(triple_pattern, context))
- *         rset = self.triple_keys(triple_pattern, context)             # <<<<<<<<<<<<<<
- * 
- *         #logger.debug('Triple keys found: {}'.format(rset.data[:rset.size]))
- */
-  if (!(likely(PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_triple_pattern))||((__pyx_cur_scope->__pyx_v_triple_pattern) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_cur_scope->__pyx_v_triple_pattern)->tp_name), 0))) __PYX_ERR(0, 1294, __pyx_L1_error)
-  __pyx_t_8.__pyx_n = 1;
-  __pyx_t_8.context = __pyx_cur_scope->__pyx_v_context;
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->triple_keys(__pyx_cur_scope->__pyx_v_self, ((PyObject*)__pyx_cur_scope->__pyx_v_triple_pattern), 0, &__pyx_t_8)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1294, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_cur_scope->__pyx_v_rset = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1298
- *         #logger.debug('Triple keys found: {}'.format(rset.data[:rset.size]))
- * 
- *         cur = self._cur_open('spo:c')             # <<<<<<<<<<<<<<
- *         try:
- *             key_v.mv_size = TRP_KLEN
- */
-  __pyx_t_10.__pyx_n = 1;
-  __pyx_t_10.dblabel = ((unsigned char *)((char const *)"spo:c"));
-  __pyx_t_9 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_cur_scope->__pyx_v_self), &__pyx_t_10); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1298, __pyx_L1_error)
-  __pyx_cur_scope->__pyx_v_cur = __pyx_t_9;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1299
- * 
- *         cur = self._cur_open('spo:c')
- *         try:             # <<<<<<<<<<<<<<
- *             key_v.mv_size = TRP_KLEN
- *             for i in range(rset.ct):
- */
-  /*try:*/ {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1300
- *         cur = self._cur_open('spo:c')
- *         try:
- *             key_v.mv_size = TRP_KLEN             # <<<<<<<<<<<<<<
- *             for i in range(rset.ct):
- *                 #logger.debug('Checking contexts for triples: {}'.format(
- */
-    __pyx_cur_scope->__pyx_v_key_v.mv_size = 15;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1301
- *         try:
- *             key_v.mv_size = TRP_KLEN
- *             for i in range(rset.ct):             # <<<<<<<<<<<<<<
- *                 #logger.debug('Checking contexts for triples: {}'.format(
- *                 #    (rset.data + i * TRP_KLEN)[:TRP_KLEN]))
- */
-    __pyx_t_11 = __pyx_cur_scope->__pyx_v_rset->ct;
-    __pyx_t_12 = __pyx_t_11;
-    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-      __pyx_cur_scope->__pyx_v_i = __pyx_t_13;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1304
- *                 #logger.debug('Checking contexts for triples: {}'.format(
- *                 #    (rset.data + i * TRP_KLEN)[:TRP_KLEN]))
- *                 key_v.mv_data = rset.data + i * TRP_KLEN             # <<<<<<<<<<<<<<
- *                 # Get contexts associated with each triple.
- *                 contexts = []
- */
-      __pyx_cur_scope->__pyx_v_key_v.mv_data = (__pyx_cur_scope->__pyx_v_rset->data + (__pyx_cur_scope->__pyx_v_i * 15));
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1306
- *                 key_v.mv_data = rset.data + i * TRP_KLEN
- *                 # Get contexts associated with each triple.
- *                 contexts = []             # <<<<<<<<<<<<<<
- *                 # This shall never be MDB_NOTFOUND.
- *                 _check(lmdb.mdb_cursor_get(cur, &key_v, &data_v, lmdb.MDB_SET))
- */
-      __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1306, __pyx_L5_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_contexts);
-      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_contexts, ((PyObject*)__pyx_t_1));
-      __Pyx_GIVEREF(__pyx_t_1);
-      __pyx_t_1 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1308
- *                 contexts = []
- *                 # This shall never be MDB_NOTFOUND.
- *                 _check(lmdb.mdb_cursor_get(cur, &key_v, &data_v, lmdb.MDB_SET))             # <<<<<<<<<<<<<<
- *                 while True:
- *                     c_uri = self.from_key(<Key>data_v.mv_data)
- */
-      __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_cur_scope->__pyx_v_cur, (&__pyx_cur_scope->__pyx_v_key_v), (&__pyx_cur_scope->__pyx_v_data_v), MDB_SET), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1308, __pyx_L5_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1309
- *                 # This shall never be MDB_NOTFOUND.
- *                 _check(lmdb.mdb_cursor_get(cur, &key_v, &data_v, lmdb.MDB_SET))
- *                 while True:             # <<<<<<<<<<<<<<
- *                     c_uri = self.from_key(<Key>data_v.mv_data)
- *                     contexts.append(Graph(identifier=c_uri, store=self))
- */
-      while (1) {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1310
- *                 _check(lmdb.mdb_cursor_get(cur, &key_v, &data_v, lmdb.MDB_SET))
- *                 while True:
- *                     c_uri = self.from_key(<Key>data_v.mv_data)             # <<<<<<<<<<<<<<
- *                     contexts.append(Graph(identifier=c_uri, store=self))
- *                     try:
- */
-        __pyx_t_1 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->from_key(__pyx_cur_scope->__pyx_v_self, ((unsigned char *)__pyx_cur_scope->__pyx_v_data_v.mv_data)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1310, __pyx_L5_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_c_uri);
-        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_c_uri, __pyx_t_1);
-        __Pyx_GIVEREF(__pyx_t_1);
-        __pyx_t_1 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1311
- *                 while True:
- *                     c_uri = self.from_key(<Key>data_v.mv_data)
- *                     contexts.append(Graph(identifier=c_uri, store=self))             # <<<<<<<<<<<<<<
- *                     try:
- *                         _check(lmdb.mdb_cursor_get(
- */
-        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Graph); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1311, __pyx_L5_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1311, __pyx_L5_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_identifier, __pyx_cur_scope->__pyx_v_c_uri) < 0) __PYX_ERR(0, 1311, __pyx_L5_error)
-        if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_store, ((PyObject *)__pyx_cur_scope->__pyx_v_self)) < 0) __PYX_ERR(0, 1311, __pyx_L5_error)
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1311, __pyx_L5_error)
-        __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_14 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_contexts, __pyx_t_7); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 1311, __pyx_L5_error)
-        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1312
- *                     c_uri = self.from_key(<Key>data_v.mv_data)
- *                     contexts.append(Graph(identifier=c_uri, store=self))
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_NEXT_DUP))
- */
-        {
-          __Pyx_ExceptionSave(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
-          __Pyx_XGOTREF(__pyx_t_15);
-          __Pyx_XGOTREF(__pyx_t_16);
-          __Pyx_XGOTREF(__pyx_t_17);
-          /*try:*/ {
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1313
- *                     contexts.append(Graph(identifier=c_uri, store=self))
- *                     try:
- *                         _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                             cur, &key_v, &data_v, lmdb.MDB_NEXT_DUP))
- *                     except KeyNotFoundError:
- */
-            __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_cur_scope->__pyx_v_cur, (&__pyx_cur_scope->__pyx_v_key_v), (&__pyx_cur_scope->__pyx_v_data_v), MDB_NEXT_DUP), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1313, __pyx_L11_error)
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1312
- *                     c_uri = self.from_key(<Key>data_v.mv_data)
- *                     contexts.append(Graph(identifier=c_uri, store=self))
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_NEXT_DUP))
- */
-          }
-          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-          __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-          goto __pyx_L18_try_end;
-          __pyx_L11_error:;
-          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1315
- *                         _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_NEXT_DUP))
- *                     except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                         break
- * 
- */
-          __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_4, &__pyx_t_1);
-          __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1315, __pyx_L13_except_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __pyx_t_6 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_2);
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_ErrRestore(__pyx_t_7, __pyx_t_4, __pyx_t_1);
-          __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = 0;
-          if (__pyx_t_6) {
-            __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.triples", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 1315, __pyx_L13_except_error)
-            __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_GOTREF(__pyx_t_4);
-            __Pyx_GOTREF(__pyx_t_7);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1316
- *                             cur, &key_v, &data_v, lmdb.MDB_NEXT_DUP))
- *                     except KeyNotFoundError:
- *                         break             # <<<<<<<<<<<<<<
- * 
- *                 #logger.debug('Triple keys before yield: {}: {}.'.format(
- */
-            goto __pyx_L19_except_break;
-            __pyx_L19_except_break:;
-            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-            goto __pyx_L16_try_break;
-          }
-          goto __pyx_L13_except_error;
-          __pyx_L13_except_error:;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1312
- *                     c_uri = self.from_key(<Key>data_v.mv_data)
- *                     contexts.append(Graph(identifier=c_uri, store=self))
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_NEXT_DUP))
- */
-          __Pyx_XGIVEREF(__pyx_t_15);
-          __Pyx_XGIVEREF(__pyx_t_16);
-          __Pyx_XGIVEREF(__pyx_t_17);
-          __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
-          goto __pyx_L5_error;
-          __pyx_L16_try_break:;
-          __Pyx_XGIVEREF(__pyx_t_15);
-          __Pyx_XGIVEREF(__pyx_t_16);
-          __Pyx_XGIVEREF(__pyx_t_17);
-          __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
-          goto __pyx_L10_break;
-          __pyx_L18_try_end:;
-        }
-      }
-      __pyx_L10_break:;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1321
- *                 #    (<TripleKey>key_v.mv_data)[:TRP_KLEN], tuple(contexts)))
- *                 yield self.from_trp_key(
- *                     (<TripleKey>key_v.mv_data)[: TRP_KLEN]), tuple(contexts)             # <<<<<<<<<<<<<<
- *                 #logger.debug('After yield.')
- *         finally:
- */
-      __pyx_t_7 = __Pyx_PyBytes_FromStringAndSize(((const char*)((unsigned char *)__pyx_cur_scope->__pyx_v_key_v.mv_data)) + 0, 15 - 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1321, __pyx_L5_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_18 = __Pyx_PyBytes_AsWritableUString(__pyx_t_7); if (unlikely((!__pyx_t_18) && PyErr_Occurred())) __PYX_ERR(0, 1321, __pyx_L5_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1320
- *                 #logger.debug('Triple keys before yield: {}: {}.'.format(
- *                 #    (<TripleKey>key_v.mv_data)[:TRP_KLEN], tuple(contexts)))
- *                 yield self.from_trp_key(             # <<<<<<<<<<<<<<
- *                     (<TripleKey>key_v.mv_data)[: TRP_KLEN]), tuple(contexts)
- *                 #logger.debug('After yield.')
- */
-      __pyx_t_4 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->from_trp_key(__pyx_cur_scope->__pyx_v_self, __pyx_t_18); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1320, __pyx_L5_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1321
- *                 #    (<TripleKey>key_v.mv_data)[:TRP_KLEN], tuple(contexts)))
- *                 yield self.from_trp_key(
- *                     (<TripleKey>key_v.mv_data)[: TRP_KLEN]), tuple(contexts)             # <<<<<<<<<<<<<<
- *                 #logger.debug('After yield.')
- *         finally:
- */
-      __pyx_t_7 = PyList_AsTuple(__pyx_cur_scope->__pyx_v_contexts); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1321, __pyx_L5_error)
-      __Pyx_GOTREF(__pyx_t_7);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1320
- *                 #logger.debug('Triple keys before yield: {}: {}.'.format(
- *                 #    (<TripleKey>key_v.mv_data)[:TRP_KLEN], tuple(contexts)))
- *                 yield self.from_trp_key(             # <<<<<<<<<<<<<<
- *                     (<TripleKey>key_v.mv_data)[: TRP_KLEN]), tuple(contexts)
- *                 #logger.debug('After yield.')
- */
-      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1320, __pyx_L5_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_GIVEREF(__pyx_t_4);
-      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
-      __Pyx_GIVEREF(__pyx_t_7);
-      PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_7);
-      __pyx_t_4 = 0;
-      __pyx_t_7 = 0;
-      __pyx_r = __pyx_t_1;
-      __pyx_t_1 = 0;
-      __pyx_cur_scope->__pyx_t_0 = __pyx_t_11;
-      __pyx_cur_scope->__pyx_t_1 = __pyx_t_12;
-      __pyx_cur_scope->__pyx_t_2 = __pyx_t_13;
-      __Pyx_XGIVEREF(__pyx_r);
-      __Pyx_TraceReturn(__pyx_r, 0);
-      __Pyx_RefNannyFinishContext();
-      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
-      /* return from generator, yielding value */
-      __pyx_generator->resume_label = 1;
-      return __pyx_r;
-      __pyx_L21_resume_from_yield:;
-      __pyx_t_11 = __pyx_cur_scope->__pyx_t_0;
-      __pyx_t_12 = __pyx_cur_scope->__pyx_t_1;
-      __pyx_t_13 = __pyx_cur_scope->__pyx_t_2;
-      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1320, __pyx_L5_error)
-    }
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1324
- *                 #logger.debug('After yield.')
- *         finally:
- *             self._cur_close(cur)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  /*finally:*/ {
-    /*normal exit:*/{
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_cur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1324, __pyx_L1_error)
-      goto __pyx_L6;
-    }
-    __pyx_L5_error:;
-    /*exception exit:*/{
-      __Pyx_PyThreadState_assign
-      __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0;
-      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
-      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
-      __Pyx_XGOTREF(__pyx_t_17);
-      __Pyx_XGOTREF(__pyx_t_16);
-      __Pyx_XGOTREF(__pyx_t_15);
-      __Pyx_XGOTREF(__pyx_t_21);
-      __Pyx_XGOTREF(__pyx_t_22);
-      __Pyx_XGOTREF(__pyx_t_23);
-      __pyx_t_6 = __pyx_lineno; __pyx_t_19 = __pyx_clineno; __pyx_t_20 = __pyx_filename;
-      {
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_cur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1324, __pyx_L23_error)
-      }
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_21);
-        __Pyx_XGIVEREF(__pyx_t_22);
-        __Pyx_XGIVEREF(__pyx_t_23);
-        __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
-      }
-      __Pyx_XGIVEREF(__pyx_t_17);
-      __Pyx_XGIVEREF(__pyx_t_16);
-      __Pyx_XGIVEREF(__pyx_t_15);
-      __Pyx_ErrRestore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
-      __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0;
-      __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_19; __pyx_filename = __pyx_t_20;
-      goto __pyx_L1_error;
-      __pyx_L23_error:;
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_21);
-        __Pyx_XGIVEREF(__pyx_t_22);
-        __Pyx_XGIVEREF(__pyx_t_23);
-        __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
-      }
-      __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-      __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0;
-      goto __pyx_L1_error;
-    }
-    __pyx_L6:;
-  }
-  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1265
- * 
- * 
- *     def triples(self, triple_pattern, context=None):             # <<<<<<<<<<<<<<
- *         """
- *         Generator over matching triples.
- */
-
-  /* function exit code */
-  PyErr_SetNone(PyExc_StopIteration);
-  goto __pyx_L0;
-  __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_XDECREF(__pyx_t_7);
-  __Pyx_AddTraceback("triples", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
-  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
-  __pyx_generator->resume_label = -1;
-  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1327
- * 
- * 
- *     cpdef ResultSet triple_keys(self, tuple triple_pattern, context=None):             # <<<<<<<<<<<<<<
- *         """
- *         Top-level lookup method.
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_21triple_keys(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_triple_keys(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple_pattern, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_triple_keys *__pyx_optional_args) {
-  PyObject *__pyx_v_context = ((PyObject *)Py_None);
-  unsigned char __pyx_v_tk[5];
-  unsigned char __pyx_v_ck[5];
-  unsigned char __pyx_v_spok[15];
-  size_t __pyx_v_ct;
-  size_t __pyx_v_flt_j;
-  size_t __pyx_v_i;
-  size_t __pyx_v_j;
-  size_t __pyx_v_pg_offset;
-  MDB_cursor *__pyx_v_icur;
-  struct MDB_val __pyx_v_key_v;
-  struct MDB_val __pyx_v_data_v;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_flt_res = 0;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_ret = 0;
-  PyObject *__pyx_v_term = NULL;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_res = NULL;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  int __pyx_t_7;
-  int __pyx_t_8;
-  PyObject *__pyx_t_9 = NULL;
-  PyObject *__pyx_t_10 = NULL;
-  PyObject *__pyx_t_11 = NULL;
-  MDB_cursor *__pyx_t_12;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open __pyx_t_13;
-  size_t __pyx_t_14;
-  Py_ssize_t __pyx_t_15;
-  Py_UCS4 __pyx_t_16;
-  PyObject *__pyx_t_17 = NULL;
-  PyObject *__pyx_t_18 = NULL;
-  int __pyx_t_19;
-  char const *__pyx_t_20;
-  PyObject *__pyx_t_21 = NULL;
-  PyObject *__pyx_t_22 = NULL;
-  PyObject *__pyx_t_23 = NULL;
-  char const *__pyx_t_24;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_t_25 = NULL;
-  __Pyx_RefNannySetupContext("triple_keys", 0);
-  __Pyx_TraceCall("triple_keys", __pyx_f[0], 1327, 0, __PYX_ERR(0, 1327, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_context = __pyx_optional_args->context;
-    }
-  }
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_triple_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1327, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_21triple_keys)) {
-      __Pyx_XDECREF(((PyObject *)__pyx_r));
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      __pyx_t_5 = 0;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-          __pyx_t_5 = 1;
-        }
-      }
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_triple_pattern, __pyx_v_context};
-        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1327, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_triple_pattern, __pyx_v_context};
-        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1327, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else
-      #endif
-      {
-        __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1327, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        if (__pyx_t_4) {
-          __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
-        }
-        __Pyx_INCREF(__pyx_v_triple_pattern);
-        __Pyx_GIVEREF(__pyx_v_triple_pattern);
-        PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_triple_pattern);
-        __Pyx_INCREF(__pyx_v_context);
-        __Pyx_GIVEREF(__pyx_v_context);
-        PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_context);
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1327, __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;
-      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet))))) __PYX_ERR(0, 1327, __pyx_L1_error)
-      __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_2);
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1345
- *             unsigned char spok[TRP_KLEN]
- *             #unsigned char *pk_c
- *             size_t ct = 0, flt_j = 0, i = 0, j = 0, pg_offset = 0, c_size             # <<<<<<<<<<<<<<
- *             lmdb.MDB_cursor *icur
- *             lmdb.MDB_val key_v, data_v
- */
-  __pyx_v_ct = 0;
-  __pyx_v_flt_j = 0;
-  __pyx_v_i = 0;
-  __pyx_v_j = 0;
-  __pyx_v_pg_offset = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1350
- *             ResultSet flt_res, ret
- * 
- *         if context is not None:             # <<<<<<<<<<<<<<
- *             #serialize(context, &pk_c, &c_size)
- *             try:
- */
-  __pyx_t_7 = (__pyx_v_context != Py_None);
-  __pyx_t_8 = (__pyx_t_7 != 0);
-  if (__pyx_t_8) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1352
- *         if context is not None:
- *             #serialize(context, &pk_c, &c_size)
- *             try:             # <<<<<<<<<<<<<<
- *                 self._to_key(context, &ck)
- *             except KeyNotFoundError:
- */
-    {
-      __Pyx_PyThreadState_declare
-      __Pyx_PyThreadState_assign
-      __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
-      __Pyx_XGOTREF(__pyx_t_9);
-      __Pyx_XGOTREF(__pyx_t_10);
-      __Pyx_XGOTREF(__pyx_t_11);
-      /*try:*/ {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1353
- *             #serialize(context, &pk_c, &c_size)
- *             try:
- *                 self._to_key(context, &ck)             # <<<<<<<<<<<<<<
- *             except KeyNotFoundError:
- *                 # Context not found.
- */
-        __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_key(__pyx_v_self, __pyx_v_context, (&__pyx_v_ck)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1353, __pyx_L4_error)
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1352
- *         if context is not None:
- *             #serialize(context, &pk_c, &c_size)
- *             try:             # <<<<<<<<<<<<<<
- *                 self._to_key(context, &ck)
- *             except KeyNotFoundError:
- */
-      }
-      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-      goto __pyx_L9_try_end;
-      __pyx_L4_error:;
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1354
- *             try:
- *                 self._to_key(context, &ck)
- *             except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                 # Context not found.
- *                 return ResultSet(0, TRP_KLEN)
- */
-      __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1354, __pyx_L6_except_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_6);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-      __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
-      if (__pyx_t_5) {
-        __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.triple_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 1354, __pyx_L6_except_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_GOTREF(__pyx_t_1);
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1356
- *             except KeyNotFoundError:
- *                 # Context not found.
- *                 return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- * 
- *             icur = self._cur_open('c:spo')
- */
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1356, __pyx_L6_except_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_6);
-        __pyx_t_6 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        goto __pyx_L7_except_return;
-      }
-      goto __pyx_L6_except_error;
-      __pyx_L6_except_error:;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1352
- *         if context is not None:
- *             #serialize(context, &pk_c, &c_size)
- *             try:             # <<<<<<<<<<<<<<
- *                 self._to_key(context, &ck)
- *             except KeyNotFoundError:
- */
-      __Pyx_XGIVEREF(__pyx_t_9);
-      __Pyx_XGIVEREF(__pyx_t_10);
-      __Pyx_XGIVEREF(__pyx_t_11);
-      __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-      goto __pyx_L1_error;
-      __pyx_L7_except_return:;
-      __Pyx_XGIVEREF(__pyx_t_9);
-      __Pyx_XGIVEREF(__pyx_t_10);
-      __Pyx_XGIVEREF(__pyx_t_11);
-      __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-      goto __pyx_L0;
-      __pyx_L9_try_end:;
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1358
- *                 return ResultSet(0, TRP_KLEN)
- * 
- *             icur = self._cur_open('c:spo')             # <<<<<<<<<<<<<<
- * 
- *             try:
- */
-    __pyx_t_13.__pyx_n = 1;
-    __pyx_t_13.dblabel = ((unsigned char *)((char const *)"c:spo"));
-    __pyx_t_12 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_13); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1358, __pyx_L1_error)
-    __pyx_v_icur = __pyx_t_12;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1360
- *             icur = self._cur_open('c:spo')
- * 
- *             try:             # <<<<<<<<<<<<<<
- *                 key_v.mv_data = ck
- *                 key_v.mv_size = KLEN
- */
-    /*try:*/ {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1361
- * 
- *             try:
- *                 key_v.mv_data = ck             # <<<<<<<<<<<<<<
- *                 key_v.mv_size = KLEN
- * 
- */
-      __pyx_v_key_v.mv_data = __pyx_v_ck;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1362
- *             try:
- *                 key_v.mv_data = ck
- *                 key_v.mv_size = KLEN             # <<<<<<<<<<<<<<
- * 
- *                 # s p o c
- */
-      __pyx_v_key_v.mv_size = 5;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1365
- * 
- *                 # s p o c
- *                 if all(triple_pattern):             # <<<<<<<<<<<<<<
- *                     #logger.debug('Lookup: s p o c')
- *                     for i, term in enumerate(triple_pattern):
- */
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_all, __pyx_v_triple_pattern); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1365, __pyx_L13_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1365, __pyx_L13_error)
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      if (__pyx_t_8) {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1367
- *                 if all(triple_pattern):
- *                     #logger.debug('Lookup: s p o c')
- *                     for i, term in enumerate(triple_pattern):             # <<<<<<<<<<<<<<
- *                         try:
- *                             self._to_key(term, &tk)
- */
-        __pyx_t_14 = 0;
-        __pyx_t_1 = __pyx_v_triple_pattern; __Pyx_INCREF(__pyx_t_1); __pyx_t_15 = 0;
-        for (;;) {
-          if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
-          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-          __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_15); __Pyx_INCREF(__pyx_t_2); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 1367, __pyx_L13_error)
-          #else
-          __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1367, __pyx_L13_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          #endif
-          __Pyx_XDECREF_SET(__pyx_v_term, __pyx_t_2);
-          __pyx_t_2 = 0;
-          __pyx_v_i = __pyx_t_14;
-          __pyx_t_14 = (__pyx_t_14 + 1);
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1368
- *                     #logger.debug('Lookup: s p o c')
- *                     for i, term in enumerate(triple_pattern):
- *                         try:             # <<<<<<<<<<<<<<
- *                             self._to_key(term, &tk)
- *                         except KeyNotFoundError:
- */
-          {
-            __Pyx_PyThreadState_declare
-            __Pyx_PyThreadState_assign
-            __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
-            __Pyx_XGOTREF(__pyx_t_11);
-            __Pyx_XGOTREF(__pyx_t_10);
-            __Pyx_XGOTREF(__pyx_t_9);
-            /*try:*/ {
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1369
- *                     for i, term in enumerate(triple_pattern):
- *                         try:
- *                             self._to_key(term, &tk)             # <<<<<<<<<<<<<<
- *                         except KeyNotFoundError:
- *                             # Context not found.
- */
-              __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_key(__pyx_v_self, __pyx_v_term, (&__pyx_v_tk)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1369, __pyx_L18_error)
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1368
- *                     #logger.debug('Lookup: s p o c')
- *                     for i, term in enumerate(triple_pattern):
- *                         try:             # <<<<<<<<<<<<<<
- *                             self._to_key(term, &tk)
- *                         except KeyNotFoundError:
- */
-            }
-            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-            goto __pyx_L25_try_end;
-            __pyx_L18_error:;
-            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1370
- *                         try:
- *                             self._to_key(term, &tk)
- *                         except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                             # Context not found.
- *                             return ResultSet(0, TRP_KLEN)
- */
-            __Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_3, &__pyx_t_6);
-            __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1370, __pyx_L20_except_error)
-            __Pyx_GOTREF(__pyx_t_4);
-            __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_4);
-            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __Pyx_ErrRestore(__pyx_t_2, __pyx_t_3, __pyx_t_6);
-            __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_6 = 0;
-            if (__pyx_t_5) {
-              __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.triple_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
-              if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_3, &__pyx_t_2) < 0) __PYX_ERR(0, 1370, __pyx_L20_except_error)
-              __Pyx_GOTREF(__pyx_t_6);
-              __Pyx_GOTREF(__pyx_t_3);
-              __Pyx_GOTREF(__pyx_t_2);
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1372
- *                         except KeyNotFoundError:
- *                             # Context not found.
- *                             return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- *                         memcpy(spok + (KLEN * i), tk, KLEN)
- *                         if tk is NULL:
- */
-              __Pyx_XDECREF(((PyObject *)__pyx_r));
-              __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1372, __pyx_L20_except_error)
-              __Pyx_GOTREF(__pyx_t_4);
-              __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_4);
-              __pyx_t_4 = 0;
-              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-              goto __pyx_L21_except_return;
-            }
-            goto __pyx_L20_except_error;
-            __pyx_L20_except_error:;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1368
- *                     #logger.debug('Lookup: s p o c')
- *                     for i, term in enumerate(triple_pattern):
- *                         try:             # <<<<<<<<<<<<<<
- *                             self._to_key(term, &tk)
- *                         except KeyNotFoundError:
- */
-            __Pyx_XGIVEREF(__pyx_t_11);
-            __Pyx_XGIVEREF(__pyx_t_10);
-            __Pyx_XGIVEREF(__pyx_t_9);
-            __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-            goto __pyx_L13_error;
-            __pyx_L21_except_return:;
-            __Pyx_XGIVEREF(__pyx_t_11);
-            __Pyx_XGIVEREF(__pyx_t_10);
-            __Pyx_XGIVEREF(__pyx_t_9);
-            __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-            goto __pyx_L12_return;
-            __pyx_L25_try_end:;
-          }
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1373
- *                             # Context not found.
- *                             return ResultSet(0, TRP_KLEN)
- *                         memcpy(spok + (KLEN * i), tk, KLEN)             # <<<<<<<<<<<<<<
- *                         if tk is NULL:
- *                             # A term in the triple is not found.
- */
-          (void)(memcpy((__pyx_v_spok + (5 * __pyx_v_i)), __pyx_v_tk, 5));
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1374
- *                             return ResultSet(0, TRP_KLEN)
- *                         memcpy(spok + (KLEN * i), tk, KLEN)
- *                         if tk is NULL:             # <<<<<<<<<<<<<<
- *                             # A term in the triple is not found.
- *                             return ResultSet(0, TRP_KLEN)
- */
-          __pyx_t_8 = ((__pyx_v_tk == NULL) != 0);
-          if (__pyx_t_8) {
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1376
- *                         if tk is NULL:
- *                             # A term in the triple is not found.
- *                             return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- *                     data_v.mv_data = spok
- *                     data_v.mv_size = TRP_KLEN
- */
-            __Pyx_XDECREF(((PyObject *)__pyx_r));
-            __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1376, __pyx_L13_error)
-            __Pyx_GOTREF(__pyx_t_2);
-            __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_2);
-            __pyx_t_2 = 0;
-            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            goto __pyx_L12_return;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1374
- *                             return ResultSet(0, TRP_KLEN)
- *                         memcpy(spok + (KLEN * i), tk, KLEN)
- *                         if tk is NULL:             # <<<<<<<<<<<<<<
- *                             # A term in the triple is not found.
- *                             return ResultSet(0, TRP_KLEN)
- */
-          }
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1367
- *                 if all(triple_pattern):
- *                     #logger.debug('Lookup: s p o c')
- *                     for i, term in enumerate(triple_pattern):             # <<<<<<<<<<<<<<
- *                         try:
- *                             self._to_key(term, &tk)
- */
-        }
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1377
- *                             # A term in the triple is not found.
- *                             return ResultSet(0, TRP_KLEN)
- *                     data_v.mv_data = spok             # <<<<<<<<<<<<<<
- *                     data_v.mv_size = TRP_KLEN
- *                     #logger.debug(
- */
-        __pyx_v_data_v.mv_data = __pyx_v_spok;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1378
- *                             return ResultSet(0, TRP_KLEN)
- *                     data_v.mv_data = spok
- *                     data_v.mv_size = TRP_KLEN             # <<<<<<<<<<<<<<
- *                     #logger.debug(
- *                     #        'Found spok {}. Matching with context {}'.format(
- */
-        __pyx_v_data_v.mv_size = 15;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1383
- *                     #            (<TripleKey>data_v.mv_data)[: TRP_KLEN],
- *                     #            (<Key>key_v.mv_data)[: KLEN]))
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                                 icur, &key_v, &data_v, lmdb.MDB_GET_BOTH))
- */
-        {
-          __Pyx_PyThreadState_declare
-          __Pyx_PyThreadState_assign
-          __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
-          __Pyx_XGOTREF(__pyx_t_9);
-          __Pyx_XGOTREF(__pyx_t_10);
-          __Pyx_XGOTREF(__pyx_t_11);
-          /*try:*/ {
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1384
- *                     #            (<Key>key_v.mv_data)[: KLEN]))
- *                     try:
- *                         _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                                 icur, &key_v, &data_v, lmdb.MDB_GET_BOTH))
- *                     except KeyNotFoundError:
- */
-            __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_key_v), (&__pyx_v_data_v), MDB_GET_BOTH), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1384, __pyx_L29_error)
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1383
- *                     #            (<TripleKey>data_v.mv_data)[: TRP_KLEN],
- *                     #            (<Key>key_v.mv_data)[: KLEN]))
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                                 icur, &key_v, &data_v, lmdb.MDB_GET_BOTH))
- */
-          }
-          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-          goto __pyx_L34_try_end;
-          __pyx_L29_error:;
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1386
- *                         _check(lmdb.mdb_cursor_get(
- *                                 icur, &key_v, &data_v, lmdb.MDB_GET_BOTH))
- *                     except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                         # Triple not found.
- *                         #logger.debug('spok / ck pair not found.')
- */
-          __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1386, __pyx_L31_except_error)
-          __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_6);
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-          __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
-          if (__pyx_t_5) {
-            __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.triple_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 1386, __pyx_L31_except_error)
-            __Pyx_GOTREF(__pyx_t_3);
-            __Pyx_GOTREF(__pyx_t_2);
-            __Pyx_GOTREF(__pyx_t_1);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1389
- *                         # Triple not found.
- *                         #logger.debug('spok / ck pair not found.')
- *                         return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- *                     ret = ResultSet(1, TRP_KLEN)
- *                     memcpy(ret.data, spok, TRP_KLEN)
- */
-            __Pyx_XDECREF(((PyObject *)__pyx_r));
-            __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1389, __pyx_L31_except_error)
-            __Pyx_GOTREF(__pyx_t_6);
-            __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_6);
-            __pyx_t_6 = 0;
-            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            goto __pyx_L32_except_return;
-          }
-          goto __pyx_L31_except_error;
-          __pyx_L31_except_error:;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1383
- *                     #            (<TripleKey>data_v.mv_data)[: TRP_KLEN],
- *                     #            (<Key>key_v.mv_data)[: KLEN]))
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                                 icur, &key_v, &data_v, lmdb.MDB_GET_BOTH))
- */
-          __Pyx_XGIVEREF(__pyx_t_9);
-          __Pyx_XGIVEREF(__pyx_t_10);
-          __Pyx_XGIVEREF(__pyx_t_11);
-          __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-          goto __pyx_L13_error;
-          __pyx_L32_except_return:;
-          __Pyx_XGIVEREF(__pyx_t_9);
-          __Pyx_XGIVEREF(__pyx_t_10);
-          __Pyx_XGIVEREF(__pyx_t_11);
-          __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-          goto __pyx_L12_return;
-          __pyx_L34_try_end:;
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1390
- *                         #logger.debug('spok / ck pair not found.')
- *                         return ResultSet(0, TRP_KLEN)
- *                     ret = ResultSet(1, TRP_KLEN)             # <<<<<<<<<<<<<<
- *                     memcpy(ret.data, spok, TRP_KLEN)
- * 
- */
-        __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1390, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __pyx_v_ret = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_1);
-        __pyx_t_1 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1391
- *                         return ResultSet(0, TRP_KLEN)
- *                     ret = ResultSet(1, TRP_KLEN)
- *                     memcpy(ret.data, spok, TRP_KLEN)             # <<<<<<<<<<<<<<
- * 
- *                     return ret
- */
-        (void)(memcpy(__pyx_v_ret->data, __pyx_v_spok, 15));
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1393
- *                     memcpy(ret.data, spok, TRP_KLEN)
- * 
- *                     return ret             # <<<<<<<<<<<<<<
- * 
- *                 # ? ? ? c
- */
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __Pyx_INCREF(((PyObject *)__pyx_v_ret));
-        __pyx_r = __pyx_v_ret;
-        goto __pyx_L12_return;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1365
- * 
- *                 # s p o c
- *                 if all(triple_pattern):             # <<<<<<<<<<<<<<
- *                     #logger.debug('Lookup: s p o c')
- *                     for i, term in enumerate(triple_pattern):
- */
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1396
- * 
- *                 # ? ? ? c
- *                 elif not any(triple_pattern):             # <<<<<<<<<<<<<<
- *                     # Get all triples from the context
- *                     #logger.debug('Lookup: ? ? ? c')
- */
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_any, __pyx_v_triple_pattern); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1396, __pyx_L13_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1396, __pyx_L13_error)
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_7 = ((!__pyx_t_8) != 0);
-      if (__pyx_t_7) {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1399
- *                     # Get all triples from the context
- *                     #logger.debug('Lookup: ? ? ? c')
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                             icur, &key_v, &data_v, lmdb.MDB_SET))
- */
-        {
-          __Pyx_PyThreadState_declare
-          __Pyx_PyThreadState_assign
-          __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
-          __Pyx_XGOTREF(__pyx_t_11);
-          __Pyx_XGOTREF(__pyx_t_10);
-          __Pyx_XGOTREF(__pyx_t_9);
-          /*try:*/ {
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1400
- *                     #logger.debug('Lookup: ? ? ? c')
- *                     try:
- *                         _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                             icur, &key_v, &data_v, lmdb.MDB_SET))
- *                     except KeyNotFoundError:
- */
-            __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_key_v), (&__pyx_v_data_v), MDB_SET), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1400, __pyx_L37_error)
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1399
- *                     # Get all triples from the context
- *                     #logger.debug('Lookup: ? ? ? c')
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                             icur, &key_v, &data_v, lmdb.MDB_SET))
- */
-          }
-          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-          goto __pyx_L42_try_end;
-          __pyx_L37_error:;
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1402
- *                         _check(lmdb.mdb_cursor_get(
- *                             icur, &key_v, &data_v, lmdb.MDB_SET))
- *                     except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                         # Triple not found.
- *                         return ResultSet(0, TRP_KLEN)
- */
-          __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1402, __pyx_L39_except_error)
-          __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_6);
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-          __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
-          if (__pyx_t_5) {
-            __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.triple_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 1402, __pyx_L39_except_error)
-            __Pyx_GOTREF(__pyx_t_3);
-            __Pyx_GOTREF(__pyx_t_2);
-            __Pyx_GOTREF(__pyx_t_1);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1404
- *                     except KeyNotFoundError:
- *                         # Triple not found.
- *                         return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- * 
- *                     _check(lmdb.mdb_cursor_count(icur, &ct))
- */
-            __Pyx_XDECREF(((PyObject *)__pyx_r));
-            __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1404, __pyx_L39_except_error)
-            __Pyx_GOTREF(__pyx_t_6);
-            __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_6);
-            __pyx_t_6 = 0;
-            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            goto __pyx_L40_except_return;
-          }
-          goto __pyx_L39_except_error;
-          __pyx_L39_except_error:;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1399
- *                     # Get all triples from the context
- *                     #logger.debug('Lookup: ? ? ? c')
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                             icur, &key_v, &data_v, lmdb.MDB_SET))
- */
-          __Pyx_XGIVEREF(__pyx_t_11);
-          __Pyx_XGIVEREF(__pyx_t_10);
-          __Pyx_XGIVEREF(__pyx_t_9);
-          __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-          goto __pyx_L13_error;
-          __pyx_L40_except_return:;
-          __Pyx_XGIVEREF(__pyx_t_11);
-          __Pyx_XGIVEREF(__pyx_t_10);
-          __Pyx_XGIVEREF(__pyx_t_9);
-          __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-          goto __pyx_L12_return;
-          __pyx_L42_try_end:;
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1406
- *                         return ResultSet(0, TRP_KLEN)
- * 
- *                     _check(lmdb.mdb_cursor_count(icur, &ct))             # <<<<<<<<<<<<<<
- *                     ret = ResultSet(ct, TRP_KLEN)
- *                     logger.debug(f'Entries in c:spo: {ct}')
- */
-        __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_count(__pyx_v_icur, (&__pyx_v_ct)), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1406, __pyx_L13_error)
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1407
- * 
- *                     _check(lmdb.mdb_cursor_count(icur, &ct))
- *                     ret = ResultSet(ct, TRP_KLEN)             # <<<<<<<<<<<<<<
- *                     logger.debug(f'Entries in c:spo: {ct}')
- *                     logger.debug(f'Allocated {ret.size} bytes.')
- */
-        __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_ct); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1407, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1407, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_GIVEREF(__pyx_t_1);
-        PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-        __Pyx_INCREF(__pyx_int_15);
-        __Pyx_GIVEREF(__pyx_int_15);
-        PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_15);
-        __pyx_t_1 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1407, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __pyx_v_ret = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_1);
-        __pyx_t_1 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1408
- *                     _check(lmdb.mdb_cursor_count(icur, &ct))
- *                     ret = ResultSet(ct, TRP_KLEN)
- *                     logger.debug(f'Entries in c:spo: {ct}')             # <<<<<<<<<<<<<<
- *                     logger.debug(f'Allocated {ret.size} bytes.')
- * 
- */
-        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1408, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1408, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __pyx_t_2 = __Pyx_PyUnicode_From_size_t(__pyx_v_ct, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1408, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Entries_in_c_spo, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1408, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __pyx_t_2 = NULL;
-        if (CYTHON_UNPACK_METHODS && unlikely(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_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1408, __pyx_L13_error)
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __Pyx_GOTREF(__pyx_t_1);
-        } else {
-          #if CYTHON_FAST_PYCALL
-          if (PyFunction_Check(__pyx_t_3)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_6};
-            __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1408, __pyx_L13_error)
-            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-            __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          } else
-          #endif
-          #if CYTHON_FAST_PYCCALL
-          if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_6};
-            __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1408, __pyx_L13_error)
-            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-            __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          } else
-          #endif
-          {
-            __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1408, __pyx_L13_error)
-            __Pyx_GOTREF(__pyx_t_4);
-            __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
-            __Pyx_GIVEREF(__pyx_t_6);
-            PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
-            __pyx_t_6 = 0;
-            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1408, __pyx_L13_error)
-            __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          }
-        }
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1409
- *                     ret = ResultSet(ct, TRP_KLEN)
- *                     logger.debug(f'Entries in c:spo: {ct}')
- *                     logger.debug(f'Allocated {ret.size} bytes.')             # <<<<<<<<<<<<<<
- * 
- *                     logger.debug('Looking in key: {}'.format(
- */
-        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1409, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1409, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1409, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_15 = 0;
-        __pyx_t_16 = 127;
-        __Pyx_INCREF(__pyx_kp_u_Allocated);
-        __pyx_t_15 += 10;
-        __Pyx_GIVEREF(__pyx_kp_u_Allocated);
-        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_Allocated);
-        __pyx_t_6 = __Pyx_PyUnicode_From_size_t(__pyx_v_ret->size, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1409, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
-        __Pyx_GIVEREF(__pyx_t_6);
-        PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_6);
-        __pyx_t_6 = 0;
-        __Pyx_INCREF(__pyx_kp_u_bytes);
-        __pyx_t_15 += 7;
-        __Pyx_GIVEREF(__pyx_kp_u_bytes);
-        PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u_bytes);
-        __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1409, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = NULL;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
-          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-          if (likely(__pyx_t_3)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-            __Pyx_INCREF(__pyx_t_3);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_4, function);
-          }
-        }
-        if (!__pyx_t_3) {
-          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1409, __pyx_L13_error)
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __Pyx_GOTREF(__pyx_t_1);
-        } else {
-          #if CYTHON_FAST_PYCALL
-          if (PyFunction_Check(__pyx_t_4)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_6};
-            __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1409, __pyx_L13_error)
-            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-            __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          } else
-          #endif
-          #if CYTHON_FAST_PYCCALL
-          if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_6};
-            __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1409, __pyx_L13_error)
-            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-            __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          } else
-          #endif
-          {
-            __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1409, __pyx_L13_error)
-            __Pyx_GOTREF(__pyx_t_2);
-            __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
-            __Pyx_GIVEREF(__pyx_t_6);
-            PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_6);
-            __pyx_t_6 = 0;
-            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1409, __pyx_L13_error)
-            __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-          }
-        }
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1411
- *                     logger.debug(f'Allocated {ret.size} bytes.')
- * 
- *                     logger.debug('Looking in key: {}'.format(             # <<<<<<<<<<<<<<
- *                         (<unsigned char *>key_v.mv_data)[:key_v.mv_size]))
- *                     _check(lmdb.mdb_cursor_get(
- */
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1411, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1411, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Looking_in_key, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1411, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_6);
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1412
- * 
- *                     logger.debug('Looking in key: {}'.format(
- *                         (<unsigned char *>key_v.mv_data)[:key_v.mv_size]))             # <<<<<<<<<<<<<<
- *                     _check(lmdb.mdb_cursor_get(
- *                         icur, &key_v, &data_v, lmdb.MDB_GET_MULTIPLE))
- */
-        __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((const char*)((unsigned char *)__pyx_v_key_v.mv_data)) + 0, __pyx_v_key_v.mv_size - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1412, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_17 = NULL;
-        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
-          __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_6);
-          if (likely(__pyx_t_17)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-            __Pyx_INCREF(__pyx_t_17);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_6, function);
-          }
-        }
-        if (!__pyx_t_17) {
-          __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1411, __pyx_L13_error)
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __Pyx_GOTREF(__pyx_t_4);
-        } else {
-          #if CYTHON_FAST_PYCALL
-          if (PyFunction_Check(__pyx_t_6)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_3};
-            __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1411, __pyx_L13_error)
-            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-            __Pyx_GOTREF(__pyx_t_4);
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          } else
-          #endif
-          #if CYTHON_FAST_PYCCALL
-          if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_3};
-            __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1411, __pyx_L13_error)
-            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-            __Pyx_GOTREF(__pyx_t_4);
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          } else
-          #endif
-          {
-            __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1411, __pyx_L13_error)
-            __Pyx_GOTREF(__pyx_t_18);
-            __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL;
-            __Pyx_GIVEREF(__pyx_t_3);
-            PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_3);
-            __pyx_t_3 = 0;
-            __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_18, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1411, __pyx_L13_error)
-            __Pyx_GOTREF(__pyx_t_4);
-            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-          }
-        }
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __pyx_t_6 = NULL;
-        if (CYTHON_UNPACK_METHODS && unlikely(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);
-          }
-        }
-        if (!__pyx_t_6) {
-          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1411, __pyx_L13_error)
-          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_1);
-        } else {
-          #if CYTHON_FAST_PYCALL
-          if (PyFunction_Check(__pyx_t_2)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4};
-            __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1411, __pyx_L13_error)
-            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-            __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          } else
-          #endif
-          #if CYTHON_FAST_PYCCALL
-          if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4};
-            __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1411, __pyx_L13_error)
-            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-            __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          } else
-          #endif
-          {
-            __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1411, __pyx_L13_error)
-            __Pyx_GOTREF(__pyx_t_18);
-            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_6); __pyx_t_6 = NULL;
-            __Pyx_GIVEREF(__pyx_t_4);
-            PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_4);
-            __pyx_t_4 = 0;
-            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1411, __pyx_L13_error)
-            __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-          }
-        }
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1413
- *                     logger.debug('Looking in key: {}'.format(
- *                         (<unsigned char *>key_v.mv_data)[:key_v.mv_size]))
- *                     _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                         icur, &key_v, &data_v, lmdb.MDB_GET_MULTIPLE))
- *                     while True:
- */
-        __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_key_v), (&__pyx_v_data_v), MDB_GET_MULTIPLE), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1413, __pyx_L13_error)
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1415
- *                     _check(lmdb.mdb_cursor_get(
- *                         icur, &key_v, &data_v, lmdb.MDB_GET_MULTIPLE))
- *                     while True:             # <<<<<<<<<<<<<<
- *                         #logger.debug(f'Data offset: {pg_offset} Page size: {data_v.mv_size} bytes')
- *                         #logger.debug('Data page: {}'.format(
- */
-        while (1) {
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1419
- *                         #logger.debug('Data page: {}'.format(
- *                         #        (<unsigned char *>data_v.mv_data)[: data_v.mv_size]))
- *                         memcpy(ret.data + pg_offset, data_v.mv_data, data_v.mv_size)             # <<<<<<<<<<<<<<
- *                         pg_offset += data_v.mv_size
- * 
- */
-          (void)(memcpy((__pyx_v_ret->data + __pyx_v_pg_offset), __pyx_v_data_v.mv_data, __pyx_v_data_v.mv_size));
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1420
- *                         #        (<unsigned char *>data_v.mv_data)[: data_v.mv_size]))
- *                         memcpy(ret.data + pg_offset, data_v.mv_data, data_v.mv_size)
- *                         pg_offset += data_v.mv_size             # <<<<<<<<<<<<<<
- * 
- *                         try:
- */
-          __pyx_v_pg_offset = (__pyx_v_pg_offset + __pyx_v_data_v.mv_size);
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1422
- *                         pg_offset += data_v.mv_size
- * 
- *                         try:             # <<<<<<<<<<<<<<
- *                             _check(lmdb.mdb_cursor_get(
- *                                 icur, &key_v, &data_v, lmdb.MDB_NEXT_MULTIPLE))
- */
-          {
-            __Pyx_PyThreadState_declare
-            __Pyx_PyThreadState_assign
-            __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
-            __Pyx_XGOTREF(__pyx_t_9);
-            __Pyx_XGOTREF(__pyx_t_10);
-            __Pyx_XGOTREF(__pyx_t_11);
-            /*try:*/ {
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1423
- * 
- *                         try:
- *                             _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                                 icur, &key_v, &data_v, lmdb.MDB_NEXT_MULTIPLE))
- *                         except KeyNotFoundError:
- */
-              __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_key_v), (&__pyx_v_data_v), MDB_NEXT_MULTIPLE), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1423, __pyx_L47_error)
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1422
- *                         pg_offset += data_v.mv_size
- * 
- *                         try:             # <<<<<<<<<<<<<<
- *                             _check(lmdb.mdb_cursor_get(
- *                                 icur, &key_v, &data_v, lmdb.MDB_NEXT_MULTIPLE))
- */
-            }
-            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-            goto __pyx_L54_try_end;
-            __pyx_L47_error:;
-            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
-            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1425
- *                             _check(lmdb.mdb_cursor_get(
- *                                 icur, &key_v, &data_v, lmdb.MDB_NEXT_MULTIPLE))
- *                         except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                             return ret
- * 
- */
-            __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_18);
-            __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1425, __pyx_L49_except_error)
-            __Pyx_GOTREF(__pyx_t_4);
-            __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_4);
-            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_18);
-            __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_18 = 0;
-            if (__pyx_t_5) {
-              __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.triple_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
-              if (__Pyx_GetException(&__pyx_t_18, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 1425, __pyx_L49_except_error)
-              __Pyx_GOTREF(__pyx_t_18);
-              __Pyx_GOTREF(__pyx_t_2);
-              __Pyx_GOTREF(__pyx_t_1);
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1426
- *                                 icur, &key_v, &data_v, lmdb.MDB_NEXT_MULTIPLE))
- *                         except KeyNotFoundError:
- *                             return ret             # <<<<<<<<<<<<<<
- * 
- *                 # Regular lookup. Filter _lookup() results by context.
- */
-              __Pyx_XDECREF(((PyObject *)__pyx_r));
-              __Pyx_INCREF(((PyObject *)__pyx_v_ret));
-              __pyx_r = __pyx_v_ret;
-              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-              __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-              goto __pyx_L50_except_return;
-            }
-            goto __pyx_L49_except_error;
-            __pyx_L49_except_error:;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1422
- *                         pg_offset += data_v.mv_size
- * 
- *                         try:             # <<<<<<<<<<<<<<
- *                             _check(lmdb.mdb_cursor_get(
- *                                 icur, &key_v, &data_v, lmdb.MDB_NEXT_MULTIPLE))
- */
-            __Pyx_XGIVEREF(__pyx_t_9);
-            __Pyx_XGIVEREF(__pyx_t_10);
-            __Pyx_XGIVEREF(__pyx_t_11);
-            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-            goto __pyx_L13_error;
-            __pyx_L50_except_return:;
-            __Pyx_XGIVEREF(__pyx_t_9);
-            __Pyx_XGIVEREF(__pyx_t_10);
-            __Pyx_XGIVEREF(__pyx_t_11);
-            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-            goto __pyx_L12_return;
-            __pyx_L54_try_end:;
-          }
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1396
- * 
- *                 # ? ? ? c
- *                 elif not any(triple_pattern):             # <<<<<<<<<<<<<<
- *                     # Get all triples from the context
- *                     #logger.debug('Lookup: ? ? ? c')
- */
-        goto __pyx_L15;
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1430
- *                 # Regular lookup. Filter _lookup() results by context.
- *                 else:
- *                     try:             # <<<<<<<<<<<<<<
- *                         res = self._lookup(triple_pattern)
- *                     except KeyNotFoundError:
- */
-      /*else*/ {
-        {
-          __Pyx_PyThreadState_declare
-          __Pyx_PyThreadState_assign
-          __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
-          __Pyx_XGOTREF(__pyx_t_11);
-          __Pyx_XGOTREF(__pyx_t_10);
-          __Pyx_XGOTREF(__pyx_t_9);
-          /*try:*/ {
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1431
- *                 else:
- *                     try:
- *                         res = self._lookup(triple_pattern)             # <<<<<<<<<<<<<<
- *                     except KeyNotFoundError:
- *                         return ResultSet(0, TRP_KLEN)
- */
-            __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_lookup(__pyx_v_self, __pyx_v_triple_pattern)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1431, __pyx_L57_error)
-            __Pyx_GOTREF(__pyx_t_1);
-            __pyx_v_res = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_1);
-            __pyx_t_1 = 0;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1430
- *                 # Regular lookup. Filter _lookup() results by context.
- *                 else:
- *                     try:             # <<<<<<<<<<<<<<
- *                         res = self._lookup(triple_pattern)
- *                     except KeyNotFoundError:
- */
-          }
-          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-          goto __pyx_L62_try_end;
-          __pyx_L57_error:;
-          __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
-          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1432
- *                     try:
- *                         res = self._lookup(triple_pattern)
- *                     except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                         return ResultSet(0, TRP_KLEN)
- * 
- */
-          __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_18);
-          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1432, __pyx_L59_except_error)
-          __Pyx_GOTREF(__pyx_t_4);
-          __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_4);
-          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_18);
-          __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_18 = 0;
-          if (__pyx_t_5) {
-            __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.triple_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_18, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 1432, __pyx_L59_except_error)
-            __Pyx_GOTREF(__pyx_t_18);
-            __Pyx_GOTREF(__pyx_t_2);
-            __Pyx_GOTREF(__pyx_t_1);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1433
- *                         res = self._lookup(triple_pattern)
- *                     except KeyNotFoundError:
- *                         return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- * 
- *                     #logger.debug('Allocating for context filtering.')
- */
-            __Pyx_XDECREF(((PyObject *)__pyx_r));
-            __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1433, __pyx_L59_except_error)
-            __Pyx_GOTREF(__pyx_t_4);
-            __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_4);
-            __pyx_t_4 = 0;
-            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-            goto __pyx_L60_except_return;
-          }
-          goto __pyx_L59_except_error;
-          __pyx_L59_except_error:;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1430
- *                 # Regular lookup. Filter _lookup() results by context.
- *                 else:
- *                     try:             # <<<<<<<<<<<<<<
- *                         res = self._lookup(triple_pattern)
- *                     except KeyNotFoundError:
- */
-          __Pyx_XGIVEREF(__pyx_t_11);
-          __Pyx_XGIVEREF(__pyx_t_10);
-          __Pyx_XGIVEREF(__pyx_t_9);
-          __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-          goto __pyx_L13_error;
-          __pyx_L60_except_return:;
-          __Pyx_XGIVEREF(__pyx_t_11);
-          __Pyx_XGIVEREF(__pyx_t_10);
-          __Pyx_XGIVEREF(__pyx_t_9);
-          __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-          goto __pyx_L12_return;
-          __pyx_L62_try_end:;
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1436
- * 
- *                     #logger.debug('Allocating for context filtering.')
- *                     key_v.mv_data = ck             # <<<<<<<<<<<<<<
- *                     key_v.mv_size = KLEN
- *                     data_v.mv_size = TRP_KLEN
- */
-        __pyx_v_key_v.mv_data = __pyx_v_ck;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1437
- *                     #logger.debug('Allocating for context filtering.')
- *                     key_v.mv_data = ck
- *                     key_v.mv_size = KLEN             # <<<<<<<<<<<<<<
- *                     data_v.mv_size = TRP_KLEN
- * 
- */
-        __pyx_v_key_v.mv_size = 5;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1438
- *                     key_v.mv_data = ck
- *                     key_v.mv_size = KLEN
- *                     data_v.mv_size = TRP_KLEN             # <<<<<<<<<<<<<<
- * 
- *                     flt_res = ResultSet(res.ct, res.itemsize)
- */
-        __pyx_v_data_v.mv_size = 15;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1440
- *                     data_v.mv_size = TRP_KLEN
- * 
- *                     flt_res = ResultSet(res.ct, res.itemsize)             # <<<<<<<<<<<<<<
- *                     while j < res.ct:
- *                         #logger.debug('Checking row #{}'.format(flt_j))
- */
-        __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_res->ct); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1440, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_2 = __Pyx_PyInt_From_unsigned_char(__pyx_v_res->itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1440, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_18 = PyTuple_New(2); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1440, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_18);
-        __Pyx_GIVEREF(__pyx_t_1);
-        PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_1);
-        __Pyx_GIVEREF(__pyx_t_2);
-        PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_t_2);
-        __pyx_t_1 = 0;
-        __pyx_t_2 = 0;
-        __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_t_18, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1440, __pyx_L13_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-        __pyx_v_flt_res = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_2);
-        __pyx_t_2 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1441
- * 
- *                     flt_res = ResultSet(res.ct, res.itemsize)
- *                     while j < res.ct:             # <<<<<<<<<<<<<<
- *                         #logger.debug('Checking row #{}'.format(flt_j))
- *                         data_v.mv_data = res.data + j * res.itemsize
- */
-        while (1) {
-          __pyx_t_7 = ((__pyx_v_j < __pyx_v_res->ct) != 0);
-          if (!__pyx_t_7) break;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1443
- *                     while j < res.ct:
- *                         #logger.debug('Checking row #{}'.format(flt_j))
- *                         data_v.mv_data = res.data + j * res.itemsize             # <<<<<<<<<<<<<<
- *                         #logger.debug('Checking c:spo {}, {}'.format(
- *                         #    (<unsigned char *>key_v.mv_data)[: key_v.mv_size],
- */
-          __pyx_v_data_v.mv_data = (__pyx_v_res->data + (__pyx_v_j * __pyx_v_res->itemsize));
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1447
- *                         #    (<unsigned char *>key_v.mv_data)[: key_v.mv_size],
- *                         #    (<unsigned char *>data_v.mv_data)[: data_v.mv_size]))
- *                         try:             # <<<<<<<<<<<<<<
- *                             # Verify that the triple is associated with the
- *                             # context being searched.
- */
-          /*try:*/ {
-            {
-              __Pyx_PyThreadState_declare
-              __Pyx_PyThreadState_assign
-              __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
-              __Pyx_XGOTREF(__pyx_t_9);
-              __Pyx_XGOTREF(__pyx_t_10);
-              __Pyx_XGOTREF(__pyx_t_11);
-              /*try:*/ {
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1450
- *                             # Verify that the triple is associated with the
- *                             # context being searched.
- *                             _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                                 icur, &key_v, &data_v, lmdb.MDB_GET_BOTH))
- *                         except KeyNotFoundError:
- */
-                __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_key_v), (&__pyx_v_data_v), MDB_GET_BOTH), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1450, __pyx_L72_error)
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1447
- *                         #    (<unsigned char *>key_v.mv_data)[: key_v.mv_size],
- *                         #    (<unsigned char *>data_v.mv_data)[: data_v.mv_size]))
- *                         try:             # <<<<<<<<<<<<<<
- *                             # Verify that the triple is associated with the
- *                             # context being searched.
- */
-              }
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1458
- *                             #logger.debug('Copying source[{}] to dest[{}].'.format(
- *                             #    j, flt_j))
- *                             memcpy(             # <<<<<<<<<<<<<<
- *                                     flt_res.data + res.itemsize * flt_j,
- *                                     res.data + res.itemsize * j, res.itemsize)
- */
-              /*else:*/ {
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1460
- *                             memcpy(
- *                                     flt_res.data + res.itemsize * flt_j,
- *                                     res.data + res.itemsize * j, res.itemsize)             # <<<<<<<<<<<<<<
- * 
- *                             flt_j += 1
- */
-                (void)(memcpy((__pyx_v_flt_res->data + (__pyx_v_res->itemsize * __pyx_v_flt_j)), (__pyx_v_res->data + (__pyx_v_res->itemsize * __pyx_v_j)), __pyx_v_res->itemsize));
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1462
- *                                     res.data + res.itemsize * j, res.itemsize)
- * 
- *                             flt_j += 1             # <<<<<<<<<<<<<<
- *                         finally:
- *                             j += 1
- */
-                __pyx_v_flt_j = (__pyx_v_flt_j + 1);
-              }
-              __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-              __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-              goto __pyx_L79_try_end;
-              __pyx_L72_error:;
-              __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-              __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
-              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1452
- *                             _check(lmdb.mdb_cursor_get(
- *                                 icur, &key_v, &data_v, lmdb.MDB_GET_BOTH))
- *                         except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                             #logger.debug('Discarding source[{}].'.format(j))
- *                             continue
- */
-              __Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_18, &__pyx_t_1);
-              __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1452, __pyx_L74_except_error)
-              __Pyx_GOTREF(__pyx_t_4);
-              __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_4);
-              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-              __Pyx_ErrRestore(__pyx_t_2, __pyx_t_18, __pyx_t_1);
-              __pyx_t_2 = 0; __pyx_t_18 = 0; __pyx_t_1 = 0;
-              if (__pyx_t_5) {
-                __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.triple_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
-                if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_18, &__pyx_t_2) < 0) __PYX_ERR(0, 1452, __pyx_L74_except_error)
-                __Pyx_GOTREF(__pyx_t_1);
-                __Pyx_GOTREF(__pyx_t_18);
-                __Pyx_GOTREF(__pyx_t_2);
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1454
- *                         except KeyNotFoundError:
- *                             #logger.debug('Discarding source[{}].'.format(j))
- *                             continue             # <<<<<<<<<<<<<<
- *                         else:
- *                             #logger.debug('Copying source[{}] to dest[{}].'.format(
- */
-                goto __pyx_L81_except_continue;
-                __pyx_L81_except_continue:;
-                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-                __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-                goto __pyx_L78_try_continue;
-              }
-              goto __pyx_L74_except_error;
-              __pyx_L74_except_error:;
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1447
- *                         #    (<unsigned char *>key_v.mv_data)[: key_v.mv_size],
- *                         #    (<unsigned char *>data_v.mv_data)[: data_v.mv_size]))
- *                         try:             # <<<<<<<<<<<<<<
- *                             # Verify that the triple is associated with the
- *                             # context being searched.
- */
-              __Pyx_XGIVEREF(__pyx_t_9);
-              __Pyx_XGIVEREF(__pyx_t_10);
-              __Pyx_XGIVEREF(__pyx_t_11);
-              __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-              goto __pyx_L70_error;
-              __pyx_L78_try_continue:;
-              __Pyx_XGIVEREF(__pyx_t_9);
-              __Pyx_XGIVEREF(__pyx_t_10);
-              __Pyx_XGIVEREF(__pyx_t_11);
-              __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-              goto __pyx_L67_continue;
-              __pyx_L79_try_end:;
-            }
-          }
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1464
- *                             flt_j += 1
- *                         finally:
- *                             j += 1             # <<<<<<<<<<<<<<
- * 
- *                     # Resize result set to the size of context matches.
- */
-          /*finally:*/ {
-            /*normal exit:*/{
-              __pyx_v_j = (__pyx_v_j + 1);
-              goto __pyx_L71;
-            }
-            __pyx_L70_error:;
-            /*exception exit:*/{
-              __Pyx_PyThreadState_declare
-              __Pyx_PyThreadState_assign
-              __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_9 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0;
-              __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-              __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
-              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-              if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
-              if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
-              __Pyx_XGOTREF(__pyx_t_11);
-              __Pyx_XGOTREF(__pyx_t_10);
-              __Pyx_XGOTREF(__pyx_t_9);
-              __Pyx_XGOTREF(__pyx_t_21);
-              __Pyx_XGOTREF(__pyx_t_22);
-              __Pyx_XGOTREF(__pyx_t_23);
-              __pyx_t_5 = __pyx_lineno; __pyx_t_19 = __pyx_clineno; __pyx_t_20 = __pyx_filename;
-              {
-                __pyx_v_j = (__pyx_v_j + 1);
-              }
-              if (PY_MAJOR_VERSION >= 3) {
-                __Pyx_XGIVEREF(__pyx_t_21);
-                __Pyx_XGIVEREF(__pyx_t_22);
-                __Pyx_XGIVEREF(__pyx_t_23);
-                __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
-              }
-              __Pyx_XGIVEREF(__pyx_t_11);
-              __Pyx_XGIVEREF(__pyx_t_10);
-              __Pyx_XGIVEREF(__pyx_t_9);
-              __Pyx_ErrRestore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-              __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_9 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0;
-              __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_19; __pyx_filename = __pyx_t_20;
-              goto __pyx_L13_error;
-            }
-            __pyx_L67_continue: {
-              __pyx_v_j = (__pyx_v_j + 1);
-              goto __pyx_L65_continue;
-            }
-            __pyx_L71:;
-          }
-          __pyx_L65_continue:;
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1468
- *                     # Resize result set to the size of context matches.
- *                     # This crops the memory block without copying it.
- *                     flt_res.resize(flt_j)             # <<<<<<<<<<<<<<
- *                     return flt_res
- *             finally:
- */
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_v_flt_res->__pyx_vtab)->resize(__pyx_v_flt_res, __pyx_v_flt_j); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1468, __pyx_L13_error)
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1469
- *                     # This crops the memory block without copying it.
- *                     flt_res.resize(flt_j)
- *                     return flt_res             # <<<<<<<<<<<<<<
- *             finally:
- *                 self._cur_close(icur)
- */
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __Pyx_INCREF(((PyObject *)__pyx_v_flt_res));
-        __pyx_r = __pyx_v_flt_res;
-        goto __pyx_L12_return;
-      }
-      __pyx_L15:;
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1471
- *                     return flt_res
- *             finally:
- *                 self._cur_close(icur)             # <<<<<<<<<<<<<<
- * 
- *         # Unfiltered lookup. No context checked.
- */
-    /*finally:*/ {
-      /*normal exit:*/{
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1471, __pyx_L1_error)
-        goto __pyx_L14;
-      }
-      __pyx_L13_error:;
-      /*exception exit:*/{
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
-        __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-        if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
-        if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
-        __Pyx_XGOTREF(__pyx_t_23);
-        __Pyx_XGOTREF(__pyx_t_22);
-        __Pyx_XGOTREF(__pyx_t_21);
-        __Pyx_XGOTREF(__pyx_t_9);
-        __Pyx_XGOTREF(__pyx_t_10);
-        __Pyx_XGOTREF(__pyx_t_11);
-        __pyx_t_19 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_24 = __pyx_filename;
-        {
-          ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1471, __pyx_L87_error)
-        }
-        if (PY_MAJOR_VERSION >= 3) {
-          __Pyx_XGIVEREF(__pyx_t_9);
-          __Pyx_XGIVEREF(__pyx_t_10);
-          __Pyx_XGIVEREF(__pyx_t_11);
-          __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-        }
-        __Pyx_XGIVEREF(__pyx_t_23);
-        __Pyx_XGIVEREF(__pyx_t_22);
-        __Pyx_XGIVEREF(__pyx_t_21);
-        __Pyx_ErrRestore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
-        __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
-        __pyx_lineno = __pyx_t_19; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_24;
-        goto __pyx_L1_error;
-        __pyx_L87_error:;
-        if (PY_MAJOR_VERSION >= 3) {
-          __Pyx_XGIVEREF(__pyx_t_9);
-          __Pyx_XGIVEREF(__pyx_t_10);
-          __Pyx_XGIVEREF(__pyx_t_11);
-          __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-        }
-        __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
-        __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
-        __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
-        __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
-        goto __pyx_L1_error;
-      }
-      __pyx_L12_return: {
-        __pyx_t_25 = __pyx_r;
-        __pyx_r = 0;
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1471, __pyx_L1_error)
-        __pyx_r = __pyx_t_25;
-        __pyx_t_25 = 0;
-        goto __pyx_L0;
-      }
-      __pyx_L14:;
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1350
- *             ResultSet flt_res, ret
- * 
- *         if context is not None:             # <<<<<<<<<<<<<<
- *             #serialize(context, &pk_c, &c_size)
- *             try:
- */
-    goto __pyx_L3;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1476
- *         else:
- *             #logger.debug('No context in query.')
- *             try:             # <<<<<<<<<<<<<<
- *                 res = self._lookup(triple_pattern)
- *             except KeyNotFoundError:
- */
-  /*else*/ {
-    {
-      __Pyx_PyThreadState_declare
-      __Pyx_PyThreadState_assign
-      __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
-      __Pyx_XGOTREF(__pyx_t_11);
-      __Pyx_XGOTREF(__pyx_t_10);
-      __Pyx_XGOTREF(__pyx_t_9);
-      /*try:*/ {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1477
- *             #logger.debug('No context in query.')
- *             try:
- *                 res = self._lookup(triple_pattern)             # <<<<<<<<<<<<<<
- *             except KeyNotFoundError:
- *                 return ResultSet(0, TRP_KLEN)
- */
-        __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_lookup(__pyx_v_self, __pyx_v_triple_pattern)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1477, __pyx_L88_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __pyx_v_res = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_2);
-        __pyx_t_2 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1476
- *         else:
- *             #logger.debug('No context in query.')
- *             try:             # <<<<<<<<<<<<<<
- *                 res = self._lookup(triple_pattern)
- *             except KeyNotFoundError:
- */
-      }
-      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-      goto __pyx_L93_try_end;
-      __pyx_L88_error:;
-      __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1478
- *             try:
- *                 res = self._lookup(triple_pattern)
- *             except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                 return ResultSet(0, TRP_KLEN)
- *             #logger.debug('Res data before triple_keys return: {}'.format(
- */
-      __Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_18, &__pyx_t_1);
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1478, __pyx_L90_except_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_4);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_ErrRestore(__pyx_t_2, __pyx_t_18, __pyx_t_1);
-      __pyx_t_2 = 0; __pyx_t_18 = 0; __pyx_t_1 = 0;
-      if (__pyx_t_5) {
-        __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.triple_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_18, &__pyx_t_2) < 0) __PYX_ERR(0, 1478, __pyx_L90_except_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_GOTREF(__pyx_t_18);
-        __Pyx_GOTREF(__pyx_t_2);
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1479
- *                 res = self._lookup(triple_pattern)
- *             except KeyNotFoundError:
- *                 return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- *             #logger.debug('Res data before triple_keys return: {}'.format(
- *             #    res.data[: res.size]))
- */
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1479, __pyx_L90_except_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_4);
-        __pyx_t_4 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-        goto __pyx_L91_except_return;
-      }
-      goto __pyx_L90_except_error;
-      __pyx_L90_except_error:;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1476
- *         else:
- *             #logger.debug('No context in query.')
- *             try:             # <<<<<<<<<<<<<<
- *                 res = self._lookup(triple_pattern)
- *             except KeyNotFoundError:
- */
-      __Pyx_XGIVEREF(__pyx_t_11);
-      __Pyx_XGIVEREF(__pyx_t_10);
-      __Pyx_XGIVEREF(__pyx_t_9);
-      __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-      goto __pyx_L1_error;
-      __pyx_L91_except_return:;
-      __Pyx_XGIVEREF(__pyx_t_11);
-      __Pyx_XGIVEREF(__pyx_t_10);
-      __Pyx_XGIVEREF(__pyx_t_9);
-      __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-      goto __pyx_L0;
-      __pyx_L93_try_end:;
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1482
- *             #logger.debug('Res data before triple_keys return: {}'.format(
- *             #    res.data[: res.size]))
- *             return res             # <<<<<<<<<<<<<<
- * 
- * 
- */
-    __Pyx_XDECREF(((PyObject *)__pyx_r));
-    __Pyx_INCREF(((PyObject *)__pyx_v_res));
-    __pyx_r = __pyx_v_res;
-    goto __pyx_L0;
-  }
-  __pyx_L3:;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1327
- * 
- * 
- *     cpdef ResultSet triple_keys(self, tuple triple_pattern, context=None):             # <<<<<<<<<<<<<<
- *         """
- *         Top-level lookup method.
- */
-
-  /* function exit code */
-  __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)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_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_17);
-  __Pyx_XDECREF(__pyx_t_18);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.triple_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_flt_res);
-  __Pyx_XDECREF((PyObject *)__pyx_v_ret);
-  __Pyx_XDECREF(__pyx_v_term);
-  __Pyx_XDECREF((PyObject *)__pyx_v_res);
-  __Pyx_XGIVEREF((PyObject *)__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_21triple_keys(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_20triple_keys[] = "\n        Top-level lookup method.\n\n        This method is used by `triples` which returns native Python tuples,\n        as well as by other methods that need to iterate and filter triple\n        keys without incurring in the overhead of converting them to triples.\n\n        :param tuple triple_pattern: 3 RDFLib terms\n        :param context: Context graph or URI, or None.\n        :type context: rdflib.term.Identifier or None\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_21triple_keys(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_triple_pattern = 0;
-  PyObject *__pyx_v_context = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("triple_keys (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_triple_pattern,&__pyx_n_s_context,0};
-    PyObject* values[2] = {0,0};
-    values[1] = ((PyObject *)Py_None);
-    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] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_triple_pattern)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_context);
-          if (value) { values[1] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "triple_keys") < 0)) __PYX_ERR(0, 1327, __pyx_L3_error)
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        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;
-      }
-    }
-    __pyx_v_triple_pattern = ((PyObject*)values[0]);
-    __pyx_v_context = values[1];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("triple_keys", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1327, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.triple_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_triple_pattern), (&PyTuple_Type), 1, "triple_pattern", 1))) __PYX_ERR(0, 1327, __pyx_L1_error)
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_20triple_keys(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self), __pyx_v_triple_pattern, __pyx_v_context);
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_20triple_keys(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple_pattern, PyObject *__pyx_v_context) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_triple_keys __pyx_t_2;
-  __Pyx_RefNannySetupContext("triple_keys", 0);
-  __Pyx_TraceCall("triple_keys (wrapper)", __pyx_f[0], 1327, 0, __PYX_ERR(0, 1327, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2.__pyx_n = 1;
-  __pyx_t_2.context = __pyx_v_context;
-  __pyx_t_1 = ((PyObject *)__pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore->triple_keys(__pyx_v_self, __pyx_v_triple_pattern, 1, &__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1327, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.triple_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1485
- * 
- * 
- *     cdef ResultSet _lookup(self, tuple triple_pattern):             # <<<<<<<<<<<<<<
- *         """
- *         Look up triples in the indices based on a triple pattern.
- */
-
-static struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__lookup(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple_pattern) {
-  __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_TripleKey __pyx_v_spok;
-  struct MDB_stat __pyx_v_db_stat;
-  size_t __pyx_v_ct;
-  size_t __pyx_v_i;
-  struct MDB_val __pyx_v_spok_v;
-  struct MDB_val __pyx_v_ck_v;
-  PyObject *__pyx_v_s = NULL;
-  PyObject *__pyx_v_p = NULL;
-  PyObject *__pyx_v_o = NULL;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_matches = NULL;
-  MDB_cursor *__pyx_v_dcur;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_ret = NULL;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_t_4;
-  int __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  MDB_dbi __pyx_t_9;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi __pyx_t_10;
-  PyObject *__pyx_t_11 = NULL;
-  int __pyx_t_12;
-  MDB_cursor *__pyx_t_13;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open __pyx_t_14;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check __pyx_t_15;
-  size_t __pyx_t_16;
-  PyObject *__pyx_t_17 = NULL;
-  int __pyx_t_18;
-  char const *__pyx_t_19;
-  PyObject *__pyx_t_20 = NULL;
-  PyObject *__pyx_t_21 = NULL;
-  PyObject *__pyx_t_22 = NULL;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_t_23 = NULL;
-  __Pyx_RefNannySetupContext("_lookup", 0);
-  __Pyx_TraceCall("_lookup", __pyx_f[0], 1485, 0, __PYX_ERR(0, 1485, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1495
- *             TripleKey spok
- *             lmdb.MDB_stat db_stat
- *             size_t ct = 0, i = 0             # <<<<<<<<<<<<<<
- *             lmdb.MDB_val spok_v, ck_v
- * 
- */
-  __pyx_v_ct = 0;
-  __pyx_v_i = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1498
- *             lmdb.MDB_val spok_v, ck_v
- * 
- *         s, p, o = triple_pattern             # <<<<<<<<<<<<<<
- * 
- *         if s is not None:
- */
-  if (likely(__pyx_v_triple_pattern != Py_None)) {
-    PyObject* sequence = __pyx_v_triple_pattern;
-    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
-    if (unlikely(size != 3)) {
-      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
-      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-      __PYX_ERR(0, 1498, __pyx_L1_error)
-    }
-    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-    __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
-    __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
-    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); 
-    __Pyx_INCREF(__pyx_t_1);
-    __Pyx_INCREF(__pyx_t_2);
-    __Pyx_INCREF(__pyx_t_3);
-    #else
-    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1498, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1498, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1498, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    #endif
-  } else {
-    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 1498, __pyx_L1_error)
-  }
-  __pyx_v_s = __pyx_t_1;
-  __pyx_t_1 = 0;
-  __pyx_v_p = __pyx_t_2;
-  __pyx_t_2 = 0;
-  __pyx_v_o = __pyx_t_3;
-  __pyx_t_3 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1500
- *         s, p, o = triple_pattern
- * 
- *         if s is not None:             # <<<<<<<<<<<<<<
- *             if p is not None:
- *                 # s p o
- */
-  __pyx_t_4 = (__pyx_v_s != Py_None);
-  __pyx_t_5 = (__pyx_t_4 != 0);
-  if (__pyx_t_5) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1501
- * 
- *         if s is not None:
- *             if p is not None:             # <<<<<<<<<<<<<<
- *                 # s p o
- *                 if o is not None:
- */
-    __pyx_t_5 = (__pyx_v_p != Py_None);
-    __pyx_t_4 = (__pyx_t_5 != 0);
-    if (__pyx_t_4) {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1503
- *             if p is not None:
- *                 # s p o
- *                 if o is not None:             # <<<<<<<<<<<<<<
- *                     spok_v.mv_data = spok
- *                     spok_v.mv_size = TRP_KLEN
- */
-      __pyx_t_4 = (__pyx_v_o != Py_None);
-      __pyx_t_5 = (__pyx_t_4 != 0);
-      if (__pyx_t_5) {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1504
- *                 # s p o
- *                 if o is not None:
- *                     spok_v.mv_data = spok             # <<<<<<<<<<<<<<
- *                     spok_v.mv_size = TRP_KLEN
- *                     try:
- */
-        __pyx_v_spok_v.mv_data = __pyx_v_spok;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1505
- *                 if o is not None:
- *                     spok_v.mv_data = spok
- *                     spok_v.mv_size = TRP_KLEN             # <<<<<<<<<<<<<<
- *                     try:
- *                         self._to_triple_key(triple_pattern, &spok)
- */
-        __pyx_v_spok_v.mv_size = 15;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1506
- *                     spok_v.mv_data = spok
- *                     spok_v.mv_size = TRP_KLEN
- *                     try:             # <<<<<<<<<<<<<<
- *                         self._to_triple_key(triple_pattern, &spok)
- *                         _check(lmdb.mdb_get(
- */
-        {
-          __Pyx_PyThreadState_declare
-          __Pyx_PyThreadState_assign
-          __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
-          __Pyx_XGOTREF(__pyx_t_6);
-          __Pyx_XGOTREF(__pyx_t_7);
-          __Pyx_XGOTREF(__pyx_t_8);
-          /*try:*/ {
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1507
- *                     spok_v.mv_size = TRP_KLEN
- *                     try:
- *                         self._to_triple_key(triple_pattern, &spok)             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_get(
- *                             self.txn, self.get_dbi('spo:c'), &spok_v, &ck_v))
- */
-            __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_triple_key(__pyx_v_self, __pyx_v_triple_pattern, (&__pyx_v_spok)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1507, __pyx_L6_error)
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1509
- *                         self._to_triple_key(triple_pattern, &spok)
- *                         _check(lmdb.mdb_get(
- *                             self.txn, self.get_dbi('spo:c'), &spok_v, &ck_v))             # <<<<<<<<<<<<<<
- *                     except KeyNotFoundError:
- *                         return ResultSet(0, TRP_KLEN)
- */
-            __pyx_t_10.__pyx_n = 1;
-            __pyx_t_10.dblabel = ((unsigned char *)((char const *)"spo:c"));
-            __pyx_t_9 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.get_dbi(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_10); 
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1508
- *                     try:
- *                         self._to_triple_key(triple_pattern, &spok)
- *                         _check(lmdb.mdb_get(             # <<<<<<<<<<<<<<
- *                             self.txn, self.get_dbi('spo:c'), &spok_v, &ck_v))
- *                     except KeyNotFoundError:
- */
-            __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_get(__pyx_v_self->__pyx_base.txn, __pyx_t_9, (&__pyx_v_spok_v), (&__pyx_v_ck_v)), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1508, __pyx_L6_error)
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1506
- *                     spok_v.mv_data = spok
- *                     spok_v.mv_size = TRP_KLEN
- *                     try:             # <<<<<<<<<<<<<<
- *                         self._to_triple_key(triple_pattern, &spok)
- *                         _check(lmdb.mdb_get(
- */
-          }
-          __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_L11_try_end;
-          __pyx_L6_error:;
-          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1510
- *                         _check(lmdb.mdb_get(
- *                             self.txn, self.get_dbi('spo:c'), &spok_v, &ck_v))
- *                     except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                         return ResultSet(0, TRP_KLEN)
- * 
- */
-          __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
-          __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1510, __pyx_L8_except_error)
-          __Pyx_GOTREF(__pyx_t_11);
-          __pyx_t_12 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_11);
-          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-          __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1);
-          __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0;
-          if (__pyx_t_12) {
-            __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 1510, __pyx_L8_except_error)
-            __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_GOTREF(__pyx_t_2);
-            __Pyx_GOTREF(__pyx_t_3);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1511
- *                             self.txn, self.get_dbi('spo:c'), &spok_v, &ck_v))
- *                     except KeyNotFoundError:
- *                         return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- * 
- *                     matches = ResultSet(1, TRP_KLEN)
- */
-            __Pyx_XDECREF(((PyObject *)__pyx_r));
-            __pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1511, __pyx_L8_except_error)
-            __Pyx_GOTREF(__pyx_t_11);
-            __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_11);
-            __pyx_t_11 = 0;
-            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            goto __pyx_L9_except_return;
-          }
-          goto __pyx_L8_except_error;
-          __pyx_L8_except_error:;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1506
- *                     spok_v.mv_data = spok
- *                     spok_v.mv_size = TRP_KLEN
- *                     try:             # <<<<<<<<<<<<<<
- *                         self._to_triple_key(triple_pattern, &spok)
- *                         _check(lmdb.mdb_get(
- */
-          __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);
-          goto __pyx_L1_error;
-          __pyx_L9_except_return:;
-          __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);
-          goto __pyx_L0;
-          __pyx_L11_try_end:;
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1513
- *                         return ResultSet(0, TRP_KLEN)
- * 
- *                     matches = ResultSet(1, TRP_KLEN)             # <<<<<<<<<<<<<<
- *                     memcpy(matches.data, spok, TRP_KLEN)
- *                     return matches
- */
-        __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1513, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_v_matches = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_3);
-        __pyx_t_3 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1514
- * 
- *                     matches = ResultSet(1, TRP_KLEN)
- *                     memcpy(matches.data, spok, TRP_KLEN)             # <<<<<<<<<<<<<<
- *                     return matches
- *                 # s p ?
- */
-        (void)(memcpy(__pyx_v_matches->data, __pyx_v_spok, 15));
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1515
- *                     matches = ResultSet(1, TRP_KLEN)
- *                     memcpy(matches.data, spok, TRP_KLEN)
- *                     return matches             # <<<<<<<<<<<<<<
- *                 # s p ?
- *                 else:
- */
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __Pyx_INCREF(((PyObject *)__pyx_v_matches));
-        __pyx_r = __pyx_v_matches;
-        goto __pyx_L0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1503
- *             if p is not None:
- *                 # s p o
- *                 if o is not None:             # <<<<<<<<<<<<<<
- *                     spok_v.mv_data = spok
- *                     spok_v.mv_size = TRP_KLEN
- */
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1518
- *                 # s p ?
- *                 else:
- *                     return self._lookup_2bound(0, s, 1, p)             # <<<<<<<<<<<<<<
- *             else:
- *                 # s ? o
- */
-      /*else*/ {
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_lookup_2bound(__pyx_v_self, 0, __pyx_v_s, 1, __pyx_v_p)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1518, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_3);
-        __pyx_t_3 = 0;
-        goto __pyx_L0;
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1501
- * 
- *         if s is not None:
- *             if p is not None:             # <<<<<<<<<<<<<<
- *                 # s p o
- *                 if o is not None:
- */
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1521
- *             else:
- *                 # s ? o
- *                 if o is not None:             # <<<<<<<<<<<<<<
- *                     return self._lookup_2bound(0, s, 2, o)
- *                 # s ? ?
- */
-    /*else*/ {
-      __pyx_t_5 = (__pyx_v_o != Py_None);
-      __pyx_t_4 = (__pyx_t_5 != 0);
-      if (__pyx_t_4) {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1522
- *                 # s ? o
- *                 if o is not None:
- *                     return self._lookup_2bound(0, s, 2, o)             # <<<<<<<<<<<<<<
- *                 # s ? ?
- *                 else:
- */
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_lookup_2bound(__pyx_v_self, 0, __pyx_v_s, 2, __pyx_v_o)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1522, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_3);
-        __pyx_t_3 = 0;
-        goto __pyx_L0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1521
- *             else:
- *                 # s ? o
- *                 if o is not None:             # <<<<<<<<<<<<<<
- *                     return self._lookup_2bound(0, s, 2, o)
- *                 # s ? ?
- */
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1525
- *                 # s ? ?
- *                 else:
- *                     return self._lookup_1bound(0, s)             # <<<<<<<<<<<<<<
- *         else:
- *             if p is not None:
- */
-      /*else*/ {
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_lookup_1bound(__pyx_v_self, 0, __pyx_v_s)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1525, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_3);
-        __pyx_t_3 = 0;
-        goto __pyx_L0;
-      }
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1500
- *         s, p, o = triple_pattern
- * 
- *         if s is not None:             # <<<<<<<<<<<<<<
- *             if p is not None:
- *                 # s p o
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1527
- *                     return self._lookup_1bound(0, s)
- *         else:
- *             if p is not None:             # <<<<<<<<<<<<<<
- *                 # ? p o
- *                 if o is not None:
- */
-  /*else*/ {
-    __pyx_t_4 = (__pyx_v_p != Py_None);
-    __pyx_t_5 = (__pyx_t_4 != 0);
-    if (__pyx_t_5) {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1529
- *             if p is not None:
- *                 # ? p o
- *                 if o is not None:             # <<<<<<<<<<<<<<
- *                     return self._lookup_2bound(1, p, 2, o)
- *                 # ? p ?
- */
-      __pyx_t_5 = (__pyx_v_o != Py_None);
-      __pyx_t_4 = (__pyx_t_5 != 0);
-      if (__pyx_t_4) {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1530
- *                 # ? p o
- *                 if o is not None:
- *                     return self._lookup_2bound(1, p, 2, o)             # <<<<<<<<<<<<<<
- *                 # ? p ?
- *                 else:
- */
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_lookup_2bound(__pyx_v_self, 1, __pyx_v_p, 2, __pyx_v_o)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1530, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_3);
-        __pyx_t_3 = 0;
-        goto __pyx_L0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1529
- *             if p is not None:
- *                 # ? p o
- *                 if o is not None:             # <<<<<<<<<<<<<<
- *                     return self._lookup_2bound(1, p, 2, o)
- *                 # ? p ?
- */
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1533
- *                 # ? p ?
- *                 else:
- *                     return self._lookup_1bound(1, p)             # <<<<<<<<<<<<<<
- *             else:
- *                 # ? ? o
- */
-      /*else*/ {
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_lookup_1bound(__pyx_v_self, 1, __pyx_v_p)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1533, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_3);
-        __pyx_t_3 = 0;
-        goto __pyx_L0;
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1527
- *                     return self._lookup_1bound(0, s)
- *         else:
- *             if p is not None:             # <<<<<<<<<<<<<<
- *                 # ? p o
- *                 if o is not None:
- */
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1536
- *             else:
- *                 # ? ? o
- *                 if o is not None:             # <<<<<<<<<<<<<<
- *                     return self._lookup_1bound(2, o)
- *                 # ? ? ?
- */
-    /*else*/ {
-      __pyx_t_4 = (__pyx_v_o != Py_None);
-      __pyx_t_5 = (__pyx_t_4 != 0);
-      if (__pyx_t_5) {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1537
- *                 # ? ? o
- *                 if o is not None:
- *                     return self._lookup_1bound(2, o)             # <<<<<<<<<<<<<<
- *                 # ? ? ?
- *                 else:
- */
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_lookup_1bound(__pyx_v_self, 2, __pyx_v_o)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1537, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_3);
-        __pyx_t_3 = 0;
-        goto __pyx_L0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1536
- *             else:
- *                 # ? ? o
- *                 if o is not None:             # <<<<<<<<<<<<<<
- *                     return self._lookup_1bound(2, o)
- *                 # ? ? ?
- */
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1541
- *                 else:
- *                     # Get all triples in the database.
- *                     logger.debug('Getting all DB triples.')             # <<<<<<<<<<<<<<
- *                     dcur = self._cur_open('spo:c')
- * 
- */
-      /*else*/ {
-        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1541, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1541, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1541, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1542
- *                     # Get all triples in the database.
- *                     logger.debug('Getting all DB triples.')
- *                     dcur = self._cur_open('spo:c')             # <<<<<<<<<<<<<<
- * 
- *                     try:
- */
-        __pyx_t_14.__pyx_n = 1;
-        __pyx_t_14.dblabel = ((unsigned char *)((char const *)"spo:c"));
-        __pyx_t_13 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_14); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1542, __pyx_L1_error)
-        __pyx_v_dcur = __pyx_t_13;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1544
- *                     dcur = self._cur_open('spo:c')
- * 
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_stat(
- *                                 self.txn, lmdb.mdb_cursor_dbi(dcur), &db_stat),
- */
-        /*try:*/ {
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1545
- * 
- *                     try:
- *                         _check(lmdb.mdb_stat(             # <<<<<<<<<<<<<<
- *                                 self.txn, lmdb.mdb_cursor_dbi(dcur), &db_stat),
- *                             'Error gathering DB stats.')
- */
-          __pyx_t_15.__pyx_n = 1;
-          __pyx_t_15.message = __pyx_kp_u_Error_gathering_DB_stats;
-          __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_stat(__pyx_v_self->__pyx_base.txn, mdb_cursor_dbi(__pyx_v_dcur), (&__pyx_v_db_stat)), &__pyx_t_15); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1545, __pyx_L19_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1548
- *                                 self.txn, lmdb.mdb_cursor_dbi(dcur), &db_stat),
- *                             'Error gathering DB stats.')
- *                         ct = db_stat.ms_entries             # <<<<<<<<<<<<<<
- *                         ret = ResultSet(ct, TRP_KLEN)
- *                         logger.debug(f'Triples found: {ct}')
- */
-          __pyx_t_16 = __pyx_v_db_stat.ms_entries;
-          __pyx_v_ct = __pyx_t_16;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1549
- *                             'Error gathering DB stats.')
- *                         ct = db_stat.ms_entries
- *                         ret = ResultSet(ct, TRP_KLEN)             # <<<<<<<<<<<<<<
- *                         logger.debug(f'Triples found: {ct}')
- *                         if ct == 0:
- */
-          __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_ct); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1549, __pyx_L19_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1549, __pyx_L19_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_GIVEREF(__pyx_t_3);
-          PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
-          __Pyx_INCREF(__pyx_int_15);
-          __Pyx_GIVEREF(__pyx_int_15);
-          PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_15);
-          __pyx_t_3 = 0;
-          __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1549, __pyx_L19_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __pyx_v_ret = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_3);
-          __pyx_t_3 = 0;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1550
- *                         ct = db_stat.ms_entries
- *                         ret = ResultSet(ct, TRP_KLEN)
- *                         logger.debug(f'Triples found: {ct}')             # <<<<<<<<<<<<<<
- *                         if ct == 0:
- *                             return ResultSet(0, TRP_KLEN)
- */
-          __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1550, __pyx_L19_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1550, __pyx_L19_error)
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __pyx_t_2 = __Pyx_PyUnicode_From_size_t(__pyx_v_ct, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1550, __pyx_L19_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Triples_found, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1550, __pyx_L19_error)
-          __Pyx_GOTREF(__pyx_t_11);
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __pyx_t_2 = NULL;
-          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
-            __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
-            if (likely(__pyx_t_2)) {
-              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-              __Pyx_INCREF(__pyx_t_2);
-              __Pyx_INCREF(function);
-              __Pyx_DECREF_SET(__pyx_t_1, function);
-            }
-          }
-          if (!__pyx_t_2) {
-            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1550, __pyx_L19_error)
-            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-            __Pyx_GOTREF(__pyx_t_3);
-          } else {
-            #if CYTHON_FAST_PYCALL
-            if (PyFunction_Check(__pyx_t_1)) {
-              PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_11};
-              __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1550, __pyx_L19_error)
-              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-              __Pyx_GOTREF(__pyx_t_3);
-              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-            } else
-            #endif
-            #if CYTHON_FAST_PYCCALL
-            if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
-              PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_11};
-              __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1550, __pyx_L19_error)
-              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-              __Pyx_GOTREF(__pyx_t_3);
-              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-            } else
-            #endif
-            {
-              __pyx_t_17 = PyTuple_New(1+1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1550, __pyx_L19_error)
-              __Pyx_GOTREF(__pyx_t_17);
-              __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_2); __pyx_t_2 = NULL;
-              __Pyx_GIVEREF(__pyx_t_11);
-              PyTuple_SET_ITEM(__pyx_t_17, 0+1, __pyx_t_11);
-              __pyx_t_11 = 0;
-              __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1550, __pyx_L19_error)
-              __Pyx_GOTREF(__pyx_t_3);
-              __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
-            }
-          }
-          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1551
- *                         ret = ResultSet(ct, TRP_KLEN)
- *                         logger.debug(f'Triples found: {ct}')
- *                         if ct == 0:             # <<<<<<<<<<<<<<
- *                             return ResultSet(0, TRP_KLEN)
- * 
- */
-          __pyx_t_5 = ((__pyx_v_ct == 0) != 0);
-          if (__pyx_t_5) {
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1552
- *                         logger.debug(f'Triples found: {ct}')
- *                         if ct == 0:
- *                             return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- * 
- *                         _check(lmdb.mdb_cursor_get(
- */
-            __Pyx_XDECREF(((PyObject *)__pyx_r));
-            __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1552, __pyx_L19_error)
-            __Pyx_GOTREF(__pyx_t_3);
-            __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_3);
-            __pyx_t_3 = 0;
-            goto __pyx_L18_return;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1551
- *                         ret = ResultSet(ct, TRP_KLEN)
- *                         logger.debug(f'Triples found: {ct}')
- *                         if ct == 0:             # <<<<<<<<<<<<<<
- *                             return ResultSet(0, TRP_KLEN)
- * 
- */
-          }
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1554
- *                             return ResultSet(0, TRP_KLEN)
- * 
- *                         _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                                 dcur, &key_v, &data_v, lmdb.MDB_FIRST))
- *                         while True:
- */
-          __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_dcur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), MDB_FIRST), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1554, __pyx_L19_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1556
- *                         _check(lmdb.mdb_cursor_get(
- *                                 dcur, &key_v, &data_v, lmdb.MDB_FIRST))
- *                         while True:             # <<<<<<<<<<<<<<
- *                             logger.debug(f'i in 0bound: {i}')
- *                             memcpy(
- */
-          while (1) {
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1557
- *                                 dcur, &key_v, &data_v, lmdb.MDB_FIRST))
- *                         while True:
- *                             logger.debug(f'i in 0bound: {i}')             # <<<<<<<<<<<<<<
- *                             memcpy(
- *                                     ret.data + ret.itemsize * i,
- */
-            __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1557, __pyx_L19_error)
-            __Pyx_GOTREF(__pyx_t_1);
-            __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1557, __pyx_L19_error)
-            __Pyx_GOTREF(__pyx_t_17);
-            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            __pyx_t_1 = __Pyx_PyUnicode_From_size_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1557, __pyx_L19_error)
-            __Pyx_GOTREF(__pyx_t_1);
-            __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_kp_u_i_in_0bound, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1557, __pyx_L19_error)
-            __Pyx_GOTREF(__pyx_t_11);
-            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            __pyx_t_1 = NULL;
-            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_17))) {
-              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_17);
-              if (likely(__pyx_t_1)) {
-                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_17);
-                __Pyx_INCREF(__pyx_t_1);
-                __Pyx_INCREF(function);
-                __Pyx_DECREF_SET(__pyx_t_17, function);
-              }
-            }
-            if (!__pyx_t_1) {
-              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1557, __pyx_L19_error)
-              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-              __Pyx_GOTREF(__pyx_t_3);
-            } else {
-              #if CYTHON_FAST_PYCALL
-              if (PyFunction_Check(__pyx_t_17)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_11};
-                __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_17, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1557, __pyx_L19_error)
-                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-                __Pyx_GOTREF(__pyx_t_3);
-                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-              } else
-              #endif
-              #if CYTHON_FAST_PYCCALL
-              if (__Pyx_PyFastCFunction_Check(__pyx_t_17)) {
-                PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_11};
-                __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_17, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1557, __pyx_L19_error)
-                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-                __Pyx_GOTREF(__pyx_t_3);
-                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-              } else
-              #endif
-              {
-                __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1557, __pyx_L19_error)
-                __Pyx_GOTREF(__pyx_t_2);
-                __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = NULL;
-                __Pyx_GIVEREF(__pyx_t_11);
-                PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_11);
-                __pyx_t_11 = 0;
-                __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1557, __pyx_L19_error)
-                __Pyx_GOTREF(__pyx_t_3);
-                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-              }
-            }
-            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1558
- *                         while True:
- *                             logger.debug(f'i in 0bound: {i}')
- *                             memcpy(             # <<<<<<<<<<<<<<
- *                                     ret.data + ret.itemsize * i,
- *                                     key_v.mv_data, TRP_KLEN)
- */
-            (void)(memcpy((__pyx_v_ret->data + (__pyx_v_ret->itemsize * __pyx_v_i)), __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data, 15));
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1562
- *                                     key_v.mv_data, TRP_KLEN)
- * 
- *                             try:             # <<<<<<<<<<<<<<
- *                                 _check(lmdb.mdb_cursor_get(
- *                                     dcur, &key_v, &data_v, lmdb.MDB_NEXT_NODUP))
- */
-            {
-              __Pyx_PyThreadState_declare
-              __Pyx_PyThreadState_assign
-              __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
-              __Pyx_XGOTREF(__pyx_t_8);
-              __Pyx_XGOTREF(__pyx_t_7);
-              __Pyx_XGOTREF(__pyx_t_6);
-              /*try:*/ {
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1563
- * 
- *                             try:
- *                                 _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                                     dcur, &key_v, &data_v, lmdb.MDB_NEXT_NODUP))
- *                             except KeyNotFoundError:
- */
-                __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_dcur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), MDB_NEXT_NODUP), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1563, __pyx_L24_error)
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1562
- *                                     key_v.mv_data, TRP_KLEN)
- * 
- *                             try:             # <<<<<<<<<<<<<<
- *                                 _check(lmdb.mdb_cursor_get(
- *                                     dcur, &key_v, &data_v, lmdb.MDB_NEXT_NODUP))
- */
-              }
-              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-              goto __pyx_L31_try_end;
-              __pyx_L24_error:;
-              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-              __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1565
- *                                 _check(lmdb.mdb_cursor_get(
- *                                     dcur, &key_v, &data_v, lmdb.MDB_NEXT_NODUP))
- *                             except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                                 break
- * 
- */
-              __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_17, &__pyx_t_2);
-              __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1565, __pyx_L26_except_error)
-              __Pyx_GOTREF(__pyx_t_11);
-              __pyx_t_12 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_11);
-              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-              __Pyx_ErrRestore(__pyx_t_3, __pyx_t_17, __pyx_t_2);
-              __pyx_t_3 = 0; __pyx_t_17 = 0; __pyx_t_2 = 0;
-              if (__pyx_t_12) {
-                __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
-                if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_17, &__pyx_t_3) < 0) __PYX_ERR(0, 1565, __pyx_L26_except_error)
-                __Pyx_GOTREF(__pyx_t_2);
-                __Pyx_GOTREF(__pyx_t_17);
-                __Pyx_GOTREF(__pyx_t_3);
-
-                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1566
- *                                     dcur, &key_v, &data_v, lmdb.MDB_NEXT_NODUP))
- *                             except KeyNotFoundError:
- *                                 break             # <<<<<<<<<<<<<<
- * 
- *                             i += 1
- */
-                goto __pyx_L32_except_break;
-                __pyx_L32_except_break:;
-                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-                __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
-                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-                goto __pyx_L29_try_break;
-              }
-              goto __pyx_L26_except_error;
-              __pyx_L26_except_error:;
-
-              /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1562
- *                                     key_v.mv_data, TRP_KLEN)
- * 
- *                             try:             # <<<<<<<<<<<<<<
- *                                 _check(lmdb.mdb_cursor_get(
- *                                     dcur, &key_v, &data_v, lmdb.MDB_NEXT_NODUP))
- */
-              __Pyx_XGIVEREF(__pyx_t_8);
-              __Pyx_XGIVEREF(__pyx_t_7);
-              __Pyx_XGIVEREF(__pyx_t_6);
-              __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
-              goto __pyx_L19_error;
-              __pyx_L29_try_break:;
-              __Pyx_XGIVEREF(__pyx_t_8);
-              __Pyx_XGIVEREF(__pyx_t_7);
-              __Pyx_XGIVEREF(__pyx_t_6);
-              __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
-              goto __pyx_L23_break;
-              __pyx_L31_try_end:;
-            }
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1568
- *                                 break
- * 
- *                             i += 1             # <<<<<<<<<<<<<<
- *                         # Size is guessed from all entries. Unique keys will be
- *                         # much less than that.
- */
-            __pyx_v_i = (__pyx_v_i + 1);
-          }
-          __pyx_L23_break:;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1571
- *                         # Size is guessed from all entries. Unique keys will be
- *                         # much less than that.
- *                         ret.resize(i + 1)             # <<<<<<<<<<<<<<
- * 
- *                         #logger.debug('Assembled data: {}'.format(ret.data[:ret.size]))
- */
-          ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_v_ret->__pyx_vtab)->resize(__pyx_v_ret, (__pyx_v_i + 1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1571, __pyx_L19_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1574
- * 
- *                         #logger.debug('Assembled data: {}'.format(ret.data[:ret.size]))
- *                         return ret             # <<<<<<<<<<<<<<
- *                     finally:
- *                         self._cur_close(dcur)
- */
-          __Pyx_XDECREF(((PyObject *)__pyx_r));
-          __Pyx_INCREF(((PyObject *)__pyx_v_ret));
-          __pyx_r = __pyx_v_ret;
-          goto __pyx_L18_return;
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1576
- *                         return ret
- *                     finally:
- *                         self._cur_close(dcur)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-        /*finally:*/ {
-          __pyx_L19_error:;
-          /*exception exit:*/{
-            __Pyx_PyThreadState_declare
-            __Pyx_PyThreadState_assign
-            __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
-            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
-            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
-            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
-            __Pyx_XGOTREF(__pyx_t_6);
-            __Pyx_XGOTREF(__pyx_t_7);
-            __Pyx_XGOTREF(__pyx_t_8);
-            __Pyx_XGOTREF(__pyx_t_20);
-            __Pyx_XGOTREF(__pyx_t_21);
-            __Pyx_XGOTREF(__pyx_t_22);
-            __pyx_t_12 = __pyx_lineno; __pyx_t_18 = __pyx_clineno; __pyx_t_19 = __pyx_filename;
-            {
-              ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_dcur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1576, __pyx_L35_error)
-            }
-            if (PY_MAJOR_VERSION >= 3) {
-              __Pyx_XGIVEREF(__pyx_t_20);
-              __Pyx_XGIVEREF(__pyx_t_21);
-              __Pyx_XGIVEREF(__pyx_t_22);
-              __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
-            }
-            __Pyx_XGIVEREF(__pyx_t_6);
-            __Pyx_XGIVEREF(__pyx_t_7);
-            __Pyx_XGIVEREF(__pyx_t_8);
-            __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
-            __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
-            __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_18; __pyx_filename = __pyx_t_19;
-            goto __pyx_L1_error;
-            __pyx_L35_error:;
-            if (PY_MAJOR_VERSION >= 3) {
-              __Pyx_XGIVEREF(__pyx_t_20);
-              __Pyx_XGIVEREF(__pyx_t_21);
-              __Pyx_XGIVEREF(__pyx_t_22);
-              __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
-            }
-            __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;
-            __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
-            goto __pyx_L1_error;
-          }
-          __pyx_L18_return: {
-            __pyx_t_23 = __pyx_r;
-            __pyx_r = 0;
-            ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_dcur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1576, __pyx_L1_error)
-            __pyx_r = __pyx_t_23;
-            __pyx_t_23 = 0;
-            goto __pyx_L0;
-          }
-        }
-      }
-    }
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1485
- * 
- * 
- *     cdef ResultSet _lookup(self, tuple triple_pattern):             # <<<<<<<<<<<<<<
- *         """
- *         Look up triples in the indices based on a triple pattern.
- */
-
-  /* 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_11);
-  __Pyx_XDECREF(__pyx_t_17);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_s);
-  __Pyx_XDECREF(__pyx_v_p);
-  __Pyx_XDECREF(__pyx_v_o);
-  __Pyx_XDECREF((PyObject *)__pyx_v_matches);
-  __Pyx_XDECREF((PyObject *)__pyx_v_ret);
-  __Pyx_XGIVEREF((PyObject *)__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1579
- * 
- * 
- *     cdef ResultSet _lookup_1bound(self, unsigned char idx, term):             # <<<<<<<<<<<<<<
- *         """
- *         Lookup triples for a pattern with one bound term.
- */
-
-static struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__lookup_1bound(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char __pyx_v_idx, PyObject *__pyx_v_term) {
-  unsigned char __pyx_v_luk[5];
-  unsigned char __pyx_v_asm_rng[3];
-  size_t __pyx_v_ct;
-  size_t __pyx_v_ret_offset;
-  size_t __pyx_v_src_pos;
-  size_t __pyx_v_ret_pos;
-  size_t __pyx_v_j;
-  MDB_cursor *__pyx_v_icur;
-  unsigned char *__pyx_v_term_order;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_ret = NULL;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  Py_ssize_t __pyx_t_4;
-  Py_UCS4 __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  PyObject *__pyx_t_10 = NULL;
-  int __pyx_t_11;
-  PyObject *__pyx_t_12 = NULL;
-  PyObject *__pyx_t_13 = NULL;
-  unsigned char *__pyx_t_14;
-  MDB_cursor *__pyx_t_15;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open __pyx_t_16;
-  unsigned char __pyx_t_17[3];
-  size_t __pyx_t_18;
-  size_t __pyx_t_19;
-  size_t __pyx_t_20;
-  int __pyx_t_21;
-  char const *__pyx_t_22;
-  PyObject *__pyx_t_23 = NULL;
-  PyObject *__pyx_t_24 = NULL;
-  PyObject *__pyx_t_25 = NULL;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_t_26 = NULL;
-  __Pyx_RefNannySetupContext("_lookup_1bound", 0);
-  __Pyx_TraceCall("_lookup_1bound", __pyx_f[0], 1579, 0, __PYX_ERR(0, 1579, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1594
- *             unsigned int dbflags
- *             unsigned char asm_rng[3]
- *             size_t ct, ret_offset = 0, src_pos, ret_pos             # <<<<<<<<<<<<<<
- *             size_t j # Must be signed for older OpenMP versions
- *             lmdb.MDB_cursor *icur
- */
-  __pyx_v_ret_offset = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1598
- *             lmdb.MDB_cursor *icur
- * 
- *         logger.debug(f'lookup 1bound: {idx}, {term}')             # <<<<<<<<<<<<<<
- *         try:
- *             self._to_key(term, &luk)
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1598, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1598, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1598, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = 0;
-  __pyx_t_5 = 127;
-  __Pyx_INCREF(__pyx_kp_u_lookup_1bound);
-  __pyx_t_4 += 15;
-  __Pyx_GIVEREF(__pyx_kp_u_lookup_1bound);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_lookup_1bound);
-  __pyx_t_6 = __Pyx_PyUnicode_From_unsigned_char(__pyx_v_idx, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1598, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6);
-  __pyx_t_6 = 0;
-  __Pyx_INCREF(__pyx_kp_u__12);
-  __pyx_t_4 += 2;
-  __Pyx_GIVEREF(__pyx_kp_u__12);
-  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__12);
-  __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_term, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1598, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5;
-  __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_6);
-  __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 4, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1598, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(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_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1598, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_GOTREF(__pyx_t_1);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_6};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1598, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_6};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1598, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1598, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
-      __Pyx_GIVEREF(__pyx_t_6);
-      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6);
-      __pyx_t_6 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1598, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1599
- * 
- *         logger.debug(f'lookup 1bound: {idx}, {term}')
- *         try:             # <<<<<<<<<<<<<<
- *             self._to_key(term, &luk)
- *         except KeyNotFoundError:
- */
-  {
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-    __Pyx_XGOTREF(__pyx_t_8);
-    __Pyx_XGOTREF(__pyx_t_9);
-    __Pyx_XGOTREF(__pyx_t_10);
-    /*try:*/ {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1600
- *         logger.debug(f'lookup 1bound: {idx}, {term}')
- *         try:
- *             self._to_key(term, &luk)             # <<<<<<<<<<<<<<
- *         except KeyNotFoundError:
- *             return ResultSet(0, TRP_KLEN)
- */
-      __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_key(__pyx_v_self, __pyx_v_term, (&__pyx_v_luk)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1600, __pyx_L3_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1599
- * 
- *         logger.debug(f'lookup 1bound: {idx}, {term}')
- *         try:             # <<<<<<<<<<<<<<
- *             self._to_key(term, &luk)
- *         except KeyNotFoundError:
- */
-    }
-    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-    goto __pyx_L8_try_end;
-    __pyx_L3_error:;
-    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1601
- *         try:
- *             self._to_key(term, &luk)
- *         except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *             return ResultSet(0, TRP_KLEN)
- *         logging.debug('luk: {}'.format(luk))
- */
-    __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_3, &__pyx_t_7);
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1601, __pyx_L5_except_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_6);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_ErrRestore(__pyx_t_1, __pyx_t_3, __pyx_t_7);
-    __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_7 = 0;
-    if (__pyx_t_11) {
-      __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._lookup_1bound", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_1) < 0) __PYX_ERR(0, 1601, __pyx_L5_except_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_GOTREF(__pyx_t_1);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1602
- *             self._to_key(term, &luk)
- *         except KeyNotFoundError:
- *             return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- *         logging.debug('luk: {}'.format(luk))
- * 
- */
-      __Pyx_XDECREF(((PyObject *)__pyx_r));
-      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1602, __pyx_L5_except_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_6);
-      __pyx_t_6 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      goto __pyx_L6_except_return;
-    }
-    goto __pyx_L5_except_error;
-    __pyx_L5_except_error:;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1599
- * 
- *         logger.debug(f'lookup 1bound: {idx}, {term}')
- *         try:             # <<<<<<<<<<<<<<
- *             self._to_key(term, &luk)
- *         except KeyNotFoundError:
- */
-    __Pyx_XGIVEREF(__pyx_t_8);
-    __Pyx_XGIVEREF(__pyx_t_9);
-    __Pyx_XGIVEREF(__pyx_t_10);
-    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-    goto __pyx_L1_error;
-    __pyx_L6_except_return:;
-    __Pyx_XGIVEREF(__pyx_t_8);
-    __Pyx_XGIVEREF(__pyx_t_9);
-    __Pyx_XGIVEREF(__pyx_t_10);
-    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-    goto __pyx_L0;
-    __pyx_L8_try_end:;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1603
- *         except KeyNotFoundError:
- *             return ResultSet(0, TRP_KLEN)
- *         logging.debug('luk: {}'.format(luk))             # <<<<<<<<<<<<<<
- * 
- *         term_order = lookup_ordering[idx]
- */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1603, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1603, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_luk, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1603, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_2 = __Pyx_PyObject_FromCString(__pyx_v_luk); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1603, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_12 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
-    __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
-    if (likely(__pyx_t_12)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-      __Pyx_INCREF(__pyx_t_12);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_6, function);
-    }
-  }
-  if (!__pyx_t_12) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1603, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_GOTREF(__pyx_t_3);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_2};
-      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1603, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_2};
-      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1603, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1603, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL;
-      __Pyx_GIVEREF(__pyx_t_2);
-      PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_2);
-      __pyx_t_2 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1603, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
-    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
-    if (likely(__pyx_t_6)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-      __Pyx_INCREF(__pyx_t_6);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_7, function);
-    }
-  }
-  if (!__pyx_t_6) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1603, __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_7)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_3};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1603, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 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_7)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_3};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1603, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1603, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_6); __pyx_t_6 = NULL;
-      __Pyx_GIVEREF(__pyx_t_3);
-      PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_3);
-      __pyx_t_3 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1603, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1605
- *         logging.debug('luk: {}'.format(luk))
- * 
- *         term_order = lookup_ordering[idx]             # <<<<<<<<<<<<<<
- *         icur = self._cur_open(self.lookup_indices[idx])
- *         logging.debug(f'DB label: {self.lookup_indices[idx]}')
- */
-  __pyx_v_term_order = (__pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_lookup_ordering[__pyx_v_idx]);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1606
- * 
- *         term_order = lookup_ordering[idx]
- *         icur = self._cur_open(self.lookup_indices[idx])             # <<<<<<<<<<<<<<
- *         logging.debug(f'DB label: {self.lookup_indices[idx]}')
- *         logging.debug('term order: {}'.format(term_order[: 3]))
- */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1606, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_idx, unsigned char, 0, __Pyx_PyInt_From_unsigned_char, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1606, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_14 = __Pyx_PyObject_AsWritableUString(__pyx_t_7); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 1606, __pyx_L1_error)
-  __pyx_t_16.__pyx_n = 1;
-  __pyx_t_16.dblabel = __pyx_t_14;
-  __pyx_t_15 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_16); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1606, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_v_icur = __pyx_t_15;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1607
- *         term_order = lookup_ordering[idx]
- *         icur = self._cur_open(self.lookup_indices[idx])
- *         logging.debug(f'DB label: {self.lookup_indices[idx]}')             # <<<<<<<<<<<<<<
- *         logging.debug('term order: {}'.format(term_order[: 3]))
- * 
- */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1607, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1607, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1607, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_idx, unsigned char, 0, __Pyx_PyInt_From_unsigned_char, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1607, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1607, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_kp_u_DB_label, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1607, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
-    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_13);
-    if (likely(__pyx_t_1)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
-      __Pyx_INCREF(__pyx_t_1);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_13, function);
-    }
-  }
-  if (!__pyx_t_1) {
-    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1607, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_GOTREF(__pyx_t_7);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_13)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_3};
-      __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1607, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_3};
-      __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1607, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_7);
-      __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, 1607, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
-      __Pyx_GIVEREF(__pyx_t_3);
-      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
-      __pyx_t_3 = 0;
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1607, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1608
- *         icur = self._cur_open(self.lookup_indices[idx])
- *         logging.debug(f'DB label: {self.lookup_indices[idx]}')
- *         logging.debug('term order: {}'.format(term_order[: 3]))             # <<<<<<<<<<<<<<
- * 
- *         try:
- */
-  __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1608, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_debug); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1608, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_term_order, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1608, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_term_order) + 0, 3 - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1608, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __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_13 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1608, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_GOTREF(__pyx_t_13);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_1};
-      __pyx_t_13 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1608, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_1};
-      __pyx_t_13 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1608, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1608, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); __pyx_t_2 = NULL;
-      __Pyx_GIVEREF(__pyx_t_1);
-      PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_1);
-      __pyx_t_1 = 0;
-      __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1608, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_6, function);
-    }
-  }
-  if (!__pyx_t_3) {
-    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1608, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __Pyx_GOTREF(__pyx_t_7);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_13};
-      __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1608, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_13};
-      __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1608, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1608, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); __pyx_t_3 = NULL;
-      __Pyx_GIVEREF(__pyx_t_13);
-      PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_13);
-      __pyx_t_13 = 0;
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_12, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1608, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1610
- *         logging.debug('term order: {}'.format(term_order[: 3]))
- * 
- *         try:             # <<<<<<<<<<<<<<
- *             key_v.mv_data = luk
- *             key_v.mv_size = KLEN
- */
-  /*try:*/ {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1611
- * 
- *         try:
- *             key_v.mv_data = luk             # <<<<<<<<<<<<<<
- *             key_v.mv_size = KLEN
- * 
- */
-    __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data = __pyx_v_luk;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1612
- *         try:
- *             key_v.mv_data = luk
- *             key_v.mv_size = KLEN             # <<<<<<<<<<<<<<
- * 
- *             _check(lmdb.mdb_cursor_get(icur, &key_v, &data_v, lmdb.MDB_SET))
- */
-    __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_size = 5;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1614
- *             key_v.mv_size = KLEN
- * 
- *             _check(lmdb.mdb_cursor_get(icur, &key_v, &data_v, lmdb.MDB_SET))             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_cursor_count(icur, &ct))
- * 
- */
-    __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), MDB_SET), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1614, __pyx_L12_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1615
- * 
- *             _check(lmdb.mdb_cursor_get(icur, &key_v, &data_v, lmdb.MDB_SET))
- *             _check(lmdb.mdb_cursor_count(icur, &ct))             # <<<<<<<<<<<<<<
- * 
- *             # Allocate memory for results.
- */
-    __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_count(__pyx_v_icur, (&__pyx_v_ct)), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1615, __pyx_L12_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1618
- * 
- *             # Allocate memory for results.
- *             ret = ResultSet(ct, TRP_KLEN)             # <<<<<<<<<<<<<<
- *             logger.debug(f'Entries for {self.lookup_indices[idx]}: {ct}')
- *             logger.debug(f'Allocated {ret.size} bytes of data.')
- */
-    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_v_ct); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1618, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1618, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_GIVEREF(__pyx_t_7);
-    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
-    __Pyx_INCREF(__pyx_int_15);
-    __Pyx_GIVEREF(__pyx_int_15);
-    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_15);
-    __pyx_t_7 = 0;
-    __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1618, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_7);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_v_ret = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_7);
-    __pyx_t_7 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1619
- *             # Allocate memory for results.
- *             ret = ResultSet(ct, TRP_KLEN)
- *             logger.debug(f'Entries for {self.lookup_indices[idx]}: {ct}')             # <<<<<<<<<<<<<<
- *             logger.debug(f'Allocated {ret.size} bytes of data.')
- *             #logger.debug('First row: {}'.format(
- */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1619, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_debug); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1619, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_12);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1619, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_4 = 0;
-    __pyx_t_5 = 127;
-    __Pyx_INCREF(__pyx_kp_u_Entries_for);
-    __pyx_t_4 += 12;
-    __Pyx_GIVEREF(__pyx_kp_u_Entries_for);
-    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_Entries_for);
-    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup_indices); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1619, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_13);
-    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_13, __pyx_v_idx, unsigned char, 0, __Pyx_PyInt_From_unsigned_char, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1619, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __pyx_t_13 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1619, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_13);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) : __pyx_t_5;
-    __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13);
-    __Pyx_GIVEREF(__pyx_t_13);
-    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_13);
-    __pyx_t_13 = 0;
-    __Pyx_INCREF(__pyx_kp_u__27);
-    __pyx_t_4 += 2;
-    __Pyx_GIVEREF(__pyx_kp_u__27);
-    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u__27);
-    __pyx_t_13 = __Pyx_PyUnicode_From_size_t(__pyx_v_ct, 0, ' ', 'd'); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1619, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_13);
-    __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13);
-    __Pyx_GIVEREF(__pyx_t_13);
-    PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_13);
-    __pyx_t_13 = 0;
-    __pyx_t_13 = __Pyx_PyUnicode_Join(__pyx_t_6, 4, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1619, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_13);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_12);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_12, function);
-      }
-    }
-    if (!__pyx_t_6) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1619, __pyx_L12_error)
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_7);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_12)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_13};
-        __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1619, __pyx_L12_error)
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_13};
-        __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1619, __pyx_L12_error)
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1619, __pyx_L12_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL;
-        __Pyx_GIVEREF(__pyx_t_13);
-        PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_13);
-        __pyx_t_13 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1619, __pyx_L12_error)
-        __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1620
- *             ret = ResultSet(ct, TRP_KLEN)
- *             logger.debug(f'Entries for {self.lookup_indices[idx]}: {ct}')
- *             logger.debug(f'Allocated {ret.size} bytes of data.')             # <<<<<<<<<<<<<<
- *             #logger.debug('First row: {}'.format(
- *             #        (<unsigned char *>data_v.mv_data)[:DBL_KLEN]))
- */
-    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1620, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_12);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1620, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1620, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_12);
-    __pyx_t_4 = 0;
-    __pyx_t_5 = 127;
-    __Pyx_INCREF(__pyx_kp_u_Allocated);
-    __pyx_t_4 += 10;
-    __Pyx_GIVEREF(__pyx_kp_u_Allocated);
-    PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_kp_u_Allocated);
-    __pyx_t_13 = __Pyx_PyUnicode_From_size_t(__pyx_v_ret->size, 0, ' ', 'd'); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1620, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_13);
-    __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13);
-    __Pyx_GIVEREF(__pyx_t_13);
-    PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_13);
-    __pyx_t_13 = 0;
-    __Pyx_INCREF(__pyx_kp_u_bytes_of_data);
-    __pyx_t_4 += 15;
-    __Pyx_GIVEREF(__pyx_kp_u_bytes_of_data);
-    PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_kp_u_bytes_of_data);
-    __pyx_t_13 = __Pyx_PyUnicode_Join(__pyx_t_12, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1620, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_13);
-    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    __pyx_t_12 = NULL;
-    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_12)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_12);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    if (!__pyx_t_12) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1620, __pyx_L12_error)
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_7);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_13};
-        __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1620, __pyx_L12_error)
-        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_13};
-        __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1620, __pyx_L12_error)
-        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1620, __pyx_L12_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_12); __pyx_t_12 = NULL;
-        __Pyx_GIVEREF(__pyx_t_13);
-        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_13);
-        __pyx_t_13 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1620, __pyx_L12_error)
-        __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1625
- * 
- *             # Arrange results according to lookup order.
- *             asm_rng = [             # <<<<<<<<<<<<<<
- *                 KLEN * term_order[0],
- *                 KLEN * term_order[1],
- */
-    __pyx_t_17[0] = (5 * (__pyx_v_term_order[0]));
-    __pyx_t_17[1] = (5 * (__pyx_v_term_order[1]));
-    __pyx_t_17[2] = (5 * (__pyx_v_term_order[2]));
-    memcpy(&(__pyx_v_asm_rng[0]), __pyx_t_17, sizeof(__pyx_v_asm_rng[0]) * (3));
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1630
- *                 KLEN * term_order[2],
- *             ]
- *             logger.debug('asm_rng: {}'.format(asm_rng[:3]))             # <<<<<<<<<<<<<<
- *             logger.debug('luk: {}'.format(luk))
- * 
- */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1630, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1630, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_asm_rng, __pyx_n_s_format); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1630, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_13);
-    __pyx_t_12 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_asm_rng) + 0, 3 - 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1630, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_12);
-    __pyx_t_1 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
-      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_13);
-      if (likely(__pyx_t_1)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
-        __Pyx_INCREF(__pyx_t_1);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_13, function);
-      }
-    }
-    if (!__pyx_t_1) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1630, __pyx_L12_error)
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_13)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_12};
-        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1630, __pyx_L12_error)
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_12};
-        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1630, __pyx_L12_error)
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1630, __pyx_L12_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = NULL;
-        __Pyx_GIVEREF(__pyx_t_12);
-        PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_12);
-        __pyx_t_12 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1630, __pyx_L12_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __pyx_t_13 = NULL;
-    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
-      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_6);
-      if (likely(__pyx_t_13)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-        __Pyx_INCREF(__pyx_t_13);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_6, function);
-      }
-    }
-    if (!__pyx_t_13) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1630, __pyx_L12_error)
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_GOTREF(__pyx_t_7);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_6)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_3};
-        __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1630, __pyx_L12_error)
-        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-        __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_3};
-        __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1630, __pyx_L12_error)
-        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-        __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1630, __pyx_L12_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_13); __pyx_t_13 = NULL;
-        __Pyx_GIVEREF(__pyx_t_3);
-        PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_3);
-        __pyx_t_3 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1630, __pyx_L12_error)
-        __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1631
- *             ]
- *             logger.debug('asm_rng: {}'.format(asm_rng[:3]))
- *             logger.debug('luk: {}'.format(luk))             # <<<<<<<<<<<<<<
- * 
- *             _check(lmdb.mdb_cursor_get(icur, &key_v, &data_v, lmdb.MDB_SET))
- */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1631, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1631, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_luk, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1631, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_13 = __Pyx_PyObject_FromCString(__pyx_v_luk); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1631, __pyx_L12_error)
-    __Pyx_GOTREF(__pyx_t_13);
-    __pyx_t_12 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_12)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_12);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    if (!__pyx_t_12) {
-      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1631, __pyx_L12_error)
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_6);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_13};
-        __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1631, __pyx_L12_error)
-        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __Pyx_GOTREF(__pyx_t_6);
-        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_13};
-        __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1631, __pyx_L12_error)
-        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __Pyx_GOTREF(__pyx_t_6);
-        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1631, __pyx_L12_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_12); __pyx_t_12 = NULL;
-        __Pyx_GIVEREF(__pyx_t_13);
-        PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_13);
-        __pyx_t_13 = 0;
-        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1631, __pyx_L12_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1631, __pyx_L12_error)
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_7);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_2)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_6};
-        __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1631, __pyx_L12_error)
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_6};
-        __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1631, __pyx_L12_error)
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1631, __pyx_L12_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __pyx_t_3 = NULL;
-        __Pyx_GIVEREF(__pyx_t_6);
-        PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6);
-        __pyx_t_6 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1631, __pyx_L12_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1633
- *             logger.debug('luk: {}'.format(luk))
- * 
- *             _check(lmdb.mdb_cursor_get(icur, &key_v, &data_v, lmdb.MDB_SET))             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_cursor_get(
- *                 icur, &key_v, &data_v, lmdb.MDB_GET_MULTIPLE))
- */
-    __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), MDB_SET), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1633, __pyx_L12_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1634
- * 
- *             _check(lmdb.mdb_cursor_get(icur, &key_v, &data_v, lmdb.MDB_SET))
- *             _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                 icur, &key_v, &data_v, lmdb.MDB_GET_MULTIPLE))
- *             while True:
- */
-    __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), MDB_GET_MULTIPLE), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1634, __pyx_L12_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1636
- *             _check(lmdb.mdb_cursor_get(
- *                 icur, &key_v, &data_v, lmdb.MDB_GET_MULTIPLE))
- *             while True:             # <<<<<<<<<<<<<<
- *                 logger.debug('ret_offset: {}'.format(ret_offset))
- *                 logger.debug(f'Page size: {data_v.mv_size}')
- */
-    while (1) {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1637
- *                 icur, &key_v, &data_v, lmdb.MDB_GET_MULTIPLE))
- *             while True:
- *                 logger.debug('ret_offset: {}'.format(ret_offset))             # <<<<<<<<<<<<<<
- *                 logger.debug(f'Page size: {data_v.mv_size}')
- *                 #logger.debug(
- */
-      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1637, __pyx_L12_error)
-      __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1637, __pyx_L12_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_ret_offset, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1637, __pyx_L12_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_ret_offset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1637, __pyx_L12_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_13 = NULL;
-      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
-        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_6);
-        if (likely(__pyx_t_13)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-          __Pyx_INCREF(__pyx_t_13);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_6, function);
-        }
-      }
-      if (!__pyx_t_13) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1637, __pyx_L12_error)
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_GOTREF(__pyx_t_2);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_6)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_3};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1637, __pyx_L12_error)
-          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_3};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1637, __pyx_L12_error)
-          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        } else
-        #endif
-        {
-          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1637, __pyx_L12_error)
-          __Pyx_GOTREF(__pyx_t_12);
-          __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13); __pyx_t_13 = NULL;
-          __Pyx_GIVEREF(__pyx_t_3);
-          PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_3);
-          __pyx_t_3 = 0;
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1637, __pyx_L12_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __pyx_t_6 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1637, __pyx_L12_error)
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_GOTREF(__pyx_t_7);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_1)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_2};
-          __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1637, __pyx_L12_error)
-          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __Pyx_GOTREF(__pyx_t_7);
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_2};
-          __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1637, __pyx_L12_error)
-          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __Pyx_GOTREF(__pyx_t_7);
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        } else
-        #endif
-        {
-          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1637, __pyx_L12_error)
-          __Pyx_GOTREF(__pyx_t_12);
-          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_6); __pyx_t_6 = NULL;
-          __Pyx_GIVEREF(__pyx_t_2);
-          PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_2);
-          __pyx_t_2 = 0;
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_12, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1637, __pyx_L12_error)
-          __Pyx_GOTREF(__pyx_t_7);
-          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1638
- *             while True:
- *                 logger.debug('ret_offset: {}'.format(ret_offset))
- *                 logger.debug(f'Page size: {data_v.mv_size}')             # <<<<<<<<<<<<<<
- *                 #logger.debug(
- *                 #        'Got data in 1bound ({}): {}'.format(
- */
-      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1638, __pyx_L12_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1638, __pyx_L12_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyUnicode_From_size_t(__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_size, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1638, __pyx_L12_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Page_size, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1638, __pyx_L12_error)
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
-        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_12);
-        if (likely(__pyx_t_1)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
-          __Pyx_INCREF(__pyx_t_1);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_12, function);
-        }
-      }
-      if (!__pyx_t_1) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1638, __pyx_L12_error)
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_GOTREF(__pyx_t_7);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_12)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_2};
-          __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1638, __pyx_L12_error)
-          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __Pyx_GOTREF(__pyx_t_7);
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_2};
-          __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1638, __pyx_L12_error)
-          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __Pyx_GOTREF(__pyx_t_7);
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        } else
-        #endif
-        {
-          __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1638, __pyx_L12_error)
-          __Pyx_GOTREF(__pyx_t_6);
-          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
-          __Pyx_GIVEREF(__pyx_t_2);
-          PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_2);
-          __pyx_t_2 = 0;
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1638, __pyx_L12_error)
-          __Pyx_GOTREF(__pyx_t_7);
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1643
- *                 #            data_v.mv_size,
- *                 #            (<unsigned char *>data_v.mv_data)[: data_v.mv_size]))
- *                 for j in prange(data_v.mv_size // DBL_KLEN, nogil=True):             # <<<<<<<<<<<<<<
- *                     src_pos = DBL_KLEN * j
- *                     ret_pos = (ret_offset + ret.itemsize * j)
- */
-      {
-          #ifdef WITH_THREAD
-          PyThreadState *_save;
-          Py_UNBLOCK_THREADS
-          __Pyx_FastGIL_Remember();
-          #endif
-          /*try:*/ {
-            __pyx_t_18 = (__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_size / 10);
-            if (1 == 0) abort();
-            {
-                #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
-                    #undef likely
-                    #undef unlikely
-                    #define likely(x)   (x)
-                    #define unlikely(x) (x)
-                #endif
-                __pyx_t_20 = (__pyx_t_18 - 0 + 1 - 1/abs(1)) / 1;
-                if (__pyx_t_20 > 0)
-                {
-                    #ifdef _OPENMP
-                    #pragma omp parallel
-                    #endif /* _OPENMP */
-                    {
-                        #ifdef _OPENMP
-                        #pragma omp for firstprivate(__pyx_v_j) lastprivate(__pyx_v_j) lastprivate(__pyx_v_ret_pos) lastprivate(__pyx_v_src_pos)
-                        #endif /* _OPENMP */
-                        for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_20; __pyx_t_19++){
-                            {
-                                __pyx_v_j = (size_t)(0 + 1 * __pyx_t_19);
-                                /* Initialize private variables to invalid values */
-                                __pyx_v_ret_pos = ((size_t)0xbad0bad0);
-                                __pyx_v_src_pos = ((size_t)0xbad0bad0);
-
-                                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1644
- *                 #            (<unsigned char *>data_v.mv_data)[: data_v.mv_size]))
- *                 for j in prange(data_v.mv_size // DBL_KLEN, nogil=True):
- *                     src_pos = DBL_KLEN * j             # <<<<<<<<<<<<<<
- *                     ret_pos = (ret_offset + ret.itemsize * j)
- *                     memcpy(ret.data + ret_pos + asm_rng[0], luk, KLEN)
- */
-                                __pyx_v_src_pos = (10 * __pyx_v_j);
-
-                                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1645
- *                 for j in prange(data_v.mv_size // DBL_KLEN, nogil=True):
- *                     src_pos = DBL_KLEN * j
- *                     ret_pos = (ret_offset + ret.itemsize * j)             # <<<<<<<<<<<<<<
- *                     memcpy(ret.data + ret_pos + asm_rng[0], luk, KLEN)
- *                     memcpy(ret.data + ret_pos + asm_rng[1],
- */
-                                __pyx_v_ret_pos = (__pyx_v_ret_offset + (__pyx_v_ret->itemsize * __pyx_v_j));
-
-                                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1646
- *                     src_pos = DBL_KLEN * j
- *                     ret_pos = (ret_offset + ret.itemsize * j)
- *                     memcpy(ret.data + ret_pos + asm_rng[0], luk, KLEN)             # <<<<<<<<<<<<<<
- *                     memcpy(ret.data + ret_pos + asm_rng[1],
- *                             data_v.mv_data + src_pos, KLEN)
- */
-                                (void)(memcpy(((__pyx_v_ret->data + __pyx_v_ret_pos) + (__pyx_v_asm_rng[0])), __pyx_v_luk, 5));
-
-                                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1647
- *                     ret_pos = (ret_offset + ret.itemsize * j)
- *                     memcpy(ret.data + ret_pos + asm_rng[0], luk, KLEN)
- *                     memcpy(ret.data + ret_pos + asm_rng[1],             # <<<<<<<<<<<<<<
- *                             data_v.mv_data + src_pos, KLEN)
- *                     memcpy(ret.data + ret_pos + asm_rng[2],
- */
-                                (void)(memcpy(((__pyx_v_ret->data + __pyx_v_ret_pos) + (__pyx_v_asm_rng[1])), (__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_data + __pyx_v_src_pos), 5));
-
-                                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1649
- *                     memcpy(ret.data + ret_pos + asm_rng[1],
- *                             data_v.mv_data + src_pos, KLEN)
- *                     memcpy(ret.data + ret_pos + asm_rng[2],             # <<<<<<<<<<<<<<
- *                             data_v.mv_data + src_pos + KLEN, KLEN)
- * 
- */
-                                (void)(memcpy(((__pyx_v_ret->data + __pyx_v_ret_pos) + (__pyx_v_asm_rng[2])), ((__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_data + __pyx_v_src_pos) + 5), 5));
-                            }
-                        }
-                    }
-                }
-            }
-            #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
-                #undef likely
-                #undef unlikely
-                #define likely(x)   __builtin_expect(!!(x), 1)
-                #define unlikely(x) __builtin_expect(!!(x), 0)
-            #endif
-          }
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1643
- *                 #            data_v.mv_size,
- *                 #            (<unsigned char *>data_v.mv_data)[: data_v.mv_size]))
- *                 for j in prange(data_v.mv_size // DBL_KLEN, nogil=True):             # <<<<<<<<<<<<<<
- *                     src_pos = DBL_KLEN * j
- *                     ret_pos = (ret_offset + ret.itemsize * j)
- */
-          /*finally:*/ {
-            /*normal exit:*/{
-              #ifdef WITH_THREAD
-              __Pyx_FastGIL_Forget();
-              Py_BLOCK_THREADS
-              #endif
-              goto __pyx_L20;
-            }
-            __pyx_L20:;
-          }
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1655
- *                 # data_v.mv_size will be overwritten with the *next* page size
- *                 # and cause corruption in the output data.
- *                 ret_offset += data_v.mv_size // DBL_KLEN * ret.itemsize             # <<<<<<<<<<<<<<
- * 
- *                 try:
- */
-      __pyx_v_ret_offset = (__pyx_v_ret_offset + ((__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_size / 10) * __pyx_v_ret->itemsize));
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1657
- *                 ret_offset += data_v.mv_size // DBL_KLEN * ret.itemsize
- * 
- *                 try:             # <<<<<<<<<<<<<<
- *                     # Get results by the page.
- *                     _check(lmdb.mdb_cursor_get(
- */
-      {
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
-        __Pyx_XGOTREF(__pyx_t_10);
-        __Pyx_XGOTREF(__pyx_t_9);
-        __Pyx_XGOTREF(__pyx_t_8);
-        /*try:*/ {
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1659
- *                 try:
- *                     # Get results by the page.
- *                     _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                             icur, &key_v, &data_v, lmdb.MDB_NEXT_MULTIPLE))
- *                 except KeyNotFoundError:
- */
-          __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), MDB_NEXT_MULTIPLE), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1659, __pyx_L27_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1657
- *                 ret_offset += data_v.mv_size // DBL_KLEN * ret.itemsize
- * 
- *                 try:             # <<<<<<<<<<<<<<
- *                     # Get results by the page.
- *                     _check(lmdb.mdb_cursor_get(
- */
-        }
-        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-        goto __pyx_L34_try_end;
-        __pyx_L27_error:;
-        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1661
- *                     _check(lmdb.mdb_cursor_get(
- *                             icur, &key_v, &data_v, lmdb.MDB_NEXT_MULTIPLE))
- *                 except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                     # For testing only. Errors will be caught in triples()
- *                     # when looking for a context.
- */
-        __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_12, &__pyx_t_6);
-        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1661, __pyx_L29_except_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_2);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_ErrRestore(__pyx_t_7, __pyx_t_12, __pyx_t_6);
-        __pyx_t_7 = 0; __pyx_t_12 = 0; __pyx_t_6 = 0;
-        if (__pyx_t_11) {
-          __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._lookup_1bound", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_12, &__pyx_t_7) < 0) __PYX_ERR(0, 1661, __pyx_L29_except_error)
-          __Pyx_GOTREF(__pyx_t_6);
-          __Pyx_GOTREF(__pyx_t_12);
-          __Pyx_GOTREF(__pyx_t_7);
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1668
- *                     #        'Retrieved less values than expected: {} of {}.'
- *                     #        .format(src_offset, ret.size))
- *                     return ret             # <<<<<<<<<<<<<<
- * 
- *             #logger.debug('Assembled data in 1bound ({}): {}'.format(ret.size, ret.data[: ret.size]))
- */
-          __Pyx_XDECREF(((PyObject *)__pyx_r));
-          __Pyx_INCREF(((PyObject *)__pyx_v_ret));
-          __pyx_r = __pyx_v_ret;
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-          goto __pyx_L30_except_return;
-        }
-        goto __pyx_L29_except_error;
-        __pyx_L29_except_error:;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1657
- *                 ret_offset += data_v.mv_size // DBL_KLEN * ret.itemsize
- * 
- *                 try:             # <<<<<<<<<<<<<<
- *                     # Get results by the page.
- *                     _check(lmdb.mdb_cursor_get(
- */
-        __Pyx_XGIVEREF(__pyx_t_10);
-        __Pyx_XGIVEREF(__pyx_t_9);
-        __Pyx_XGIVEREF(__pyx_t_8);
-        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
-        goto __pyx_L12_error;
-        __pyx_L30_except_return:;
-        __Pyx_XGIVEREF(__pyx_t_10);
-        __Pyx_XGIVEREF(__pyx_t_9);
-        __Pyx_XGIVEREF(__pyx_t_8);
-        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
-        goto __pyx_L11_return;
-        __pyx_L34_try_end:;
-      }
-    }
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1672
- *             #logger.debug('Assembled data in 1bound ({}): {}'.format(ret.size, ret.data[: ret.size]))
- *         finally:
- *             self._cur_close(icur)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  /*finally:*/ {
-    /*normal exit:*/{
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1672, __pyx_L1_error)
-      goto __pyx_L13;
-    }
-    __pyx_L12_error:;
-    /*exception exit:*/{
-      __Pyx_PyThreadState_declare
-      __Pyx_PyThreadState_assign
-      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25);
-      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      __Pyx_XGOTREF(__pyx_t_8);
-      __Pyx_XGOTREF(__pyx_t_9);
-      __Pyx_XGOTREF(__pyx_t_10);
-      __Pyx_XGOTREF(__pyx_t_23);
-      __Pyx_XGOTREF(__pyx_t_24);
-      __Pyx_XGOTREF(__pyx_t_25);
-      __pyx_t_11 = __pyx_lineno; __pyx_t_21 = __pyx_clineno; __pyx_t_22 = __pyx_filename;
-      {
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1672, __pyx_L38_error)
-      }
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_23);
-        __Pyx_XGIVEREF(__pyx_t_24);
-        __Pyx_XGIVEREF(__pyx_t_25);
-        __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25);
-      }
-      __Pyx_XGIVEREF(__pyx_t_8);
-      __Pyx_XGIVEREF(__pyx_t_9);
-      __Pyx_XGIVEREF(__pyx_t_10);
-      __Pyx_ErrRestore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
-      __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_21; __pyx_filename = __pyx_t_22;
-      goto __pyx_L1_error;
-      __pyx_L38_error:;
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_23);
-        __Pyx_XGIVEREF(__pyx_t_24);
-        __Pyx_XGIVEREF(__pyx_t_25);
-        __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25);
-      }
-      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
-      goto __pyx_L1_error;
-    }
-    __pyx_L11_return: {
-      __pyx_t_26 = __pyx_r;
-      __pyx_r = 0;
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1672, __pyx_L1_error)
-      __pyx_r = __pyx_t_26;
-      __pyx_t_26 = 0;
-      goto __pyx_L0;
-    }
-    __pyx_L13:;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1579
- * 
- * 
- *     cdef ResultSet _lookup_1bound(self, unsigned char idx, term):             # <<<<<<<<<<<<<<
- *         """
- *         Lookup triples for a pattern with one bound term.
- */
-
-  /* function exit code */
-  __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)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_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_12);
-  __Pyx_XDECREF(__pyx_t_13);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._lookup_1bound", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_ret);
-  __Pyx_XGIVEREF((PyObject *)__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1675
- * 
- * 
- *     cdef ResultSet _lookup_2bound(             # <<<<<<<<<<<<<<
- *             self, unsigned char idx1, term1, unsigned char idx2, term2):
- *         """
- */
-
-static struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__lookup_2bound(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char __pyx_v_idx1, PyObject *__pyx_v_term1, unsigned char __pyx_v_idx2, PyObject *__pyx_v_term2) {
-  unsigned char __pyx_v_luk1_offset;
-  unsigned char __pyx_v_luk2_offset;
-  unsigned char __pyx_v_luk1[5];
-  unsigned char __pyx_v_luk2[5];
-  unsigned char __pyx_v_luk[10];
-  unsigned char __pyx_v_asm_rng[3];
-  unsigned char __pyx_v_term_order[3];
-  size_t __pyx_v_ct;
-  size_t __pyx_v_i;
-  size_t __pyx_v_ret_offset;
-  size_t __pyx_v_ret_pos;
-  size_t __pyx_v_src_pos;
-  size_t __pyx_v_j;
-  MDB_cursor *__pyx_v_icur;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_ret = 0;
-  PyObject *__pyx_v_dblabel = NULL;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  Py_ssize_t __pyx_t_4;
-  Py_UCS4 __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  PyObject *__pyx_t_10 = NULL;
-  int __pyx_t_11;
-  PyObject *__pyx_t_12 = NULL;
-  PyObject *__pyx_t_13 = NULL;
-  size_t __pyx_t_14;
-  int __pyx_t_15;
-  int __pyx_t_16;
-  size_t __pyx_t_17;
-  PyObject *__pyx_t_18 = NULL;
-  unsigned char *__pyx_t_19;
-  MDB_cursor *__pyx_t_20;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open __pyx_t_21;
-  unsigned char __pyx_t_22[3];
-  size_t __pyx_t_23;
-  int __pyx_t_24;
-  char const *__pyx_t_25;
-  PyObject *__pyx_t_26 = NULL;
-  PyObject *__pyx_t_27 = NULL;
-  PyObject *__pyx_t_28 = NULL;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_t_29 = NULL;
-  __Pyx_RefNannySetupContext("_lookup_2bound", 0);
-  __Pyx_TraceCall("_lookup_2bound", __pyx_f[0], 1675, 0, __PYX_ERR(0, 1675, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1695
- *             unsigned char asm_rng[3]
- *             unsigned char term_order[3] # Lookup ordering
- *             size_t ct, i = 0, ret_offset = 0, ret_pos, src_pos             # <<<<<<<<<<<<<<
- *             size_t j # Must be signed for older OpenMP versions
- *             lmdb.MDB_cursor *icur
- */
-  __pyx_v_i = 0;
-  __pyx_v_ret_offset = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1700
- *             ResultSet ret
- * 
- *         logging.debug(             # <<<<<<<<<<<<<<
- *                 f'2bound lookup for term {term1} at position {idx1} '
- *                 f'and term {term2} at position {idx2}.')
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1700, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1700, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1701
- * 
- *         logging.debug(
- *                 f'2bound lookup for term {term1} at position {idx1} '             # <<<<<<<<<<<<<<
- *                 f'and term {term2} at position {idx2}.')
- *         try:
- */
-  __pyx_t_2 = PyTuple_New(9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1701, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = 0;
-  __pyx_t_5 = 127;
-  __Pyx_INCREF(__pyx_kp_u_2bound_lookup_for_term);
-  __pyx_t_4 += 23;
-  __Pyx_GIVEREF(__pyx_kp_u_2bound_lookup_for_term);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_2bound_lookup_for_term);
-  __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_term1, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1701, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5;
-  __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6);
-  __pyx_t_6 = 0;
-  __Pyx_INCREF(__pyx_kp_u_at_position);
-  __pyx_t_4 += 13;
-  __Pyx_GIVEREF(__pyx_kp_u_at_position);
-  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_at_position);
-  __pyx_t_6 = __Pyx_PyUnicode_From_unsigned_char(__pyx_v_idx1, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1701, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_6);
-  __pyx_t_6 = 0;
-  __Pyx_INCREF(__pyx_kp_u_and_term);
-  __pyx_t_4 += 10;
-  __Pyx_GIVEREF(__pyx_kp_u_and_term);
-  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_and_term);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1702
- *         logging.debug(
- *                 f'2bound lookup for term {term1} at position {idx1} '
- *                 f'and term {term2} at position {idx2}.')             # <<<<<<<<<<<<<<
- *         try:
- *             self._to_key(term1, &luk1)
- */
-  __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_term2, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1702, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5;
-  __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_t_6);
-  __pyx_t_6 = 0;
-  __Pyx_INCREF(__pyx_kp_u_at_position);
-  __pyx_t_4 += 13;
-  __Pyx_GIVEREF(__pyx_kp_u_at_position);
-  PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_kp_u_at_position);
-  __pyx_t_6 = __Pyx_PyUnicode_From_unsigned_char(__pyx_v_idx2, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1702, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_2, 7, __pyx_t_6);
-  __pyx_t_6 = 0;
-  __Pyx_INCREF(__pyx_kp_u__11);
-  __pyx_t_4 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__11);
-  PyTuple_SET_ITEM(__pyx_t_2, 8, __pyx_kp_u__11);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1701
- * 
- *         logging.debug(
- *                 f'2bound lookup for term {term1} at position {idx1} '             # <<<<<<<<<<<<<<
- *                 f'and term {term2} at position {idx2}.')
- *         try:
- */
-  __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 9, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1701, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(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_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1700, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_GOTREF(__pyx_t_1);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_6};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1700, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_6};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1700, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1700, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
-      __Pyx_GIVEREF(__pyx_t_6);
-      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6);
-      __pyx_t_6 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1700, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1703
- *                 f'2bound lookup for term {term1} at position {idx1} '
- *                 f'and term {term2} at position {idx2}.')
- *         try:             # <<<<<<<<<<<<<<
- *             self._to_key(term1, &luk1)
- *             self._to_key(term2, &luk2)
- */
-  {
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-    __Pyx_XGOTREF(__pyx_t_8);
-    __Pyx_XGOTREF(__pyx_t_9);
-    __Pyx_XGOTREF(__pyx_t_10);
-    /*try:*/ {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1704
- *                 f'and term {term2} at position {idx2}.')
- *         try:
- *             self._to_key(term1, &luk1)             # <<<<<<<<<<<<<<
- *             self._to_key(term2, &luk2)
- *         except KeyNotFoundError:
- */
-      __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_key(__pyx_v_self, __pyx_v_term1, (&__pyx_v_luk1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1704, __pyx_L3_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1705
- *         try:
- *             self._to_key(term1, &luk1)
- *             self._to_key(term2, &luk2)             # <<<<<<<<<<<<<<
- *         except KeyNotFoundError:
- *             return ResultSet(0, TRP_KLEN)
- */
-      __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_key(__pyx_v_self, __pyx_v_term2, (&__pyx_v_luk2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1705, __pyx_L3_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1703
- *                 f'2bound lookup for term {term1} at position {idx1} '
- *                 f'and term {term2} at position {idx2}.')
- *         try:             # <<<<<<<<<<<<<<
- *             self._to_key(term1, &luk1)
- *             self._to_key(term2, &luk2)
- */
-    }
-    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-    goto __pyx_L8_try_end;
-    __pyx_L3_error:;
-    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1706
- *             self._to_key(term1, &luk1)
- *             self._to_key(term2, &luk2)
- *         except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *             return ResultSet(0, TRP_KLEN)
- *         logging.debug('luk1: {}'.format(luk1[: KLEN]))
- */
-    __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_3, &__pyx_t_7);
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1706, __pyx_L5_except_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_6);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_ErrRestore(__pyx_t_1, __pyx_t_3, __pyx_t_7);
-    __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_7 = 0;
-    if (__pyx_t_11) {
-      __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._lookup_2bound", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_1) < 0) __PYX_ERR(0, 1706, __pyx_L5_except_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_GOTREF(__pyx_t_1);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1707
- *             self._to_key(term2, &luk2)
- *         except KeyNotFoundError:
- *             return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- *         logging.debug('luk1: {}'.format(luk1[: KLEN]))
- *         logging.debug('luk2: {}'.format(luk2[: KLEN]))
- */
-      __Pyx_XDECREF(((PyObject *)__pyx_r));
-      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1707, __pyx_L5_except_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_6);
-      __pyx_t_6 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      goto __pyx_L6_except_return;
-    }
-    goto __pyx_L5_except_error;
-    __pyx_L5_except_error:;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1703
- *                 f'2bound lookup for term {term1} at position {idx1} '
- *                 f'and term {term2} at position {idx2}.')
- *         try:             # <<<<<<<<<<<<<<
- *             self._to_key(term1, &luk1)
- *             self._to_key(term2, &luk2)
- */
-    __Pyx_XGIVEREF(__pyx_t_8);
-    __Pyx_XGIVEREF(__pyx_t_9);
-    __Pyx_XGIVEREF(__pyx_t_10);
-    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-    goto __pyx_L1_error;
-    __pyx_L6_except_return:;
-    __Pyx_XGIVEREF(__pyx_t_8);
-    __Pyx_XGIVEREF(__pyx_t_9);
-    __Pyx_XGIVEREF(__pyx_t_10);
-    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-    goto __pyx_L0;
-    __pyx_L8_try_end:;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1708
- *         except KeyNotFoundError:
- *             return ResultSet(0, TRP_KLEN)
- *         logging.debug('luk1: {}'.format(luk1[: KLEN]))             # <<<<<<<<<<<<<<
- *         logging.debug('luk2: {}'.format(luk2[: KLEN]))
- * 
- */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1708, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1708, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_luk1, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1708, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_luk1) + 0, 5 - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1708, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_12 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
-    __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
-    if (likely(__pyx_t_12)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-      __Pyx_INCREF(__pyx_t_12);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_6, function);
-    }
-  }
-  if (!__pyx_t_12) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1708, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_GOTREF(__pyx_t_3);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_2};
-      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1708, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_2};
-      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1708, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1708, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL;
-      __Pyx_GIVEREF(__pyx_t_2);
-      PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_2);
-      __pyx_t_2 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1708, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
-    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
-    if (likely(__pyx_t_6)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-      __Pyx_INCREF(__pyx_t_6);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_7, function);
-    }
-  }
-  if (!__pyx_t_6) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1708, __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_7)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_3};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1708, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 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_7)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_3};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1708, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1708, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_6); __pyx_t_6 = NULL;
-      __Pyx_GIVEREF(__pyx_t_3);
-      PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_3);
-      __pyx_t_3 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1708, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1709
- *             return ResultSet(0, TRP_KLEN)
- *         logging.debug('luk1: {}'.format(luk1[: KLEN]))
- *         logging.debug('luk2: {}'.format(luk2[: KLEN]))             # <<<<<<<<<<<<<<
- * 
- *         for i in range(3):
- */
-  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1709, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_debug); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1709, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_luk2, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1709, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_6 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_luk2) + 0, 5 - 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1709, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1709, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_GOTREF(__pyx_t_7);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_6};
-      __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1709, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_6};
-      __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1709, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1709, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); __pyx_t_2 = NULL;
-      __Pyx_GIVEREF(__pyx_t_6);
-      PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_6);
-      __pyx_t_6 = 0;
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1709, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_13);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_13, function);
-    }
-  }
-  if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1709, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __Pyx_GOTREF(__pyx_t_1);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_13)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_7};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1709, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_7};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1709, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1709, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); __pyx_t_3 = NULL;
-      __Pyx_GIVEREF(__pyx_t_7);
-      PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_7);
-      __pyx_t_7 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1709, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1711
- *         logging.debug('luk2: {}'.format(luk2[: KLEN]))
- * 
- *         for i in range(3):             # <<<<<<<<<<<<<<
- *             if (
- *                     idx1 in lookup_ordering_2bound[i][: 2]
- */
-  for (__pyx_t_14 = 0; __pyx_t_14 < 3; __pyx_t_14+=1) {
-    __pyx_v_i = __pyx_t_14;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1713
- *         for i in range(3):
- *             if (
- *                     idx1 in lookup_ordering_2bound[i][: 2]             # <<<<<<<<<<<<<<
- *                     and idx2 in lookup_ordering_2bound[i][: 2]):
- *                 term_order = lookup_ordering_2bound[i]
- */
-    __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(((const char*)(__pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_lookup_ordering_2bound[__pyx_v_i])) + 0, 2 - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1713, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_16 = ((__Pyx_BytesContains(__pyx_t_1, __pyx_v_idx1)) != 0);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (__pyx_t_16) {
-    } else {
-      __pyx_t_15 = __pyx_t_16;
-      goto __pyx_L14_bool_binop_done;
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1714
- *             if (
- *                     idx1 in lookup_ordering_2bound[i][: 2]
- *                     and idx2 in lookup_ordering_2bound[i][: 2]):             # <<<<<<<<<<<<<<
- *                 term_order = lookup_ordering_2bound[i]
- *                 if term_order[0] == idx1:
- */
-    __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(((const char*)(__pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_lookup_ordering_2bound[__pyx_v_i])) + 0, 2 - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1714, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_16 = ((__Pyx_BytesContains(__pyx_t_1, __pyx_v_idx2)) != 0);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_15 = __pyx_t_16;
-    __pyx_L14_bool_binop_done:;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1712
- * 
- *         for i in range(3):
- *             if (             # <<<<<<<<<<<<<<
- *                     idx1 in lookup_ordering_2bound[i][: 2]
- *                     and idx2 in lookup_ordering_2bound[i][: 2]):
- */
-    if (__pyx_t_15) {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1715
- *                     idx1 in lookup_ordering_2bound[i][: 2]
- *                     and idx2 in lookup_ordering_2bound[i][: 2]):
- *                 term_order = lookup_ordering_2bound[i]             # <<<<<<<<<<<<<<
- *                 if term_order[0] == idx1:
- *                     luk1_offset = 0
- */
-      memcpy(&(__pyx_v_term_order[0]), (__pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_lookup_ordering_2bound[__pyx_v_i]), sizeof(__pyx_v_term_order[0]) * (3));
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1716
- *                     and idx2 in lookup_ordering_2bound[i][: 2]):
- *                 term_order = lookup_ordering_2bound[i]
- *                 if term_order[0] == idx1:             # <<<<<<<<<<<<<<
- *                     luk1_offset = 0
- *                     luk2_offset = KLEN
- */
-      __pyx_t_15 = (((__pyx_v_term_order[0]) == __pyx_v_idx1) != 0);
-      if (__pyx_t_15) {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1717
- *                 term_order = lookup_ordering_2bound[i]
- *                 if term_order[0] == idx1:
- *                     luk1_offset = 0             # <<<<<<<<<<<<<<
- *                     luk2_offset = KLEN
- *                 else:
- */
-        __pyx_v_luk1_offset = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1718
- *                 if term_order[0] == idx1:
- *                     luk1_offset = 0
- *                     luk2_offset = KLEN             # <<<<<<<<<<<<<<
- *                 else:
- *                     luk1_offset = KLEN
- */
-        __pyx_v_luk2_offset = 5;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1716
- *                     and idx2 in lookup_ordering_2bound[i][: 2]):
- *                 term_order = lookup_ordering_2bound[i]
- *                 if term_order[0] == idx1:             # <<<<<<<<<<<<<<
- *                     luk1_offset = 0
- *                     luk2_offset = KLEN
- */
-        goto __pyx_L16;
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1720
- *                     luk2_offset = KLEN
- *                 else:
- *                     luk1_offset = KLEN             # <<<<<<<<<<<<<<
- *                     luk2_offset = 0
- *                 dblabel = self.lookup_indices[i + 3] # skip 1bound index labels
- */
-      /*else*/ {
-        __pyx_v_luk1_offset = 5;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1721
- *                 else:
- *                     luk1_offset = KLEN
- *                     luk2_offset = 0             # <<<<<<<<<<<<<<
- *                 dblabel = self.lookup_indices[i + 3] # skip 1bound index labels
- *                 break
- */
-        __pyx_v_luk2_offset = 0;
-      }
-      __pyx_L16:;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1722
- *                     luk1_offset = KLEN
- *                     luk2_offset = 0
- *                 dblabel = self.lookup_indices[i + 3] # skip 1bound index labels             # <<<<<<<<<<<<<<
- *                 break
- * 
- */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1722, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_17 = (__pyx_v_i + 3);
-      __pyx_t_13 = __Pyx_GetItemInt(__pyx_t_1, __pyx_t_17, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1722, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_v_dblabel = __pyx_t_13;
-      __pyx_t_13 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1723
- *                     luk2_offset = 0
- *                 dblabel = self.lookup_indices[i + 3] # skip 1bound index labels
- *                 break             # <<<<<<<<<<<<<<
- * 
- *             if i == 2:
- */
-      goto __pyx_L12_break;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1712
- * 
- *         for i in range(3):
- *             if (             # <<<<<<<<<<<<<<
- *                     idx1 in lookup_ordering_2bound[i][: 2]
- *                     and idx2 in lookup_ordering_2bound[i][: 2]):
- */
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1725
- *                 break
- * 
- *             if i == 2:             # <<<<<<<<<<<<<<
- *                 raise ValueError(
- *                         'Indices {} and {} not found in LU keys.'.format(
- */
-    __pyx_t_15 = ((__pyx_v_i == 2) != 0);
-    if (unlikely(__pyx_t_15)) {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1727
- *             if i == 2:
- *                 raise ValueError(
- *                         'Indices {} and {} not found in LU keys.'.format(             # <<<<<<<<<<<<<<
- *                             idx1, idx2))
- * 
- */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Indices_and_not_found_in_LU_keys, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1727, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1728
- *                 raise ValueError(
- *                         'Indices {} and {} not found in LU keys.'.format(
- *                             idx1, idx2))             # <<<<<<<<<<<<<<
- * 
- *         logger.debug('Term order: {}'.format(term_order[:3]))
- */
-      __pyx_t_12 = __Pyx_PyInt_From_unsigned_char(__pyx_v_idx1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1728, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_7 = __Pyx_PyInt_From_unsigned_char(__pyx_v_idx2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1728, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_3 = NULL;
-      __pyx_t_11 = 0;
-      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
-        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
-        if (likely(__pyx_t_3)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-          __Pyx_INCREF(__pyx_t_3);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_1, function);
-          __pyx_t_11 = 1;
-        }
-      }
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_1)) {
-        PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_12, __pyx_t_7};
-        __pyx_t_13 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1727, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_GOTREF(__pyx_t_13);
-        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
-        PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_12, __pyx_t_7};
-        __pyx_t_13 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1727, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_GOTREF(__pyx_t_13);
-        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_6 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1727, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        if (__pyx_t_3) {
-          __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
-        }
-        __Pyx_GIVEREF(__pyx_t_12);
-        PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_11, __pyx_t_12);
-        __Pyx_GIVEREF(__pyx_t_7);
-        PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_11, __pyx_t_7);
-        __pyx_t_12 = 0;
-        __pyx_t_7 = 0;
-        __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1727, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_13);
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      }
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1726
- * 
- *             if i == 2:
- *                 raise ValueError(             # <<<<<<<<<<<<<<
- *                         'Indices {} and {} not found in LU keys.'.format(
- *                             idx1, idx2))
- */
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1726, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __PYX_ERR(0, 1726, __pyx_L1_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1725
- *                 break
- * 
- *             if i == 2:             # <<<<<<<<<<<<<<
- *                 raise ValueError(
- *                         'Indices {} and {} not found in LU keys.'.format(
- */
-    }
-  }
-  __pyx_L12_break:;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1730
- *                             idx1, idx2))
- * 
- *         logger.debug('Term order: {}'.format(term_order[:3]))             # <<<<<<<<<<<<<<
- *         logger.debug('LUK offsets: {}, {}'.format(luk1_offset, luk2_offset))
- *         # Compose terms in lookup key.
- */
-  __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1730, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_debug); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1730, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Term_order, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1730, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_12 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_term_order) + 0, 3 - 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1730, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __pyx_t_3 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_7, function);
-    }
-  }
-  if (!__pyx_t_3) {
-    __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1730, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    __Pyx_GOTREF(__pyx_t_13);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_7)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_12};
-      __pyx_t_13 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1730, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_12};
-      __pyx_t_13 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1730, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1730, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
-      __Pyx_GIVEREF(__pyx_t_12);
-      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_12);
-      __pyx_t_12 = 0;
-      __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1730, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
-    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
-    if (likely(__pyx_t_7)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-      __Pyx_INCREF(__pyx_t_7);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_6, function);
-    }
-  }
-  if (!__pyx_t_7) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1730, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __Pyx_GOTREF(__pyx_t_1);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_13};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1730, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_13};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1730, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1730, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7); __pyx_t_7 = NULL;
-      __Pyx_GIVEREF(__pyx_t_13);
-      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_13);
-      __pyx_t_13 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1730, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1731
- * 
- *         logger.debug('Term order: {}'.format(term_order[:3]))
- *         logger.debug('LUK offsets: {}, {}'.format(luk1_offset, luk2_offset))             # <<<<<<<<<<<<<<
- *         # Compose terms in lookup key.
- *         memcpy(luk + luk1_offset, luk1, KLEN)
- */
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_LUK_offsets, __pyx_n_s_format); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __pyx_t_7 = __Pyx_PyInt_From_unsigned_char(__pyx_v_luk1_offset); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_12 = __Pyx_PyInt_From_unsigned_char(__pyx_v_luk2_offset); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __pyx_t_3 = NULL;
-  __pyx_t_11 = 0;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_13);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_13, function);
-      __pyx_t_11 = 1;
-    }
-  }
-  #if CYTHON_FAST_PYCALL
-  if (PyFunction_Check(__pyx_t_13)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_12};
-    __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1731, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  } else
-  #endif
-  #if CYTHON_FAST_PYCCALL
-  if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_12};
-    __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1731, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  } else
-  #endif
-  {
-    __pyx_t_18 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1731, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_18);
-    if (__pyx_t_3) {
-      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    }
-    __Pyx_GIVEREF(__pyx_t_7);
-    PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_11, __pyx_t_7);
-    __Pyx_GIVEREF(__pyx_t_12);
-    PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_11, __pyx_t_12);
-    __pyx_t_7 = 0;
-    __pyx_t_12 = 0;
-    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_18, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1731, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-  }
-  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-  __pyx_t_13 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_13)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_13);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  if (!__pyx_t_13) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1731, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_GOTREF(__pyx_t_1);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_6};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1731, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_6};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1731, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1731, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_18);
-      __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_13); __pyx_t_13 = NULL;
-      __Pyx_GIVEREF(__pyx_t_6);
-      PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_6);
-      __pyx_t_6 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1731, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1733
- *         logger.debug('LUK offsets: {}, {}'.format(luk1_offset, luk2_offset))
- *         # Compose terms in lookup key.
- *         memcpy(luk + luk1_offset, luk1, KLEN)             # <<<<<<<<<<<<<<
- *         memcpy(luk + luk2_offset, luk2, KLEN)
- * 
- */
-  (void)(memcpy((__pyx_v_luk + __pyx_v_luk1_offset), __pyx_v_luk1, 5));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1734
- *         # Compose terms in lookup key.
- *         memcpy(luk + luk1_offset, luk1, KLEN)
- *         memcpy(luk + luk2_offset, luk2, KLEN)             # <<<<<<<<<<<<<<
- * 
- *         logger.debug('Lookup key: {}'.format(luk))
- */
-  (void)(memcpy((__pyx_v_luk + __pyx_v_luk2_offset), __pyx_v_luk2, 5));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1736
- *         memcpy(luk + luk2_offset, luk2, KLEN)
- * 
- *         logger.debug('Lookup key: {}'.format(luk))             # <<<<<<<<<<<<<<
- * 
- *         icur = self._cur_open(dblabel)
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1736, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1736, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_18);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Lookup_key, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1736, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_13 = __Pyx_PyObject_FromCString(__pyx_v_luk); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1736, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __pyx_t_12 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
-    __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
-    if (likely(__pyx_t_12)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-      __Pyx_INCREF(__pyx_t_12);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_6, function);
-    }
-  }
-  if (!__pyx_t_12) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1736, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __Pyx_GOTREF(__pyx_t_2);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_13};
-      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1736, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_13};
-      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1736, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1736, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_12); __pyx_t_12 = NULL;
-      __Pyx_GIVEREF(__pyx_t_13);
-      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_13);
-      __pyx_t_13 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1736, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_18))) {
-    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_18);
-    if (likely(__pyx_t_6)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_18);
-      __Pyx_INCREF(__pyx_t_6);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_18, function);
-    }
-  }
-  if (!__pyx_t_6) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_18, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1736, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_GOTREF(__pyx_t_1);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_18)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_2};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_18, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1736, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_18)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_2};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_18, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1736, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1736, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
-      __Pyx_GIVEREF(__pyx_t_2);
-      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_2);
-      __pyx_t_2 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_18, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1736, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1738
- *         logger.debug('Lookup key: {}'.format(luk))
- * 
- *         icur = self._cur_open(dblabel)             # <<<<<<<<<<<<<<
- *         logger.debug('Database label: {}'.format(dblabel))
- * 
- */
-  if (unlikely(!__pyx_v_dblabel)) { __Pyx_RaiseUnboundLocalError("dblabel"); __PYX_ERR(0, 1738, __pyx_L1_error) }
-  __pyx_t_19 = __Pyx_PyObject_AsWritableUString(__pyx_v_dblabel); if (unlikely((!__pyx_t_19) && PyErr_Occurred())) __PYX_ERR(0, 1738, __pyx_L1_error)
-  __pyx_t_21.__pyx_n = 1;
-  __pyx_t_21.dblabel = __pyx_t_19;
-  __pyx_t_20 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_21); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1738, __pyx_L1_error)
-  __pyx_v_icur = __pyx_t_20;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1739
- * 
- *         icur = self._cur_open(dblabel)
- *         logger.debug('Database label: {}'.format(dblabel))             # <<<<<<<<<<<<<<
- * 
- *         try:
- */
-  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1739, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_18);
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_debug); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1739, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Database_label, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1739, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (unlikely(!__pyx_v_dblabel)) { __Pyx_RaiseUnboundLocalError("dblabel"); __PYX_ERR(0, 1739, __pyx_L1_error) }
-  __pyx_t_6 = NULL;
-  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);
-    }
-  }
-  if (!__pyx_t_6) {
-    __pyx_t_18 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_dblabel); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1739, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_18);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_dblabel};
-      __pyx_t_18 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1739, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_18);
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_dblabel};
-      __pyx_t_18 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1739, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_18);
-    } else
-    #endif
-    {
-      __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1739, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_6); __pyx_t_6 = NULL;
-      __Pyx_INCREF(__pyx_v_dblabel);
-      __Pyx_GIVEREF(__pyx_v_dblabel);
-      PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_v_dblabel);
-      __pyx_t_18 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_13, NULL); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1739, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_18);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
-    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
-    if (likely(__pyx_t_2)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-      __Pyx_INCREF(__pyx_t_2);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_7, function);
-    }
-  }
-  if (!__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_18); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1739, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-    __Pyx_GOTREF(__pyx_t_1);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_7)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_18};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1739, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_18};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1739, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1739, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_2); __pyx_t_2 = NULL;
-      __Pyx_GIVEREF(__pyx_t_18);
-      PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_18);
-      __pyx_t_18 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1739, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1741
- *         logger.debug('Database label: {}'.format(dblabel))
- * 
- *         try:             # <<<<<<<<<<<<<<
- *             key_v.mv_data = luk
- *             key_v.mv_size = DBL_KLEN
- */
-  /*try:*/ {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1742
- * 
- *         try:
- *             key_v.mv_data = luk             # <<<<<<<<<<<<<<
- *             key_v.mv_size = DBL_KLEN
- * 
- */
-    __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data = __pyx_v_luk;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1743
- *         try:
- *             key_v.mv_data = luk
- *             key_v.mv_size = DBL_KLEN             # <<<<<<<<<<<<<<
- * 
- *             # Count duplicates for key and allocate memory for result set.
- */
-    __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_size = 10;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1746
- * 
- *             # Count duplicates for key and allocate memory for result set.
- *             _check(lmdb.mdb_cursor_get(icur, &key_v, &data_v, lmdb.MDB_SET))             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_cursor_count(icur, &ct))
- *             ret = ResultSet(ct, TRP_KLEN)
- */
-    __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), MDB_SET), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1746, __pyx_L19_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1747
- *             # Count duplicates for key and allocate memory for result set.
- *             _check(lmdb.mdb_cursor_get(icur, &key_v, &data_v, lmdb.MDB_SET))
- *             _check(lmdb.mdb_cursor_count(icur, &ct))             # <<<<<<<<<<<<<<
- *             ret = ResultSet(ct, TRP_KLEN)
- *             #logger.debug('Entries for {}: {}'.format(self.lookup_indices[idx], ct))
- */
-    __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_count(__pyx_v_icur, (&__pyx_v_ct)), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1747, __pyx_L19_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1748
- *             _check(lmdb.mdb_cursor_get(icur, &key_v, &data_v, lmdb.MDB_SET))
- *             _check(lmdb.mdb_cursor_count(icur, &ct))
- *             ret = ResultSet(ct, TRP_KLEN)             # <<<<<<<<<<<<<<
- *             #logger.debug('Entries for {}: {}'.format(self.lookup_indices[idx], ct))
- *             #logger.debug('First row: {}'.format(
- */
-    __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_ct); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1748, __pyx_L19_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1748, __pyx_L19_error)
-    __Pyx_GOTREF(__pyx_t_7);
-    __Pyx_GIVEREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
-    __Pyx_INCREF(__pyx_int_15);
-    __Pyx_GIVEREF(__pyx_int_15);
-    PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_15);
-    __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1748, __pyx_L19_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_v_ret = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_1);
-    __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1754
- * 
- *             # Arrange results according to lookup order.
- *             asm_rng = [             # <<<<<<<<<<<<<<
- *                 KLEN * term_order[0],
- *                 KLEN * term_order[1],
- */
-    __pyx_t_22[0] = (5 * (__pyx_v_term_order[0]));
-    __pyx_t_22[1] = (5 * (__pyx_v_term_order[1]));
-    __pyx_t_22[2] = (5 * (__pyx_v_term_order[2]));
-    memcpy(&(__pyx_v_asm_rng[0]), __pyx_t_22, sizeof(__pyx_v_asm_rng[0]) * (3));
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1759
- *                 KLEN * term_order[2],
- *             ]
- *             logger.debug('asm_rng: {}'.format(asm_rng[:3]))             # <<<<<<<<<<<<<<
- *             logger.debug('luk: {}'.format(luk))
- * 
- */
-    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1759, __pyx_L19_error)
-    __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_debug); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1759, __pyx_L19_error)
-    __Pyx_GOTREF(__pyx_t_13);
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_asm_rng, __pyx_n_s_format); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1759, __pyx_L19_error)
-    __Pyx_GOTREF(__pyx_t_18);
-    __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_asm_rng) + 0, 3 - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1759, __pyx_L19_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_18))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_18);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_18);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_18, function);
-      }
-    }
-    if (!__pyx_t_6) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_18, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1759, __pyx_L19_error)
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_7);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_18)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_2};
-        __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_18, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1759, __pyx_L19_error)
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_18)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_2};
-        __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_18, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1759, __pyx_L19_error)
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1759, __pyx_L19_error)
-        __Pyx_GOTREF(__pyx_t_12);
-        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_6); __pyx_t_6 = NULL;
-        __Pyx_GIVEREF(__pyx_t_2);
-        PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_2);
-        __pyx_t_2 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_18, __pyx_t_12, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1759, __pyx_L19_error)
-        __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-    __pyx_t_18 = NULL;
-    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
-      __pyx_t_18 = PyMethod_GET_SELF(__pyx_t_13);
-      if (likely(__pyx_t_18)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
-        __Pyx_INCREF(__pyx_t_18);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_13, function);
-      }
-    }
-    if (!__pyx_t_18) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1759, __pyx_L19_error)
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_13)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_18, __pyx_t_7};
-        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1759, __pyx_L19_error)
-        __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_18, __pyx_t_7};
-        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1759, __pyx_L19_error)
-        __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1759, __pyx_L19_error)
-        __Pyx_GOTREF(__pyx_t_12);
-        __Pyx_GIVEREF(__pyx_t_18); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_18); __pyx_t_18 = NULL;
-        __Pyx_GIVEREF(__pyx_t_7);
-        PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_7);
-        __pyx_t_7 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1759, __pyx_L19_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1760
- *             ]
- *             logger.debug('asm_rng: {}'.format(asm_rng[:3]))
- *             logger.debug('luk: {}'.format(luk))             # <<<<<<<<<<<<<<
- * 
- *             _check(lmdb.mdb_cursor_get(icur, &key_v, &data_v, lmdb.MDB_SET))
- */
-    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1760, __pyx_L19_error)
-    __Pyx_GOTREF(__pyx_t_13);
-    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_debug); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1760, __pyx_L19_error)
-    __Pyx_GOTREF(__pyx_t_12);
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_luk, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1760, __pyx_L19_error)
-    __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_18 = __Pyx_PyObject_FromCString(__pyx_v_luk); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1760, __pyx_L19_error)
-    __Pyx_GOTREF(__pyx_t_18);
-    __pyx_t_2 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
-      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
-      if (likely(__pyx_t_2)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-        __Pyx_INCREF(__pyx_t_2);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_7, function);
-      }
-    }
-    if (!__pyx_t_2) {
-      __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_18); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1760, __pyx_L19_error)
-      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-      __Pyx_GOTREF(__pyx_t_13);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_7)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_18};
-        __pyx_t_13 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1760, __pyx_L19_error)
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_GOTREF(__pyx_t_13);
-        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_18};
-        __pyx_t_13 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1760, __pyx_L19_error)
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_GOTREF(__pyx_t_13);
-        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1760, __pyx_L19_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
-        __Pyx_GIVEREF(__pyx_t_18);
-        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_18);
-        __pyx_t_18 = 0;
-        __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1760, __pyx_L19_error)
-        __Pyx_GOTREF(__pyx_t_13);
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_7 = NULL;
-    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
-      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_12);
-      if (likely(__pyx_t_7)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
-        __Pyx_INCREF(__pyx_t_7);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_12, function);
-      }
-    }
-    if (!__pyx_t_7) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1760, __pyx_L19_error)
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_1);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_12)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_13};
-        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1760, __pyx_L19_error)
-        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_13};
-        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1760, __pyx_L19_error)
-        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1760, __pyx_L19_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
-        __Pyx_GIVEREF(__pyx_t_13);
-        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_13);
-        __pyx_t_13 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1760, __pyx_L19_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1762
- *             logger.debug('luk: {}'.format(luk))
- * 
- *             _check(lmdb.mdb_cursor_get(icur, &key_v, &data_v, lmdb.MDB_SET))             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_cursor_get(
- *                 icur, &key_v, &data_v, lmdb.MDB_GET_MULTIPLE))
- */
-    __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), MDB_SET), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1762, __pyx_L19_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1763
- * 
- *             _check(lmdb.mdb_cursor_get(icur, &key_v, &data_v, lmdb.MDB_SET))
- *             _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                 icur, &key_v, &data_v, lmdb.MDB_GET_MULTIPLE))
- *             while True:
- */
-    __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), MDB_GET_MULTIPLE), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1763, __pyx_L19_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1765
- *             _check(lmdb.mdb_cursor_get(
- *                 icur, &key_v, &data_v, lmdb.MDB_GET_MULTIPLE))
- *             while True:             # <<<<<<<<<<<<<<
- *                 logger.debug('Got data in 2bound ({}): {}'.format(
- *                     data_v.mv_size,
- */
-    while (1) {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1766
- *                 icur, &key_v, &data_v, lmdb.MDB_GET_MULTIPLE))
- *             while True:
- *                 logger.debug('Got data in 2bound ({}): {}'.format(             # <<<<<<<<<<<<<<
- *                     data_v.mv_size,
- *                     (<unsigned char *>data_v.mv_data)[: data_v.mv_size]))
- */
-      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1766, __pyx_L19_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_debug); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1766, __pyx_L19_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Got_data_in_2bound, __pyx_n_s_format); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1766, __pyx_L19_error)
-      __Pyx_GOTREF(__pyx_t_13);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1767
- *             while True:
- *                 logger.debug('Got data in 2bound ({}): {}'.format(
- *                     data_v.mv_size,             # <<<<<<<<<<<<<<
- *                     (<unsigned char *>data_v.mv_data)[: data_v.mv_size]))
- *                 for j in prange(data_v.mv_size // KLEN, nogil=True):
- */
-      __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1767, __pyx_L19_error)
-      __Pyx_GOTREF(__pyx_t_7);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1768
- *                 logger.debug('Got data in 2bound ({}): {}'.format(
- *                     data_v.mv_size,
- *                     (<unsigned char *>data_v.mv_data)[: data_v.mv_size]))             # <<<<<<<<<<<<<<
- *                 for j in prange(data_v.mv_size // KLEN, nogil=True):
- *                     src_pos = KLEN * j
- */
-      __pyx_t_18 = __Pyx_PyBytes_FromStringAndSize(((const char*)((unsigned char *)__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_data)) + 0, __pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_size - 0); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1768, __pyx_L19_error)
-      __Pyx_GOTREF(__pyx_t_18);
-      __pyx_t_2 = NULL;
-      __pyx_t_11 = 0;
-      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
-        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_13);
-        if (likely(__pyx_t_2)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
-          __Pyx_INCREF(__pyx_t_2);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_13, function);
-          __pyx_t_11 = 1;
-        }
-      }
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_13)) {
-        PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_7, __pyx_t_18};
-        __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1766, __pyx_L19_error)
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_GOTREF(__pyx_t_12);
-        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
-        PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_7, __pyx_t_18};
-        __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1766, __pyx_L19_error)
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_GOTREF(__pyx_t_12);
-        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-      } else
-      #endif
-      {
-        __pyx_t_3 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1766, __pyx_L19_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        if (__pyx_t_2) {
-          __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
-        }
-        __Pyx_GIVEREF(__pyx_t_7);
-        PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_11, __pyx_t_7);
-        __Pyx_GIVEREF(__pyx_t_18);
-        PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_11, __pyx_t_18);
-        __pyx_t_7 = 0;
-        __pyx_t_18 = 0;
-        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_3, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1766, __pyx_L19_error)
-        __Pyx_GOTREF(__pyx_t_12);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      }
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __pyx_t_13 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
-        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_6);
-        if (likely(__pyx_t_13)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-          __Pyx_INCREF(__pyx_t_13);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_6, function);
-        }
-      }
-      if (!__pyx_t_13) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1766, __pyx_L19_error)
-        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __Pyx_GOTREF(__pyx_t_1);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_6)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_12};
-          __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1766, __pyx_L19_error)
-          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_12};
-          __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1766, __pyx_L19_error)
-          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        } else
-        #endif
-        {
-          __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1766, __pyx_L19_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_13); __pyx_t_13 = NULL;
-          __Pyx_GIVEREF(__pyx_t_12);
-          PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_12);
-          __pyx_t_12 = 0;
-          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1766, __pyx_L19_error)
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1769
- *                     data_v.mv_size,
- *                     (<unsigned char *>data_v.mv_data)[: data_v.mv_size]))
- *                 for j in prange(data_v.mv_size // KLEN, nogil=True):             # <<<<<<<<<<<<<<
- *                     src_pos = KLEN * j
- *                     ret_pos = (ret_offset + ret.itemsize * j)
- */
-      {
-          #ifdef WITH_THREAD
-          PyThreadState *_save;
-          Py_UNBLOCK_THREADS
-          __Pyx_FastGIL_Remember();
-          #endif
-          /*try:*/ {
-            __pyx_t_14 = (__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_size / 5);
-            if (1 == 0) abort();
-            {
-                #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
-                    #undef likely
-                    #undef unlikely
-                    #define likely(x)   (x)
-                    #define unlikely(x) (x)
-                #endif
-                __pyx_t_23 = (__pyx_t_14 - 0 + 1 - 1/abs(1)) / 1;
-                if (__pyx_t_23 > 0)
-                {
-                    #ifdef _OPENMP
-                    #pragma omp parallel
-                    #endif /* _OPENMP */
-                    {
-                        #ifdef _OPENMP
-                        #pragma omp for firstprivate(__pyx_v_j) lastprivate(__pyx_v_j) lastprivate(__pyx_v_ret_pos) lastprivate(__pyx_v_src_pos)
-                        #endif /* _OPENMP */
-                        for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_23; __pyx_t_17++){
-                            {
-                                __pyx_v_j = (size_t)(0 + 1 * __pyx_t_17);
-                                /* Initialize private variables to invalid values */
-                                __pyx_v_ret_pos = ((size_t)0xbad0bad0);
-                                __pyx_v_src_pos = ((size_t)0xbad0bad0);
-
-                                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1770
- *                     (<unsigned char *>data_v.mv_data)[: data_v.mv_size]))
- *                 for j in prange(data_v.mv_size // KLEN, nogil=True):
- *                     src_pos = KLEN * j             # <<<<<<<<<<<<<<
- *                     ret_pos = (ret_offset + ret.itemsize * j)
- *                     #logger.debug('Page offset: {}'.format(pg_offset))
- */
-                                __pyx_v_src_pos = (5 * __pyx_v_j);
-
-                                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1771
- *                 for j in prange(data_v.mv_size // KLEN, nogil=True):
- *                     src_pos = KLEN * j
- *                     ret_pos = (ret_offset + ret.itemsize * j)             # <<<<<<<<<<<<<<
- *                     #logger.debug('Page offset: {}'.format(pg_offset))
- *                     #logger.debug('Ret offset: {}'.format(ret_offset))
- */
-                                __pyx_v_ret_pos = (__pyx_v_ret_offset + (__pyx_v_ret->itemsize * __pyx_v_j));
-
-                                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1774
- *                     #logger.debug('Page offset: {}'.format(pg_offset))
- *                     #logger.debug('Ret offset: {}'.format(ret_offset))
- *                     memcpy(ret.data + ret_pos + asm_rng[0], luk, KLEN)             # <<<<<<<<<<<<<<
- *                     memcpy(ret.data + ret_pos + asm_rng[1], luk + KLEN, KLEN)
- *                     memcpy(ret.data + ret_pos + asm_rng[2],
- */
-                                (void)(memcpy(((__pyx_v_ret->data + __pyx_v_ret_pos) + (__pyx_v_asm_rng[0])), __pyx_v_luk, 5));
-
-                                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1775
- *                     #logger.debug('Ret offset: {}'.format(ret_offset))
- *                     memcpy(ret.data + ret_pos + asm_rng[0], luk, KLEN)
- *                     memcpy(ret.data + ret_pos + asm_rng[1], luk + KLEN, KLEN)             # <<<<<<<<<<<<<<
- *                     memcpy(ret.data + ret_pos + asm_rng[2],
- *                             data_v.mv_data + src_pos, KLEN)
- */
-                                (void)(memcpy(((__pyx_v_ret->data + __pyx_v_ret_pos) + (__pyx_v_asm_rng[1])), (__pyx_v_luk + 5), 5));
-
-                                /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1776
- *                     memcpy(ret.data + ret_pos + asm_rng[0], luk, KLEN)
- *                     memcpy(ret.data + ret_pos + asm_rng[1], luk + KLEN, KLEN)
- *                     memcpy(ret.data + ret_pos + asm_rng[2],             # <<<<<<<<<<<<<<
- *                             data_v.mv_data + src_pos, KLEN)
- *                     #logger.debug('Assembled triple: {}'.format((ret.data + ret_offset)[: TRP_KLEN]))
- */
-                                (void)(memcpy(((__pyx_v_ret->data + __pyx_v_ret_pos) + (__pyx_v_asm_rng[2])), (__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_data + __pyx_v_src_pos), 5));
-                            }
-                        }
-                    }
-                }
-            }
-            #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
-                #undef likely
-                #undef unlikely
-                #define likely(x)   __builtin_expect(!!(x), 1)
-                #define unlikely(x) __builtin_expect(!!(x), 0)
-            #endif
-          }
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1769
- *                     data_v.mv_size,
- *                     (<unsigned char *>data_v.mv_data)[: data_v.mv_size]))
- *                 for j in prange(data_v.mv_size // KLEN, nogil=True):             # <<<<<<<<<<<<<<
- *                     src_pos = KLEN * j
- *                     ret_pos = (ret_offset + ret.itemsize * j)
- */
-          /*finally:*/ {
-            /*normal exit:*/{
-              #ifdef WITH_THREAD
-              __Pyx_FastGIL_Forget();
-              Py_BLOCK_THREADS
-              #endif
-              goto __pyx_L27;
-            }
-            __pyx_L27:;
-          }
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1780
- *                     #logger.debug('Assembled triple: {}'.format((ret.data + ret_offset)[: TRP_KLEN]))
- * 
- *                 ret_offset += data_v.mv_size // KLEN * ret.itemsize             # <<<<<<<<<<<<<<
- * 
- *                 try:
- */
-      __pyx_v_ret_offset = (__pyx_v_ret_offset + ((__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_size / 5) * __pyx_v_ret->itemsize));
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1782
- *                 ret_offset += data_v.mv_size // KLEN * ret.itemsize
- * 
- *                 try:             # <<<<<<<<<<<<<<
- *                     # Get results by the page.
- *                     _check(lmdb.mdb_cursor_get(
- */
-      {
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
-        __Pyx_XGOTREF(__pyx_t_10);
-        __Pyx_XGOTREF(__pyx_t_9);
-        __Pyx_XGOTREF(__pyx_t_8);
-        /*try:*/ {
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1784
- *                 try:
- *                     # Get results by the page.
- *                     _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                             icur, &key_v, &data_v, lmdb.MDB_NEXT_MULTIPLE))
- *                 except KeyNotFoundError:
- */
-          __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), MDB_NEXT_MULTIPLE), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1784, __pyx_L34_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1782
- *                 ret_offset += data_v.mv_size // KLEN * ret.itemsize
- * 
- *                 try:             # <<<<<<<<<<<<<<
- *                     # Get results by the page.
- *                     _check(lmdb.mdb_cursor_get(
- */
-        }
-        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-        goto __pyx_L41_try_end;
-        __pyx_L34_error:;
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
-        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1786
- *                     _check(lmdb.mdb_cursor_get(
- *                             icur, &key_v, &data_v, lmdb.MDB_NEXT_MULTIPLE))
- *                 except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                     # For testing only. Errors will be caught in triples()
- *                     # when looking for a context.
- */
-        __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_6, &__pyx_t_3);
-        __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1786, __pyx_L36_except_error)
-        __Pyx_GOTREF(__pyx_t_12);
-        __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_12);
-        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __Pyx_ErrRestore(__pyx_t_1, __pyx_t_6, __pyx_t_3);
-        __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_3 = 0;
-        if (__pyx_t_11) {
-          __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._lookup_2bound", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_6, &__pyx_t_1) < 0) __PYX_ERR(0, 1786, __pyx_L36_except_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_GOTREF(__pyx_t_6);
-          __Pyx_GOTREF(__pyx_t_1);
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1794
- *                     #        .format(pg_offset, ret.size))
- *                     #logger.debug('Assembled data in 2bound ({}): {}'.format(ret.size, ret.data[: ret.size]))
- *                     return ret             # <<<<<<<<<<<<<<
- *         finally:
- *             self._cur_close(icur)
- */
-          __Pyx_XDECREF(((PyObject *)__pyx_r));
-          __Pyx_INCREF(((PyObject *)__pyx_v_ret));
-          __pyx_r = __pyx_v_ret;
-          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          goto __pyx_L37_except_return;
-        }
-        goto __pyx_L36_except_error;
-        __pyx_L36_except_error:;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1782
- *                 ret_offset += data_v.mv_size // KLEN * ret.itemsize
- * 
- *                 try:             # <<<<<<<<<<<<<<
- *                     # Get results by the page.
- *                     _check(lmdb.mdb_cursor_get(
- */
-        __Pyx_XGIVEREF(__pyx_t_10);
-        __Pyx_XGIVEREF(__pyx_t_9);
-        __Pyx_XGIVEREF(__pyx_t_8);
-        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
-        goto __pyx_L19_error;
-        __pyx_L37_except_return:;
-        __Pyx_XGIVEREF(__pyx_t_10);
-        __Pyx_XGIVEREF(__pyx_t_9);
-        __Pyx_XGIVEREF(__pyx_t_8);
-        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
-        goto __pyx_L18_return;
-        __pyx_L41_try_end:;
-      }
-    }
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1796
- *                     return ret
- *         finally:
- *             self._cur_close(icur)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  /*finally:*/ {
-    /*normal exit:*/{
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1796, __pyx_L1_error)
-      goto __pyx_L20;
-    }
-    __pyx_L19_error:;
-    /*exception exit:*/{
-      __Pyx_PyThreadState_declare
-      __Pyx_PyThreadState_assign
-      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_27, &__pyx_t_28);
-      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      __Pyx_XGOTREF(__pyx_t_8);
-      __Pyx_XGOTREF(__pyx_t_9);
-      __Pyx_XGOTREF(__pyx_t_10);
-      __Pyx_XGOTREF(__pyx_t_26);
-      __Pyx_XGOTREF(__pyx_t_27);
-      __Pyx_XGOTREF(__pyx_t_28);
-      __pyx_t_11 = __pyx_lineno; __pyx_t_24 = __pyx_clineno; __pyx_t_25 = __pyx_filename;
-      {
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1796, __pyx_L45_error)
-      }
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_26);
-        __Pyx_XGIVEREF(__pyx_t_27);
-        __Pyx_XGIVEREF(__pyx_t_28);
-        __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_27, __pyx_t_28);
-      }
-      __Pyx_XGIVEREF(__pyx_t_8);
-      __Pyx_XGIVEREF(__pyx_t_9);
-      __Pyx_XGIVEREF(__pyx_t_10);
-      __Pyx_ErrRestore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
-      __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_24; __pyx_filename = __pyx_t_25;
-      goto __pyx_L1_error;
-      __pyx_L45_error:;
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_26);
-        __Pyx_XGIVEREF(__pyx_t_27);
-        __Pyx_XGIVEREF(__pyx_t_28);
-        __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_27, __pyx_t_28);
-      }
-      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
-      goto __pyx_L1_error;
-    }
-    __pyx_L18_return: {
-      __pyx_t_29 = __pyx_r;
-      __pyx_r = 0;
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1796, __pyx_L1_error)
-      __pyx_r = __pyx_t_29;
-      __pyx_t_29 = 0;
-      goto __pyx_L0;
-    }
-    __pyx_L20:;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1675
- * 
- * 
- *     cdef ResultSet _lookup_2bound(             # <<<<<<<<<<<<<<
- *             self, unsigned char idx1, term1, unsigned char idx2, term2):
- *         """
- */
-
-  /* function exit code */
-  __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)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_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_12);
-  __Pyx_XDECREF(__pyx_t_13);
-  __Pyx_XDECREF(__pyx_t_18);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._lookup_2bound", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_ret);
-  __Pyx_XDECREF(__pyx_v_dblabel);
-  __Pyx_XGIVEREF((PyObject *)__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1799
- * 
- * 
- *     cpdef ResultSet _all_term_keys(self, term_type):             # <<<<<<<<<<<<<<
- *         """
- *         Return all keys of a (``s:po``, ``p:so``, ``o:sp``) index.
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_23_all_term_keys(PyObject *__pyx_v_self, PyObject *__pyx_v_term_type); /*proto*/
-static struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__all_term_keys(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_term_type, int __pyx_skip_dispatch) {
-  size_t __pyx_v_i;
-  struct MDB_stat __pyx_v_stat;
-  PyObject *__pyx_v_idx_label = NULL;
-  MDB_cursor *__pyx_v_icur;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_ret = NULL;
-  int __pyx_v_rc;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  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;
-  unsigned char *__pyx_t_6;
-  MDB_cursor *__pyx_t_7;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open __pyx_t_8;
-  PyObject *__pyx_t_9 = NULL;
-  PyObject *__pyx_t_10 = NULL;
-  PyObject *__pyx_t_11 = NULL;
-  int __pyx_t_12;
-  int __pyx_t_13;
-  char const *__pyx_t_14;
-  PyObject *__pyx_t_15 = NULL;
-  PyObject *__pyx_t_16 = NULL;
-  PyObject *__pyx_t_17 = NULL;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_t_18 = NULL;
-  __Pyx_RefNannySetupContext("_all_term_keys", 0);
-  __Pyx_TraceCall("_all_term_keys", __pyx_f[0], 1799, 0, __PYX_ERR(0, 1799, __pyx_L1_error));
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_all_term_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1799, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_23_all_term_keys)) {
-      __Pyx_XDECREF(((PyObject *)__pyx_r));
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_term_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1799, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_term_type};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1799, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_term_type};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1799, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        {
-          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1799, __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_INCREF(__pyx_v_term_type);
-          __Pyx_GIVEREF(__pyx_v_term_type);
-          PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_term_type);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1799, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet))))) __PYX_ERR(0, 1799, __pyx_L1_error)
-      __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_2);
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1804
- *         """
- *         cdef:
- *             size_t i = 0             # <<<<<<<<<<<<<<
- *             lmdb.MDB_stat stat
- * 
- */
-  __pyx_v_i = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1807
- *             lmdb.MDB_stat stat
- * 
- *         idx_label = self.lookup_indices['spo'.index(term_type)]             # <<<<<<<<<<<<<<
- *         #logger.debug('Looking for all terms in index: {}'.format(idx_label))
- *         icur = self._cur_open(idx_label)
- */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1807, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_n_u_spo, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1807, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __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_v_term_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1807, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_term_type};
-      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1807, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_GOTREF(__pyx_t_2);
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_term_type};
-      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1807, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_GOTREF(__pyx_t_2);
-    } else
-    #endif
-    {
-      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1807, __pyx_L1_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_term_type);
-      __Pyx_GIVEREF(__pyx_v_term_type);
-      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_term_type);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1807, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1807, __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_v_idx_label = __pyx_t_3;
-  __pyx_t_3 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1809
- *         idx_label = self.lookup_indices['spo'.index(term_type)]
- *         #logger.debug('Looking for all terms in index: {}'.format(idx_label))
- *         icur = self._cur_open(idx_label)             # <<<<<<<<<<<<<<
- *         try:
- *             _check(lmdb.mdb_stat(self.txn, lmdb.mdb_cursor_dbi(icur), &stat))
- */
-  __pyx_t_6 = __Pyx_PyObject_AsWritableUString(__pyx_v_idx_label); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1809, __pyx_L1_error)
-  __pyx_t_8.__pyx_n = 1;
-  __pyx_t_8.dblabel = __pyx_t_6;
-  __pyx_t_7 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_8); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1809, __pyx_L1_error)
-  __pyx_v_icur = __pyx_t_7;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1810
- *         #logger.debug('Looking for all terms in index: {}'.format(idx_label))
- *         icur = self._cur_open(idx_label)
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_stat(self.txn, lmdb.mdb_cursor_dbi(icur), &stat))
- *             # TODO: This may allocate memory for several times the amount
- */
-  /*try:*/ {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1811
- *         icur = self._cur_open(idx_label)
- *         try:
- *             _check(lmdb.mdb_stat(self.txn, lmdb.mdb_cursor_dbi(icur), &stat))             # <<<<<<<<<<<<<<
- *             # TODO: This may allocate memory for several times the amount
- *             # needed. Even though it is resized later, we need to know how
- */
-    __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_stat(__pyx_v_self->__pyx_base.txn, mdb_cursor_dbi(__pyx_v_icur), (&__pyx_v_stat)), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1811, __pyx_L4_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1815
- *             # needed. Even though it is resized later, we need to know how
- *             # performance is affected by this.
- *             ret = ResultSet(stat.ms_entries, KLEN)             # <<<<<<<<<<<<<<
- * 
- *             try:
- */
-    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_stat.ms_entries); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1815, __pyx_L4_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1815, __pyx_L4_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_3);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
-    __Pyx_INCREF(__pyx_int_5);
-    __Pyx_GIVEREF(__pyx_int_5);
-    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5);
-    __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1815, __pyx_L4_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_v_ret = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_3);
-    __pyx_t_3 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1817
- *             ret = ResultSet(stat.ms_entries, KLEN)
- * 
- *             try:             # <<<<<<<<<<<<<<
- *                 _check(lmdb.mdb_cursor_get(
- *                     icur, &key_v, NULL, lmdb.MDB_FIRST))
- */
-    {
-      __Pyx_PyThreadState_declare
-      __Pyx_PyThreadState_assign
-      __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
-      __Pyx_XGOTREF(__pyx_t_9);
-      __Pyx_XGOTREF(__pyx_t_10);
-      __Pyx_XGOTREF(__pyx_t_11);
-      /*try:*/ {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1818
- * 
- *             try:
- *                 _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                     icur, &key_v, NULL, lmdb.MDB_FIRST))
- *             except KeyNotFoundError:
- */
-        __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_icur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), NULL, MDB_FIRST), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1818, __pyx_L6_error)
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1817
- *             ret = ResultSet(stat.ms_entries, KLEN)
- * 
- *             try:             # <<<<<<<<<<<<<<
- *                 _check(lmdb.mdb_cursor_get(
- *                     icur, &key_v, NULL, lmdb.MDB_FIRST))
- */
-      }
-      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-      goto __pyx_L11_try_end;
-      __pyx_L6_error:;
-      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1820
- *                 _check(lmdb.mdb_cursor_get(
- *                     icur, &key_v, NULL, lmdb.MDB_FIRST))
- *             except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                 return ResultSet(0, DBL_KLEN)
- * 
- */
-      __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1820, __pyx_L8_except_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_12 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_4);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1);
-      __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0;
-      if (__pyx_t_12) {
-        __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._all_term_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 1820, __pyx_L8_except_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_GOTREF(__pyx_t_3);
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1821
- *                     icur, &key_v, NULL, lmdb.MDB_FIRST))
- *             except KeyNotFoundError:
- *                 return ResultSet(0, DBL_KLEN)             # <<<<<<<<<<<<<<
- * 
- *             while True:
- */
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1821, __pyx_L8_except_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_4);
-        __pyx_t_4 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        goto __pyx_L9_except_return;
-      }
-      goto __pyx_L8_except_error;
-      __pyx_L8_except_error:;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1817
- *             ret = ResultSet(stat.ms_entries, KLEN)
- * 
- *             try:             # <<<<<<<<<<<<<<
- *                 _check(lmdb.mdb_cursor_get(
- *                     icur, &key_v, NULL, lmdb.MDB_FIRST))
- */
-      __Pyx_XGIVEREF(__pyx_t_9);
-      __Pyx_XGIVEREF(__pyx_t_10);
-      __Pyx_XGIVEREF(__pyx_t_11);
-      __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-      goto __pyx_L4_error;
-      __pyx_L9_except_return:;
-      __Pyx_XGIVEREF(__pyx_t_9);
-      __Pyx_XGIVEREF(__pyx_t_10);
-      __Pyx_XGIVEREF(__pyx_t_11);
-      __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-      goto __pyx_L3_return;
-      __pyx_L11_try_end:;
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1823
- *                 return ResultSet(0, DBL_KLEN)
- * 
- *             while True:             # <<<<<<<<<<<<<<
- *                 memcpy(ret.data + ret.itemsize * i, key_v.mv_data, KLEN)
- * 
- */
-    while (1) {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1824
- * 
- *             while True:
- *                 memcpy(ret.data + ret.itemsize * i, key_v.mv_data, KLEN)             # <<<<<<<<<<<<<<
- * 
- *                 rc = lmdb.mdb_cursor_get(
- */
-      (void)(memcpy((__pyx_v_ret->data + (__pyx_v_ret->itemsize * __pyx_v_i)), __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data, 5));
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1826
- *                 memcpy(ret.data + ret.itemsize * i, key_v.mv_data, KLEN)
- * 
- *                 rc = lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                     icur, &key_v, NULL, lmdb.MDB_NEXT_NODUP)
- *                 try:
- */
-      __pyx_v_rc = mdb_cursor_get(__pyx_v_icur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), NULL, MDB_NEXT_NODUP);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1828
- *                 rc = lmdb.mdb_cursor_get(
- *                     icur, &key_v, NULL, lmdb.MDB_NEXT_NODUP)
- *                 try:             # <<<<<<<<<<<<<<
- *                     _check(rc)
- *                 except KeyNotFoundError:
- */
-      {
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
-        __Pyx_XGOTREF(__pyx_t_11);
-        __Pyx_XGOTREF(__pyx_t_10);
-        __Pyx_XGOTREF(__pyx_t_9);
-        /*try:*/ {
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1829
- *                     icur, &key_v, NULL, lmdb.MDB_NEXT_NODUP)
- *                 try:
- *                     _check(rc)             # <<<<<<<<<<<<<<
- *                 except KeyNotFoundError:
- *                     ret.resize(i + 1)
- */
-          __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(__pyx_v_rc, NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1829, __pyx_L16_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1828
- *                 rc = lmdb.mdb_cursor_get(
- *                     icur, &key_v, NULL, lmdb.MDB_NEXT_NODUP)
- *                 try:             # <<<<<<<<<<<<<<
- *                     _check(rc)
- *                 except KeyNotFoundError:
- */
-        }
-        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-        goto __pyx_L23_try_end;
-        __pyx_L16_error:;
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1830
- *                 try:
- *                     _check(rc)
- *                 except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                     ret.resize(i + 1)
- *                     return ret
- */
-        __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1830, __pyx_L18_except_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_12 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_4);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1);
-        __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0;
-        if (__pyx_t_12) {
-          __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._all_term_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 1830, __pyx_L18_except_error)
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_GOTREF(__pyx_t_3);
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1831
- *                     _check(rc)
- *                 except KeyNotFoundError:
- *                     ret.resize(i + 1)             # <<<<<<<<<<<<<<
- *                     return ret
- *                 i += 1
- */
-          ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_v_ret->__pyx_vtab)->resize(__pyx_v_ret, (__pyx_v_i + 1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1831, __pyx_L18_except_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1832
- *                 except KeyNotFoundError:
- *                     ret.resize(i + 1)
- *                     return ret             # <<<<<<<<<<<<<<
- *                 i += 1
- *         finally:
- */
-          __Pyx_XDECREF(((PyObject *)__pyx_r));
-          __Pyx_INCREF(((PyObject *)__pyx_v_ret));
-          __pyx_r = __pyx_v_ret;
-          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          goto __pyx_L19_except_return;
-        }
-        goto __pyx_L18_except_error;
-        __pyx_L18_except_error:;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1828
- *                 rc = lmdb.mdb_cursor_get(
- *                     icur, &key_v, NULL, lmdb.MDB_NEXT_NODUP)
- *                 try:             # <<<<<<<<<<<<<<
- *                     _check(rc)
- *                 except KeyNotFoundError:
- */
-        __Pyx_XGIVEREF(__pyx_t_11);
-        __Pyx_XGIVEREF(__pyx_t_10);
-        __Pyx_XGIVEREF(__pyx_t_9);
-        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-        goto __pyx_L4_error;
-        __pyx_L19_except_return:;
-        __Pyx_XGIVEREF(__pyx_t_11);
-        __Pyx_XGIVEREF(__pyx_t_10);
-        __Pyx_XGIVEREF(__pyx_t_9);
-        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-        goto __pyx_L3_return;
-        __pyx_L23_try_end:;
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1833
- *                     ret.resize(i + 1)
- *                     return ret
- *                 i += 1             # <<<<<<<<<<<<<<
- *         finally:
- *             #pass
- */
-      __pyx_v_i = (__pyx_v_i + 1);
-    }
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1836
- *         finally:
- *             #pass
- *             self._cur_close(icur)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  /*finally:*/ {
-    /*normal exit:*/{
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1836, __pyx_L1_error)
-      goto __pyx_L5;
-    }
-    __pyx_L4_error:;
-    /*exception exit:*/{
-      __Pyx_PyThreadState_declare
-      __Pyx_PyThreadState_assign
-      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
-      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
-      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
-      __Pyx_XGOTREF(__pyx_t_9);
-      __Pyx_XGOTREF(__pyx_t_10);
-      __Pyx_XGOTREF(__pyx_t_11);
-      __Pyx_XGOTREF(__pyx_t_15);
-      __Pyx_XGOTREF(__pyx_t_16);
-      __Pyx_XGOTREF(__pyx_t_17);
-      __pyx_t_12 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
-      {
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1836, __pyx_L27_error)
-      }
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_15);
-        __Pyx_XGIVEREF(__pyx_t_16);
-        __Pyx_XGIVEREF(__pyx_t_17);
-        __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
-      }
-      __Pyx_XGIVEREF(__pyx_t_9);
-      __Pyx_XGIVEREF(__pyx_t_10);
-      __Pyx_XGIVEREF(__pyx_t_11);
-      __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
-      __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
-      goto __pyx_L1_error;
-      __pyx_L27_error:;
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_15);
-        __Pyx_XGIVEREF(__pyx_t_16);
-        __Pyx_XGIVEREF(__pyx_t_17);
-        __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
-      }
-      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-      __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
-      goto __pyx_L1_error;
-    }
-    __pyx_L3_return: {
-      __pyx_t_18 = __pyx_r;
-      __pyx_r = 0;
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_icur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1836, __pyx_L1_error)
-      __pyx_r = __pyx_t_18;
-      __pyx_t_18 = 0;
-      goto __pyx_L0;
-    }
-    __pyx_L5:;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1799
- * 
- * 
- *     cpdef ResultSet _all_term_keys(self, term_type):             # <<<<<<<<<<<<<<
- *         """
- *         Return all keys of a (``s:po``, ``p:so``, ``o:sp``) index.
- */
-
-  /* function exit code */
-  __pyx_r = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)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_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._all_term_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_idx_label);
-  __Pyx_XDECREF((PyObject *)__pyx_v_ret);
-  __Pyx_XGIVEREF((PyObject *)__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_23_all_term_keys(PyObject *__pyx_v_self, PyObject *__pyx_v_term_type); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_22_all_term_keys[] = "\n        Return all keys of a (``s:po``, ``p:so``, ``o:sp``) index.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_23_all_term_keys(PyObject *__pyx_v_self, PyObject *__pyx_v_term_type) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("_all_term_keys (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_22_all_term_keys(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self), ((PyObject *)__pyx_v_term_type));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_22_all_term_keys(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_term_type) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("_all_term_keys", 0);
-  __Pyx_TraceCall("_all_term_keys (wrapper)", __pyx_f[0], 1799, 0, __PYX_ERR(0, 1799, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__all_term_keys(__pyx_v_self, __pyx_v_term_type, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1799, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._all_term_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-static PyObject *__pyx_gb_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_26generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1839
- * 
- * 
- *     def all_terms(self, term_type):             # <<<<<<<<<<<<<<
- *         """
- *         Return all terms of a type (``s``, ``p``, or ``o``) in the store.
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_25all_terms(PyObject *__pyx_v_self, PyObject *__pyx_v_term_type); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_24all_terms[] = "\n        Return all terms of a type (``s``, ``p``, or ``o``) in the store.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_25all_terms(PyObject *__pyx_v_self, PyObject *__pyx_v_term_type) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("all_terms (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_24all_terms(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self), ((PyObject *)__pyx_v_term_type));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_24all_terms(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_term_type) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms *__pyx_cur_scope;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("all_terms", 0);
-  __pyx_cur_scope = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms *)__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms, __pyx_empty_tuple, NULL);
-  if (unlikely(!__pyx_cur_scope)) {
-    __pyx_cur_scope = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms *)Py_None);
-    __Pyx_INCREF(Py_None);
-    __PYX_ERR(0, 1839, __pyx_L1_error)
-  } else {
-    __Pyx_GOTREF(__pyx_cur_scope);
-  }
-  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
-  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
-  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
-  __pyx_cur_scope->__pyx_v_term_type = __pyx_v_term_type;
-  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_term_type);
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_term_type);
-  {
-    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_26generator2, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_all_terms, __pyx_n_s_LmdbTriplestore_all_terms, __pyx_n_s_lakesuperior_store_ldp_rs_lmdb_t); if (unlikely(!gen)) __PYX_ERR(0, 1839, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_cur_scope);
-    __Pyx_RefNannyFinishContext();
-    return (PyObject *) gen;
-  }
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.all_terms", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_gb_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_26generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
-{
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms *__pyx_cur_scope = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms *)__pyx_generator->closure);
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  Py_ssize_t __pyx_t_4;
-  PyObject *(*__pyx_t_5)(PyObject *);
-  unsigned char *__pyx_t_6;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("all_terms", 0);
-  __Pyx_TraceCall("all_terms", __pyx_f[0], 1839, 0, __PYX_ERR(0, 1839, __pyx_L1_error));
-  switch (__pyx_generator->resume_label) {
-    case 0: goto __pyx_L3_first_run;
-    case 1: goto __pyx_L6_resume_from_yield;
-    default: /* CPython raises the right error here */
-    __Pyx_TraceReturn(Py_None, 0);
-    __Pyx_RefNannyFinishContext();
-    return NULL;
-  }
-  __pyx_L3_first_run:;
-  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1839, __pyx_L1_error)
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1843
- *         Return all terms of a type (``s``, ``p``, or ``o``) in the store.
- *         """
- *         for key in self._all_term_keys(term_type).to_tuple():             # <<<<<<<<<<<<<<
- *             #logger.debug('Yielding: {}'.format(key))
- *             yield self.from_key(key)
- */
-  __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->_all_term_keys(__pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_term_type, 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1843, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_to_tuple); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1843, __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, 1843, __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, 1843, __pyx_L1_error)
-  }
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
-    __pyx_t_3 = __pyx_t_1; __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_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1843, __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, 1843, __pyx_L1_error)
-  }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  for (;;) {
-    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_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1843, __pyx_L1_error)
-        #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1843, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        #endif
-      } else {
-        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
-        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1843, __pyx_L1_error)
-        #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1843, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        #endif
-      }
-    } else {
-      __pyx_t_1 = __pyx_t_5(__pyx_t_3);
-      if (unlikely(!__pyx_t_1)) {
-        PyObject* exc_type = PyErr_Occurred();
-        if (exc_type) {
-          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1843, __pyx_L1_error)
-        }
-        break;
-      }
-      __Pyx_GOTREF(__pyx_t_1);
-    }
-    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_key);
-    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_key, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1845
- *         for key in self._all_term_keys(term_type).to_tuple():
- *             #logger.debug('Yielding: {}'.format(key))
- *             yield self.from_key(key)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-    __pyx_t_6 = __Pyx_PyObject_AsWritableUString(__pyx_cur_scope->__pyx_v_key); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1845, __pyx_L1_error)
-    __pyx_t_1 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->from_key(__pyx_cur_scope->__pyx_v_self, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1845, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_r = __pyx_t_1;
-    __pyx_t_1 = 0;
-    __Pyx_XGIVEREF(__pyx_t_3);
-    __pyx_cur_scope->__pyx_t_0 = __pyx_t_3;
-    __pyx_cur_scope->__pyx_t_1 = __pyx_t_4;
-    __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
-    __Pyx_XGIVEREF(__pyx_r);
-    __Pyx_TraceReturn(__pyx_r, 0);
-    __Pyx_RefNannyFinishContext();
-    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
-    /* return from generator, yielding value */
-    __pyx_generator->resume_label = 1;
-    return __pyx_r;
-    __pyx_L6_resume_from_yield:;
-    __pyx_t_3 = __pyx_cur_scope->__pyx_t_0;
-    __pyx_cur_scope->__pyx_t_0 = 0;
-    __Pyx_XGOTREF(__pyx_t_3);
-    __pyx_t_4 = __pyx_cur_scope->__pyx_t_1;
-    __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
-    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1845, __pyx_L1_error)
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1843
- *         Return all terms of a type (``s``, ``p``, or ``o``) in the store.
- *         """
- *         for key in self._all_term_keys(term_type).to_tuple():             # <<<<<<<<<<<<<<
- *             #logger.debug('Yielding: {}'.format(key))
- *             yield self.from_key(key)
- */
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1839
- * 
- * 
- *     def all_terms(self, term_type):             # <<<<<<<<<<<<<<
- *         """
- *         Return all terms of a type (``s``, ``p``, or ``o``) in the store.
- */
-
-  /* function exit code */
-  PyErr_SetNone(PyExc_StopIteration);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("all_terms", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
-  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
-  __pyx_generator->resume_label = -1;
-  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1848
- * 
- * 
- *     cpdef tuple all_namespaces(self):             # <<<<<<<<<<<<<<
- *         """
- *         Return all registered namespaces.
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_28all_namespaces(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_all_namespaces(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, int __pyx_skip_dispatch) {
-  size_t __pyx_v_i;
-  PyObject *__pyx_v_ret = NULL;
-  MDB_cursor *__pyx_v_dcur;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  MDB_cursor *__pyx_t_5;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open __pyx_t_6;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  int __pyx_t_10;
-  int __pyx_t_11;
-  int __pyx_t_12;
-  char const *__pyx_t_13;
-  PyObject *__pyx_t_14 = NULL;
-  PyObject *__pyx_t_15 = NULL;
-  PyObject *__pyx_t_16 = NULL;
-  PyObject *__pyx_t_17 = NULL;
-  __Pyx_RefNannySetupContext("all_namespaces", 0);
-  __Pyx_TraceCall("all_namespaces", __pyx_f[0], 1848, 0, __PYX_ERR(0, 1848, __pyx_L1_error));
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_all_namespaces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1848, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_28all_namespaces)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1848, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1848, __pyx_L1_error)
-      }
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1848, __pyx_L1_error)
-      __pyx_r = ((PyObject*)__pyx_t_2);
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1853
- *         """
- *         cdef:
- *             size_t i = 0             # <<<<<<<<<<<<<<
- *             lmdb.MDB_stat stat
- * 
- */
-  __pyx_v_i = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1856
- *             lmdb.MDB_stat stat
- * 
- *         ret = []             # <<<<<<<<<<<<<<
- *         dcur = self._cur_open('pfx:ns')
- *         try:
- */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1856, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_ret = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1857
- * 
- *         ret = []
- *         dcur = self._cur_open('pfx:ns')             # <<<<<<<<<<<<<<
- *         try:
- *             try:
- */
-  __pyx_t_6.__pyx_n = 1;
-  __pyx_t_6.dblabel = ((unsigned char *)((char const *)"pfx:ns"));
-  __pyx_t_5 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_6); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1857, __pyx_L1_error)
-  __pyx_v_dcur = __pyx_t_5;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1858
- *         ret = []
- *         dcur = self._cur_open('pfx:ns')
- *         try:             # <<<<<<<<<<<<<<
- *             try:
- *                 _check(lmdb.mdb_cursor_get(
- */
-  /*try:*/ {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1859
- *         dcur = self._cur_open('pfx:ns')
- *         try:
- *             try:             # <<<<<<<<<<<<<<
- *                 _check(lmdb.mdb_cursor_get(
- *                     dcur, &key_v, &data_v, lmdb.MDB_FIRST))
- */
-    {
-      __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:*/ {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1860
- *         try:
- *             try:
- *                 _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                     dcur, &key_v, &data_v, lmdb.MDB_FIRST))
- *             except KeyNotFoundError:
- */
-        __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_dcur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), MDB_FIRST), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1860, __pyx_L6_error)
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1859
- *         dcur = self._cur_open('pfx:ns')
- *         try:
- *             try:             # <<<<<<<<<<<<<<
- *                 _check(lmdb.mdb_cursor_get(
- *                     dcur, &key_v, &data_v, lmdb.MDB_FIRST))
- */
-      }
-      __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_L11_try_end;
-      __pyx_L6_error:;
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1862
- *                 _check(lmdb.mdb_cursor_get(
- *                     dcur, &key_v, &data_v, lmdb.MDB_FIRST))
- *             except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                 return tuple()
- * 
- */
-      __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1862, __pyx_L8_except_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_4);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-      __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
-      if (__pyx_t_10) {
-        __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.all_namespaces", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 1862, __pyx_L8_except_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_GOTREF(__pyx_t_1);
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1863
- *                     dcur, &key_v, &data_v, lmdb.MDB_FIRST))
- *             except KeyNotFoundError:
- *                 return tuple()             # <<<<<<<<<<<<<<
- * 
- *             while True:
- */
-        __Pyx_XDECREF(__pyx_r);
-        __pyx_t_4 = __Pyx_PyObject_CallNoArg(((PyObject *)(&PyTuple_Type))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1863, __pyx_L8_except_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_r = ((PyObject*)__pyx_t_4);
-        __pyx_t_4 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        goto __pyx_L9_except_return;
-      }
-      goto __pyx_L8_except_error;
-      __pyx_L8_except_error:;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1859
- *         dcur = self._cur_open('pfx:ns')
- *         try:
- *             try:             # <<<<<<<<<<<<<<
- *                 _check(lmdb.mdb_cursor_get(
- *                     dcur, &key_v, &data_v, lmdb.MDB_FIRST))
- */
-      __Pyx_XGIVEREF(__pyx_t_7);
-      __Pyx_XGIVEREF(__pyx_t_8);
-      __Pyx_XGIVEREF(__pyx_t_9);
-      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
-      goto __pyx_L4_error;
-      __pyx_L9_except_return:;
-      __Pyx_XGIVEREF(__pyx_t_7);
-      __Pyx_XGIVEREF(__pyx_t_8);
-      __Pyx_XGIVEREF(__pyx_t_9);
-      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
-      goto __pyx_L3_return;
-      __pyx_L11_try_end:;
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1865
- *                 return tuple()
- * 
- *             while True:             # <<<<<<<<<<<<<<
- *                 ret.append((
- *                     (<unsigned char *>key_v.mv_data)[: key_v.mv_size].decode(),
- */
-    while (1) {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1867
- *             while True:
- *                 ret.append((
- *                     (<unsigned char *>key_v.mv_data)[: key_v.mv_size].decode(),             # <<<<<<<<<<<<<<
- *                     (<unsigned char *>data_v.mv_data)[: data_v.mv_size].decode()))
- *                 #logger.debug('Found namespace: {}:{}'.format(<unsigned char *>key_v.mv_data, <unsigned char *>data_v.mv_data))
- */
-      __pyx_t_1 = __Pyx_decode_c_string(((char const *)((unsigned char *)__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data)), 0, __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_size, NULL, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1867, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_1);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1868
- *                 ret.append((
- *                     (<unsigned char *>key_v.mv_data)[: key_v.mv_size].decode(),
- *                     (<unsigned char *>data_v.mv_data)[: data_v.mv_size].decode()))             # <<<<<<<<<<<<<<
- *                 #logger.debug('Found namespace: {}:{}'.format(<unsigned char *>key_v.mv_data, <unsigned char *>data_v.mv_data))
- *                 try:
- */
-      __pyx_t_2 = __Pyx_decode_c_string(((char const *)((unsigned char *)__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_data)), 0, __pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_size, NULL, NULL, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1868, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_2);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1867
- *             while True:
- *                 ret.append((
- *                     (<unsigned char *>key_v.mv_data)[: key_v.mv_size].decode(),             # <<<<<<<<<<<<<<
- *                     (<unsigned char *>data_v.mv_data)[: data_v.mv_size].decode()))
- *                 #logger.debug('Found namespace: {}:{}'.format(<unsigned char *>key_v.mv_data, <unsigned char *>data_v.mv_data))
- */
-      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1867, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_GIVEREF(__pyx_t_1);
-      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;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1866
- * 
- *             while True:
- *                 ret.append((             # <<<<<<<<<<<<<<
- *                     (<unsigned char *>key_v.mv_data)[: key_v.mv_size].decode(),
- *                     (<unsigned char *>data_v.mv_data)[: data_v.mv_size].decode()))
- */
-      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ret, __pyx_t_3); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 1866, __pyx_L4_error)
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1870
- *                     (<unsigned char *>data_v.mv_data)[: data_v.mv_size].decode()))
- *                 #logger.debug('Found namespace: {}:{}'.format(<unsigned char *>key_v.mv_data, <unsigned char *>data_v.mv_data))
- *                 try:             # <<<<<<<<<<<<<<
- *                     _check(lmdb.mdb_cursor_get(
- *                         dcur, &key_v, &data_v, lmdb.MDB_NEXT))
- */
-      {
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
-        __Pyx_XGOTREF(__pyx_t_9);
-        __Pyx_XGOTREF(__pyx_t_8);
-        __Pyx_XGOTREF(__pyx_t_7);
-        /*try:*/ {
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1871
- *                 #logger.debug('Found namespace: {}:{}'.format(<unsigned char *>key_v.mv_data, <unsigned char *>data_v.mv_data))
- *                 try:
- *                     _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                         dcur, &key_v, &data_v, lmdb.MDB_NEXT))
- *                 except KeyNotFoundError:
- */
-          __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_dcur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), MDB_NEXT), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1871, __pyx_L16_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1870
- *                     (<unsigned char *>data_v.mv_data)[: data_v.mv_size].decode()))
- *                 #logger.debug('Found namespace: {}:{}'.format(<unsigned char *>key_v.mv_data, <unsigned char *>data_v.mv_data))
- *                 try:             # <<<<<<<<<<<<<<
- *                     _check(lmdb.mdb_cursor_get(
- *                         dcur, &key_v, &data_v, lmdb.MDB_NEXT))
- */
-        }
-        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-        goto __pyx_L23_try_end;
-        __pyx_L16_error:;
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1873
- *                     _check(lmdb.mdb_cursor_get(
- *                         dcur, &key_v, &data_v, lmdb.MDB_NEXT))
- *                 except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                     return tuple(ret)
- * 
- */
-        __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1873, __pyx_L18_except_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_4);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1);
-        __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0;
-        if (__pyx_t_10) {
-          __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.all_namespaces", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 1873, __pyx_L18_except_error)
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_GOTREF(__pyx_t_3);
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1874
- *                         dcur, &key_v, &data_v, lmdb.MDB_NEXT))
- *                 except KeyNotFoundError:
- *                     return tuple(ret)             # <<<<<<<<<<<<<<
- * 
- *                 i += 1
- */
-          __Pyx_XDECREF(__pyx_r);
-          __pyx_t_4 = PyList_AsTuple(__pyx_v_ret); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1874, __pyx_L18_except_error)
-          __Pyx_GOTREF(__pyx_t_4);
-          __pyx_r = ((PyObject*)__pyx_t_4);
-          __pyx_t_4 = 0;
-          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          goto __pyx_L19_except_return;
-        }
-        goto __pyx_L18_except_error;
-        __pyx_L18_except_error:;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1870
- *                     (<unsigned char *>data_v.mv_data)[: data_v.mv_size].decode()))
- *                 #logger.debug('Found namespace: {}:{}'.format(<unsigned char *>key_v.mv_data, <unsigned char *>data_v.mv_data))
- *                 try:             # <<<<<<<<<<<<<<
- *                     _check(lmdb.mdb_cursor_get(
- *                         dcur, &key_v, &data_v, lmdb.MDB_NEXT))
- */
-        __Pyx_XGIVEREF(__pyx_t_9);
-        __Pyx_XGIVEREF(__pyx_t_8);
-        __Pyx_XGIVEREF(__pyx_t_7);
-        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7);
-        goto __pyx_L4_error;
-        __pyx_L19_except_return:;
-        __Pyx_XGIVEREF(__pyx_t_9);
-        __Pyx_XGIVEREF(__pyx_t_8);
-        __Pyx_XGIVEREF(__pyx_t_7);
-        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7);
-        goto __pyx_L3_return;
-        __pyx_L23_try_end:;
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1876
- *                     return tuple(ret)
- * 
- *                 i += 1             # <<<<<<<<<<<<<<
- *         finally:
- *             #pass
- */
-      __pyx_v_i = (__pyx_v_i + 1);
-    }
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1879
- *         finally:
- *             #pass
- *             self._cur_close(dcur)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  /*finally:*/ {
-    /*normal exit:*/{
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_dcur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1879, __pyx_L1_error)
-      goto __pyx_L5;
-    }
-    __pyx_L4_error:;
-    /*exception exit:*/{
-      __Pyx_PyThreadState_declare
-      __Pyx_PyThreadState_assign
-      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
-      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
-      __Pyx_XGOTREF(__pyx_t_7);
-      __Pyx_XGOTREF(__pyx_t_8);
-      __Pyx_XGOTREF(__pyx_t_9);
-      __Pyx_XGOTREF(__pyx_t_14);
-      __Pyx_XGOTREF(__pyx_t_15);
-      __Pyx_XGOTREF(__pyx_t_16);
-      __pyx_t_10 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
-      {
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_dcur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1879, __pyx_L27_error)
-      }
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_14);
-        __Pyx_XGIVEREF(__pyx_t_15);
-        __Pyx_XGIVEREF(__pyx_t_16);
-        __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
-      }
-      __Pyx_XGIVEREF(__pyx_t_7);
-      __Pyx_XGIVEREF(__pyx_t_8);
-      __Pyx_XGIVEREF(__pyx_t_9);
-      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
-      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
-      __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
-      goto __pyx_L1_error;
-      __pyx_L27_error:;
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_14);
-        __Pyx_XGIVEREF(__pyx_t_15);
-        __Pyx_XGIVEREF(__pyx_t_16);
-        __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
-      }
-      __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;
-      __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
-      goto __pyx_L1_error;
-    }
-    __pyx_L3_return: {
-      __pyx_t_17 = __pyx_r;
-      __pyx_r = 0;
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_dcur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1879, __pyx_L1_error)
-      __pyx_r = __pyx_t_17;
-      __pyx_t_17 = 0;
-      goto __pyx_L0;
-    }
-    __pyx_L5:;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1848
- * 
- * 
- *     cpdef tuple all_namespaces(self):             # <<<<<<<<<<<<<<
- *         """
- *         Return all registered namespaces.
- */
-
-  /* function exit code */
-  __pyx_r = ((PyObject*)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_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.all_namespaces", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_ret);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_28all_namespaces(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_27all_namespaces[] = "\n        Return all registered namespaces.\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_28all_namespaces(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("all_namespaces (wrapper)", 0);
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_27all_namespaces(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_27all_namespaces(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("all_namespaces", 0);
-  __Pyx_TraceCall("all_namespaces (wrapper)", __pyx_f[0], 1848, 0, __PYX_ERR(0, 1848, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_all_namespaces(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1848, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.all_namespaces", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1882
- * 
- * 
- *     cpdef tuple all_contexts(self, triple=None):             # <<<<<<<<<<<<<<
- *         """
- *         Get a list of all contexts.
- */
-
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_30all_contexts(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_all_contexts(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_all_contexts *__pyx_optional_args) {
-  PyObject *__pyx_v_triple = ((PyObject *)Py_None);
-  struct MDB_stat __pyx_v_stat;
-  size_t __pyx_v_i;
-  unsigned char __pyx_v_spok[15];
-  MDB_cursor *__pyx_v_cur;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *__pyx_v_ret = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  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;
-  MDB_cursor *__pyx_t_6;
-  int __pyx_t_7;
-  int __pyx_t_8;
-  MDB_cursor *__pyx_t_9;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open __pyx_t_10;
-  PyObject *__pyx_t_11 = NULL;
-  PyObject *__pyx_t_12 = NULL;
-  PyObject *__pyx_t_13 = NULL;
-  int __pyx_t_14;
-  int __pyx_t_15;
-  char const *__pyx_t_16;
-  PyObject *__pyx_t_17 = NULL;
-  PyObject *__pyx_t_18 = NULL;
-  PyObject *__pyx_t_19 = NULL;
-  PyObject *__pyx_t_20 = NULL;
-  __Pyx_RefNannySetupContext("all_contexts", 0);
-  __Pyx_TraceCall("all_contexts", __pyx_f[0], 1882, 0, __PYX_ERR(0, 1882, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_triple = __pyx_optional_args->triple;
-    }
-  }
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_all_contexts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1882, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_30all_contexts)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-        if (likely(__pyx_t_4)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-          __Pyx_INCREF(__pyx_t_4);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_3, function);
-        }
-      }
-      if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_triple); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1882, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-      } else {
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_triple};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1882, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_triple};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1882, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        {
-          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1882, __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_INCREF(__pyx_v_triple);
-          __Pyx_GIVEREF(__pyx_v_triple);
-          PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_triple);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1882, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        }
-      }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1882, __pyx_L1_error)
-      __pyx_r = ((PyObject*)__pyx_t_2);
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1890
- *         cdef:
- *             lmdb.MDB_stat stat
- *             size_t i = 0             # <<<<<<<<<<<<<<
- *             unsigned char spok[TRP_KLEN]
- *             unsigned char ck[KLEN]
- */
-  __pyx_v_i = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1896
- * 
- *         cur = (
- *                 self._cur_open('spo:c') if triple and all(triple)             # <<<<<<<<<<<<<<
- *                 else self._cur_open('c:'))
- *         try:
- */
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_triple); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1896, __pyx_L1_error)
-  if (__pyx_t_8) {
-  } else {
-    __pyx_t_7 = __pyx_t_8;
-    goto __pyx_L3_bool_binop_done;
-  }
-  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_all, __pyx_v_triple); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1896, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1896, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_7 = __pyx_t_8;
-  __pyx_L3_bool_binop_done:;
-  if (__pyx_t_7) {
-    __pyx_t_10.__pyx_n = 1;
-    __pyx_t_10.dblabel = ((unsigned char *)((char const *)"spo:c"));
-    __pyx_t_9 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_10); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1896, __pyx_L1_error)
-    __pyx_t_6 = __pyx_t_9;
-  } else {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1897
- *         cur = (
- *                 self._cur_open('spo:c') if triple and all(triple)
- *                 else self._cur_open('c:'))             # <<<<<<<<<<<<<<
- *         try:
- *             if triple and all(triple):
- */
-    __pyx_t_10.__pyx_n = 1;
-    __pyx_t_10.dblabel = ((unsigned char *)((char const *)"c:"));
-    __pyx_t_9 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_10); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1897, __pyx_L1_error)
-    __pyx_t_6 = __pyx_t_9;
-  }
-  __pyx_v_cur = __pyx_t_6;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1898
- *                 self._cur_open('spo:c') if triple and all(triple)
- *                 else self._cur_open('c:'))
- *         try:             # <<<<<<<<<<<<<<
- *             if triple and all(triple):
- *                 _check(lmdb.mdb_stat(
- */
-  /*try:*/ {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1899
- *                 else self._cur_open('c:'))
- *         try:
- *             if triple and all(triple):             # <<<<<<<<<<<<<<
- *                 _check(lmdb.mdb_stat(
- *                     self.txn, lmdb.mdb_cursor_dbi(cur), &stat))
- */
-    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_triple); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1899, __pyx_L6_error)
-    if (__pyx_t_8) {
-    } else {
-      __pyx_t_7 = __pyx_t_8;
-      goto __pyx_L9_bool_binop_done;
-    }
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_all, __pyx_v_triple); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1899, __pyx_L6_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1899, __pyx_L6_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_7 = __pyx_t_8;
-    __pyx_L9_bool_binop_done:;
-    if (__pyx_t_7) {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1900
- *         try:
- *             if triple and all(triple):
- *                 _check(lmdb.mdb_stat(             # <<<<<<<<<<<<<<
- *                     self.txn, lmdb.mdb_cursor_dbi(cur), &stat))
- *                 ret = ResultSet(stat.ms_entries, KLEN)
- */
-      __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_stat(__pyx_v_self->__pyx_base.txn, mdb_cursor_dbi(__pyx_v_cur), (&__pyx_v_stat)), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1900, __pyx_L6_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1902
- *                 _check(lmdb.mdb_stat(
- *                     self.txn, lmdb.mdb_cursor_dbi(cur), &stat))
- *                 ret = ResultSet(stat.ms_entries, KLEN)             # <<<<<<<<<<<<<<
- * 
- *                 self._to_triple_key(triple, &spok)
- */
-      __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_stat.ms_entries); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1902, __pyx_L6_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1902, __pyx_L6_error)
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_GIVEREF(__pyx_t_1);
-      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-      __Pyx_INCREF(__pyx_int_5);
-      __Pyx_GIVEREF(__pyx_int_5);
-      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5);
-      __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1902, __pyx_L6_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_v_ret = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_1);
-      __pyx_t_1 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1904
- *                 ret = ResultSet(stat.ms_entries, KLEN)
- * 
- *                 self._to_triple_key(triple, &spok)             # <<<<<<<<<<<<<<
- *                 key_v.mv_data = spok
- *                 key_v.mv_size = TRP_KLEN
- */
-      if (!(likely(PyTuple_CheckExact(__pyx_v_triple))||((__pyx_v_triple) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_triple)->tp_name), 0))) __PYX_ERR(0, 1904, __pyx_L6_error)
-      __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_triple_key(__pyx_v_self, ((PyObject*)__pyx_v_triple), (&__pyx_v_spok)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1904, __pyx_L6_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1905
- * 
- *                 self._to_triple_key(triple, &spok)
- *                 key_v.mv_data = spok             # <<<<<<<<<<<<<<
- *                 key_v.mv_size = TRP_KLEN
- *                 try:
- */
-      __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data = __pyx_v_spok;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1906
- *                 self._to_triple_key(triple, &spok)
- *                 key_v.mv_data = spok
- *                 key_v.mv_size = TRP_KLEN             # <<<<<<<<<<<<<<
- *                 try:
- *                     _check(lmdb.mdb_cursor_get(
- */
-      __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_size = 15;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1907
- *                 key_v.mv_data = spok
- *                 key_v.mv_size = TRP_KLEN
- *                 try:             # <<<<<<<<<<<<<<
- *                     _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_SET_KEY))
- */
-      {
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
-        __Pyx_XGOTREF(__pyx_t_11);
-        __Pyx_XGOTREF(__pyx_t_12);
-        __Pyx_XGOTREF(__pyx_t_13);
-        /*try:*/ {
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1908
- *                 key_v.mv_size = TRP_KLEN
- *                 try:
- *                     _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                             cur, &key_v, &data_v, lmdb.MDB_SET_KEY))
- *                 except KeyNotFoundError:
- */
-          __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_cur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), MDB_SET_KEY), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1908, __pyx_L11_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1907
- *                 key_v.mv_data = spok
- *                 key_v.mv_size = TRP_KLEN
- *                 try:             # <<<<<<<<<<<<<<
- *                     _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_SET_KEY))
- */
-        }
-        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-        goto __pyx_L16_try_end;
-        __pyx_L11_error:;
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1910
- *                     _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_SET_KEY))
- *                 except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                     return tuple()
- * 
- */
-        __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1910, __pyx_L13_except_error)
-        __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_14 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_5);
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-        __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
-        if (__pyx_t_14) {
-          __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.all_contexts", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 1910, __pyx_L13_except_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_GOTREF(__pyx_t_1);
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1911
- *                             cur, &key_v, &data_v, lmdb.MDB_SET_KEY))
- *                 except KeyNotFoundError:
- *                     return tuple()             # <<<<<<<<<<<<<<
- * 
- *                 while True:
- */
-          __Pyx_XDECREF(__pyx_r);
-          __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)(&PyTuple_Type))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1911, __pyx_L13_except_error)
-          __Pyx_GOTREF(__pyx_t_5);
-          __pyx_r = ((PyObject*)__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;
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          goto __pyx_L14_except_return;
-        }
-        goto __pyx_L13_except_error;
-        __pyx_L13_except_error:;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1907
- *                 key_v.mv_data = spok
- *                 key_v.mv_size = TRP_KLEN
- *                 try:             # <<<<<<<<<<<<<<
- *                     _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_SET_KEY))
- */
-        __Pyx_XGIVEREF(__pyx_t_11);
-        __Pyx_XGIVEREF(__pyx_t_12);
-        __Pyx_XGIVEREF(__pyx_t_13);
-        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
-        goto __pyx_L6_error;
-        __pyx_L14_except_return:;
-        __Pyx_XGIVEREF(__pyx_t_11);
-        __Pyx_XGIVEREF(__pyx_t_12);
-        __Pyx_XGIVEREF(__pyx_t_13);
-        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
-        goto __pyx_L5_return;
-        __pyx_L16_try_end:;
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1913
- *                     return tuple()
- * 
- *                 while True:             # <<<<<<<<<<<<<<
- *                     memcpy(ret.data + ret.itemsize * i, data_v.mv_data, KLEN)
- *                     try:
- */
-      while (1) {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1914
- * 
- *                 while True:
- *                     memcpy(ret.data + ret.itemsize * i, data_v.mv_data, KLEN)             # <<<<<<<<<<<<<<
- *                     try:
- *                         _check(lmdb.mdb_cursor_get(
- */
-        (void)(memcpy((__pyx_v_ret->data + (__pyx_v_ret->itemsize * __pyx_v_i)), __pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_data, 5));
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1915
- *                 while True:
- *                     memcpy(ret.data + ret.itemsize * i, data_v.mv_data, KLEN)
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_NEXT_DUP))
- */
-        {
-          __Pyx_PyThreadState_declare
-          __Pyx_PyThreadState_assign
-          __Pyx_ExceptionSave(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
-          __Pyx_XGOTREF(__pyx_t_13);
-          __Pyx_XGOTREF(__pyx_t_12);
-          __Pyx_XGOTREF(__pyx_t_11);
-          /*try:*/ {
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1916
- *                     memcpy(ret.data + ret.itemsize * i, data_v.mv_data, KLEN)
- *                     try:
- *                         _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                             cur, &key_v, &data_v, lmdb.MDB_NEXT_DUP))
- *                     except KeyNotFoundError:
- */
-            __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_cur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), MDB_NEXT_DUP), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1916, __pyx_L21_error)
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1915
- *                 while True:
- *                     memcpy(ret.data + ret.itemsize * i, data_v.mv_data, KLEN)
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_NEXT_DUP))
- */
-          }
-          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-          goto __pyx_L28_try_end;
-          __pyx_L21_error:;
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1918
- *                         _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_NEXT_DUP))
- *                     except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                         break
- * 
- */
-          __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1918, __pyx_L23_except_error)
-          __Pyx_GOTREF(__pyx_t_5);
-          __pyx_t_14 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_5);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-          __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
-          if (__pyx_t_14) {
-            __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.all_contexts", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 1918, __pyx_L23_except_error)
-            __Pyx_GOTREF(__pyx_t_3);
-            __Pyx_GOTREF(__pyx_t_2);
-            __Pyx_GOTREF(__pyx_t_1);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1919
- *                             cur, &key_v, &data_v, lmdb.MDB_NEXT_DUP))
- *                     except KeyNotFoundError:
- *                         break             # <<<<<<<<<<<<<<
- * 
- *                     i += 1
- */
-            goto __pyx_L29_except_break;
-            __pyx_L29_except_break:;
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            goto __pyx_L26_try_break;
-          }
-          goto __pyx_L23_except_error;
-          __pyx_L23_except_error:;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1915
- *                 while True:
- *                     memcpy(ret.data + ret.itemsize * i, data_v.mv_data, KLEN)
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_NEXT_DUP))
- */
-          __Pyx_XGIVEREF(__pyx_t_13);
-          __Pyx_XGIVEREF(__pyx_t_12);
-          __Pyx_XGIVEREF(__pyx_t_11);
-          __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
-          goto __pyx_L6_error;
-          __pyx_L26_try_break:;
-          __Pyx_XGIVEREF(__pyx_t_13);
-          __Pyx_XGIVEREF(__pyx_t_12);
-          __Pyx_XGIVEREF(__pyx_t_11);
-          __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
-          goto __pyx_L20_break;
-          __pyx_L28_try_end:;
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1921
- *                         break
- * 
- *                     i += 1             # <<<<<<<<<<<<<<
- *             else:
- *                 _check(lmdb.mdb_stat(
- */
-        __pyx_v_i = (__pyx_v_i + 1);
-      }
-      __pyx_L20_break:;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1899
- *                 else self._cur_open('c:'))
- *         try:
- *             if triple and all(triple):             # <<<<<<<<<<<<<<
- *                 _check(lmdb.mdb_stat(
- *                     self.txn, lmdb.mdb_cursor_dbi(cur), &stat))
- */
-      goto __pyx_L8;
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1923
- *                     i += 1
- *             else:
- *                 _check(lmdb.mdb_stat(             # <<<<<<<<<<<<<<
- *                     self.txn, lmdb.mdb_cursor_dbi(cur), &stat))
- *                 ret = ResultSet(stat.ms_entries, KLEN)
- */
-    /*else*/ {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1924
- *             else:
- *                 _check(lmdb.mdb_stat(
- *                     self.txn, lmdb.mdb_cursor_dbi(cur), &stat))             # <<<<<<<<<<<<<<
- *                 ret = ResultSet(stat.ms_entries, KLEN)
- * 
- */
-      __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_stat(__pyx_v_self->__pyx_base.txn, mdb_cursor_dbi(__pyx_v_cur), (&__pyx_v_stat)), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1923, __pyx_L6_error)
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1925
- *                 _check(lmdb.mdb_stat(
- *                     self.txn, lmdb.mdb_cursor_dbi(cur), &stat))
- *                 ret = ResultSet(stat.ms_entries, KLEN)             # <<<<<<<<<<<<<<
- * 
- *                 try:
- */
-      __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_stat.ms_entries); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1925, __pyx_L6_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1925, __pyx_L6_error)
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_GIVEREF(__pyx_t_1);
-      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-      __Pyx_INCREF(__pyx_int_5);
-      __Pyx_GIVEREF(__pyx_int_5);
-      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5);
-      __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1925, __pyx_L6_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_v_ret = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)__pyx_t_1);
-      __pyx_t_1 = 0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1927
- *                 ret = ResultSet(stat.ms_entries, KLEN)
- * 
- *                 try:             # <<<<<<<<<<<<<<
- *                     _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_FIRST))
- */
-      {
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
-        __Pyx_XGOTREF(__pyx_t_11);
-        __Pyx_XGOTREF(__pyx_t_12);
-        __Pyx_XGOTREF(__pyx_t_13);
-        /*try:*/ {
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1928
- * 
- *                 try:
- *                     _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                             cur, &key_v, &data_v, lmdb.MDB_FIRST))
- *                 except KeyNotFoundError:
- */
-          __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_cur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), MDB_FIRST), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1928, __pyx_L31_error)
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1927
- *                 ret = ResultSet(stat.ms_entries, KLEN)
- * 
- *                 try:             # <<<<<<<<<<<<<<
- *                     _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_FIRST))
- */
-        }
-        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-        goto __pyx_L36_try_end;
-        __pyx_L31_error:;
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1930
- *                     _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_FIRST))
- *                 except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                     return tuple()
- * 
- */
-        __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1930, __pyx_L33_except_error)
-        __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_14 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_5);
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-        __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
-        if (__pyx_t_14) {
-          __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.all_contexts", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 1930, __pyx_L33_except_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_GOTREF(__pyx_t_1);
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1931
- *                             cur, &key_v, &data_v, lmdb.MDB_FIRST))
- *                 except KeyNotFoundError:
- *                     return tuple()             # <<<<<<<<<<<<<<
- * 
- *                 while True:
- */
-          __Pyx_XDECREF(__pyx_r);
-          __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)(&PyTuple_Type))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1931, __pyx_L33_except_error)
-          __Pyx_GOTREF(__pyx_t_5);
-          __pyx_r = ((PyObject*)__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;
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          goto __pyx_L34_except_return;
-        }
-        goto __pyx_L33_except_error;
-        __pyx_L33_except_error:;
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1927
- *                 ret = ResultSet(stat.ms_entries, KLEN)
- * 
- *                 try:             # <<<<<<<<<<<<<<
- *                     _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, &data_v, lmdb.MDB_FIRST))
- */
-        __Pyx_XGIVEREF(__pyx_t_11);
-        __Pyx_XGIVEREF(__pyx_t_12);
-        __Pyx_XGIVEREF(__pyx_t_13);
-        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
-        goto __pyx_L6_error;
-        __pyx_L34_except_return:;
-        __Pyx_XGIVEREF(__pyx_t_11);
-        __Pyx_XGIVEREF(__pyx_t_12);
-        __Pyx_XGIVEREF(__pyx_t_13);
-        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
-        goto __pyx_L5_return;
-        __pyx_L36_try_end:;
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1933
- *                     return tuple()
- * 
- *                 while True:             # <<<<<<<<<<<<<<
- *                     memcpy(
- *                         ret.data + ret.itemsize * i, key_v.mv_data, KLEN)
- */
-      while (1) {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1934
- * 
- *                 while True:
- *                     memcpy(             # <<<<<<<<<<<<<<
- *                         ret.data + ret.itemsize * i, key_v.mv_data, KLEN)
- *                     try:
- */
-        (void)(memcpy((__pyx_v_ret->data + (__pyx_v_ret->itemsize * __pyx_v_i)), __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data, 5));
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1936
- *                     memcpy(
- *                         ret.data + ret.itemsize * i, key_v.mv_data, KLEN)
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, NULL, lmdb.MDB_NEXT))
- */
-        {
-          __Pyx_PyThreadState_declare
-          __Pyx_PyThreadState_assign
-          __Pyx_ExceptionSave(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
-          __Pyx_XGOTREF(__pyx_t_13);
-          __Pyx_XGOTREF(__pyx_t_12);
-          __Pyx_XGOTREF(__pyx_t_11);
-          /*try:*/ {
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1937
- *                         ret.data + ret.itemsize * i, key_v.mv_data, KLEN)
- *                     try:
- *                         _check(lmdb.mdb_cursor_get(             # <<<<<<<<<<<<<<
- *                             cur, &key_v, NULL, lmdb.MDB_NEXT))
- *                     except KeyNotFoundError:
- */
-            __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_cur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), NULL, MDB_NEXT), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1937, __pyx_L41_error)
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1936
- *                     memcpy(
- *                         ret.data + ret.itemsize * i, key_v.mv_data, KLEN)
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, NULL, lmdb.MDB_NEXT))
- */
-          }
-          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-          goto __pyx_L48_try_end;
-          __pyx_L41_error:;
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1939
- *                         _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, NULL, lmdb.MDB_NEXT))
- *                     except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *                         break
- * 
- */
-          __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
-          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1939, __pyx_L43_except_error)
-          __Pyx_GOTREF(__pyx_t_5);
-          __pyx_t_14 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_5);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-          __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
-          if (__pyx_t_14) {
-            __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.all_contexts", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 1939, __pyx_L43_except_error)
-            __Pyx_GOTREF(__pyx_t_3);
-            __Pyx_GOTREF(__pyx_t_2);
-            __Pyx_GOTREF(__pyx_t_1);
-
-            /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1940
- *                             cur, &key_v, NULL, lmdb.MDB_NEXT))
- *                     except KeyNotFoundError:
- *                         break             # <<<<<<<<<<<<<<
- * 
- *                     i += 1
- */
-            goto __pyx_L49_except_break;
-            __pyx_L49_except_break:;
-            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            goto __pyx_L46_try_break;
-          }
-          goto __pyx_L43_except_error;
-          __pyx_L43_except_error:;
-
-          /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1936
- *                     memcpy(
- *                         ret.data + ret.itemsize * i, key_v.mv_data, KLEN)
- *                     try:             # <<<<<<<<<<<<<<
- *                         _check(lmdb.mdb_cursor_get(
- *                             cur, &key_v, NULL, lmdb.MDB_NEXT))
- */
-          __Pyx_XGIVEREF(__pyx_t_13);
-          __Pyx_XGIVEREF(__pyx_t_12);
-          __Pyx_XGIVEREF(__pyx_t_11);
-          __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
-          goto __pyx_L6_error;
-          __pyx_L46_try_break:;
-          __Pyx_XGIVEREF(__pyx_t_13);
-          __Pyx_XGIVEREF(__pyx_t_12);
-          __Pyx_XGIVEREF(__pyx_t_11);
-          __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
-          goto __pyx_L40_break;
-          __pyx_L48_try_end:;
-        }
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1942
- *                         break
- * 
- *                     i += 1             # <<<<<<<<<<<<<<
- * 
- *             return ret.to_tuple()
- */
-        __pyx_v_i = (__pyx_v_i + 1);
-      }
-      __pyx_L40_break:;
-    }
-    __pyx_L8:;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1944
- *                     i += 1
- * 
- *             return ret.to_tuple()             # <<<<<<<<<<<<<<
- * 
- *         finally:
- */
-    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_ret), __pyx_n_s_to_tuple); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1944, __pyx_L6_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __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, 1944, __pyx_L6_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, 1944, __pyx_L6_error)
-    }
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1944, __pyx_L6_error)
-    __pyx_r = ((PyObject*)__pyx_t_1);
-    __pyx_t_1 = 0;
-    goto __pyx_L5_return;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1948
- *         finally:
- *             #pass
- *             self._cur_close(cur)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  /*finally:*/ {
-    __pyx_L6_error:;
-    /*exception exit:*/{
-      __Pyx_PyThreadState_declare
-      __Pyx_PyThreadState_assign
-      __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
-      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
-      __Pyx_XGOTREF(__pyx_t_11);
-      __Pyx_XGOTREF(__pyx_t_12);
-      __Pyx_XGOTREF(__pyx_t_13);
-      __Pyx_XGOTREF(__pyx_t_17);
-      __Pyx_XGOTREF(__pyx_t_18);
-      __Pyx_XGOTREF(__pyx_t_19);
-      __pyx_t_14 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
-      {
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_cur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1948, __pyx_L52_error)
-      }
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_17);
-        __Pyx_XGIVEREF(__pyx_t_18);
-        __Pyx_XGIVEREF(__pyx_t_19);
-        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
-      }
-      __Pyx_XGIVEREF(__pyx_t_11);
-      __Pyx_XGIVEREF(__pyx_t_12);
-      __Pyx_XGIVEREF(__pyx_t_13);
-      __Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
-      __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
-      __pyx_lineno = __pyx_t_14; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
-      goto __pyx_L1_error;
-      __pyx_L52_error:;
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_17);
-        __Pyx_XGIVEREF(__pyx_t_18);
-        __Pyx_XGIVEREF(__pyx_t_19);
-        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
-      }
-      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
-      goto __pyx_L1_error;
-    }
-    __pyx_L5_return: {
-      __pyx_t_20 = __pyx_r;
-      __pyx_r = 0;
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_cur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1948, __pyx_L1_error)
-      __pyx_r = __pyx_t_20;
-      __pyx_t_20 = 0;
-      goto __pyx_L0;
-    }
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1882
- * 
- * 
- *     cpdef tuple all_contexts(self, triple=None):             # <<<<<<<<<<<<<<
- *         """
- *         Get a list of all contexts.
- */
-
-  /* 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("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.all_contexts", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_ret);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_30all_contexts(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_29all_contexts[] = "\n        Get a list of all contexts.\n\n        :rtype: Iterator(rdflib.Graph)\n        ";
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_30all_contexts(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_triple = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("all_contexts (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_triple,0};
-    PyObject* values[1] = {0};
-    values[0] = ((PyObject *)Py_None);
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        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 (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_triple);
-          if (value) { values[0] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "all_contexts") < 0)) __PYX_ERR(0, 1882, __pyx_L3_error)
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_triple = values[0];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("all_contexts", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1882, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.all_contexts", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_29all_contexts(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self), __pyx_v_triple);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_29all_contexts(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_triple) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_all_contexts __pyx_t_2;
-  __Pyx_RefNannySetupContext("all_contexts", 0);
-  __Pyx_TraceCall("all_contexts (wrapper)", __pyx_f[0], 1882, 0, __PYX_ERR(0, 1882, __pyx_L1_error));
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2.__pyx_n = 1;
-  __pyx_t_2.triple = __pyx_v_triple;
-  __pyx_t_1 = __pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore->all_contexts(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1882, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.all_contexts", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1953
- *     # Key conversion methods.
- * 
- *     cdef object from_key(self, Key key):             # <<<<<<<<<<<<<<
- *         """
- *         Convert a single or multiple key into one or more terms.
- */
-
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_from_key(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char *__pyx_v_key) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  MDB_dbi __pyx_t_1;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check __pyx_t_8;
-  __Pyx_RefNannySetupContext("from_key", 0);
-  __Pyx_TraceCall("from_key", __pyx_f[0], 1953, 0, __PYX_ERR(0, 1953, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1962
- *             unsigned char *pk
- * 
- *         key_v.mv_data = key             # <<<<<<<<<<<<<<
- *         key_v.mv_size = KLEN
- * 
- */
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data = __pyx_v_key;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1963
- * 
- *         key_v.mv_data = key
- *         key_v.mv_size = KLEN             # <<<<<<<<<<<<<<
- * 
- *         _check(
- */
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_size = 5;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1966
- * 
- *         _check(
- *                 lmdb.mdb_get(self.txn, self.get_dbi('t:st'), &key_v, &data_v),             # <<<<<<<<<<<<<<
- *                 'Error getting data for key \'{}\'.'.format(key))
- * 
- */
-  __pyx_t_2.__pyx_n = 1;
-  __pyx_t_2.dblabel = ((unsigned char *)((char const *)"t:st"));
-  __pyx_t_1 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.get_dbi(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_2); 
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1967
- *         _check(
- *                 lmdb.mdb_get(self.txn, self.get_dbi('t:st'), &key_v, &data_v),
- *                 'Error getting data for key \'{}\'.'.format(key))             # <<<<<<<<<<<<<<
- * 
- *         return deserialize(
- */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Error_getting_data_for_key, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1967, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyBytes_FromCString(__pyx_v_key); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1967, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
-    if (likely(__pyx_t_6)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-      __Pyx_INCREF(__pyx_t_6);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_4, function);
-    }
-  }
-  if (!__pyx_t_6) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1967, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_GOTREF(__pyx_t_3);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_4)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
-      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1967, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
-      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1967, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1967, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
-      __Pyx_GIVEREF(__pyx_t_5);
-      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
-      __pyx_t_5 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1967, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 1967, __pyx_L1_error)
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1965
- *         key_v.mv_size = KLEN
- * 
- *         _check(             # <<<<<<<<<<<<<<
- *                 lmdb.mdb_get(self.txn, self.get_dbi('t:st'), &key_v, &data_v),
- *                 'Error getting data for key \'{}\'.'.format(key))
- */
-  __pyx_t_8.__pyx_n = 1;
-  __pyx_t_8.message = ((PyObject*)__pyx_t_3);
-  __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_get(__pyx_v_self->__pyx_base.txn, __pyx_t_1, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v)), &__pyx_t_8); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1965, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1969
- *                 'Error getting data for key \'{}\'.'.format(key))
- * 
- *         return deserialize(             # <<<<<<<<<<<<<<
- *                 <unsigned char *>data_v.mv_data, data_v.mv_size)
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1970
- * 
- *         return deserialize(
- *                 <unsigned char *>data_v.mv_data, data_v.mv_size)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_3 = __pyx_f_12lakesuperior_5store_6ldp_rs_4term_deserialize(((unsigned char *)__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_data), __pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1969, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1953
- *     # Key conversion methods.
- * 
- *     cdef object from_key(self, Key key):             # <<<<<<<<<<<<<<
- *         """
- *         Convert a single or multiple key into one or more terms.
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.from_key", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1973
- * 
- * 
- *     cdef tuple from_trp_key(self, TripleKey key):             # <<<<<<<<<<<<<<
- *         """
- *         Convert a single or multiple key into one or more terms.
- */
-
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_from_trp_key(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char *__pyx_v_key) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  __Pyx_RefNannySetupContext("from_trp_key", 0);
-  __Pyx_TraceCall("from_trp_key", __pyx_f[0], 1973, 0, __PYX_ERR(0, 1973, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1980
- *         """
- *         #logger.debug(f'From triple key: {key[: TRP_KLEN]}')
- *         return (             # <<<<<<<<<<<<<<
- *                 self.from_key(key),
- *                 self.from_key(key + KLEN),
- */
-  __Pyx_XDECREF(__pyx_r);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1981
- *         #logger.debug(f'From triple key: {key[: TRP_KLEN]}')
- *         return (
- *                 self.from_key(key),             # <<<<<<<<<<<<<<
- *                 self.from_key(key + KLEN),
- *                 self.from_key(key + DBL_KLEN))
- */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->from_key(__pyx_v_self, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1981, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1982
- *         return (
- *                 self.from_key(key),
- *                 self.from_key(key + KLEN),             # <<<<<<<<<<<<<<
- *                 self.from_key(key + DBL_KLEN))
- * 
- */
-  __pyx_t_2 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->from_key(__pyx_v_self, (__pyx_v_key + 5)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1982, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1983
- *                 self.from_key(key),
- *                 self.from_key(key + KLEN),
- *                 self.from_key(key + DBL_KLEN))             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_3 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->from_key(__pyx_v_self, (__pyx_v_key + 10)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1983, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1981
- *         #logger.debug(f'From triple key: {key[: TRP_KLEN]}')
- *         return (
- *                 self.from_key(key),             # <<<<<<<<<<<<<<
- *                 self.from_key(key + KLEN),
- *                 self.from_key(key + DBL_KLEN))
- */
-  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1981, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_3);
-  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
-  __pyx_t_1 = 0;
-  __pyx_t_2 = 0;
-  __pyx_t_3 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_4);
-  __pyx_t_4 = 0;
-  goto __pyx_L0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1973
- * 
- * 
- *     cdef tuple from_trp_key(self, TripleKey key):             # <<<<<<<<<<<<<<
- *         """
- *         Convert a single or multiple key into one or more terms.
- */
-
-  /* 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_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.from_trp_key", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1986
- * 
- * 
- *     cdef inline void _to_key(self, term, Key *key) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Convert a triple, quad or term into a key.
- */
-
-static CYTHON_INLINE void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_key(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_term, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key *__pyx_v_key) {
-  unsigned char *__pyx_v_pk_t;
-  size_t __pyx_v_term_size;
-  __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Hash __pyx_v_thash;
-  MDB_dbi __pyx_v_dbi;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  MDB_dbi __pyx_t_2;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  __Pyx_RefNannySetupContext("_to_key", 0);
-  __Pyx_TraceCall("_to_key", __pyx_f[0], 1986, 0, __PYX_ERR(0, 1986, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2003
- *             Hash thash
- * 
- *         serialize(term, &pk_t, &term_size)             # <<<<<<<<<<<<<<
- *         #logger.debug('Hashing pickle: {} with lentgh: {}'.format(pk_t, term_size))
- *         _hash(pk_t, term_size, thash)
- */
-  __pyx_t_1 = __pyx_f_12lakesuperior_5store_6ldp_rs_4term_serialize(__pyx_v_term, (&__pyx_v_pk_t), (&__pyx_v_term_size)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2003, __pyx_L1_error)
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2005
- *         serialize(term, &pk_t, &term_size)
- *         #logger.debug('Hashing pickle: {} with lentgh: {}'.format(pk_t, term_size))
- *         _hash(pk_t, term_size, thash)             # <<<<<<<<<<<<<<
- *         free(pk_t)
- *         #logger.debug('Hash to search for: {}'.format(thash[: HLEN]))
- */
-  __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore__hash(__pyx_v_pk_t, __pyx_v_term_size, __pyx_v_thash);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2006
- *         #logger.debug('Hashing pickle: {} with lentgh: {}'.format(pk_t, term_size))
- *         _hash(pk_t, term_size, thash)
- *         free(pk_t)             # <<<<<<<<<<<<<<
- *         #logger.debug('Hash to search for: {}'.format(thash[: HLEN]))
- *         key_v.mv_data = &thash
- */
-  free(__pyx_v_pk_t);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2008
- *         free(pk_t)
- *         #logger.debug('Hash to search for: {}'.format(thash[: HLEN]))
- *         key_v.mv_data = &thash             # <<<<<<<<<<<<<<
- *         key_v.mv_size = HLEN
- * 
- */
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data = (&__pyx_v_thash);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2009
- *         #logger.debug('Hash to search for: {}'.format(thash[: HLEN]))
- *         key_v.mv_data = &thash
- *         key_v.mv_size = HLEN             # <<<<<<<<<<<<<<
- * 
- *         dbi = self.get_dbi('th:t')
- */
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_size = 20;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2011
- *         key_v.mv_size = HLEN
- * 
- *         dbi = self.get_dbi('th:t')             # <<<<<<<<<<<<<<
- *         logger.debug(f'DBI: {dbi}')
- *         _check(lmdb.mdb_get(self.txn, dbi, &key_v, &data_v))
- */
-  __pyx_t_3.__pyx_n = 1;
-  __pyx_t_3.dblabel = ((unsigned char *)((char const *)"th:t"));
-  __pyx_t_2 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.get_dbi(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_3); 
-  __pyx_v_dbi = __pyx_t_2;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2012
- * 
- *         dbi = self.get_dbi('th:t')
- *         logger.debug(f'DBI: {dbi}')             # <<<<<<<<<<<<<<
- *         _check(lmdb.mdb_get(self.txn, dbi, &key_v, &data_v))
- *         #logger.debug('Found key: {}'.format((<Key>data_v.mv_data)[: KLEN]))
- */
-  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2012, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_debug); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2012, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyInt_From_MDB_dbi(__pyx_v_dbi); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2012, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2012, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_kp_u_DBI, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2012, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
-    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
-    if (likely(__pyx_t_7)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-      __Pyx_INCREF(__pyx_t_7);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_6, function);
-    }
-  }
-  if (!__pyx_t_7) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2012, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5};
-      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2012, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5};
-      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2012, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2012, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_8);
-      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
-      __Pyx_GIVEREF(__pyx_t_5);
-      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
-      __pyx_t_5 = 0;
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2012, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2013
- *         dbi = self.get_dbi('th:t')
- *         logger.debug(f'DBI: {dbi}')
- *         _check(lmdb.mdb_get(self.txn, dbi, &key_v, &data_v))             # <<<<<<<<<<<<<<
- *         #logger.debug('Found key: {}'.format((<Key>data_v.mv_data)[: KLEN]))
- * 
- */
-  __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_get(__pyx_v_self->__pyx_base.txn, __pyx_v_dbi, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v)), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2013, __pyx_L1_error)
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2016
- *         #logger.debug('Found key: {}'.format((<Key>data_v.mv_data)[: KLEN]))
- * 
- *         key[0] = <Key>data_v.mv_data             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  memcpy(&((__pyx_v_key[0])[0]), ((unsigned char *)__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_data), sizeof((__pyx_v_key[0])[0]) * (5));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1986
- * 
- * 
- *     cdef inline void _to_key(self, term, Key *key) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Convert a triple, quad or term into a key.
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._to_key", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2019
- * 
- * 
- *     cdef inline void _to_triple_key(self, tuple terms, TripleKey *tkey) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Convert a tuple of 3 terms into a triple key.
- */
-
-static CYTHON_INLINE void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_triple_key(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, PyObject *__pyx_v_terms, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_TripleKey *__pyx_v_tkey) {
-  char __pyx_v_i;
-  __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key __pyx_v_key;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  PyObject *__pyx_t_2 = NULL;
-  __Pyx_RefNannySetupContext("_to_triple_key", 0);
-  __Pyx_TraceCall("_to_triple_key", __pyx_f[0], 2019, 0, __PYX_ERR(0, 2019, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2024
- *         """
- *         cdef:
- *             char i = 0             # <<<<<<<<<<<<<<
- *             Key key
- * 
- */
-  __pyx_v_i = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2027
- *             Key key
- * 
- *         while  i < 3:             # <<<<<<<<<<<<<<
- *             self._to_key(terms[i], &key)
- *             memcpy(tkey[0] + (KLEN * i), key, KLEN)
- */
-  while (1) {
-    __pyx_t_1 = ((__pyx_v_i < 3) != 0);
-    if (!__pyx_t_1) break;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2028
- * 
- *         while  i < 3:
- *             self._to_key(terms[i], &key)             # <<<<<<<<<<<<<<
- *             memcpy(tkey[0] + (KLEN * i), key, KLEN)
- *             if key is NULL:
- */
-    if (unlikely(__pyx_v_terms == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 2028, __pyx_L1_error)
-    }
-    __pyx_t_2 = PyTuple_GET_ITEM(__pyx_v_terms, __pyx_v_i);
-    __Pyx_INCREF(__pyx_t_2);
-    __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_key(__pyx_v_self, __pyx_t_2, (&__pyx_v_key)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2028, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2029
- *         while  i < 3:
- *             self._to_key(terms[i], &key)
- *             memcpy(tkey[0] + (KLEN * i), key, KLEN)             # <<<<<<<<<<<<<<
- *             if key is NULL:
- *                 # A term in the triple is not found.
- */
-    (void)(memcpy(((__pyx_v_tkey[0]) + (5 * __pyx_v_i)), __pyx_v_key, 5));
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2030
- *             self._to_key(terms[i], &key)
- *             memcpy(tkey[0] + (KLEN * i), key, KLEN)
- *             if key is NULL:             # <<<<<<<<<<<<<<
- *                 # A term in the triple is not found.
- *                 tkey = NULL
- */
-    __pyx_t_1 = ((__pyx_v_key == NULL) != 0);
-    if (__pyx_t_1) {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2032
- *             if key is NULL:
- *                 # A term in the triple is not found.
- *                 tkey = NULL             # <<<<<<<<<<<<<<
- *                 return
- *             i += 1
- */
-      __pyx_v_tkey = NULL;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2033
- *                 # A term in the triple is not found.
- *                 tkey = NULL
- *                 return             # <<<<<<<<<<<<<<
- *             i += 1
- * 
- */
-      goto __pyx_L0;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2030
- *             self._to_key(terms[i], &key)
- *             memcpy(tkey[0] + (KLEN * i), key, KLEN)
- *             if key is NULL:             # <<<<<<<<<<<<<<
- *                 # A term in the triple is not found.
- *                 tkey = NULL
- */
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2034
- *                 tkey = NULL
- *                 return
- *             i += 1             # <<<<<<<<<<<<<<
- * 
- * 
- */
-    __pyx_v_i = (__pyx_v_i + 1);
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2019
- * 
- * 
- *     cdef inline void _to_triple_key(self, tuple terms, TripleKey *tkey) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Convert a tuple of 3 terms into a triple key.
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._to_triple_key", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2037
- * 
- * 
- *     cdef void _append(             # <<<<<<<<<<<<<<
- *             self, unsigned char *value, size_t vlen, Key *nkey,
- *             unsigned char *dblabel=b'', lmdb.MDB_txn *txn=NULL,
- */
-
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__append(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char *__pyx_v_value, size_t __pyx_v_vlen, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key *__pyx_v_nkey, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__append *__pyx_optional_args) {
-  unsigned char *__pyx_v_dblabel = __pyx_k__30;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2039
- *     cdef void _append(
- *             self, unsigned char *value, size_t vlen, Key *nkey,
- *             unsigned char *dblabel=b'', lmdb.MDB_txn *txn=NULL,             # <<<<<<<<<<<<<<
- *             unsigned int flags=0) except *:
- *         """
- */
-  MDB_txn *__pyx_v_txn = ((MDB_txn *)NULL);
-  unsigned int __pyx_v_flags = ((unsigned int)0);
-  unsigned char __pyx_v_key[5];
-  MDB_cursor *__pyx_v_cur;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  MDB_txn *__pyx_t_2;
-  MDB_cursor *__pyx_t_3;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore__cur_open __pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  PyObject *__pyx_t_10 = NULL;
-  PyObject *__pyx_t_11 = NULL;
-  int __pyx_t_12;
-  int __pyx_t_13;
-  char const *__pyx_t_14;
-  PyObject *__pyx_t_15 = NULL;
-  PyObject *__pyx_t_16 = NULL;
-  PyObject *__pyx_t_17 = NULL;
-  MDB_dbi __pyx_t_18;
-  struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store_13BaseLmdbStore_get_dbi __pyx_t_19;
-  __Pyx_RefNannySetupContext("_append", 0);
-  __Pyx_TraceCall("_append", __pyx_f[0], 2037, 0, __PYX_ERR(0, 2037, __pyx_L1_error));
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_dblabel = __pyx_optional_args->dblabel;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_txn = __pyx_optional_args->txn;
-        if (__pyx_optional_args->__pyx_n > 2) {
-          __pyx_v_flags = __pyx_optional_args->flags;
-        }
-      }
-    }
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2054
- *             lmdb.MDB_cursor *cur
- * 
- *         if txn is NULL:             # <<<<<<<<<<<<<<
- *             txn = self.txn
- * 
- */
-  __pyx_t_1 = ((__pyx_v_txn == NULL) != 0);
-  if (__pyx_t_1) {
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2055
- * 
- *         if txn is NULL:
- *             txn = self.txn             # <<<<<<<<<<<<<<
- * 
- *         cur = self._cur_open(dblabel, txn=txn)
- */
-    __pyx_t_2 = __pyx_v_self->__pyx_base.txn;
-    __pyx_v_txn = __pyx_t_2;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2054
- *             lmdb.MDB_cursor *cur
- * 
- *         if txn is NULL:             # <<<<<<<<<<<<<<
- *             txn = self.txn
- * 
- */
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2057
- *             txn = self.txn
- * 
- *         cur = self._cur_open(dblabel, txn=txn)             # <<<<<<<<<<<<<<
- * 
- *         try:
- */
-  __pyx_t_4.__pyx_n = 2;
-  __pyx_t_4.dblabel = __pyx_v_dblabel;
-  __pyx_t_4.txn = __pyx_v_txn;
-  __pyx_t_3 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_open(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2057, __pyx_L1_error)
-  __pyx_v_cur = __pyx_t_3;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2059
- *         cur = self._cur_open(dblabel, txn=txn)
- * 
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_cursor_get(cur, &key_v, NULL, lmdb.MDB_LAST))
- *         except KeyNotFoundError:
- */
-  /*try:*/ {
-    {
-      __Pyx_PyThreadState_declare
-      __Pyx_PyThreadState_assign
-      __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
-      __Pyx_XGOTREF(__pyx_t_5);
-      __Pyx_XGOTREF(__pyx_t_6);
-      __Pyx_XGOTREF(__pyx_t_7);
-      /*try:*/ {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2060
- * 
- *         try:
- *             _check(lmdb.mdb_cursor_get(cur, &key_v, NULL, lmdb.MDB_LAST))             # <<<<<<<<<<<<<<
- *         except KeyNotFoundError:
- *             memcpy(nkey[0], first_key, KLEN)
- */
-        __pyx_f_12lakesuperior_5store_15base_lmdb_store__check(mdb_cursor_get(__pyx_v_cur, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), NULL, MDB_LAST), NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2060, __pyx_L7_error)
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2059
- *         cur = self._cur_open(dblabel, txn=txn)
- * 
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_cursor_get(cur, &key_v, NULL, lmdb.MDB_LAST))
- *         except KeyNotFoundError:
- */
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2064
- *             memcpy(nkey[0], first_key, KLEN)
- *         else:
- *             memcpy(key, key_v.mv_data, KLEN)             # <<<<<<<<<<<<<<
- *             self._next_key(key, nkey)
- *         finally:
- */
-      /*else:*/ {
-        (void)(memcpy(__pyx_v_key, __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data, 5));
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2065
- *         else:
- *             memcpy(key, key_v.mv_data, KLEN)
- *             self._next_key(key, nkey)             # <<<<<<<<<<<<<<
- *         finally:
- *             #pass
- */
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->_next_key(__pyx_v_self, __pyx_v_key, __pyx_v_nkey); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2065, __pyx_L9_except_error)
-      }
-      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      goto __pyx_L12_try_end;
-      __pyx_L7_error:;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2061
- *         try:
- *             _check(lmdb.mdb_cursor_get(cur, &key_v, NULL, lmdb.MDB_LAST))
- *         except KeyNotFoundError:             # <<<<<<<<<<<<<<
- *             memcpy(nkey[0], first_key, KLEN)
- *         else:
- */
-      __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2061, __pyx_L9_except_error)
-      __Pyx_GOTREF(__pyx_t_11);
-      __pyx_t_12 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_8, __pyx_t_11);
-      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-      __Pyx_ErrRestore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0;
-      if (__pyx_t_12) {
-        __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._append", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8) < 0) __PYX_ERR(0, 2061, __pyx_L9_except_error)
-        __Pyx_GOTREF(__pyx_t_10);
-        __Pyx_GOTREF(__pyx_t_9);
-        __Pyx_GOTREF(__pyx_t_8);
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2062
- *             _check(lmdb.mdb_cursor_get(cur, &key_v, NULL, lmdb.MDB_LAST))
- *         except KeyNotFoundError:
- *             memcpy(nkey[0], first_key, KLEN)             # <<<<<<<<<<<<<<
- *         else:
- *             memcpy(key, key_v.mv_data, KLEN)
- */
-        (void)(memcpy((__pyx_v_nkey[0]), __pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_first_key, 5));
-        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-        goto __pyx_L8_exception_handled;
-      }
-      goto __pyx_L9_except_error;
-      __pyx_L9_except_error:;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2059
- *         cur = self._cur_open(dblabel, txn=txn)
- * 
- *         try:             # <<<<<<<<<<<<<<
- *             _check(lmdb.mdb_cursor_get(cur, &key_v, NULL, lmdb.MDB_LAST))
- *         except KeyNotFoundError:
- */
-      __Pyx_XGIVEREF(__pyx_t_5);
-      __Pyx_XGIVEREF(__pyx_t_6);
-      __Pyx_XGIVEREF(__pyx_t_7);
-      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
-      goto __pyx_L5_error;
-      __pyx_L8_exception_handled:;
-      __Pyx_XGIVEREF(__pyx_t_5);
-      __Pyx_XGIVEREF(__pyx_t_6);
-      __Pyx_XGIVEREF(__pyx_t_7);
-      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
-      __pyx_L12_try_end:;
-    }
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2068
- *         finally:
- *             #pass
- *             self._cur_close(cur)             # <<<<<<<<<<<<<<
- * 
- *         key_v.mv_data = nkey
- */
-  /*finally:*/ {
-    /*normal exit:*/{
-      ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_cur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2068, __pyx_L1_error)
-      goto __pyx_L6;
-    }
-    __pyx_L5_error:;
-    /*exception exit:*/{
-      __Pyx_PyThreadState_declare
-      __Pyx_PyThreadState_assign
-      __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
-      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
-      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
-      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5);
-      __Pyx_XGOTREF(__pyx_t_7);
-      __Pyx_XGOTREF(__pyx_t_6);
-      __Pyx_XGOTREF(__pyx_t_5);
-      __Pyx_XGOTREF(__pyx_t_15);
-      __Pyx_XGOTREF(__pyx_t_16);
-      __Pyx_XGOTREF(__pyx_t_17);
-      __pyx_t_12 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
-      {
-        ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cur_close(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), __pyx_v_cur); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2068, __pyx_L16_error)
-      }
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_15);
-        __Pyx_XGIVEREF(__pyx_t_16);
-        __Pyx_XGIVEREF(__pyx_t_17);
-        __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
-      }
-      __Pyx_XGIVEREF(__pyx_t_7);
-      __Pyx_XGIVEREF(__pyx_t_6);
-      __Pyx_XGIVEREF(__pyx_t_5);
-      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_6, __pyx_t_5);
-      __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
-      __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
-      goto __pyx_L1_error;
-      __pyx_L16_error:;
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_15);
-        __Pyx_XGIVEREF(__pyx_t_16);
-        __Pyx_XGIVEREF(__pyx_t_17);
-        __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
-      }
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
-      goto __pyx_L1_error;
-    }
-    __pyx_L6:;
-  }
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2070
- *             self._cur_close(cur)
- * 
- *         key_v.mv_data = nkey             # <<<<<<<<<<<<<<
- *         key_v.mv_size = KLEN
- *         data_v.mv_data = value
- */
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_data = __pyx_v_nkey;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2071
- * 
- *         key_v.mv_data = nkey
- *         key_v.mv_size = KLEN             # <<<<<<<<<<<<<<
- *         data_v.mv_data = value
- *         data_v.mv_size = vlen
- */
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v.mv_size = 5;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2072
- *         key_v.mv_data = nkey
- *         key_v.mv_size = KLEN
- *         data_v.mv_data = value             # <<<<<<<<<<<<<<
- *         data_v.mv_size = vlen
- *         #logger.debug('Appending value {} to db {} with key: {}'.format(
- */
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_data = __pyx_v_value;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2073
- *         key_v.mv_size = KLEN
- *         data_v.mv_data = value
- *         data_v.mv_size = vlen             # <<<<<<<<<<<<<<
- *         #logger.debug('Appending value {} to db {} with key: {}'.format(
- *         #    value[: vlen], dblabel.decode(), nkey[0][:KLEN]))
- */
-  __pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v.mv_size = __pyx_v_vlen;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2078
- *         #logger.debug('data size: {}'.format(data_v.mv_size))
- *         lmdb.mdb_put(
- *                 txn, self.get_dbi(dblabel), &key_v, &data_v,             # <<<<<<<<<<<<<<
- *                 flags | lmdb.MDB_APPEND)
- * 
- */
-  __pyx_t_19.__pyx_n = 1;
-  __pyx_t_19.dblabel = __pyx_v_dblabel;
-  __pyx_t_18 = ((struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.get_dbi(((struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *)__pyx_v_self), &__pyx_t_19); 
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2077
- *         #    value[: vlen], dblabel.decode(), nkey[0][:KLEN]))
- *         #logger.debug('data size: {}'.format(data_v.mv_size))
- *         lmdb.mdb_put(             # <<<<<<<<<<<<<<
- *                 txn, self.get_dbi(dblabel), &key_v, &data_v,
- *                 flags | lmdb.MDB_APPEND)
- */
-  (void)(mdb_put(__pyx_v_txn, __pyx_t_18, (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_key_v), (&__pyx_v_12lakesuperior_5store_15base_lmdb_store_data_v), (__pyx_v_flags | MDB_APPEND)));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2037
- * 
- * 
- *     cdef void _append(             # <<<<<<<<<<<<<<
- *             self, unsigned char *value, size_t vlen, Key *nkey,
- *             unsigned char *dblabel=b'', lmdb.MDB_txn *txn=NULL,
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_XDECREF(__pyx_t_10);
-  __Pyx_XDECREF(__pyx_t_11);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._append", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2082
- * 
- * 
- *     cdef void _next_key(self, const Key key, Key *nkey) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Calculate the next closest byte sequence in lexicographical order.
- */
-
-static void __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__next_key(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, unsigned char *__pyx_v_key, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key *__pyx_v_nkey) {
-  size_t __pyx_v_i;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  long __pyx_t_2;
-  size_t __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  __Pyx_RefNannySetupContext("_next_key", 0);
-  __Pyx_TraceCall("_next_key", __pyx_f[0], 2082, 0, __PYX_ERR(0, 2082, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2097
- *         """
- *         cdef:
- *             size_t i = KLEN             # <<<<<<<<<<<<<<
- * 
- *         memcpy(nkey[0], key, KLEN)
- */
-  __pyx_v_i = 5;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2099
- *             size_t i = KLEN
- * 
- *         memcpy(nkey[0], key, KLEN)             # <<<<<<<<<<<<<<
- * 
- *         #logger.debug('Last key in _next_key: {}'.format(key[0]))
- */
-  (void)(memcpy((__pyx_v_nkey[0]), __pyx_v_key, 5));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2102
- * 
- *         #logger.debug('Last key in _next_key: {}'.format(key[0]))
- *         while i > 0:             # <<<<<<<<<<<<<<
- *             i -= 1
- *             if nkey[0][i] < 255:
- */
-  while (1) {
-    __pyx_t_1 = ((__pyx_v_i > 0) != 0);
-    if (!__pyx_t_1) break;
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2103
- *         #logger.debug('Last key in _next_key: {}'.format(key[0]))
- *         while i > 0:
- *             i -= 1             # <<<<<<<<<<<<<<
- *             if nkey[0][i] < 255:
- *                 nkey[0][i] += 1
- */
-    __pyx_v_i = (__pyx_v_i - 1);
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2104
- *         while i > 0:
- *             i -= 1
- *             if nkey[0][i] < 255:             # <<<<<<<<<<<<<<
- *                 nkey[0][i] += 1
- *                 break
- */
-    __pyx_t_1 = ((((__pyx_v_nkey[0])[__pyx_v_i]) < 0xFF) != 0);
-    if (__pyx_t_1) {
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2105
- *             i -= 1
- *             if nkey[0][i] < 255:
- *                 nkey[0][i] += 1             # <<<<<<<<<<<<<<
- *                 break
- *             # If the value exceeds 255, i.e. the current value is the last one
- */
-      __pyx_t_2 = 0;
-      __pyx_t_3 = __pyx_v_i;
-      ((__pyx_v_nkey[__pyx_t_2])[__pyx_t_3]) = (((__pyx_v_nkey[__pyx_t_2])[__pyx_t_3]) + 1);
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2106
- *             if nkey[0][i] < 255:
- *                 nkey[0][i] += 1
- *                 break             # <<<<<<<<<<<<<<
- *             # If the value exceeds 255, i.e. the current value is the last one
- *             else:
- */
-      goto __pyx_L4_break;
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2104
- *         while i > 0:
- *             i -= 1
- *             if nkey[0][i] < 255:             # <<<<<<<<<<<<<<
- *                 nkey[0][i] += 1
- *                 break
- */
-    }
-
-    /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2111
- *                 # If we are already at the leftmost byte, and this is already
- *                 # at 255, the sequence is exhausted.
- *                 if i == 0:             # <<<<<<<<<<<<<<
- *                     raise RuntimeError(
- *                             'BAD DAY: Sequence exhausted. No more '
- */
-    /*else*/ {
-      __pyx_t_1 = ((__pyx_v_i == 0) != 0);
-      if (unlikely(__pyx_t_1)) {
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2112
- *                 # at 255, the sequence is exhausted.
- *                 if i == 0:
- *                     raise RuntimeError(             # <<<<<<<<<<<<<<
- *                             'BAD DAY: Sequence exhausted. No more '
- *                             'combinations are possible.')
- */
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2112, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __Pyx_Raise(__pyx_t_4, 0, 0, 0);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __PYX_ERR(0, 2112, __pyx_L1_error)
-
-        /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2111
- *                 # If we are already at the leftmost byte, and this is already
- *                 # at 255, the sequence is exhausted.
- *                 if i == 0:             # <<<<<<<<<<<<<<
- *                     raise RuntimeError(
- *                             'BAD DAY: Sequence exhausted. No more '
- */
-      }
-
-      /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2117
- *                 # Move one position up and try to increment that.
- *                 else:
- *                     nkey[0][i] = KEY_START             # <<<<<<<<<<<<<<
- *         #logger.debug('New key: {}'.format(nkey[0][:KLEN]))
- */
-      /*else*/ {
-        ((__pyx_v_nkey[0])[__pyx_v_i]) = '\x01';
-      }
-    }
-  }
-  __pyx_L4_break:;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2082
- * 
- * 
- *     cdef void _next_key(self, const Key key, Key *nkey) except *:             # <<<<<<<<<<<<<<
- *         """
- *         Calculate the next closest byte sequence in lexicographical order.
- */
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore._next_key", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "(tree fragment)":1
- * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- * def __setstate_cython__(self, __pyx_state):
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_32__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_32__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_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_31__reduce_cython__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_31__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__reduce_cython__", 0);
-  __Pyx_TraceCall("__reduce_cython__", __pyx_f[1], 1, 0, __PYX_ERR(1, 1, __pyx_L1_error));
-
-  /* "(tree fragment)":2
- * def __reduce_cython__(self):
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__32, 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.curs,self.dbenv,self.dbis,self.txn 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("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "(tree fragment)":3
- * def __reduce_cython__(self):
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_34__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_34__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_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_33__setstate_cython__(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_33__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("__setstate_cython__", 0);
-  __Pyx_TraceCall("__setstate_cython__", __pyx_f[1], 3, 0, __PYX_ERR(1, 3, __pyx_L1_error));
-
-  /* "(tree fragment)":4
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- * def __setstate_cython__(self, __pyx_state):
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
- */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__33, 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.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __pyx_unpickle_SimpleGraph(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
- *     if __pyx_checksum != 0x8d777f3:
- *         from pickle import PickleError as __pyx_PickleError
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3__pyx_unpickle_SimpleGraph(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3__pyx_unpickle_SimpleGraph = {"__pyx_unpickle_SimpleGraph", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3__pyx_unpickle_SimpleGraph, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3__pyx_unpickle_SimpleGraph(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v___pyx_type = 0;
-  long __pyx_v___pyx_checksum;
-  PyObject *__pyx_v___pyx_state = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__pyx_unpickle_SimpleGraph (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
-    PyObject* values[3] = {0,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  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] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SimpleGraph", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SimpleGraph", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_SimpleGraph") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-    }
-    __pyx_v___pyx_type = values[0];
-    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
-    __pyx_v___pyx_state = values[2];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SimpleGraph", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.__pyx_unpickle_SimpleGraph", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_2__pyx_unpickle_SimpleGraph(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_2__pyx_unpickle_SimpleGraph(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
-  PyObject *__pyx_v___pyx_PickleError = NULL;
-  PyObject *__pyx_v___pyx_result = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  int __pyx_t_7;
-  __Pyx_TraceFrameInit(__pyx_codeobj__34)
-  __Pyx_RefNannySetupContext("__pyx_unpickle_SimpleGraph", 0);
-  __Pyx_TraceCall("__pyx_unpickle_SimpleGraph", __pyx_f[1], 1, 0, __PYX_ERR(1, 1, __pyx_L1_error));
-
-  /* "(tree fragment)":2
- * def __pyx_unpickle_SimpleGraph(__pyx_type, long __pyx_checksum, __pyx_state):
- *     if __pyx_checksum != 0x8d777f3:             # <<<<<<<<<<<<<<
- *         from pickle import PickleError as __pyx_PickleError
- *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x8d777f3 = (data))" % __pyx_checksum)
- */
-  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x8d777f3) != 0);
-  if (__pyx_t_1) {
-
-    /* "(tree fragment)":3
- * def __pyx_unpickle_SimpleGraph(__pyx_type, long __pyx_checksum, __pyx_state):
- *     if __pyx_checksum != 0x8d777f3:
- *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
- *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x8d777f3 = (data))" % __pyx_checksum)
- *     __pyx_result = SimpleGraph.__new__(__pyx_type)
- */
-    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_INCREF(__pyx_n_s_PickleError);
-    __Pyx_GIVEREF(__pyx_n_s_PickleError);
-    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
-    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_INCREF(__pyx_t_2);
-    __pyx_v___pyx_PickleError = __pyx_t_2;
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-    /* "(tree fragment)":4
- *     if __pyx_checksum != 0x8d777f3:
- *         from pickle import PickleError as __pyx_PickleError
- *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x8d777f3 = (data))" % __pyx_checksum)             # <<<<<<<<<<<<<<
- *     __pyx_result = SimpleGraph.__new__(__pyx_type)
- *     if __pyx_state is not None:
- */
-    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x8d, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_INCREF(__pyx_v___pyx_PickleError);
-    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_2, function);
-      }
-    }
-    if (!__pyx_t_5) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_2)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
-        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
-        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __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(1, 4, __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_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(1, 4, __pyx_L1_error)
-
-    /* "(tree fragment)":2
- * def __pyx_unpickle_SimpleGraph(__pyx_type, long __pyx_checksum, __pyx_state):
- *     if __pyx_checksum != 0x8d777f3:             # <<<<<<<<<<<<<<
- *         from pickle import PickleError as __pyx_PickleError
- *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x8d777f3 = (data))" % __pyx_checksum)
- */
-  }
-
-  /* "(tree fragment)":5
- *         from pickle import PickleError as __pyx_PickleError
- *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x8d777f3 = (data))" % __pyx_checksum)
- *     __pyx_result = SimpleGraph.__new__(__pyx_type)             # <<<<<<<<<<<<<<
- *     if __pyx_state is not None:
- *         __pyx_unpickle_SimpleGraph__set_state(<SimpleGraph> __pyx_result, __pyx_state)
- */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_6 = NULL;
-  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);
-    }
-  }
-  if (!__pyx_t_6) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
-      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __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[2] = {__pyx_t_6, __pyx_v___pyx_type};
-      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-    } else
-    #endif
-    {
-      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
-      __Pyx_INCREF(__pyx_v___pyx_type);
-      __Pyx_GIVEREF(__pyx_v___pyx_type);
-      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_v___pyx_result = __pyx_t_3;
-  __pyx_t_3 = 0;
-
-  /* "(tree fragment)":6
- *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x8d777f3 = (data))" % __pyx_checksum)
- *     __pyx_result = SimpleGraph.__new__(__pyx_type)
- *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
- *         __pyx_unpickle_SimpleGraph__set_state(<SimpleGraph> __pyx_result, __pyx_state)
- *     return __pyx_result
- */
-  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
-  __pyx_t_7 = (__pyx_t_1 != 0);
-  if (__pyx_t_7) {
-
-    /* "(tree fragment)":7
- *     __pyx_result = SimpleGraph.__new__(__pyx_type)
- *     if __pyx_state is not None:
- *         __pyx_unpickle_SimpleGraph__set_state(<SimpleGraph> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
- *     return __pyx_result
- * cdef __pyx_unpickle_SimpleGraph__set_state(SimpleGraph __pyx_result, tuple __pyx_state):
- */
-    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 7, __pyx_L1_error)
-    __pyx_t_3 = __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_unpickle_SimpleGraph__set_state(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-    /* "(tree fragment)":6
- *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x8d777f3 = (data))" % __pyx_checksum)
- *     __pyx_result = SimpleGraph.__new__(__pyx_type)
- *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
- *         __pyx_unpickle_SimpleGraph__set_state(<SimpleGraph> __pyx_result, __pyx_state)
- *     return __pyx_result
- */
-  }
-
-  /* "(tree fragment)":8
- *     if __pyx_state is not None:
- *         __pyx_unpickle_SimpleGraph__set_state(<SimpleGraph> __pyx_result, __pyx_state)
- *     return __pyx_result             # <<<<<<<<<<<<<<
- * cdef __pyx_unpickle_SimpleGraph__set_state(SimpleGraph __pyx_result, tuple __pyx_state):
- *     __pyx_result.data = __pyx_state[0]
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v___pyx_result);
-  __pyx_r = __pyx_v___pyx_result;
-  goto __pyx_L0;
-
-  /* "(tree fragment)":1
- * def __pyx_unpickle_SimpleGraph(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
- *     if __pyx_checksum != 0x8d777f3:
- *         from pickle import PickleError as __pyx_PickleError
- */
-
-  /* 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("lakesuperior.store.ldp_rs.lmdb_triplestore.__pyx_unpickle_SimpleGraph", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
-  __Pyx_XDECREF(__pyx_v___pyx_result);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "(tree fragment)":9
- *         __pyx_unpickle_SimpleGraph__set_state(<SimpleGraph> __pyx_result, __pyx_state)
- *     return __pyx_result
- * cdef __pyx_unpickle_SimpleGraph__set_state(SimpleGraph __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
- *     __pyx_result.data = __pyx_state[0]
- *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
- */
-
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_unpickle_SimpleGraph__set_state(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  Py_ssize_t __pyx_t_3;
-  int __pyx_t_4;
-  int __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  __Pyx_RefNannySetupContext("__pyx_unpickle_SimpleGraph__set_state", 0);
-  __Pyx_TraceCall("__pyx_unpickle_SimpleGraph__set_state", __pyx_f[1], 9, 0, __PYX_ERR(1, 9, __pyx_L1_error));
-
-  /* "(tree fragment)":10
- *     return __pyx_result
- * cdef __pyx_unpickle_SimpleGraph__set_state(SimpleGraph __pyx_result, tuple __pyx_state):
- *     __pyx_result.data = __pyx_state[0]             # <<<<<<<<<<<<<<
- *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
- *         __pyx_result.__dict__.update(__pyx_state[1])
- */
-  if (unlikely(__pyx_v___pyx_state == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(1, 10, __pyx_L1_error)
-  }
-  if (!(likely(PySet_CheckExact(PyTuple_GET_ITEM(__pyx_v___pyx_state, 0)))||((PyTuple_GET_ITEM(__pyx_v___pyx_state, 0)) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(PyTuple_GET_ITEM(__pyx_v___pyx_state, 0))->tp_name), 0))) __PYX_ERR(1, 10, __pyx_L1_error)
-  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_v___pyx_state, 0);
-  __Pyx_INCREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v___pyx_result->data);
-  __Pyx_DECREF(__pyx_v___pyx_result->data);
-  __pyx_v___pyx_result->data = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "(tree fragment)":11
- * cdef __pyx_unpickle_SimpleGraph__set_state(SimpleGraph __pyx_result, tuple __pyx_state):
- *     __pyx_result.data = __pyx_state[0]
- *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
- *         __pyx_result.__dict__.update(__pyx_state[1])
- */
-  if (unlikely(__pyx_v___pyx_state == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(1, 11, __pyx_L1_error)
-  }
-  __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 11, __pyx_L1_error)
-  __pyx_t_4 = ((__pyx_t_3 > 1) != 0);
-  if (__pyx_t_4) {
-  } else {
-    __pyx_t_2 = __pyx_t_4;
-    goto __pyx_L4_bool_binop_done;
-  }
-  __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 11, __pyx_L1_error)
-  __pyx_t_5 = (__pyx_t_4 != 0);
-  __pyx_t_2 = __pyx_t_5;
-  __pyx_L4_bool_binop_done:;
-  if (__pyx_t_2) {
-
-    /* "(tree fragment)":12
- *     __pyx_result.data = __pyx_state[0]
- *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
- *         __pyx_result.__dict__.update(__pyx_state[1])             # <<<<<<<<<<<<<<
- */
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 12, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 12, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_7);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(__pyx_v___pyx_state == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(1, 12, __pyx_L1_error)
-    }
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_7, function);
-      }
-    }
-    if (!__pyx_t_6) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, PyTuple_GET_ITEM(__pyx_v___pyx_state, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_7)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_6, PyTuple_GET_ITEM(__pyx_v___pyx_state, 1)};
-        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_GOTREF(__pyx_t_1);
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_6, PyTuple_GET_ITEM(__pyx_v___pyx_state, 1)};
-        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_GOTREF(__pyx_t_1);
-      } else
-      #endif
-      {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 12, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_8);
-        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
-        __Pyx_INCREF(PyTuple_GET_ITEM(__pyx_v___pyx_state, 1));
-        __Pyx_GIVEREF(PyTuple_GET_ITEM(__pyx_v___pyx_state, 1));
-        PyTuple_SET_ITEM(__pyx_t_8, 0+1, PyTuple_GET_ITEM(__pyx_v___pyx_state, 1));
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-    /* "(tree fragment)":11
- * cdef __pyx_unpickle_SimpleGraph__set_state(SimpleGraph __pyx_result, tuple __pyx_state):
- *     __pyx_result.data = __pyx_state[0]
- *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
- *         __pyx_result.__dict__.update(__pyx_state[1])
- */
-  }
-
-  /* "(tree fragment)":9
- *         __pyx_unpickle_SimpleGraph__set_state(<SimpleGraph> __pyx_result, __pyx_state)
- *     return __pyx_result
- * cdef __pyx_unpickle_SimpleGraph__set_state(SimpleGraph __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
- *     __pyx_result.data = __pyx_state[0]
- *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
- */
-
-  /* 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_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.__pyx_unpickle_SimpleGraph__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __pyx_unpickle_Imr(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
- *     if __pyx_checksum != 0xbf84141:
- *         from pickle import PickleError as __pyx_PickleError
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_5__pyx_unpickle_Imr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_5__pyx_unpickle_Imr = {"__pyx_unpickle_Imr", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_5__pyx_unpickle_Imr, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_5__pyx_unpickle_Imr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v___pyx_type = 0;
-  long __pyx_v___pyx_checksum;
-  PyObject *__pyx_v___pyx_state = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__pyx_unpickle_Imr (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
-    PyObject* values[3] = {0,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  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] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Imr", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Imr", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Imr") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-    }
-    __pyx_v___pyx_type = values[0];
-    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
-    __pyx_v___pyx_state = values[2];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Imr", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.__pyx_unpickle_Imr", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_4__pyx_unpickle_Imr(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_4__pyx_unpickle_Imr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
-  PyObject *__pyx_v___pyx_PickleError = NULL;
-  PyObject *__pyx_v___pyx_result = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  int __pyx_t_7;
-  __Pyx_TraceFrameInit(__pyx_codeobj__35)
-  __Pyx_RefNannySetupContext("__pyx_unpickle_Imr", 0);
-  __Pyx_TraceCall("__pyx_unpickle_Imr", __pyx_f[1], 1, 0, __PYX_ERR(1, 1, __pyx_L1_error));
-
-  /* "(tree fragment)":2
- * def __pyx_unpickle_Imr(__pyx_type, long __pyx_checksum, __pyx_state):
- *     if __pyx_checksum != 0xbf84141:             # <<<<<<<<<<<<<<
- *         from pickle import PickleError as __pyx_PickleError
- *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf84141 = (data, uri))" % __pyx_checksum)
- */
-  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xbf84141) != 0);
-  if (__pyx_t_1) {
-
-    /* "(tree fragment)":3
- * def __pyx_unpickle_Imr(__pyx_type, long __pyx_checksum, __pyx_state):
- *     if __pyx_checksum != 0xbf84141:
- *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
- *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf84141 = (data, uri))" % __pyx_checksum)
- *     __pyx_result = Imr.__new__(__pyx_type)
- */
-    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_INCREF(__pyx_n_s_PickleError);
-    __Pyx_GIVEREF(__pyx_n_s_PickleError);
-    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
-    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_INCREF(__pyx_t_2);
-    __pyx_v___pyx_PickleError = __pyx_t_2;
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-    /* "(tree fragment)":4
- *     if __pyx_checksum != 0xbf84141:
- *         from pickle import PickleError as __pyx_PickleError
- *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf84141 = (data, uri))" % __pyx_checksum)             # <<<<<<<<<<<<<<
- *     __pyx_result = Imr.__new__(__pyx_type)
- *     if __pyx_state is not None:
- */
-    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xbf, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_INCREF(__pyx_v___pyx_PickleError);
-    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_2, function);
-      }
-    }
-    if (!__pyx_t_5) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_2)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
-        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
-        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __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(1, 4, __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_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(1, 4, __pyx_L1_error)
-
-    /* "(tree fragment)":2
- * def __pyx_unpickle_Imr(__pyx_type, long __pyx_checksum, __pyx_state):
- *     if __pyx_checksum != 0xbf84141:             # <<<<<<<<<<<<<<
- *         from pickle import PickleError as __pyx_PickleError
- *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf84141 = (data, uri))" % __pyx_checksum)
- */
-  }
-
-  /* "(tree fragment)":5
- *         from pickle import PickleError as __pyx_PickleError
- *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf84141 = (data, uri))" % __pyx_checksum)
- *     __pyx_result = Imr.__new__(__pyx_type)             # <<<<<<<<<<<<<<
- *     if __pyx_state is not None:
- *         __pyx_unpickle_Imr__set_state(<Imr> __pyx_result, __pyx_state)
- */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_6 = NULL;
-  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);
-    }
-  }
-  if (!__pyx_t_6) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
-      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __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[2] = {__pyx_t_6, __pyx_v___pyx_type};
-      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
-    } else
-    #endif
-    {
-      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
-      __Pyx_INCREF(__pyx_v___pyx_type);
-      __Pyx_GIVEREF(__pyx_v___pyx_type);
-      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_v___pyx_result = __pyx_t_3;
-  __pyx_t_3 = 0;
-
-  /* "(tree fragment)":6
- *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf84141 = (data, uri))" % __pyx_checksum)
- *     __pyx_result = Imr.__new__(__pyx_type)
- *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
- *         __pyx_unpickle_Imr__set_state(<Imr> __pyx_result, __pyx_state)
- *     return __pyx_result
- */
-  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
-  __pyx_t_7 = (__pyx_t_1 != 0);
-  if (__pyx_t_7) {
-
-    /* "(tree fragment)":7
- *     __pyx_result = Imr.__new__(__pyx_type)
- *     if __pyx_state is not None:
- *         __pyx_unpickle_Imr__set_state(<Imr> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
- *     return __pyx_result
- * cdef __pyx_unpickle_Imr__set_state(Imr __pyx_result, tuple __pyx_state):
- */
-    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 7, __pyx_L1_error)
-    __pyx_t_3 = __pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_unpickle_Imr__set_state(((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-    /* "(tree fragment)":6
- *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf84141 = (data, uri))" % __pyx_checksum)
- *     __pyx_result = Imr.__new__(__pyx_type)
- *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
- *         __pyx_unpickle_Imr__set_state(<Imr> __pyx_result, __pyx_state)
- *     return __pyx_result
- */
-  }
-
-  /* "(tree fragment)":8
- *     if __pyx_state is not None:
- *         __pyx_unpickle_Imr__set_state(<Imr> __pyx_result, __pyx_state)
- *     return __pyx_result             # <<<<<<<<<<<<<<
- * cdef __pyx_unpickle_Imr__set_state(Imr __pyx_result, tuple __pyx_state):
- *     __pyx_result.data = __pyx_state[0]; __pyx_result.uri = __pyx_state[1]
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v___pyx_result);
-  __pyx_r = __pyx_v___pyx_result;
-  goto __pyx_L0;
-
-  /* "(tree fragment)":1
- * def __pyx_unpickle_Imr(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
- *     if __pyx_checksum != 0xbf84141:
- *         from pickle import PickleError as __pyx_PickleError
- */
-
-  /* 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("lakesuperior.store.ldp_rs.lmdb_triplestore.__pyx_unpickle_Imr", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
-  __Pyx_XDECREF(__pyx_v___pyx_result);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "(tree fragment)":9
- *         __pyx_unpickle_Imr__set_state(<Imr> __pyx_result, __pyx_state)
- *     return __pyx_result
- * cdef __pyx_unpickle_Imr__set_state(Imr __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
- *     __pyx_result.data = __pyx_state[0]; __pyx_result.uri = __pyx_state[1]
- *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
- */
-
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_unpickle_Imr__set_state(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  Py_ssize_t __pyx_t_3;
-  int __pyx_t_4;
-  int __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  __Pyx_RefNannySetupContext("__pyx_unpickle_Imr__set_state", 0);
-  __Pyx_TraceCall("__pyx_unpickle_Imr__set_state", __pyx_f[1], 9, 0, __PYX_ERR(1, 9, __pyx_L1_error));
-
-  /* "(tree fragment)":10
- *     return __pyx_result
- * cdef __pyx_unpickle_Imr__set_state(Imr __pyx_result, tuple __pyx_state):
- *     __pyx_result.data = __pyx_state[0]; __pyx_result.uri = __pyx_state[1]             # <<<<<<<<<<<<<<
- *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
- *         __pyx_result.__dict__.update(__pyx_state[2])
- */
-  if (unlikely(__pyx_v___pyx_state == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(1, 10, __pyx_L1_error)
-  }
-  if (!(likely(PySet_CheckExact(PyTuple_GET_ITEM(__pyx_v___pyx_state, 0)))||((PyTuple_GET_ITEM(__pyx_v___pyx_state, 0)) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(PyTuple_GET_ITEM(__pyx_v___pyx_state, 0))->tp_name), 0))) __PYX_ERR(1, 10, __pyx_L1_error)
-  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_v___pyx_state, 0);
-  __Pyx_INCREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.data);
-  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.data);
-  __pyx_v___pyx_result->__pyx_base.data = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  if (unlikely(__pyx_v___pyx_state == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(1, 10, __pyx_L1_error)
-  }
-  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_v___pyx_state, 1);
-  __Pyx_INCREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v___pyx_result->uri);
-  __Pyx_DECREF(__pyx_v___pyx_result->uri);
-  __pyx_v___pyx_result->uri = __pyx_t_1;
-  __pyx_t_1 = 0;
-
-  /* "(tree fragment)":11
- * cdef __pyx_unpickle_Imr__set_state(Imr __pyx_result, tuple __pyx_state):
- *     __pyx_result.data = __pyx_state[0]; __pyx_result.uri = __pyx_state[1]
- *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
- *         __pyx_result.__dict__.update(__pyx_state[2])
- */
-  if (unlikely(__pyx_v___pyx_state == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(1, 11, __pyx_L1_error)
-  }
-  __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 11, __pyx_L1_error)
-  __pyx_t_4 = ((__pyx_t_3 > 2) != 0);
-  if (__pyx_t_4) {
-  } else {
-    __pyx_t_2 = __pyx_t_4;
-    goto __pyx_L4_bool_binop_done;
-  }
-  __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 11, __pyx_L1_error)
-  __pyx_t_5 = (__pyx_t_4 != 0);
-  __pyx_t_2 = __pyx_t_5;
-  __pyx_L4_bool_binop_done:;
-  if (__pyx_t_2) {
-
-    /* "(tree fragment)":12
- *     __pyx_result.data = __pyx_state[0]; __pyx_result.uri = __pyx_state[1]
- *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
- *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
- */
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 12, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 12, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_7);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(__pyx_v___pyx_state == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(1, 12, __pyx_L1_error)
-    }
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_7, function);
-      }
-    }
-    if (!__pyx_t_6) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, PyTuple_GET_ITEM(__pyx_v___pyx_state, 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-    } else {
-      #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_7)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_6, PyTuple_GET_ITEM(__pyx_v___pyx_state, 2)};
-        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_GOTREF(__pyx_t_1);
-      } else
-      #endif
-      #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_6, PyTuple_GET_ITEM(__pyx_v___pyx_state, 2)};
-        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_GOTREF(__pyx_t_1);
-      } else
-      #endif
-      {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 12, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_8);
-        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
-        __Pyx_INCREF(PyTuple_GET_ITEM(__pyx_v___pyx_state, 2));
-        __Pyx_GIVEREF(PyTuple_GET_ITEM(__pyx_v___pyx_state, 2));
-        PyTuple_SET_ITEM(__pyx_t_8, 0+1, PyTuple_GET_ITEM(__pyx_v___pyx_state, 2));
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      }
-    }
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-    /* "(tree fragment)":11
- * cdef __pyx_unpickle_Imr__set_state(Imr __pyx_result, tuple __pyx_state):
- *     __pyx_result.data = __pyx_state[0]; __pyx_result.uri = __pyx_state[1]
- *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
- *         __pyx_result.__dict__.update(__pyx_state[2])
- */
-  }
-
-  /* "(tree fragment)":9
- *         __pyx_unpickle_Imr__set_state(<Imr> __pyx_result, __pyx_state)
- *     return __pyx_result
- * cdef __pyx_unpickle_Imr__set_state(Imr __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
- *     __pyx_result.data = __pyx_state[0]; __pyx_result.uri = __pyx_state[1]
- *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
- */
-
-  /* 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_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.lmdb_triplestore.__pyx_unpickle_Imr__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-static struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet;
-
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet(PyTypeObject *t, PyObject *a, PyObject *k) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *p;
-  PyObject *o;
-  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_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)o);
-  p->__pyx_vtab = __pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet;
-  if (unlikely(__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_1__cinit__(o, a, k) < 0)) goto bad;
-  return o;
-  bad:
-  Py_DECREF(o); o = 0;
-  return NULL;
-}
-
-static void __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet(PyObject *o) {
-  #if CYTHON_USE_TP_FINALIZE
-  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
-    if (PyObject_CallFinalizerFromDealloc(o)) return;
-  }
-  #endif
-  {
-    PyObject *etype, *eval, *etb;
-    PyErr_Fetch(&etype, &eval, &etb);
-    ++Py_REFCNT(o);
-    __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_3__dealloc__(o);
-    --Py_REFCNT(o);
-    PyErr_Restore(etype, eval, etb);
-  }
-  (*Py_TYPE(o)->tp_free)(o);
-}
-
-static PyObject *__pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_data(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4data_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_itemsize(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_8itemsize_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_ct(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_2ct_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_size(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4size_1__get__(o);
-}
-
-static PyMethodDef __pyx_methods_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet[] = {
-  {"to_tuple", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_5to_tuple, METH_NOARGS, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_4to_tuple},
-  {"get_item_obj", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_7get_item_obj, METH_O, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_6get_item_obj},
-  {"__reduce_cython__", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_9__reduce_cython__, METH_NOARGS, 0},
-  {"__setstate_cython__", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_11__setstate_cython__, METH_O, 0},
-  {0, 0, 0, 0}
-};
-
-static struct PyGetSetDef __pyx_getsets_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet[] = {
-  {(char *)"data", __pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_data, 0, (char *)0, 0},
-  {(char *)"itemsize", __pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_itemsize, 0, (char *)0, 0},
-  {(char *)"ct", __pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_ct, 0, (char *)0, 0},
-  {(char *)"size", __pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_size, 0, (char *)0, 0},
-  {0, 0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "lakesuperior.store.ldp_rs.lmdb_triplestore.ResultSet", /*tp_name*/
-  sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #endif
-  #if PY_MAJOR_VERSION >= 3
-  0, /*tp_as_async*/
-  #endif
-  0, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  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, /*tp_flags*/
-  "\n    Pre-allocated result set.\n\n    Data in the set are stored as a 1D contiguous array of characters.\n    Access to elements at an arbitrary index position is achieved by using the\n    ``itemsize`` property multiplied by the index number.\n\n    Key properties:\n\n    ``ct``: number of elements in the set.\n    ``itemsize``: size of each element, in bytes. All elements have the same\n        size.\n    ``size``: Total size, in bytes, of the data set. This is the product of\n        ``itemsize`` and ``ct``.\n    ", /*tp_doc*/
-  0, /*tp_traverse*/
-  0, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  __pyx_methods_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet, /*tp_methods*/
-  0, /*tp_members*/
-  __pyx_getsets_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  0, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet, /*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*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-static struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph;
-
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *p;
-  PyObject *o;
-  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_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)o);
-  p->__pyx_vtab = __pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph;
-  p->data = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  return o;
-}
-
-static void __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph(PyObject *o) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)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_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)o;
-  if (p->data) {
-    e = (*v)(p->data, a); if (e) return e;
-  }
-  return 0;
-}
-
-static int __pyx_tp_clear_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph(PyObject *o) {
-  PyObject* tmp;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *)o;
-  tmp = ((PyObject*)p->data);
-  p->data = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  return 0;
-}
-static PyObject *__pyx_sq_item_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph(PyObject *o, Py_ssize_t i) {
-  PyObject *r;
-  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
-  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
-  Py_DECREF(x);
-  return r;
-}
-
-static PyObject *__pyx_tp_richcompare_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph(PyObject *o1, PyObject *o2, int op) {
-  switch (op) {
-    case Py_EQ: {
-      return __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_9__eq__(o1, o2);
-    }
-    case Py_NE: {
-      PyObject *ret;
-      ret = __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_9__eq__(o1, o2);
-      if (likely(ret && ret != Py_NotImplemented)) {
-        int b = __Pyx_PyObject_IsTrue(ret); Py_DECREF(ret);
-        if (unlikely(b < 0)) return NULL;
-        ret = (b) ? Py_False : Py_True;
-        Py_INCREF(ret);
-      }
-      return ret;
-    }
-    default: {
-      return __Pyx_NewRef(Py_NotImplemented);
-    }
-  }
-}
-
-static PyObject *__pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_data(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_4data_1__get__(o);
-}
-
-static PyMethodDef __pyx_methods_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph[] = {
-  {"add", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_3add, METH_O, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_2add},
-  {"remove", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_5remove, METH_O, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_4remove},
-  {"set", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_37set, METH_O, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_36set},
-  {"remove_triples", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_39remove_triples, METH_O, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_38remove_triples},
-  {"as_rdflib", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_41as_rdflib, METH_NOARGS, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_40as_rdflib},
-  {"lookup", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_43lookup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_42lookup},
-  {"terms", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_45terms, METH_O, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_44terms},
-  {"__reduce_cython__", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_47__reduce_cython__, METH_NOARGS, 0},
-  {"__setstate_cython__", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_49__setstate_cython__, METH_O, 0},
-  {0, 0, 0, 0}
-};
-
-static struct PyGetSetDef __pyx_getsets_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph[] = {
-  {(char *)"data", __pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_data, 0, (char *)0, 0},
-  {0, 0, 0, 0, 0}
-};
-
-static PyNumberMethods __pyx_tp_as_number_SimpleGraph = {
-  0, /*nb_add*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_15__sub__, /*nb_subtract*/
-  0, /*nb_multiply*/
-  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
-  0, /*nb_divide*/
-  #endif
-  0, /*nb_remainder*/
-  0, /*nb_divmod*/
-  0, /*nb_power*/
-  0, /*nb_negative*/
-  0, /*nb_positive*/
-  0, /*nb_absolute*/
-  0, /*nb_nonzero*/
-  0, /*nb_invert*/
-  0, /*nb_lshift*/
-  0, /*nb_rshift*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_19__and__, /*nb_and*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_27__xor__, /*nb_xor*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_23__or__, /*nb_or*/
-  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
-  0, /*nb_coerce*/
-  #endif
-  0, /*nb_int*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*nb_long*/
-  #else
-  0, /*reserved*/
-  #endif
-  0, /*nb_float*/
-  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
-  0, /*nb_oct*/
-  #endif
-  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
-  0, /*nb_hex*/
-  #endif
-  0, /*nb_inplace_add*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_17__isub__, /*nb_inplace_subtract*/
-  0, /*nb_inplace_multiply*/
-  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
-  0, /*nb_inplace_divide*/
-  #endif
-  0, /*nb_inplace_remainder*/
-  0, /*nb_inplace_power*/
-  0, /*nb_inplace_lshift*/
-  0, /*nb_inplace_rshift*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_21__iand__, /*nb_inplace_and*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_29__ixor__, /*nb_inplace_xor*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_25__ior__, /*nb_inplace_or*/
-  0, /*nb_floor_divide*/
-  0, /*nb_true_divide*/
-  0, /*nb_inplace_floor_divide*/
-  0, /*nb_inplace_true_divide*/
-  0, /*nb_index*/
-  #if PY_VERSION_HEX >= 0x03050000
-  0, /*nb_matrix_multiply*/
-  #endif
-  #if PY_VERSION_HEX >= 0x03050000
-  0, /*nb_inplace_matrix_multiply*/
-  #endif
-};
-
-static PySequenceMethods __pyx_tp_as_sequence_SimpleGraph = {
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_7__len__, /*sq_length*/
-  0, /*sq_concat*/
-  0, /*sq_repeat*/
-  __pyx_sq_item_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, /*sq_item*/
-  0, /*sq_slice*/
-  0, /*sq_ass_item*/
-  0, /*sq_ass_slice*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_31__contains__, /*sq_contains*/
-  0, /*sq_inplace_concat*/
-  0, /*sq_inplace_repeat*/
-};
-
-static PyMappingMethods __pyx_tp_as_mapping_SimpleGraph = {
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_7__len__, /*mp_length*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_35__getitem__, /*mp_subscript*/
-  0, /*mp_ass_subscript*/
-};
-
-static PyTypeObject __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph", /*tp_name*/
-  sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #endif
-  #if PY_MAJOR_VERSION >= 3
-  0, /*tp_as_async*/
-  #endif
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_11__repr__, /*tp_repr*/
-  &__pyx_tp_as_number_SimpleGraph, /*tp_as_number*/
-  &__pyx_tp_as_sequence_SimpleGraph, /*tp_as_sequence*/
-  &__pyx_tp_as_mapping_SimpleGraph, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_13__str__, /*tp_str*/
-  0, /*tp_getattro*/
-  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*/
-  "\n    Fast and simple implementation of a graph.\n\n    Most functions should mimic RDFLib's graph with less overhead. It uses\n        the same funny but functional slicing notation.\n\n    An instance of this class can be converted to a ``rdflib.Graph`` instance.\n    ", /*tp_doc*/
-  __pyx_tp_traverse_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, /*tp_traverse*/
-  __pyx_tp_clear_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, /*tp_clear*/
-  __pyx_tp_richcompare_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_33__iter__, /*tp_iter*/
-  0, /*tp_iternext*/
-  __pyx_methods_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, /*tp_methods*/
-  0, /*tp_members*/
-  __pyx_getsets_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_1__init__, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, /*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*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-static struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr;
-
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr(PyTypeObject *t, PyObject *a, PyObject *k) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *p;
-  PyObject *o = __pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph(t, a, k);
-  if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)o);
-  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph*)__pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr;
-  p->uri = Py_None; Py_INCREF(Py_None);
-  return o;
-}
-
-static void __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr(PyObject *o) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)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->uri);
-  PyObject_GC_Track(o);
-  __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph(o);
-}
-
-static int __pyx_tp_traverse_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)o;
-  e = __pyx_tp_traverse_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph(o, v, a); if (e) return e;
-  if (p->uri) {
-    e = (*v)(p->uri, a); if (e) return e;
-  }
-  return 0;
-}
-
-static int __pyx_tp_clear_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr(PyObject *o) {
-  PyObject* tmp;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr *)o;
-  __pyx_tp_clear_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph(o);
-  tmp = ((PyObject*)p->uri);
-  p->uri = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  return 0;
-}
-static PyObject *__pyx_sq_item_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr(PyObject *o, Py_ssize_t i) {
-  PyObject *r;
-  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
-  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
-  Py_DECREF(x);
-  return r;
-}
-
-static PyObject *__pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_identifier(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_10identifier_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_graph(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_5graph_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_uri(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_3uri_1__get__(o);
-}
-
-static PyMethodDef __pyx_methods_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr[] = {
-  {"value", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_15value, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_14value},
-  {"as_rdflib", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_17as_rdflib, METH_NOARGS, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_16as_rdflib},
-  {"__reduce_cython__", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_19__reduce_cython__, METH_NOARGS, 0},
-  {"__setstate_cython__", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_21__setstate_cython__, METH_O, 0},
-  {0, 0, 0, 0}
-};
-
-static struct PyGetSetDef __pyx_getsets_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr[] = {
-  {(char *)"identifier", __pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_identifier, 0, (char *)"\n        IMR URI. For compatibility with RDFLib Resource.\n\n        :rtype: string\n        ", 0},
-  {(char *)"graph", __pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_graph, 0, (char *)"\n        Return a SimpleGraph with the same data.\n\n        :rtype: SimpleGraph\n        ", 0},
-  {(char *)"uri", __pyx_getprop_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_uri, 0, (char *)0, 0},
-  {0, 0, 0, 0, 0}
-};
-
-static PyNumberMethods __pyx_tp_as_number_Imr = {
-  0, /*nb_add*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_5__sub__, /*nb_subtract*/
-  0, /*nb_multiply*/
-  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
-  0, /*nb_divide*/
-  #endif
-  0, /*nb_remainder*/
-  0, /*nb_divmod*/
-  0, /*nb_power*/
-  0, /*nb_negative*/
-  0, /*nb_positive*/
-  0, /*nb_absolute*/
-  0, /*nb_nonzero*/
-  0, /*nb_invert*/
-  0, /*nb_lshift*/
-  0, /*nb_rshift*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_7__and__, /*nb_and*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_11__xor__, /*nb_xor*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_9__or__, /*nb_or*/
-  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
-  0, /*nb_coerce*/
-  #endif
-  0, /*nb_int*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*nb_long*/
-  #else
-  0, /*reserved*/
-  #endif
-  0, /*nb_float*/
-  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
-  0, /*nb_oct*/
-  #endif
-  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
-  0, /*nb_hex*/
-  #endif
-  0, /*nb_inplace_add*/
-  #if CYTHON_COMPILING_IN_PYPY
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_17__isub__, /*nb_inplace_subtract*/
-  #else
-  0, /*nb_inplace_subtract*/
-  #endif
-  0, /*nb_inplace_multiply*/
-  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
-  0, /*nb_inplace_divide*/
-  #endif
-  0, /*nb_inplace_remainder*/
-  0, /*nb_inplace_power*/
-  0, /*nb_inplace_lshift*/
-  0, /*nb_inplace_rshift*/
-  #if CYTHON_COMPILING_IN_PYPY
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_21__iand__, /*nb_inplace_and*/
-  #else
-  0, /*nb_inplace_and*/
-  #endif
-  #if CYTHON_COMPILING_IN_PYPY
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_29__ixor__, /*nb_inplace_xor*/
-  #else
-  0, /*nb_inplace_xor*/
-  #endif
-  #if CYTHON_COMPILING_IN_PYPY
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_25__ior__, /*nb_inplace_or*/
-  #else
-  0, /*nb_inplace_or*/
-  #endif
-  0, /*nb_floor_divide*/
-  0, /*nb_true_divide*/
-  0, /*nb_inplace_floor_divide*/
-  0, /*nb_inplace_true_divide*/
-  0, /*nb_index*/
-  #if PY_VERSION_HEX >= 0x03050000
-  0, /*nb_matrix_multiply*/
-  #endif
-  #if PY_VERSION_HEX >= 0x03050000
-  0, /*nb_inplace_matrix_multiply*/
-  #endif
-};
-
-static PySequenceMethods __pyx_tp_as_sequence_Imr = {
-  #if CYTHON_COMPILING_IN_PYPY
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_7__len__, /*sq_length*/
-  #else
-  0, /*sq_length*/
-  #endif
-  0, /*sq_concat*/
-  0, /*sq_repeat*/
-  __pyx_sq_item_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, /*sq_item*/
-  0, /*sq_slice*/
-  0, /*sq_ass_item*/
-  0, /*sq_ass_slice*/
-  #if CYTHON_COMPILING_IN_PYPY
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_31__contains__, /*sq_contains*/
-  #else
-  0, /*sq_contains*/
-  #endif
-  0, /*sq_inplace_concat*/
-  0, /*sq_inplace_repeat*/
-};
-
-static PyMappingMethods __pyx_tp_as_mapping_Imr = {
-  #if CYTHON_COMPILING_IN_PYPY
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_7__len__, /*mp_length*/
-  #else
-  0, /*mp_length*/
-  #endif
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_13__getitem__, /*mp_subscript*/
-  0, /*mp_ass_subscript*/
-};
-
-static PyTypeObject __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "lakesuperior.store.ldp_rs.lmdb_triplestore.Imr", /*tp_name*/
-  sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #endif
-  #if PY_MAJOR_VERSION >= 3
-  0, /*tp_as_async*/
-  #endif
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_3__repr__, /*tp_repr*/
-  &__pyx_tp_as_number_Imr, /*tp_as_number*/
-  &__pyx_tp_as_sequence_Imr, /*tp_as_sequence*/
-  &__pyx_tp_as_mapping_Imr, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  #if CYTHON_COMPILING_IN_PYPY
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_13__str__, /*tp_str*/
-  #else
-  0, /*tp_str*/
-  #endif
-  0, /*tp_getattro*/
-  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*/
-  "\n    In-memory resource data container.\n\n    This is an extension of :py:class:`~SimpleGraph` that adds a subject URI to\n    the data set and some convenience methods.\n\n    An instance of this class can be converted to a ``rdflib.Resource``\n    instance.\n\n    Some set operations that produce a new object (``-``, ``|``, ``&``, ``^``)\n    will create a new ``Imr`` instance with the same subject URI.\n    ", /*tp_doc*/
-  __pyx_tp_traverse_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, /*tp_traverse*/
-  __pyx_tp_clear_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  #if CYTHON_COMPILING_IN_PYPY
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_33__iter__, /*tp_iter*/
-  #else
-  0, /*tp_iter*/
-  #endif
-  0, /*tp_iternext*/
-  __pyx_methods_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, /*tp_methods*/
-  0, /*tp_members*/
-  __pyx_getsets_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  __pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_1__init__, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, /*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*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-static struct __pyx_vtabstruct_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore;
-
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore(PyTypeObject *t, PyObject *a, PyObject *k) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *p;
-  PyObject *o = __pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore->tp_new(t, a, k);
-  if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *)o);
-  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore*)__pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore;
-  return o;
-}
-
-static void __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore(PyObject *o) {
-  #if CYTHON_USE_TP_FINALIZE
-  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
-    if (PyObject_CallFinalizerFromDealloc(o)) return;
-  }
-  #endif
-  if (likely(__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore)) __pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore);
-}
-
-static PyMethodDef __pyx_methods_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore[] = {
-  {"stats", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_1stats, METH_NOARGS, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_stats},
-  {"_len", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_3_len, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_2_len},
-  {"add", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_5add, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_4add},
-  {"add_graph", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_7add_graph, METH_O, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_6add_graph},
-  {"_add_graph", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_9_add_graph, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_8_add_graph},
-  {"_remove", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_11_remove, METH_VARARGS|METH_KEYWORDS, 0},
-  {"_remove_graph", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_13_remove_graph, METH_O, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_12_remove_graph},
-  {"contexts", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_15contexts, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_14contexts},
-  {"triples", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_18triples, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_17triples},
-  {"triple_keys", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_21triple_keys, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_20triple_keys},
-  {"_all_term_keys", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_23_all_term_keys, METH_O, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_22_all_term_keys},
-  {"all_terms", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_25all_terms, METH_O, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_24all_terms},
-  {"all_namespaces", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_28all_namespaces, METH_NOARGS, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_27all_namespaces},
-  {"all_contexts", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_30all_contexts, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_29all_contexts},
-  {"__reduce_cython__", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_32__reduce_cython__, METH_NOARGS, 0},
-  {"__setstate_cython__", (PyCFunction)__pyx_pw_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_34__setstate_cython__, METH_O, 0},
-  {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "lakesuperior.store.ldp_rs.lmdb_triplestore.LmdbTriplestore", /*tp_name*/
-  sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #endif
-  #if PY_MAJOR_VERSION >= 3
-  0, /*tp_as_async*/
-  #endif
-  0, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  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, /*tp_flags*/
-  "\n    Low-level storage layer.\n\n    This class extends the RDFLib-compatible :py:class:`BaseLmdbStore` and maps\n    triples and contexts to key-value records in LMDB.\n\n    This class uses the original LMDB C API rather than the Python bindings,\n    because several data manipulations happen after retrieval from the store,\n    which are more efficiently performed at the C level.\n    ", /*tp_doc*/
-  0, /*tp_traverse*/
-  0, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  __pyx_methods_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore, /*tp_methods*/
-  0, /*tp_members*/
-  0, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  0, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore, /*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*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-
-static struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple *__pyx_freelist_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple[8];
-static int __pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple = 0;
-
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  PyObject *o;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple)))) {
-    o = (PyObject*)__pyx_freelist_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple[--__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple];
-    memset(o, 0, sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple));
-    (void) PyObject_INIT(o, t);
-    PyObject_GC_Track(o);
-  } else {
-    o = (*t->tp_alloc)(t, 0);
-    if (unlikely(!o)) return 0;
-  }
-  return o;
-}
-
-static void __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple(PyObject *o) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple *)o;
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->__pyx_v_self);
-  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple)))) {
-    __pyx_freelist_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple[__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple++] = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple *)o);
-  } else {
-    (*Py_TYPE(o)->tp_free)(o);
-  }
-}
-
-static int __pyx_tp_traverse_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple *)o;
-  if (p->__pyx_v_self) {
-    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
-  }
-  return 0;
-}
-
-static int __pyx_tp_clear_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple(PyObject *o) {
-  PyObject* tmp;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple *)o;
-  tmp = ((PyObject*)p->__pyx_v_self);
-  p->__pyx_v_self = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  return 0;
-}
-
-static PyTypeObject __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "lakesuperior.store.ldp_rs.lmdb_triplestore.__pyx_scope_struct__to_tuple", /*tp_name*/
-  sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #endif
-  #if PY_MAJOR_VERSION >= 3
-  0, /*tp_as_async*/
-  #endif
-  0, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  0, /*tp_setattro*/
-  0, /*tp_as_buffer*/
-  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  0, /*tp_doc*/
-  __pyx_tp_traverse_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple, /*tp_traverse*/
-  __pyx_tp_clear_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  0, /*tp_methods*/
-  0, /*tp_members*/
-  0, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  0, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple, /*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*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-
-static struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr *__pyx_freelist_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr[8];
-static int __pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr = 0;
-
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  PyObject *o;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr)))) {
-    o = (PyObject*)__pyx_freelist_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr[--__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr];
-    memset(o, 0, sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr));
-    (void) PyObject_INIT(o, t);
-    PyObject_GC_Track(o);
-  } else {
-    o = (*t->tp_alloc)(t, 0);
-    if (unlikely(!o)) return 0;
-  }
-  return o;
-}
-
-static void __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr(PyObject *o) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr *)o;
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->__pyx_outer_scope);
-  Py_CLEAR(p->__pyx_v_i);
-  Py_CLEAR(p->__pyx_t_0);
-  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr)))) {
-    __pyx_freelist_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr[__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr++] = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr *)o);
-  } else {
-    (*Py_TYPE(o)->tp_free)(o);
-  }
-}
-
-static int __pyx_tp_traverse_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr *)o;
-  if (p->__pyx_outer_scope) {
-    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
-  }
-  if (p->__pyx_v_i) {
-    e = (*v)(p->__pyx_v_i, a); if (e) return e;
-  }
-  if (p->__pyx_t_0) {
-    e = (*v)(p->__pyx_t_0, a); if (e) return e;
-  }
-  return 0;
-}
-
-static PyTypeObject __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "lakesuperior.store.ldp_rs.lmdb_triplestore.__pyx_scope_struct_1_genexpr", /*tp_name*/
-  sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #endif
-  #if PY_MAJOR_VERSION >= 3
-  0, /*tp_as_async*/
-  #endif
-  0, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  0, /*tp_setattro*/
-  0, /*tp_as_buffer*/
-  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  0, /*tp_doc*/
-  __pyx_tp_traverse_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr, /*tp_traverse*/
-  0, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  0, /*tp_methods*/
-  0, /*tp_members*/
-  0, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  0, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr, /*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*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-
-static struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts *__pyx_freelist_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts[8];
-static int __pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts = 0;
-
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  PyObject *o;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts)))) {
-    o = (PyObject*)__pyx_freelist_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts[--__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts];
-    memset(o, 0, sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts));
-    (void) PyObject_INIT(o, t);
-    PyObject_GC_Track(o);
-  } else {
-    o = (*t->tp_alloc)(t, 0);
-    if (unlikely(!o)) return 0;
-  }
-  return o;
-}
-
-static void __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts(PyObject *o) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts *)o;
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->__pyx_v_ctx_uri);
-  Py_CLEAR(p->__pyx_v_self);
-  Py_CLEAR(p->__pyx_v_triple);
-  Py_CLEAR(p->__pyx_t_0);
-  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts)))) {
-    __pyx_freelist_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts[__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts++] = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts *)o);
-  } else {
-    (*Py_TYPE(o)->tp_free)(o);
-  }
-}
-
-static int __pyx_tp_traverse_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts *)o;
-  if (p->__pyx_v_ctx_uri) {
-    e = (*v)(p->__pyx_v_ctx_uri, a); if (e) return e;
-  }
-  if (p->__pyx_v_self) {
-    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
-  }
-  if (p->__pyx_v_triple) {
-    e = (*v)(p->__pyx_v_triple, a); if (e) return e;
-  }
-  if (p->__pyx_t_0) {
-    e = (*v)(p->__pyx_t_0, a); if (e) return e;
-  }
-  return 0;
-}
-
-static PyTypeObject __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "lakesuperior.store.ldp_rs.lmdb_triplestore.__pyx_scope_struct_2_contexts", /*tp_name*/
-  sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #endif
-  #if PY_MAJOR_VERSION >= 3
-  0, /*tp_as_async*/
-  #endif
-  0, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  0, /*tp_setattro*/
-  0, /*tp_as_buffer*/
-  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  0, /*tp_doc*/
-  __pyx_tp_traverse_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts, /*tp_traverse*/
-  0, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  0, /*tp_methods*/
-  0, /*tp_members*/
-  0, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  0, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts, /*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*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-
-static struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples *__pyx_freelist_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples[8];
-static int __pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples = 0;
-
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  PyObject *o;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples)))) {
-    o = (PyObject*)__pyx_freelist_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples[--__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples];
-    memset(o, 0, sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples));
-    (void) PyObject_INIT(o, t);
-    PyObject_GC_Track(o);
-  } else {
-    o = (*t->tp_alloc)(t, 0);
-    if (unlikely(!o)) return 0;
-  }
-  return o;
-}
-
-static void __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples(PyObject *o) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples *)o;
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->__pyx_v_c_uri);
-  Py_CLEAR(p->__pyx_v_context);
-  Py_CLEAR(p->__pyx_v_contexts);
-  Py_CLEAR(p->__pyx_v_rset);
-  Py_CLEAR(p->__pyx_v_self);
-  Py_CLEAR(p->__pyx_v_triple_pattern);
-  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples)))) {
-    __pyx_freelist_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples[__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples++] = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples *)o);
-  } else {
-    (*Py_TYPE(o)->tp_free)(o);
-  }
-}
-
-static int __pyx_tp_traverse_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples *)o;
-  if (p->__pyx_v_c_uri) {
-    e = (*v)(p->__pyx_v_c_uri, a); if (e) return e;
-  }
-  if (p->__pyx_v_context) {
-    e = (*v)(p->__pyx_v_context, a); if (e) return e;
-  }
-  if (p->__pyx_v_contexts) {
-    e = (*v)(p->__pyx_v_contexts, a); if (e) return e;
-  }
-  if (p->__pyx_v_rset) {
-    e = (*v)(((PyObject *)p->__pyx_v_rset), a); if (e) return e;
-  }
-  if (p->__pyx_v_self) {
-    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
-  }
-  if (p->__pyx_v_triple_pattern) {
-    e = (*v)(p->__pyx_v_triple_pattern, a); if (e) return e;
-  }
-  return 0;
-}
-
-static PyTypeObject __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "lakesuperior.store.ldp_rs.lmdb_triplestore.__pyx_scope_struct_3_triples", /*tp_name*/
-  sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #endif
-  #if PY_MAJOR_VERSION >= 3
-  0, /*tp_as_async*/
-  #endif
-  0, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  0, /*tp_setattro*/
-  0, /*tp_as_buffer*/
-  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  0, /*tp_doc*/
-  __pyx_tp_traverse_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples, /*tp_traverse*/
-  0, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  0, /*tp_methods*/
-  0, /*tp_members*/
-  0, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  0, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples, /*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*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-
-static struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms *__pyx_freelist_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms[8];
-static int __pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms = 0;
-
-static PyObject *__pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  PyObject *o;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms)))) {
-    o = (PyObject*)__pyx_freelist_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms[--__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms];
-    memset(o, 0, sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms));
-    (void) PyObject_INIT(o, t);
-    PyObject_GC_Track(o);
-  } else {
-    o = (*t->tp_alloc)(t, 0);
-    if (unlikely(!o)) return 0;
-  }
-  return o;
-}
-
-static void __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms(PyObject *o) {
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms *)o;
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->__pyx_v_key);
-  Py_CLEAR(p->__pyx_v_self);
-  Py_CLEAR(p->__pyx_v_term_type);
-  Py_CLEAR(p->__pyx_t_0);
-  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms)))) {
-    __pyx_freelist_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms[__pyx_freecount_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms++] = ((struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms *)o);
-  } else {
-    (*Py_TYPE(o)->tp_free)(o);
-  }
-}
-
-static int __pyx_tp_traverse_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms *p = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms *)o;
-  if (p->__pyx_v_key) {
-    e = (*v)(p->__pyx_v_key, a); if (e) return e;
-  }
-  if (p->__pyx_v_self) {
-    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
-  }
-  if (p->__pyx_v_term_type) {
-    e = (*v)(p->__pyx_v_term_type, a); if (e) return e;
-  }
-  if (p->__pyx_t_0) {
-    e = (*v)(p->__pyx_t_0, a); if (e) return e;
-  }
-  return 0;
-}
-
-static PyTypeObject __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "lakesuperior.store.ldp_rs.lmdb_triplestore.__pyx_scope_struct_4_all_terms", /*tp_name*/
-  sizeof(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #endif
-  #if PY_MAJOR_VERSION >= 3
-  0, /*tp_as_async*/
-  #endif
-  0, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  0, /*tp_setattro*/
-  0, /*tp_as_buffer*/
-  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  0, /*tp_doc*/
-  __pyx_tp_traverse_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms, /*tp_traverse*/
-  0, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  0, /*tp_methods*/
-  0, /*tp_members*/
-  0, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  0, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms, /*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*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-
-static PyMethodDef __pyx_methods[] = {
-  {0, 0, 0, 0}
-};
-
-#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_lmdb_triplestore(PyObject* module); /*proto*/
-static PyModuleDef_Slot __pyx_moduledef_slots[] = {
-  {Py_mod_create, (void*)__pyx_pymod_create},
-  {Py_mod_exec, (void*)__pyx_pymod_exec_lmdb_triplestore},
-  {0, NULL}
-};
-#endif
-
-static struct PyModuleDef __pyx_moduledef = {
-    PyModuleDef_HEAD_INIT,
-    "lmdb_triplestore",
-    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 */
-};
-#endif
-
-static __Pyx_StringTabEntry __pyx_string_tab[] = {
-  {&__pyx_kp_u_2bound_lookup_for_term, __pyx_k_2bound_lookup_for_term, sizeof(__pyx_k_2bound_lookup_for_term), 0, 1, 0, 0},
-  {&__pyx_kp_u_Add, __pyx_k_Add, sizeof(__pyx_k_Add), 0, 1, 0, 0},
-  {&__pyx_kp_u_Adding_to_index, __pyx_k_Adding_to_index, sizeof(__pyx_k_Adding_to_index), 0, 1, 0, 0},
-  {&__pyx_kp_u_Allocated, __pyx_k_Allocated, sizeof(__pyx_k_Allocated), 0, 1, 0, 0},
-  {&__pyx_kp_u_BAD_DAY_Sequence_exhausted_No_mo, __pyx_k_BAD_DAY_Sequence_exhausted_No_mo, sizeof(__pyx_k_BAD_DAY_Sequence_exhausted_No_mo), 0, 1, 0, 0},
-  {&__pyx_n_s_DATASET_DEFAULT_GRAPH_ID, __pyx_k_DATASET_DEFAULT_GRAPH_ID, sizeof(__pyx_k_DATASET_DEFAULT_GRAPH_ID), 0, 0, 1, 1},
-  {&__pyx_kp_u_DBI, __pyx_k_DBI, sizeof(__pyx_k_DBI), 0, 1, 0, 0},
-  {&__pyx_kp_u_DB_label, __pyx_k_DB_label, sizeof(__pyx_k_DB_label), 0, 1, 0, 0},
-  {&__pyx_kp_u_Database_label, __pyx_k_Database_label, sizeof(__pyx_k_Database_label), 0, 1, 0, 0},
-  {&__pyx_kp_u_Double_key, __pyx_k_Double_key, sizeof(__pyx_k_Double_key), 0, 1, 0, 0},
-  {&__pyx_kp_u_Entries_for, __pyx_k_Entries_for, sizeof(__pyx_k_Entries_for), 0, 1, 0, 0},
-  {&__pyx_kp_u_Entries_in_c_spo, __pyx_k_Entries_in_c_spo, sizeof(__pyx_k_Entries_in_c_spo), 0, 1, 0, 0},
-  {&__pyx_kp_u_Error_gathering_DB_stats, __pyx_k_Error_gathering_DB_stats, sizeof(__pyx_k_Error_gathering_DB_stats), 0, 1, 0, 0},
-  {&__pyx_kp_u_Error_getting_data_for_key, __pyx_k_Error_getting_data_for_key, sizeof(__pyx_k_Error_getting_data_for_key), 0, 1, 0, 0},
-  {&__pyx_kp_u_Error_setting_key, __pyx_k_Error_setting_key, sizeof(__pyx_k_Error_setting_key), 0, 1, 0, 0},
-  {&__pyx_kp_u_Getting_all_DB_triples, __pyx_k_Getting_all_DB_triples, sizeof(__pyx_k_Getting_all_DB_triples), 0, 1, 0, 0},
-  {&__pyx_kp_u_Getting_triples_for, __pyx_k_Getting_triples_for, sizeof(__pyx_k_Getting_triples_for), 0, 1, 0, 0},
-  {&__pyx_kp_u_Got_data_in_2bound, __pyx_k_Got_data_in_2bound, sizeof(__pyx_k_Got_data_in_2bound), 0, 1, 0, 0},
-  {&__pyx_n_s_Graph, __pyx_k_Graph, sizeof(__pyx_k_Graph), 0, 0, 1, 1},
-  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x8d, __pyx_k_Incompatible_checksums_s_vs_0x8d, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x8d), 0, 0, 1, 0},
-  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xbf, __pyx_k_Incompatible_checksums_s_vs_0xbf, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xbf), 0, 0, 1, 0},
-  {&__pyx_kp_u_Index_operation_is_not_supported, __pyx_k_Index_operation_is_not_supported, sizeof(__pyx_k_Index_operation_is_not_supported), 0, 1, 0, 0},
-  {&__pyx_kp_u_Indices_and_not_found_in_LU_keys, __pyx_k_Indices_and_not_found_in_LU_keys, sizeof(__pyx_k_Indices_and_not_found_in_LU_keys), 0, 1, 0, 0},
-  {&__pyx_kp_u_Invalid_triple, __pyx_k_Invalid_triple, sizeof(__pyx_k_Invalid_triple), 0, 1, 0, 0},
-  {&__pyx_kp_u_Key, __pyx_k_Key, sizeof(__pyx_k_Key), 0, 1, 0, 0},
-  {&__pyx_n_s_KeyExistsError, __pyx_k_KeyExistsError, sizeof(__pyx_k_KeyExistsError), 0, 0, 1, 1},
-  {&__pyx_n_s_KeyNotFoundError, __pyx_k_KeyNotFoundError, sizeof(__pyx_k_KeyNotFoundError), 0, 0, 1, 1},
-  {&__pyx_kp_u_LUK_offsets, __pyx_k_LUK_offsets, sizeof(__pyx_k_LUK_offsets), 0, 1, 0, 0},
-  {&__pyx_n_s_LmdbError, __pyx_k_LmdbError, sizeof(__pyx_k_LmdbError), 0, 0, 1, 1},
-  {&__pyx_n_s_LmdbTriplestore_all_terms, __pyx_k_LmdbTriplestore_all_terms, sizeof(__pyx_k_LmdbTriplestore_all_terms), 0, 0, 1, 1},
-  {&__pyx_n_s_LmdbTriplestore_contexts, __pyx_k_LmdbTriplestore_contexts, sizeof(__pyx_k_LmdbTriplestore_contexts), 0, 0, 1, 1},
-  {&__pyx_n_s_LmdbTriplestore_triples, __pyx_k_LmdbTriplestore_triples, sizeof(__pyx_k_LmdbTriplestore_triples), 0, 0, 1, 1},
-  {&__pyx_kp_u_Looking_in_key, __pyx_k_Looking_in_key, sizeof(__pyx_k_Looking_in_key), 0, 1, 0, 0},
-  {&__pyx_kp_u_Looking_up_in_graph, __pyx_k_Looking_up_in_graph, sizeof(__pyx_k_Looking_up_in_graph), 0, 1, 0, 0},
-  {&__pyx_kp_u_Lookup_key, __pyx_k_Lookup_key, sizeof(__pyx_k_Lookup_key), 0, 1, 0, 0},
-  {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1},
-  {&__pyx_kp_u_More_than_one_value_found_for, __pyx_k_More_than_one_value_found_for, sizeof(__pyx_k_More_than_one_value_found_for), 0, 1, 0, 0},
-  {&__pyx_n_s_Node, __pyx_k_Node, sizeof(__pyx_k_Node), 0, 0, 1, 1},
-  {&__pyx_kp_u_Not_found_in_index, __pyx_k_Not_found_in_index, sizeof(__pyx_k_Not_found_in_index), 0, 1, 0, 0},
-  {&__pyx_kp_u_Page_size, __pyx_k_Page_size, sizeof(__pyx_k_Page_size), 0, 1, 0, 0},
-  {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
-  {&__pyx_n_s_RDFLIB_DEFAULT_GRAPH_URI, __pyx_k_RDFLIB_DEFAULT_GRAPH_URI, sizeof(__pyx_k_RDFLIB_DEFAULT_GRAPH_URI), 0, 0, 1, 1},
-  {&__pyx_kp_u_Remove, __pyx_k_Remove, sizeof(__pyx_k_Remove), 0, 1, 0, 0},
-  {&__pyx_kp_u_Removed, __pyx_k_Removed, sizeof(__pyx_k_Removed), 0, 1, 0, 0},
-  {&__pyx_kp_u_Removing, __pyx_k_Removing, sizeof(__pyx_k_Removing), 0, 1, 0, 0},
-  {&__pyx_kp_u_Removing_from_graph, __pyx_k_Removing_from_graph, sizeof(__pyx_k_Removing_from_graph), 0, 1, 0, 0},
-  {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
-  {&__pyx_kp_u_Store_not_specified_for_triple_l, __pyx_k_Store_not_specified_for_triple_l, sizeof(__pyx_k_Store_not_specified_for_triple_l), 0, 1, 0, 0},
-  {&__pyx_kp_u_Term_order, __pyx_k_Term_order, sizeof(__pyx_k_Term_order), 0, 1, 0, 0},
-  {&__pyx_kp_u_Triples_found, __pyx_k_Triples_found, sizeof(__pyx_k_Triples_found), 0, 1, 0, 0},
-  {&__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_u_Wrong_slice_format, __pyx_k_Wrong_slice_format, sizeof(__pyx_k_Wrong_slice_format), 0, 1, 0, 0},
-  {&__pyx_kp_u__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0, 0},
-  {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0},
-  {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0},
-  {&__pyx_kp_u__27, __pyx_k__27, sizeof(__pyx_k__27), 0, 1, 0, 0},
-  {&__pyx_kp_u__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 1, 0, 0},
-  {&__pyx_kp_u__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 1, 0, 0},
-  {&__pyx_n_s_add, __pyx_k_add, sizeof(__pyx_k_add), 0, 0, 1, 1},
-  {&__pyx_n_s_add_graph, __pyx_k_add_graph, sizeof(__pyx_k_add_graph), 0, 0, 1, 1},
-  {&__pyx_n_s_add_graph_2, __pyx_k_add_graph_2, sizeof(__pyx_k_add_graph_2), 0, 0, 1, 1},
-  {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1},
-  {&__pyx_n_s_all_contexts, __pyx_k_all_contexts, sizeof(__pyx_k_all_contexts), 0, 0, 1, 1},
-  {&__pyx_n_s_all_namespaces, __pyx_k_all_namespaces, sizeof(__pyx_k_all_namespaces), 0, 0, 1, 1},
-  {&__pyx_n_s_all_term_keys, __pyx_k_all_term_keys, sizeof(__pyx_k_all_term_keys), 0, 0, 1, 1},
-  {&__pyx_n_s_all_terms, __pyx_k_all_terms, sizeof(__pyx_k_all_terms), 0, 0, 1, 1},
-  {&__pyx_n_s_and, __pyx_k_and, sizeof(__pyx_k_and), 0, 0, 1, 1},
-  {&__pyx_kp_u_and_term, __pyx_k_and_term, sizeof(__pyx_k_and_term), 0, 1, 0, 0},
-  {&__pyx_n_s_any, __pyx_k_any, sizeof(__pyx_k_any), 0, 0, 1, 1},
-  {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
-  {&__pyx_n_s_as_rdflib, __pyx_k_as_rdflib, sizeof(__pyx_k_as_rdflib), 0, 0, 1, 1},
-  {&__pyx_kp_u_asm_rng, __pyx_k_asm_rng, sizeof(__pyx_k_asm_rng), 0, 1, 0, 0},
-  {&__pyx_kp_u_at_position, __pyx_k_at_position, sizeof(__pyx_k_at_position), 0, 1, 0, 0},
-  {&__pyx_kp_u_bytes, __pyx_k_bytes, sizeof(__pyx_k_bytes), 0, 1, 0, 0},
-  {&__pyx_kp_u_bytes_of_data, __pyx_k_bytes_of_data, sizeof(__pyx_k_bytes_of_data), 0, 1, 0, 0},
-  {&__pyx_kp_u_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 1, 0, 0},
-  {&__pyx_kp_u_c_spo, __pyx_k_c_spo, sizeof(__pyx_k_c_spo), 0, 1, 0, 0},
-  {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 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_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
-  {&__pyx_n_s_context, __pyx_k_context, sizeof(__pyx_k_context), 0, 0, 1, 1},
-  {&__pyx_n_s_contexts, __pyx_k_contexts, sizeof(__pyx_k_contexts), 0, 0, 1, 1},
-  {&__pyx_n_s_ct, __pyx_k_ct, sizeof(__pyx_k_ct), 0, 0, 1, 1},
-  {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1},
-  {&__pyx_n_u_db_stats, __pyx_k_db_stats, sizeof(__pyx_k_db_stats), 0, 1, 0, 1},
-  {&__pyx_n_s_dbi_flags, __pyx_k_dbi_flags, sizeof(__pyx_k_dbi_flags), 0, 0, 1, 1},
-  {&__pyx_n_s_dbi_labels, __pyx_k_dbi_labels, sizeof(__pyx_k_dbi_labels), 0, 0, 1, 1},
-  {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1},
-  {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
-  {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1},
-  {&__pyx_n_s_eq, __pyx_k_eq, sizeof(__pyx_k_eq), 0, 0, 1, 1},
-  {&__pyx_kp_u_exists_already, __pyx_k_exists_already, sizeof(__pyx_k_exists_already), 0, 1, 0, 0},
-  {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1},
-  {&__pyx_n_s_fn, __pyx_k_fn, sizeof(__pyx_k_fn), 0, 0, 1, 1},
-  {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
-  {&__pyx_kp_u_from_indices, __pyx_k_from_indices, sizeof(__pyx_k_from_indices), 0, 1, 0, 0},
-  {&__pyx_kp_u_from_main, __pyx_k_from_main, sizeof(__pyx_k_from_main), 0, 1, 0, 0},
-  {&__pyx_n_s_functools, __pyx_k_functools, sizeof(__pyx_k_functools), 0, 0, 1, 1},
-  {&__pyx_n_s_genexpr, __pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 0, 1, 1},
-  {&__pyx_n_s_getLogger, __pyx_k_getLogger, sizeof(__pyx_k_getLogger), 0, 0, 1, 1},
-  {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
-  {&__pyx_n_s_hex, __pyx_k_hex, sizeof(__pyx_k_hex), 0, 0, 1, 1},
-  {&__pyx_kp_u_i_in_0bound, __pyx_k_i_in_0bound, sizeof(__pyx_k_i_in_0bound), 0, 1, 0, 0},
-  {&__pyx_n_s_iand, __pyx_k_iand, sizeof(__pyx_k_iand), 0, 0, 1, 1},
-  {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1},
-  {&__pyx_n_s_identifier, __pyx_k_identifier, sizeof(__pyx_k_identifier), 0, 0, 1, 1},
-  {&__pyx_n_u_idx_add, __pyx_k_idx_add, sizeof(__pyx_k_idx_add), 0, 1, 0, 1},
-  {&__pyx_n_u_idx_remove, __pyx_k_idx_remove, sizeof(__pyx_k_idx_remove), 0, 1, 0, 1},
-  {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
-  {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1},
-  {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
-  {&__pyx_n_s_ior, __pyx_k_ior, sizeof(__pyx_k_ior), 0, 0, 1, 1},
-  {&__pyx_n_s_is_txn_rw, __pyx_k_is_txn_rw, sizeof(__pyx_k_is_txn_rw), 0, 0, 1, 1},
-  {&__pyx_n_s_isub, __pyx_k_isub, sizeof(__pyx_k_isub), 0, 0, 1, 1},
-  {&__pyx_n_s_itemsize, __pyx_k_itemsize, sizeof(__pyx_k_itemsize), 0, 0, 1, 1},
-  {&__pyx_n_s_iter, __pyx_k_iter, sizeof(__pyx_k_iter), 0, 0, 1, 1},
-  {&__pyx_n_s_ixor, __pyx_k_ixor, sizeof(__pyx_k_ixor), 0, 0, 1, 1},
-  {&__pyx_n_s_lakesuperior_store_base_lmdb_sto, __pyx_k_lakesuperior_store_base_lmdb_sto, sizeof(__pyx_k_lakesuperior_store_base_lmdb_sto), 0, 0, 1, 1},
-  {&__pyx_n_s_lakesuperior_store_ldp_rs_lmdb_t, __pyx_k_lakesuperior_store_ldp_rs_lmdb_t, sizeof(__pyx_k_lakesuperior_store_ldp_rs_lmdb_t), 0, 0, 1, 1},
-  {&__pyx_kp_s_lakesuperior_store_ldp_rs_lmdb_t_2, __pyx_k_lakesuperior_store_ldp_rs_lmdb_t_2, sizeof(__pyx_k_lakesuperior_store_ldp_rs_lmdb_t_2), 0, 0, 1, 0},
-  {&__pyx_n_s_len, __pyx_k_len, sizeof(__pyx_k_len), 0, 0, 1, 1},
-  {&__pyx_kp_u_length, __pyx_k_length, sizeof(__pyx_k_length), 0, 1, 0, 0},
-  {&__pyx_kp_u_length_2, __pyx_k_length_2, sizeof(__pyx_k_length_2), 0, 1, 0, 0},
-  {&__pyx_n_s_logger, __pyx_k_logger, sizeof(__pyx_k_logger), 0, 0, 1, 1},
-  {&__pyx_n_s_logging, __pyx_k_logging, sizeof(__pyx_k_logging), 0, 0, 1, 1},
-  {&__pyx_n_s_lookup, __pyx_k_lookup, sizeof(__pyx_k_lookup), 0, 0, 1, 1},
-  {&__pyx_kp_u_lookup_1bound, __pyx_k_lookup_1bound, sizeof(__pyx_k_lookup_1bound), 0, 1, 0, 0},
-  {&__pyx_n_s_lookup_indices, __pyx_k_lookup_indices, sizeof(__pyx_k_lookup_indices), 0, 0, 1, 1},
-  {&__pyx_kp_u_luk, __pyx_k_luk, sizeof(__pyx_k_luk), 0, 1, 0, 0},
-  {&__pyx_kp_u_luk1, __pyx_k_luk1, sizeof(__pyx_k_luk1), 0, 1, 0, 0},
-  {&__pyx_kp_u_luk2, __pyx_k_luk2, sizeof(__pyx_k_luk2), 0, 1, 0, 0},
-  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
-  {&__pyx_n_u_map_size, __pyx_k_map_size, sizeof(__pyx_k_map_size), 0, 1, 0, 1},
-  {&__pyx_n_u_ms_entries, __pyx_k_ms_entries, sizeof(__pyx_k_ms_entries), 0, 1, 0, 1},
-  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
-  {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
-  {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0},
-  {&__pyx_n_s_normalize_context, __pyx_k_normalize_context, sizeof(__pyx_k_normalize_context), 0, 0, 1, 1},
-  {&__pyx_kp_u_ns_pfx, __pyx_k_ns_pfx, sizeof(__pyx_k_ns_pfx), 0, 1, 0, 0},
-  {&__pyx_n_u_num_triples, __pyx_k_num_triples, sizeof(__pyx_k_num_triples), 0, 1, 0, 1},
-  {&__pyx_n_s_o, __pyx_k_o, sizeof(__pyx_k_o), 0, 0, 1, 1},
-  {&__pyx_kp_b_o_sp, __pyx_k_o_sp, sizeof(__pyx_k_o_sp), 0, 0, 0, 0},
-  {&__pyx_kp_u_o_sp, __pyx_k_o_sp, sizeof(__pyx_k_o_sp), 0, 1, 0, 0},
-  {&__pyx_n_s_options, __pyx_k_options, sizeof(__pyx_k_options), 0, 0, 1, 1},
-  {&__pyx_n_s_or, __pyx_k_or, sizeof(__pyx_k_or), 0, 0, 1, 1},
-  {&__pyx_n_s_other, __pyx_k_other, sizeof(__pyx_k_other), 0, 0, 1, 1},
-  {&__pyx_n_s_p, __pyx_k_p, sizeof(__pyx_k_p), 0, 0, 1, 1},
-  {&__pyx_kp_b_p_so, __pyx_k_p_so, sizeof(__pyx_k_p_so), 0, 0, 0, 0},
-  {&__pyx_kp_u_p_so, __pyx_k_p_so, sizeof(__pyx_k_p_so), 0, 1, 0, 0},
-  {&__pyx_kp_u_pfx_ns, __pyx_k_pfx_ns, sizeof(__pyx_k_pfx_ns), 0, 1, 0, 0},
-  {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
-  {&__pyx_n_s_pk_c, __pyx_k_pk_c, sizeof(__pyx_k_pk_c), 0, 0, 1, 1},
-  {&__pyx_n_s_pk_size, __pyx_k_pk_size, sizeof(__pyx_k_pk_size), 0, 0, 1, 1},
-  {&__pyx_kp_b_po_s, __pyx_k_po_s, sizeof(__pyx_k_po_s), 0, 0, 0, 0},
-  {&__pyx_kp_u_po_s, __pyx_k_po_s, sizeof(__pyx_k_po_s), 0, 1, 0, 0},
-  {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1},
-  {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1},
-  {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1},
-  {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1},
-  {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1},
-  {&__pyx_n_s_pyx_unpickle_Imr, __pyx_k_pyx_unpickle_Imr, sizeof(__pyx_k_pyx_unpickle_Imr), 0, 0, 1, 1},
-  {&__pyx_n_s_pyx_unpickle_SimpleGraph, __pyx_k_pyx_unpickle_SimpleGraph, sizeof(__pyx_k_pyx_unpickle_SimpleGraph), 0, 0, 1, 1},
-  {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
-  {&__pyx_n_s_quoted, __pyx_k_quoted, sizeof(__pyx_k_quoted), 0, 0, 1, 1},
-  {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
-  {&__pyx_n_s_rdflib, __pyx_k_rdflib, sizeof(__pyx_k_rdflib), 0, 0, 1, 1},
-  {&__pyx_n_s_rdflib_graph, __pyx_k_rdflib_graph, sizeof(__pyx_k_rdflib_graph), 0, 0, 1, 1},
-  {&__pyx_n_s_rdflib_term, __pyx_k_rdflib_term, sizeof(__pyx_k_rdflib_term), 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_remove, __pyx_k_remove, sizeof(__pyx_k_remove), 0, 0, 1, 1},
-  {&__pyx_n_s_remove_graph, __pyx_k_remove_graph, sizeof(__pyx_k_remove_graph), 0, 0, 1, 1},
-  {&__pyx_n_s_remove_triples, __pyx_k_remove_triples, sizeof(__pyx_k_remove_triples), 0, 0, 1, 1},
-  {&__pyx_n_s_resource, __pyx_k_resource, sizeof(__pyx_k_resource), 0, 0, 1, 1},
-  {&__pyx_kp_u_ret_offset, __pyx_k_ret_offset, sizeof(__pyx_k_ret_offset), 0, 1, 0, 0},
-  {&__pyx_n_s_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 0, 1, 1},
-  {&__pyx_kp_b_s_po, __pyx_k_s_po, sizeof(__pyx_k_s_po), 0, 0, 0, 0},
-  {&__pyx_kp_u_s_po, __pyx_k_s_po, sizeof(__pyx_k_s_po), 0, 1, 0, 0},
-  {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
-  {&__pyx_kp_s_self_curs_self_dbenv_self_dbis_s, __pyx_k_self_curs_self_dbenv_self_dbis_s, sizeof(__pyx_k_self_curs_self_dbenv_self_dbis_s), 0, 0, 1, 0},
-  {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
-  {&__pyx_n_s_set, __pyx_k_set, sizeof(__pyx_k_set), 0, 0, 1, 1},
-  {&__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_kp_b_so_p, __pyx_k_so_p, sizeof(__pyx_k_so_p), 0, 0, 0, 0},
-  {&__pyx_kp_u_so_p, __pyx_k_so_p, sizeof(__pyx_k_so_p), 0, 1, 0, 0},
-  {&__pyx_kp_b_sp_o, __pyx_k_sp_o, sizeof(__pyx_k_sp_o), 0, 0, 0, 0},
-  {&__pyx_kp_u_sp_o, __pyx_k_sp_o, sizeof(__pyx_k_sp_o), 0, 1, 0, 0},
-  {&__pyx_n_u_spo, __pyx_k_spo, sizeof(__pyx_k_spo), 0, 1, 0, 1},
-  {&__pyx_kp_u_spo_c, __pyx_k_spo_c, sizeof(__pyx_k_spo_c), 0, 1, 0, 0},
-  {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1},
-  {&__pyx_n_s_stats, __pyx_k_stats, sizeof(__pyx_k_stats), 0, 0, 1, 1},
-  {&__pyx_n_s_step, __pyx_k_step, sizeof(__pyx_k_step), 0, 0, 1, 1},
-  {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1},
-  {&__pyx_n_s_store, __pyx_k_store, sizeof(__pyx_k_store), 0, 0, 1, 1},
-  {&__pyx_n_s_strict, __pyx_k_strict, sizeof(__pyx_k_strict), 0, 0, 1, 1},
-  {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
-  {&__pyx_n_s_sub, __pyx_k_sub, sizeof(__pyx_k_sub), 0, 0, 1, 1},
-  {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1},
-  {&__pyx_kp_u_t_st, __pyx_k_t_st, sizeof(__pyx_k_t_st), 0, 1, 0, 0},
-  {&__pyx_kp_u_term_order, __pyx_k_term_order, sizeof(__pyx_k_term_order), 0, 1, 0, 0},
-  {&__pyx_n_s_terms, __pyx_k_terms, sizeof(__pyx_k_terms), 0, 0, 1, 1},
-  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
-  {&__pyx_kp_u_th_t, __pyx_k_th_t, sizeof(__pyx_k_th_t), 0, 1, 0, 0},
-  {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1},
-  {&__pyx_kp_u_to_indices, __pyx_k_to_indices, sizeof(__pyx_k_to_indices), 0, 1, 0, 0},
-  {&__pyx_n_s_to_tuple, __pyx_k_to_tuple, sizeof(__pyx_k_to_tuple), 0, 0, 1, 1},
-  {&__pyx_n_s_to_tuple_locals_genexpr, __pyx_k_to_tuple_locals_genexpr, sizeof(__pyx_k_to_tuple_locals_genexpr), 0, 0, 1, 1},
-  {&__pyx_n_s_triple, __pyx_k_triple, sizeof(__pyx_k_triple), 0, 0, 1, 1},
-  {&__pyx_n_s_triple_keys, __pyx_k_triple_keys, sizeof(__pyx_k_triple_keys), 0, 0, 1, 1},
-  {&__pyx_n_s_triple_pattern, __pyx_k_triple_pattern, sizeof(__pyx_k_triple_pattern), 0, 0, 1, 1},
-  {&__pyx_n_s_triples, __pyx_k_triples, sizeof(__pyx_k_triples), 0, 0, 1, 1},
-  {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
-  {&__pyx_n_s_uri, __pyx_k_uri, sizeof(__pyx_k_uri), 0, 0, 1, 1},
-  {&__pyx_kp_u_uri_2, __pyx_k_uri_2, sizeof(__pyx_k_uri_2), 0, 1, 0, 0},
-  {&__pyx_n_s_use_data, __pyx_k_use_data, sizeof(__pyx_k_use_data), 0, 0, 1, 1},
-  {&__pyx_n_s_use_data_locals__wrapper, __pyx_k_use_data_locals__wrapper, sizeof(__pyx_k_use_data_locals__wrapper), 0, 0, 1, 1},
-  {&__pyx_n_s_wrapper, __pyx_k_wrapper, sizeof(__pyx_k_wrapper), 0, 0, 1, 1},
-  {&__pyx_n_s_wraps, __pyx_k_wraps, sizeof(__pyx_k_wraps), 0, 0, 1, 1},
-  {&__pyx_n_s_xor, __pyx_k_xor, sizeof(__pyx_k_xor), 0, 0, 1, 1},
-  {0, 0, 0, 0, 0, 0, 0}
-};
-static int __Pyx_InitCachedBuiltins(void) {
-  __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(0, 169, __pyx_L1_error)
-  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 227, __pyx_L1_error)
-  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error)
-  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 301, __pyx_L1_error)
-  __pyx_builtin_hex = __Pyx_GetBuiltinName(__pyx_n_s_hex); if (!__pyx_builtin_hex) __PYX_ERR(0, 356, __pyx_L1_error)
-  __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 356, __pyx_L1_error)
-  __pyx_builtin_super = __Pyx_GetBuiltinName(__pyx_n_s_super); if (!__pyx_builtin_super) __PYX_ERR(0, 565, __pyx_L1_error)
-  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 660, __pyx_L1_error)
-  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 828, __pyx_L1_error)
-  __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) __PYX_ERR(0, 1365, __pyx_L1_error)
-  __pyx_builtin_any = __Pyx_GetBuiltinName(__pyx_n_s_any); if (!__pyx_builtin_any) __PYX_ERR(0, 1396, __pyx_L1_error)
-  return 0;
-  __pyx_L1_error:;
-  return -1;
-}
-
-static int __Pyx_InitCachedConstants(void) {
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
-
-  /* "(tree fragment)":2
- * def __reduce_cython__(self):
- *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- */
-  __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple_)) __PYX_ERR(1, 2, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple_);
-  __Pyx_GIVEREF(__pyx_tuple_);
-
-  /* "(tree fragment)":4
- *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state):
- *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
- */
-  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(1, 4, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__2);
-  __Pyx_GIVEREF(__pyx_tuple__2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":258
- *     """
- *     @wraps(fn)
- *     def _wrapper(self, other):             # <<<<<<<<<<<<<<
- *         if isinstance(other, SimpleGraph):
- *             other = other.data
- */
-  __pyx_tuple__4 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 258, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__4);
-  __Pyx_GIVEREF(__pyx_tuple__4);
-  __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__4, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_lakesuperior_store_ldp_rs_lmdb_t_2, __pyx_n_s_wrapper, 258, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 258, __pyx_L1_error)
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":301
- *             else:
- *                 if store is None:
- *                     raise ValueError('Store not specified for triple lookup.')             # <<<<<<<<<<<<<<
- *                 self._data_from_lookup(lookup, store)
- * 
- */
-  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_Store_not_specified_for_triple_l); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 301, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__7);
-  __Pyx_GIVEREF(__pyx_tuple__7);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1229
- * 
- *         # Remove all triples and indices associated with the graph.
- *         self._remove((None, None, None), gr_uri)             # <<<<<<<<<<<<<<
- *         # Remove the graph if it is in triples.
- *         self._remove((gr_uri, None, None))
- */
-  __pyx_tuple__13 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 1229, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__13);
-  __Pyx_GIVEREF(__pyx_tuple__13);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1356
- *             except KeyNotFoundError:
- *                 # Context not found.
- *                 return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- * 
- *             icur = self._cur_open('c:spo')
- */
-  __pyx_tuple__14 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_15); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 1356, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__14);
-  __Pyx_GIVEREF(__pyx_tuple__14);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1372
- *                         except KeyNotFoundError:
- *                             # Context not found.
- *                             return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- *                         memcpy(spok + (KLEN * i), tk, KLEN)
- *                         if tk is NULL:
- */
-  __pyx_tuple__15 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_15); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 1372, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__15);
-  __Pyx_GIVEREF(__pyx_tuple__15);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1376
- *                         if tk is NULL:
- *                             # A term in the triple is not found.
- *                             return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- *                     data_v.mv_data = spok
- *                     data_v.mv_size = TRP_KLEN
- */
-  __pyx_tuple__16 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_15); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 1376, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__16);
-  __Pyx_GIVEREF(__pyx_tuple__16);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1389
- *                         # Triple not found.
- *                         #logger.debug('spok / ck pair not found.')
- *                         return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- *                     ret = ResultSet(1, TRP_KLEN)
- *                     memcpy(ret.data, spok, TRP_KLEN)
- */
-  __pyx_tuple__17 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_15); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 1389, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__17);
-  __Pyx_GIVEREF(__pyx_tuple__17);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1390
- *                         #logger.debug('spok / ck pair not found.')
- *                         return ResultSet(0, TRP_KLEN)
- *                     ret = ResultSet(1, TRP_KLEN)             # <<<<<<<<<<<<<<
- *                     memcpy(ret.data, spok, TRP_KLEN)
- * 
- */
-  __pyx_tuple__18 = PyTuple_Pack(2, __pyx_int_1, __pyx_int_15); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 1390, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__18);
-  __Pyx_GIVEREF(__pyx_tuple__18);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1404
- *                     except KeyNotFoundError:
- *                         # Triple not found.
- *                         return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- * 
- *                     _check(lmdb.mdb_cursor_count(icur, &ct))
- */
-  __pyx_tuple__19 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_15); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 1404, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__19);
-  __Pyx_GIVEREF(__pyx_tuple__19);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1433
- *                         res = self._lookup(triple_pattern)
- *                     except KeyNotFoundError:
- *                         return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- * 
- *                     #logger.debug('Allocating for context filtering.')
- */
-  __pyx_tuple__20 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_15); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 1433, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__20);
-  __Pyx_GIVEREF(__pyx_tuple__20);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1479
- *                 res = self._lookup(triple_pattern)
- *             except KeyNotFoundError:
- *                 return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- *             #logger.debug('Res data before triple_keys return: {}'.format(
- *             #    res.data[: res.size]))
- */
-  __pyx_tuple__21 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_15); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 1479, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__21);
-  __Pyx_GIVEREF(__pyx_tuple__21);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1511
- *                             self.txn, self.get_dbi('spo:c'), &spok_v, &ck_v))
- *                     except KeyNotFoundError:
- *                         return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- * 
- *                     matches = ResultSet(1, TRP_KLEN)
- */
-  __pyx_tuple__22 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_15); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 1511, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__22);
-  __Pyx_GIVEREF(__pyx_tuple__22);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1513
- *                         return ResultSet(0, TRP_KLEN)
- * 
- *                     matches = ResultSet(1, TRP_KLEN)             # <<<<<<<<<<<<<<
- *                     memcpy(matches.data, spok, TRP_KLEN)
- *                     return matches
- */
-  __pyx_tuple__23 = PyTuple_Pack(2, __pyx_int_1, __pyx_int_15); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 1513, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__23);
-  __Pyx_GIVEREF(__pyx_tuple__23);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1541
- *                 else:
- *                     # Get all triples in the database.
- *                     logger.debug('Getting all DB triples.')             # <<<<<<<<<<<<<<
- *                     dcur = self._cur_open('spo:c')
- * 
- */
-  __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_u_Getting_all_DB_triples); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 1541, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__24);
-  __Pyx_GIVEREF(__pyx_tuple__24);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1552
- *                         logger.debug(f'Triples found: {ct}')
- *                         if ct == 0:
- *                             return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- * 
- *                         _check(lmdb.mdb_cursor_get(
- */
-  __pyx_tuple__25 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_15); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 1552, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__25);
-  __Pyx_GIVEREF(__pyx_tuple__25);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1602
- *             self._to_key(term, &luk)
- *         except KeyNotFoundError:
- *             return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- *         logging.debug('luk: {}'.format(luk))
- * 
- */
-  __pyx_tuple__26 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_15); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 1602, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__26);
-  __Pyx_GIVEREF(__pyx_tuple__26);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1707
- *             self._to_key(term2, &luk2)
- *         except KeyNotFoundError:
- *             return ResultSet(0, TRP_KLEN)             # <<<<<<<<<<<<<<
- *         logging.debug('luk1: {}'.format(luk1[: KLEN]))
- *         logging.debug('luk2: {}'.format(luk2[: KLEN]))
- */
-  __pyx_tuple__28 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_15); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 1707, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__28);
-  __Pyx_GIVEREF(__pyx_tuple__28);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1821
- *                     icur, &key_v, NULL, lmdb.MDB_FIRST))
- *             except KeyNotFoundError:
- *                 return ResultSet(0, DBL_KLEN)             # <<<<<<<<<<<<<<
- * 
- *             while True:
- */
-  __pyx_tuple__29 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_10); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 1821, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__29);
-  __Pyx_GIVEREF(__pyx_tuple__29);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2112
- *                 # at 255, the sequence is exhausted.
- *                 if i == 0:
- *                     raise RuntimeError(             # <<<<<<<<<<<<<<
- *                             'BAD DAY: Sequence exhausted. No more '
- *                             'combinations are possible.')
- */
-  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_u_BAD_DAY_Sequence_exhausted_No_mo); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 2112, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__31);
-  __Pyx_GIVEREF(__pyx_tuple__31);
-
-  /* "(tree fragment)":2
- * def __reduce_cython__(self):
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- */
-  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_self_curs_self_dbenv_self_dbis_s); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 2, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__32);
-  __Pyx_GIVEREF(__pyx_tuple__32);
-
-  /* "(tree fragment)":4
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")
- * def __setstate_cython__(self, __pyx_state):
- *     raise TypeError("self.curs,self.dbenv,self.dbis,self.txn cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
- */
-  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_self_curs_self_dbenv_self_dbis_s); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(1, 4, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__33);
-  __Pyx_GIVEREF(__pyx_tuple__33);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":251
- * 
- * 
- * def use_data(fn):             # <<<<<<<<<<<<<<
- *     """
- *     Decorator to indicate that a set operation between two SimpleGraph
- */
-  __pyx_tuple__36 = PyTuple_Pack(3, __pyx_n_s_fn, __pyx_n_s_wrapper, __pyx_n_s_wrapper); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 251, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__36);
-  __Pyx_GIVEREF(__pyx_tuple__36);
-  __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_lakesuperior_store_ldp_rs_lmdb_t_2, __pyx_n_s_use_data, 251, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 251, __pyx_L1_error)
-
-  /* "(tree fragment)":1
- * def __pyx_unpickle_SimpleGraph(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
- *     if __pyx_checksum != 0x8d777f3:
- *         from pickle import PickleError as __pyx_PickleError
- */
-  __pyx_tuple__37 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(1, 1, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__37);
-  __Pyx_GIVEREF(__pyx_tuple__37);
-  __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_SimpleGraph, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(1, 1, __pyx_L1_error)
-  __pyx_tuple__38 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(1, 1, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__38);
-  __Pyx_GIVEREF(__pyx_tuple__38);
-  __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Imr, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(1, 1, __pyx_L1_error)
-  __Pyx_RefNannyFinishContext();
-  return 0;
-  __pyx_L1_error:;
-  __Pyx_RefNannyFinishContext();
-  return -1;
-}
-
-static int __Pyx_InitGlobals(void) {
-  /* InitThreads.init */
-  #ifdef WITH_THREAD
-PyEval_InitThreads();
-#endif
-
-if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)
-
-  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_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __pyx_int_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __pyx_int_148338675 = PyInt_FromLong(148338675L); if (unlikely(!__pyx_int_148338675)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __pyx_int_200819009 = PyInt_FromLong(200819009L); if (unlikely(!__pyx_int_200819009)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __pyx_int_1099511627776 = PyInt_FromString((char *)"1099511627776", 0, 0); if (unlikely(!__pyx_int_1099511627776)) __PYX_ERR(0, 1, __pyx_L1_error)
-  return 0;
-  __pyx_L1_error:;
-  return -1;
-}
-
-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
-  __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 ---*/
-  __pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet = &__pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet.resize = (void (*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *, size_t))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_resize;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet.get_item = (unsigned char *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *, PyObject *))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_9ResultSet_get_item;
-  if (PyType_Ready(&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet) < 0) __PYX_ERR(0, 127, __pyx_L1_error)
-  __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet.tp_print = 0;
-  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet.tp_dictoffset && __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet.tp_getattro == PyObject_GenericGetAttr)) {
-    __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet.tp_getattro = __Pyx_PyObject_GenericGetAttr;
-  }
-  if (__Pyx_SetVtable(__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet.tp_dict, __pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet) < 0) __PYX_ERR(0, 127, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "ResultSet", (PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet) < 0) __PYX_ERR(0, 127, __pyx_L1_error)
-  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet) < 0) __PYX_ERR(0, 127, __pyx_L1_error)
-  __pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet = &__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet;
-  __pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph = &__pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph._data_from_lookup = (void (*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, PyObject *, struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph__data_from_lookup;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph.set = (void (*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, PyObject *, int __pyx_skip_dispatch))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_set;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph.remove_triples = (void (*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, PyObject *, int __pyx_skip_dispatch))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_remove_triples;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph.as_rdflib = (PyObject *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, int __pyx_skip_dispatch))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_as_rdflib;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph._slice = (PyObject *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, PyObject *, PyObject *, PyObject *))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph__slice;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph.lookup = (PyObject *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_lookup;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph.terms = (PyObject *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, PyObject *, int __pyx_skip_dispatch))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_terms;
-  if (PyType_Ready(&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph) < 0) __PYX_ERR(0, 264, __pyx_L1_error)
-  __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph.tp_print = 0;
-  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph.tp_dictoffset && __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph.tp_getattro == PyObject_GenericGetAttr)) {
-    __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph.tp_getattro = __Pyx_PyObject_GenericGetAttr;
-  }
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph___init__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph___init__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph___init__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__len__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_6__len__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_6__len__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_6__len__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_6__len__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__eq__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_8__eq__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_8__eq__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_8__eq__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_8__eq__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__repr__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_10__repr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_10__repr__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_10__repr__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_10__repr__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__str__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_12__str__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_12__str__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_12__str__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_12__str__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__sub__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_14__sub__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_14__sub__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_14__sub__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_14__sub__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__isub__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_16__isub__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_16__isub__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_16__isub__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_16__isub__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__and__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_18__and__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_18__and__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_18__and__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_18__and__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__iand__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_20__iand__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_20__iand__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_20__iand__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_20__iand__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__or__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_22__or__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_22__or__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_22__or__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_22__or__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__ior__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_24__ior__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_24__ior__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_24__ior__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_24__ior__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__xor__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_26__xor__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_26__xor__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_26__xor__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_26__xor__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__ixor__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_28__ixor__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_28__ixor__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_28__ixor__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_28__ixor__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__contains__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_30__contains__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_30__contains__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_30__contains__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_30__contains__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__iter__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_32__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_32__iter__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_32__iter__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_32__iter__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 264, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_34__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_34__getitem__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_34__getitem__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_11SimpleGraph_34__getitem__;
-    }
-  }
-  #endif
-  if (__Pyx_SetVtable(__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph.tp_dict, __pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph) < 0) __PYX_ERR(0, 264, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "SimpleGraph", (PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph) < 0) __PYX_ERR(0, 264, __pyx_L1_error)
-  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph) < 0) __PYX_ERR(0, 264, __pyx_L1_error)
-  __pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph = &__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph;
-  __pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr = &__pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr.__pyx_base = *__pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr.__pyx_base.as_rdflib = (PyObject *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph *, int __pyx_skip_dispatch))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_as_rdflib;
-  __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr.tp_base = __pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph;
-  if (PyType_Ready(&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr) < 0) __PYX_ERR(0, 533, __pyx_L1_error)
-  __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr.tp_print = 0;
-  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr.tp_dictoffset && __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr.tp_getattro == PyObject_GenericGetAttr)) {
-    __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr.tp_getattro = __Pyx_PyObject_GenericGetAttr;
-  }
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 533, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr___init__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr___init__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr___init__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, "__repr__"); if (unlikely(!wrapper)) __PYX_ERR(0, 533, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_2__repr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_2__repr__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_2__repr__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_2__repr__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, "__sub__"); if (unlikely(!wrapper)) __PYX_ERR(0, 533, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_4__sub__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_4__sub__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_4__sub__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_4__sub__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, "__and__"); if (unlikely(!wrapper)) __PYX_ERR(0, 533, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_6__and__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_6__and__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_6__and__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_6__and__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, "__or__"); if (unlikely(!wrapper)) __PYX_ERR(0, 533, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_8__or__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_8__or__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_8__or__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_8__or__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, "__xor__"); if (unlikely(!wrapper)) __PYX_ERR(0, 533, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_10__xor__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_10__xor__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_10__xor__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_10__xor__;
-    }
-  }
-  #endif
-  #if CYTHON_COMPILING_IN_CPYTHON
-  {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 533, __pyx_L1_error)
-    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_12__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_12__getitem__.doc = __pyx_doc_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_12__getitem__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3Imr_12__getitem__;
-    }
-  }
-  #endif
-  if (__Pyx_SetVtable(__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr.tp_dict, __pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr) < 0) __PYX_ERR(0, 533, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "Imr", (PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr) < 0) __PYX_ERR(0, 533, __pyx_L1_error)
-  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr) < 0) __PYX_ERR(0, 533, __pyx_L1_error)
-  __pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr = &__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr;
-  __pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore = __Pyx_ImportType("lakesuperior.store.base_lmdb_store", "BaseLmdbStore", sizeof(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore), 1); if (unlikely(!__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __pyx_vtabptr_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore = (struct __pyx_vtabstruct_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore*)__Pyx_GetVtable(__pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore->tp_dict); if (unlikely(!__pyx_vtabptr_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore = &__pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore.__pyx_base = *__pyx_vtabptr_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore.__pyx_base.stats = (PyObject *(*)(struct __pyx_obj_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore *, int __pyx_skip_dispatch))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_stats;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore._len = (size_t (*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__len *__pyx_optional_args))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__len;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore.add = (PyObject *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_add *__pyx_optional_args))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_add;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore.add_graph = (PyObject *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, int __pyx_skip_dispatch))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_add_graph;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore._add_graph = (void (*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, unsigned char *, size_t, int __pyx_skip_dispatch))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__add_graph;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore._remove = (void (*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__remove *__pyx_optional_args))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__remove;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore._index_triple = (void (*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, unsigned char *))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__index_triple;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore._remove_graph = (void (*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, int __pyx_skip_dispatch))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__remove_graph;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore.triple_keys = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_triple_keys *__pyx_optional_args))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_triple_keys;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore._lookup = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__lookup;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore._lookup_1bound = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, unsigned char, PyObject *))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__lookup_1bound;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore._lookup_2bound = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, unsigned char, PyObject *, unsigned char, PyObject *))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__lookup_2bound;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore._all_term_keys = (struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_ResultSet *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, int __pyx_skip_dispatch))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__all_term_keys;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore.all_namespaces = (PyObject *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, int __pyx_skip_dispatch))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_all_namespaces;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore.all_contexts = (PyObject *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, int __pyx_skip_dispatch, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_all_contexts *__pyx_optional_args))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_all_contexts;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore.from_key = (PyObject *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, unsigned char *))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_from_key;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore.from_trp_key = (PyObject *(*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, unsigned char *))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore_from_trp_key;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore._to_key = (void (*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key *))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_key;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore._to_triple_key = (void (*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, PyObject *, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_TripleKey *))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__to_triple_key;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore._append = (void (*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, unsigned char *, size_t, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key *, struct __pyx_opt_args_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__append *__pyx_optional_args))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__append;
-  __pyx_vtable_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore._next_key = (void (*)(struct __pyx_obj_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore *, unsigned char *, __pyx_t_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Key *))__pyx_f_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_15LmdbTriplestore__next_key;
-  __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore.tp_base = __pyx_ptype_12lakesuperior_5store_15base_lmdb_store_BaseLmdbStore;
-  if (PyType_Ready(&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore) < 0) __PYX_ERR(0, 683, __pyx_L1_error)
-  __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore.tp_print = 0;
-  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore.tp_dictoffset && __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore.tp_getattro == PyObject_GenericGetAttr)) {
-    __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore.tp_getattro = __Pyx_PyObject_GenericGetAttr;
-  }
-  if (__Pyx_SetVtable(__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore.tp_dict, __pyx_vtabptr_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore) < 0) __PYX_ERR(0, 683, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "LmdbTriplestore", (PyObject *)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore) < 0) __PYX_ERR(0, 683, __pyx_L1_error)
-  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore) < 0) __PYX_ERR(0, 683, __pyx_L1_error)
-  __pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore = &__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore;
-  if (PyType_Ready(&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple) < 0) __PYX_ERR(0, 219, __pyx_L1_error)
-  __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple.tp_print = 0;
-  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple.tp_dictoffset && __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple.tp_getattro == PyObject_GenericGetAttr)) {
-    __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
-  }
-  __pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple = &__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct__to_tuple;
-  if (PyType_Ready(&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr) < 0) __PYX_ERR(0, 226, __pyx_L1_error)
-  __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr.tp_print = 0;
-  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr.tp_dictoffset && __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr.tp_getattro == PyObject_GenericGetAttr)) {
-    __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
-  }
-  __pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr = &__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_1_genexpr;
-  if (PyType_Ready(&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts) < 0) __PYX_ERR(0, 1255, __pyx_L1_error)
-  __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts.tp_print = 0;
-  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts.tp_dictoffset && __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts.tp_getattro == PyObject_GenericGetAttr)) {
-    __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
-  }
-  __pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts = &__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_2_contexts;
-  if (PyType_Ready(&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples) < 0) __PYX_ERR(0, 1265, __pyx_L1_error)
-  __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples.tp_print = 0;
-  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples.tp_dictoffset && __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples.tp_getattro == PyObject_GenericGetAttr)) {
-    __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
-  }
-  __pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples = &__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_3_triples;
-  if (PyType_Ready(&__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms) < 0) __PYX_ERR(0, 1839, __pyx_L1_error)
-  __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms.tp_print = 0;
-  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms.tp_dictoffset && __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms.tp_getattro == PyObject_GenericGetAttr)) {
-    __pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
-  }
-  __pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms = &__pyx_type_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore___pyx_scope_struct_4_all_terms;
-  __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_RefNannyFinishContext();
-  return 0;
-}
-
-static int __Pyx_modinit_variable_import_code(void) {
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
-  /*--- Variable import code ---*/
-  __pyx_t_1 = __Pyx_ImportModule("lakesuperior.store.base_lmdb_store"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ImportVoidPtr(__pyx_t_1, "rc", (void **)&__pyx_vp_12lakesuperior_5store_15base_lmdb_store_rc, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ImportVoidPtr(__pyx_t_1, "i", (void **)&__pyx_vp_12lakesuperior_5store_15base_lmdb_store_i, "size_t") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ImportVoidPtr(__pyx_t_1, "key_v", (void **)&__pyx_vp_12lakesuperior_5store_15base_lmdb_store_key_v, "struct MDB_val") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ImportVoidPtr(__pyx_t_1, "data_v", (void **)&__pyx_vp_12lakesuperior_5store_15base_lmdb_store_data_v, "struct MDB_val") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ImportVoidPtr(__pyx_t_1, "dbi", (void **)&__pyx_vp_12lakesuperior_5store_15base_lmdb_store_dbi, "MDB_dbi") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_2 = __Pyx_ImportModule("lakesuperior.store.ldp_rs.term"); if (!__pyx_t_2) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ImportVoidPtr(__pyx_t_2, "term_type", (void **)&__pyx_vp_12lakesuperior_5store_6ldp_rs_4term_term_type, "unsigned char") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ImportVoidPtr(__pyx_t_2, "pack_fmt", (void **)&__pyx_vp_12lakesuperior_5store_6ldp_rs_4term_pack_fmt, "unsigned char *") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ImportVoidPtr(__pyx_t_2, "term_data", (void **)&__pyx_vp_12lakesuperior_5store_6ldp_rs_4term_term_data, "unsigned char *") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ImportVoidPtr(__pyx_t_2, "term_datatype", (void **)&__pyx_vp_12lakesuperior_5store_6ldp_rs_4term_term_datatype, "unsigned char *") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ImportVoidPtr(__pyx_t_2, "term_lang", (void **)&__pyx_vp_12lakesuperior_5store_6ldp_rs_4term_term_lang, "unsigned char *") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  Py_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_RefNannyFinishContext();
-  return 0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_RefNannyFinishContext();
-  return -1;
-}
-
-static int __Pyx_modinit_function_import_code(void) {
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
-  /*--- Function import code ---*/
-  __pyx_t_1 = __Pyx_ImportModule("lakesuperior.store.base_lmdb_store"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ImportFunction(__pyx_t_1, "_check", (void (**)(void))&__pyx_f_12lakesuperior_5store_15base_lmdb_store__check, "void (int, struct __pyx_opt_args_12lakesuperior_5store_15base_lmdb_store__check *__pyx_optional_args)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_2 = __Pyx_ImportModule("lakesuperior.store.ldp_rs.term"); if (!__pyx_t_2) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ImportFunction(__pyx_t_2, "serialize", (void (**)(void))&__pyx_f_12lakesuperior_5store_6ldp_rs_4term_serialize, "int (PyObject *, unsigned char **, size_t *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ImportFunction(__pyx_t_2, "deserialize", (void (**)(void))&__pyx_f_12lakesuperior_5store_6ldp_rs_4term_deserialize, "PyObject *(unsigned char *, size_t)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  Py_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_RefNannyFinishContext();
-  return 0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_RefNannyFinishContext();
-  return -1;
-}
-
-
-#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 initlmdb_triplestore(void) CYTHON_SMALL_CODE; /*proto*/
-__Pyx_PyMODINIT_FUNC initlmdb_triplestore(void)
-#else
-__Pyx_PyMODINIT_FUNC PyInit_lmdb_triplestore(void) CYTHON_SMALL_CODE; /*proto*/
-__Pyx_PyMODINIT_FUNC PyInit_lmdb_triplestore(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_lmdb_triplestore(PyObject *__pyx_pyinit_module)
-#endif
-#endif
-{
-  __Pyx_TraceDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  static unsigned char __pyx_t_3[3];
-  static unsigned char __pyx_t_4[3];
-  static unsigned char __pyx_t_5[3];
-  static unsigned char __pyx_t_6[3];
-  static unsigned char __pyx_t_7[3][3];
-  static unsigned char __pyx_t_8[3];
-  static unsigned char __pyx_t_9[3];
-  static unsigned char __pyx_t_10[3];
-  static unsigned char __pyx_t_11[3][3];
-  PyObject *__pyx_t_12 = NULL;
-  PyObject *__pyx_t_13 = NULL;
-  PyObject *__pyx_t_14 = 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_lmdb_triplestore(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("lmdb_triplestore", __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 (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
-  /*--- Initialize various global constants etc. ---*/
-  if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  #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_ERR(0, 1, __pyx_L1_error)
-  #endif
-  if (__pyx_module_is_main_lakesuperior__store__ldp_rs__lmdb_triplestore) {
-    if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  }
-  #if PY_MAJOR_VERSION >= 3
-  {
-    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
-    if (!PyDict_GetItemString(modules, "lakesuperior.store.ldp_rs.lmdb_triplestore")) {
-      if (unlikely(PyDict_SetItemString(modules, "lakesuperior.store.ldp_rs.lmdb_triplestore", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
-    }
-  }
-  #endif
-  /*--- 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;
-  (void)__Pyx_modinit_type_import_code();
-  if (unlikely(__Pyx_modinit_variable_import_code() != 0)) goto __pyx_L1_error;
-  if (unlikely(__Pyx_modinit_function_import_code() != 0)) goto __pyx_L1_error;
-  /*--- Execution code ---*/
-  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
-  if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  #endif
-  __Pyx_TraceCall("__Pyx_PyMODINIT_FUNC PyInit_lmdb_triplestore(void)", __pyx_f[0], 1, 0, __PYX_ERR(0, 1, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1
- * import logging             # <<<<<<<<<<<<<<
- * 
- * from functools import wraps
- */
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_logging, 0, 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_logging, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":3
- * import logging
- * 
- * from functools import wraps             # <<<<<<<<<<<<<<
- * 
- * from rdflib import Graph
- */
-  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_n_s_wraps);
-  __Pyx_GIVEREF(__pyx_n_s_wraps);
-  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_wraps);
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_functools, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_wraps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_wraps, __pyx_t_1) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":5
- * from functools import wraps
- * 
- * from rdflib import Graph             # <<<<<<<<<<<<<<
- * from rdflib.graph import DATASET_DEFAULT_GRAPH_ID as RDFLIB_DEFAULT_GRAPH_URI
- * from rdflib.term import Node
- */
-  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_Graph);
-  __Pyx_GIVEREF(__pyx_n_s_Graph);
-  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Graph);
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_rdflib, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Graph, __pyx_t_2) < 0) __PYX_ERR(0, 5, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":6
- * 
- * from rdflib import Graph
- * from rdflib.graph import DATASET_DEFAULT_GRAPH_ID as RDFLIB_DEFAULT_GRAPH_URI             # <<<<<<<<<<<<<<
- * from rdflib.term import Node
- * 
- */
-  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_n_s_DATASET_DEFAULT_GRAPH_ID);
-  __Pyx_GIVEREF(__pyx_n_s_DATASET_DEFAULT_GRAPH_ID);
-  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_DATASET_DEFAULT_GRAPH_ID);
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_rdflib_graph, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_DATASET_DEFAULT_GRAPH_ID); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RDFLIB_DEFAULT_GRAPH_URI, __pyx_t_1) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":7
- * from rdflib import Graph
- * from rdflib.graph import DATASET_DEFAULT_GRAPH_ID as RDFLIB_DEFAULT_GRAPH_URI
- * from rdflib.term import Node             # <<<<<<<<<<<<<<
- * 
- * from lakesuperior.store.base_lmdb_store import (
- */
-  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_Node);
-  __Pyx_GIVEREF(__pyx_n_s_Node);
-  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Node);
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_rdflib_term, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Node, __pyx_t_2) < 0) __PYX_ERR(0, 7, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":10
- * 
- * from lakesuperior.store.base_lmdb_store import (
- *         KeyExistsError, KeyNotFoundError, LmdbError)             # <<<<<<<<<<<<<<
- * from lakesuperior.store.base_lmdb_store cimport _check
- * 
- */
-  __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_n_s_KeyExistsError);
-  __Pyx_GIVEREF(__pyx_n_s_KeyExistsError);
-  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_KeyExistsError);
-  __Pyx_INCREF(__pyx_n_s_KeyNotFoundError);
-  __Pyx_GIVEREF(__pyx_n_s_KeyNotFoundError);
-  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_KeyNotFoundError);
-  __Pyx_INCREF(__pyx_n_s_LmdbError);
-  __Pyx_GIVEREF(__pyx_n_s_LmdbError);
-  PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_LmdbError);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":9
- * from rdflib.term import Node
- * 
- * from lakesuperior.store.base_lmdb_store import (             # <<<<<<<<<<<<<<
- *         KeyExistsError, KeyNotFoundError, LmdbError)
- * from lakesuperior.store.base_lmdb_store cimport _check
- */
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_lakesuperior_store_base_lmdb_sto, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_KeyExistsError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_KeyExistsError, __pyx_t_1) < 0) __PYX_ERR(0, 10, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_KeyNotFoundError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_KeyNotFoundError, __pyx_t_1) < 0) __PYX_ERR(0, 10, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_LmdbError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LmdbError, __pyx_t_1) < 0) __PYX_ERR(0, 10, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":85
- * 
- * cdef unsigned char first_key[KLEN]
- * memcpy(first_key, FIRST_KEY, KLEN)             # <<<<<<<<<<<<<<
- * 
- * cdef unsigned char lookup_rank[3]
- */
-  (void)(memcpy(__pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_first_key, ((char *)"\001\001\001\001\001"), 5));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":88
- * 
- * cdef unsigned char lookup_rank[3]
- * lookup_rank = [0, 2, 1]             # <<<<<<<<<<<<<<
- * """
- * Order in which keys are looked up if two terms are bound.
- */
-  __pyx_t_3[0] = 0;
-  __pyx_t_3[1] = 2;
-  __pyx_t_3[2] = 1;
-  memcpy(&(__pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_lookup_rank[0]), __pyx_t_3, sizeof(__pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_lookup_rank[0]) * (3));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":104
- * cdef unsigned char lookup_ordering[3][3]
- * lookup_ordering = [
- *     [0, 1, 2], # spo             # <<<<<<<<<<<<<<
- *     [1, 0, 2], # pso
- *     [2, 0, 1], # osp
- */
-  __pyx_t_4[0] = 0;
-  __pyx_t_4[1] = 1;
-  __pyx_t_4[2] = 2;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":105
- * lookup_ordering = [
- *     [0, 1, 2], # spo
- *     [1, 0, 2], # pso             # <<<<<<<<<<<<<<
- *     [2, 0, 1], # osp
- * ]
- */
-  __pyx_t_5[0] = 1;
-  __pyx_t_5[1] = 0;
-  __pyx_t_5[2] = 2;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":106
- *     [0, 1, 2], # spo
- *     [1, 0, 2], # pso
- *     [2, 0, 1], # osp             # <<<<<<<<<<<<<<
- * ]
- * 
- */
-  __pyx_t_6[0] = 2;
-  __pyx_t_6[1] = 0;
-  __pyx_t_6[2] = 1;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":103
- * 
- * cdef unsigned char lookup_ordering[3][3]
- * lookup_ordering = [             # <<<<<<<<<<<<<<
- *     [0, 1, 2], # spo
- *     [1, 0, 2], # pso
- */
-  memcpy(&(__pyx_t_7[0]), __pyx_t_4, sizeof(__pyx_t_7[0]));
-  memcpy(&(__pyx_t_7[1]), __pyx_t_5, sizeof(__pyx_t_7[0]));
-  memcpy(&(__pyx_t_7[2]), __pyx_t_6, sizeof(__pyx_t_7[0]));
-  memcpy(&(__pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_lookup_ordering[0]), __pyx_t_7, sizeof(__pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_lookup_ordering[0]) * (3));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":112
- * cdef unsigned char lookup_ordering_2bound[3][3]
- * lookup_ordering_2bound = [
- *     [1, 2, 0], # po:s             # <<<<<<<<<<<<<<
- *     [0, 2, 1], # so:p
- *     [0, 1, 2], # sp:o
- */
-  __pyx_t_8[0] = 1;
-  __pyx_t_8[1] = 2;
-  __pyx_t_8[2] = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":113
- * lookup_ordering_2bound = [
- *     [1, 2, 0], # po:s
- *     [0, 2, 1], # so:p             # <<<<<<<<<<<<<<
- *     [0, 1, 2], # sp:o
- * ]
- */
-  __pyx_t_9[0] = 0;
-  __pyx_t_9[1] = 2;
-  __pyx_t_9[2] = 1;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":114
- *     [1, 2, 0], # po:s
- *     [0, 2, 1], # so:p
- *     [0, 1, 2], # sp:o             # <<<<<<<<<<<<<<
- * ]
- * 
- */
-  __pyx_t_10[0] = 0;
-  __pyx_t_10[1] = 1;
-  __pyx_t_10[2] = 2;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":111
- * 
- * cdef unsigned char lookup_ordering_2bound[3][3]
- * lookup_ordering_2bound = [             # <<<<<<<<<<<<<<
- *     [1, 2, 0], # po:s
- *     [0, 2, 1], # so:p
- */
-  memcpy(&(__pyx_t_11[0]), __pyx_t_8, sizeof(__pyx_t_11[0]));
-  memcpy(&(__pyx_t_11[1]), __pyx_t_9, sizeof(__pyx_t_11[0]));
-  memcpy(&(__pyx_t_11[2]), __pyx_t_10, sizeof(__pyx_t_11[0]));
-  memcpy(&(__pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_lookup_ordering_2bound[0]), __pyx_t_11, sizeof(__pyx_v_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_lookup_ordering_2bound[0]) * (3));
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":124
- * 
- * 
- * logger = logging.getLogger(__name__)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 124, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_logger, __pyx_t_12) < 0) __PYX_ERR(0, 124, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":251
- * 
- * 
- * def use_data(fn):             # <<<<<<<<<<<<<<
- *     """
- *     Decorator to indicate that a set operation between two SimpleGraph
- */
-  __pyx_t_12 = PyCFunction_NewEx(&__pyx_mdef_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_1use_data, NULL, __pyx_n_s_lakesuperior_store_ldp_rs_lmdb_t); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 251, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_use_data, __pyx_t_12) < 0) __PYX_ERR(0, 251, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":277
- *         readonly set data
- * 
- *     def __init__(             # <<<<<<<<<<<<<<
- *             self, set data=set(), tuple lookup=(), store=None):
- *         """
- */
-  __pyx_t_12 = PySet_New(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 278, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __pyx_k__6 = ((PyObject*)__pyx_t_12);
-  __Pyx_GIVEREF(__pyx_t_12);
-  __pyx_t_12 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":344
- *         return len(self.data)
- * 
- *     @use_data             # <<<<<<<<<<<<<<
- *     def __eq__(self, other):
- *         """ Equality operator between ``SimpleGraph`` instances. """
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_use_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 344, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":345
- * 
- *     @use_data
- *     def __eq__(self, other):             # <<<<<<<<<<<<<<
- *         """ Equality operator between ``SimpleGraph`` instances. """
- *         return self.data == other
- */
-  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, __pyx_n_s_eq); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 345, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_13 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_13)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_13);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  if (!__pyx_t_13) {
-    __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 344, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_GOTREF(__pyx_t_12);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_1};
-      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 344, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_1};
-      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 344, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 344, __pyx_L1_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_1);
-      PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_1);
-      __pyx_t_1 = 0;
-      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_14, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 344, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph->tp_dict, __pyx_n_s_eq, __pyx_t_12) < 0) __PYX_ERR(0, 345, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":363
- *         return str(self.data)
- * 
- *     @use_data             # <<<<<<<<<<<<<<
- *     def __sub__(self, other):
- *         """ Set subtraction. """
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_use_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 363, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":364
- * 
- *     @use_data
- *     def __sub__(self, other):             # <<<<<<<<<<<<<<
- *         """ Set subtraction. """
- *         return self.data - other
- */
-  __pyx_t_14 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, __pyx_n_s_sub); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 364, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_14);
-  __pyx_t_1 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_1)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_1);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  if (!__pyx_t_1) {
-    __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 363, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    __Pyx_GOTREF(__pyx_t_12);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_14};
-      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 363, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_14};
-      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 363, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 363, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __pyx_t_1 = NULL;
-      __Pyx_GIVEREF(__pyx_t_14);
-      PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_14);
-      __pyx_t_14 = 0;
-      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_13, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 363, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph->tp_dict, __pyx_n_s_sub, __pyx_t_12) < 0) __PYX_ERR(0, 364, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":368
- *         return self.data - other
- * 
- *     @use_data             # <<<<<<<<<<<<<<
- *     def __isub__(self, other):
- *         """ In-place set subtraction. """
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_use_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 368, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":369
- * 
- *     @use_data
- *     def __isub__(self, other):             # <<<<<<<<<<<<<<
- *         """ In-place set subtraction. """
- *         self.data -= other
- */
-  __pyx_t_13 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, __pyx_n_s_isub); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 369, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __pyx_t_14 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_14)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_14);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  if (!__pyx_t_14) {
-    __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 368, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __Pyx_GOTREF(__pyx_t_12);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_13};
-      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 368, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_13};
-      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 368, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 368, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_14); __pyx_t_14 = NULL;
-      __Pyx_GIVEREF(__pyx_t_13);
-      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_13);
-      __pyx_t_13 = 0;
-      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 368, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph->tp_dict, __pyx_n_s_isub, __pyx_t_12) < 0) __PYX_ERR(0, 369, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":374
- *         return self
- * 
- *     @use_data             # <<<<<<<<<<<<<<
- *     def __and__(self, other):
- *         """ Set intersection. """
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_use_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 374, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":375
- * 
- *     @use_data
- *     def __and__(self, other):             # <<<<<<<<<<<<<<
- *         """ Set intersection. """
- *         return self.data & other
- */
-  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, __pyx_n_s_and); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 375, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_13 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_13)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_13);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  if (!__pyx_t_13) {
-    __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 374, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_GOTREF(__pyx_t_12);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_1};
-      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 374, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_1};
-      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 374, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 374, __pyx_L1_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_1);
-      PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_1);
-      __pyx_t_1 = 0;
-      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_14, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 374, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph->tp_dict, __pyx_n_s_and, __pyx_t_12) < 0) __PYX_ERR(0, 375, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":379
- *         return self.data & other
- * 
- *     @use_data             # <<<<<<<<<<<<<<
- *     def __iand__(self, other):
- *         """ In-place set intersection. """
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_use_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 379, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":380
- * 
- *     @use_data
- *     def __iand__(self, other):             # <<<<<<<<<<<<<<
- *         """ In-place set intersection. """
- *         self.data &= other
- */
-  __pyx_t_14 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, __pyx_n_s_iand); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 380, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_14);
-  __pyx_t_1 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_1)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_1);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  if (!__pyx_t_1) {
-    __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 379, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    __Pyx_GOTREF(__pyx_t_12);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_14};
-      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 379, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_14};
-      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 379, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 379, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __pyx_t_1 = NULL;
-      __Pyx_GIVEREF(__pyx_t_14);
-      PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_14);
-      __pyx_t_14 = 0;
-      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_13, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 379, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph->tp_dict, __pyx_n_s_iand, __pyx_t_12) < 0) __PYX_ERR(0, 380, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":385
- *         return self
- * 
- *     @use_data             # <<<<<<<<<<<<<<
- *     def __or__(self, other):
- *         """ Set union. """
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_use_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 385, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":386
- * 
- *     @use_data
- *     def __or__(self, other):             # <<<<<<<<<<<<<<
- *         """ Set union. """
- *         return self.data | other
- */
-  __pyx_t_13 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, __pyx_n_s_or); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 386, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __pyx_t_14 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_14)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_14);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  if (!__pyx_t_14) {
-    __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 385, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __Pyx_GOTREF(__pyx_t_12);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_13};
-      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 385, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_13};
-      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 385, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 385, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_14); __pyx_t_14 = NULL;
-      __Pyx_GIVEREF(__pyx_t_13);
-      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_13);
-      __pyx_t_13 = 0;
-      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 385, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph->tp_dict, __pyx_n_s_or, __pyx_t_12) < 0) __PYX_ERR(0, 386, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":390
- *         return self.data | other
- * 
- *     @use_data             # <<<<<<<<<<<<<<
- *     def __ior__(self, other):
- *         """ In-place set union. """
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_use_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 390, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":391
- * 
- *     @use_data
- *     def __ior__(self, other):             # <<<<<<<<<<<<<<
- *         """ In-place set union. """
- *         self.data |= other
- */
-  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, __pyx_n_s_ior); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 391, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_13 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_13)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_13);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  if (!__pyx_t_13) {
-    __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 390, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_GOTREF(__pyx_t_12);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_1};
-      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 390, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_1};
-      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 390, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 390, __pyx_L1_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_1);
-      PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_1);
-      __pyx_t_1 = 0;
-      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_14, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 390, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph->tp_dict, __pyx_n_s_ior, __pyx_t_12) < 0) __PYX_ERR(0, 391, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":396
- *         return self
- * 
- *     @use_data             # <<<<<<<<<<<<<<
- *     def __xor__(self, other):
- *         """ Set exclusive intersection (XOR). """
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_use_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 396, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":397
- * 
- *     @use_data
- *     def __xor__(self, other):             # <<<<<<<<<<<<<<
- *         """ Set exclusive intersection (XOR). """
- *         return self.data ^ other
- */
-  __pyx_t_14 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, __pyx_n_s_xor); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 397, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_14);
-  __pyx_t_1 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_1)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_1);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  if (!__pyx_t_1) {
-    __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 396, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    __Pyx_GOTREF(__pyx_t_12);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_14};
-      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 396, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_14};
-      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 396, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 396, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __pyx_t_1 = NULL;
-      __Pyx_GIVEREF(__pyx_t_14);
-      PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_14);
-      __pyx_t_14 = 0;
-      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_13, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 396, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph->tp_dict, __pyx_n_s_xor, __pyx_t_12) < 0) __PYX_ERR(0, 397, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":401
- *         return self.data ^ other
- * 
- *     @use_data             # <<<<<<<<<<<<<<
- *     def __ixor__(self, other):
- *         """ In-place set exclusive intersection (XOR). """
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_use_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 401, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":402
- * 
- *     @use_data
- *     def __ixor__(self, other):             # <<<<<<<<<<<<<<
- *         """ In-place set exclusive intersection (XOR). """
- *         self.data ^= other
- */
-  __pyx_t_13 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph, __pyx_n_s_ixor); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 402, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __pyx_t_14 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_14)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_14);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  if (!__pyx_t_14) {
-    __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 401, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __Pyx_GOTREF(__pyx_t_12);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_13};
-      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 401, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_13};
-      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 401, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 401, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_14); __pyx_t_14 = NULL;
-      __Pyx_GIVEREF(__pyx_t_13);
-      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_13);
-      __pyx_t_13 = 0;
-      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 401, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph->tp_dict, __pyx_n_s_ixor, __pyx_t_12) < 0) __PYX_ERR(0, 402, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_SimpleGraph);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":600
- *             f'length={len(self.data)}>')
- * 
- *     @use_data             # <<<<<<<<<<<<<<
- *     def __sub__(self, other):
- *         """
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_use_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 600, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":601
- * 
- *     @use_data
- *     def __sub__(self, other):             # <<<<<<<<<<<<<<
- *         """
- *         Set difference. This creates a new Imr with the same subject URI.
- */
-  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, __pyx_n_s_sub); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 601, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_13 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_13)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_13);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  if (!__pyx_t_13) {
-    __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 600, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_GOTREF(__pyx_t_12);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_1};
-      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 600, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_1};
-      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 600, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 600, __pyx_L1_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_1);
-      PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_1);
-      __pyx_t_1 = 0;
-      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_14, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 600, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr->tp_dict, __pyx_n_s_sub, __pyx_t_12) < 0) __PYX_ERR(0, 601, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":607
- *         return self.__class__(uri=self.uri, data=self.data - other)
- * 
- *     @use_data             # <<<<<<<<<<<<<<
- *     def __and__(self, other):
- *         """
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_use_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 607, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":608
- * 
- *     @use_data
- *     def __and__(self, other):             # <<<<<<<<<<<<<<
- *         """
- *         Set intersection. This creates a new Imr with the same subject URI.
- */
-  __pyx_t_14 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, __pyx_n_s_and); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 608, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_14);
-  __pyx_t_1 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_1)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_1);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  if (!__pyx_t_1) {
-    __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 607, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    __Pyx_GOTREF(__pyx_t_12);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_14};
-      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 607, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_14};
-      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 607, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 607, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __pyx_t_1 = NULL;
-      __Pyx_GIVEREF(__pyx_t_14);
-      PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_14);
-      __pyx_t_14 = 0;
-      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_13, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 607, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr->tp_dict, __pyx_n_s_and, __pyx_t_12) < 0) __PYX_ERR(0, 608, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":614
- *         return self.__class__(uri=self.uri, data=self.data & other)
- * 
- *     @use_data             # <<<<<<<<<<<<<<
- *     def __or__(self, other):
- *         """
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_use_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 614, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":615
- * 
- *     @use_data
- *     def __or__(self, other):             # <<<<<<<<<<<<<<
- *         """
- *         Set union. This creates a new Imr with the same subject URI.
- */
-  __pyx_t_13 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, __pyx_n_s_or); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 615, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __pyx_t_14 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_14)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_14);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  if (!__pyx_t_14) {
-    __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 614, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __Pyx_GOTREF(__pyx_t_12);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_13};
-      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 614, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_13};
-      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 614, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 614, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_14); __pyx_t_14 = NULL;
-      __Pyx_GIVEREF(__pyx_t_13);
-      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_13);
-      __pyx_t_13 = 0;
-      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 614, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr->tp_dict, __pyx_n_s_or, __pyx_t_12) < 0) __PYX_ERR(0, 615, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":621
- *         return self.__class__(uri=self.uri, data=self.data | other)
- * 
- *     @use_data             # <<<<<<<<<<<<<<
- *     def __xor__(self, other):
- *         """
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_use_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 621, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":622
- * 
- *     @use_data
- *     def __xor__(self, other):             # <<<<<<<<<<<<<<
- *         """
- *         Set exclusive OR (XOR). This creates a new Imr with the same subject
- */
-  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr, __pyx_n_s_xor); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 622, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_13 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_13)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_13);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  if (!__pyx_t_13) {
-    __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 621, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_GOTREF(__pyx_t_12);
-  } else {
-    #if CYTHON_FAST_PYCALL
-    if (PyFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_1};
-      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 621, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    #if CYTHON_FAST_PYCCALL
-    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-      PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_1};
-      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 621, __pyx_L1_error)
-      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    } else
-    #endif
-    {
-      __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 621, __pyx_L1_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_1);
-      PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_1);
-      __pyx_t_1 = 0;
-      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_14, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 621, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    }
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr->tp_dict, __pyx_n_s_xor, __pyx_t_12) < 0) __PYX_ERR(0, 622, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_Imr);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":695
- *     """
- * 
- *     dbi_labels = [             # <<<<<<<<<<<<<<
- *         # Main data
- *         # Term key to serialized term content
- */
-  __pyx_t_12 = PyList_New(13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 695, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __Pyx_INCREF(__pyx_kp_u_t_st);
-  __Pyx_GIVEREF(__pyx_kp_u_t_st);
-  PyList_SET_ITEM(__pyx_t_12, 0, __pyx_kp_u_t_st);
-  __Pyx_INCREF(__pyx_kp_u_spo_c);
-  __Pyx_GIVEREF(__pyx_kp_u_spo_c);
-  PyList_SET_ITEM(__pyx_t_12, 1, __pyx_kp_u_spo_c);
-  __Pyx_INCREF(__pyx_kp_u_c);
-  __Pyx_GIVEREF(__pyx_kp_u_c);
-  PyList_SET_ITEM(__pyx_t_12, 2, __pyx_kp_u_c);
-  __Pyx_INCREF(__pyx_kp_u_pfx_ns);
-  __Pyx_GIVEREF(__pyx_kp_u_pfx_ns);
-  PyList_SET_ITEM(__pyx_t_12, 3, __pyx_kp_u_pfx_ns);
-  __Pyx_INCREF(__pyx_kp_u_ns_pfx);
-  __Pyx_GIVEREF(__pyx_kp_u_ns_pfx);
-  PyList_SET_ITEM(__pyx_t_12, 4, __pyx_kp_u_ns_pfx);
-  __Pyx_INCREF(__pyx_kp_u_th_t);
-  __Pyx_GIVEREF(__pyx_kp_u_th_t);
-  PyList_SET_ITEM(__pyx_t_12, 5, __pyx_kp_u_th_t);
-  __Pyx_INCREF(__pyx_kp_u_s_po);
-  __Pyx_GIVEREF(__pyx_kp_u_s_po);
-  PyList_SET_ITEM(__pyx_t_12, 6, __pyx_kp_u_s_po);
-  __Pyx_INCREF(__pyx_kp_u_p_so);
-  __Pyx_GIVEREF(__pyx_kp_u_p_so);
-  PyList_SET_ITEM(__pyx_t_12, 7, __pyx_kp_u_p_so);
-  __Pyx_INCREF(__pyx_kp_u_o_sp);
-  __Pyx_GIVEREF(__pyx_kp_u_o_sp);
-  PyList_SET_ITEM(__pyx_t_12, 8, __pyx_kp_u_o_sp);
-  __Pyx_INCREF(__pyx_kp_u_po_s);
-  __Pyx_GIVEREF(__pyx_kp_u_po_s);
-  PyList_SET_ITEM(__pyx_t_12, 9, __pyx_kp_u_po_s);
-  __Pyx_INCREF(__pyx_kp_u_so_p);
-  __Pyx_GIVEREF(__pyx_kp_u_so_p);
-  PyList_SET_ITEM(__pyx_t_12, 10, __pyx_kp_u_so_p);
-  __Pyx_INCREF(__pyx_kp_u_sp_o);
-  __Pyx_GIVEREF(__pyx_kp_u_sp_o);
-  PyList_SET_ITEM(__pyx_t_12, 11, __pyx_kp_u_sp_o);
-  __Pyx_INCREF(__pyx_kp_u_c_spo);
-  __Pyx_GIVEREF(__pyx_kp_u_c_spo);
-  PyList_SET_ITEM(__pyx_t_12, 12, __pyx_kp_u_c_spo);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore->tp_dict, __pyx_n_s_dbi_labels, __pyx_t_12) < 0) __PYX_ERR(0, 695, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":721
- *     ]
- * 
- *     lookup_indices = [             # <<<<<<<<<<<<<<
- *         b's:po',
- *         b'p:so',
- */
-  __pyx_t_12 = PyList_New(6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 721, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __Pyx_INCREF(__pyx_kp_b_s_po);
-  __Pyx_GIVEREF(__pyx_kp_b_s_po);
-  PyList_SET_ITEM(__pyx_t_12, 0, __pyx_kp_b_s_po);
-  __Pyx_INCREF(__pyx_kp_b_p_so);
-  __Pyx_GIVEREF(__pyx_kp_b_p_so);
-  PyList_SET_ITEM(__pyx_t_12, 1, __pyx_kp_b_p_so);
-  __Pyx_INCREF(__pyx_kp_b_o_sp);
-  __Pyx_GIVEREF(__pyx_kp_b_o_sp);
-  PyList_SET_ITEM(__pyx_t_12, 2, __pyx_kp_b_o_sp);
-  __Pyx_INCREF(__pyx_kp_b_po_s);
-  __Pyx_GIVEREF(__pyx_kp_b_po_s);
-  PyList_SET_ITEM(__pyx_t_12, 3, __pyx_kp_b_po_s);
-  __Pyx_INCREF(__pyx_kp_b_so_p);
-  __Pyx_GIVEREF(__pyx_kp_b_so_p);
-  PyList_SET_ITEM(__pyx_t_12, 4, __pyx_kp_b_so_p);
-  __Pyx_INCREF(__pyx_kp_b_sp_o);
-  __Pyx_GIVEREF(__pyx_kp_b_sp_o);
-  PyList_SET_ITEM(__pyx_t_12, 5, __pyx_kp_b_sp_o);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore->tp_dict, __pyx_n_s_lookup_indices, __pyx_t_12) < 0) __PYX_ERR(0, 721, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":731
- * 
- *     dbi_flags = {
- *         's:po': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,             # <<<<<<<<<<<<<<
- *         'p:so': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'o:sp': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- */
-  __pyx_t_12 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __pyx_t_2 = __Pyx_PyInt_From_int((MDB_DUPSORT | MDB_DUPFIXED)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_12, __pyx_kp_u_s_po, __pyx_t_2) < 0) __PYX_ERR(0, 731, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":732
- *     dbi_flags = {
- *         's:po': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'p:so': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,             # <<<<<<<<<<<<<<
- *         'o:sp': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'po:s': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- */
-  __pyx_t_2 = __Pyx_PyInt_From_int((MDB_DUPSORT | MDB_DUPFIXED)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 732, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_12, __pyx_kp_u_p_so, __pyx_t_2) < 0) __PYX_ERR(0, 731, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":733
- *         's:po': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'p:so': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'o:sp': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,             # <<<<<<<<<<<<<<
- *         'po:s': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'so:p': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- */
-  __pyx_t_2 = __Pyx_PyInt_From_int((MDB_DUPSORT | MDB_DUPFIXED)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 733, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_12, __pyx_kp_u_o_sp, __pyx_t_2) < 0) __PYX_ERR(0, 731, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":734
- *         'p:so': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'o:sp': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'po:s': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,             # <<<<<<<<<<<<<<
- *         'so:p': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'sp:o': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- */
-  __pyx_t_2 = __Pyx_PyInt_From_int((MDB_DUPSORT | MDB_DUPFIXED)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 734, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_12, __pyx_kp_u_po_s, __pyx_t_2) < 0) __PYX_ERR(0, 731, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":735
- *         'o:sp': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'po:s': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'so:p': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,             # <<<<<<<<<<<<<<
- *         'sp:o': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'c:spo': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- */
-  __pyx_t_2 = __Pyx_PyInt_From_int((MDB_DUPSORT | MDB_DUPFIXED)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 735, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_12, __pyx_kp_u_so_p, __pyx_t_2) < 0) __PYX_ERR(0, 731, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":736
- *         'po:s': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'so:p': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'sp:o': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,             # <<<<<<<<<<<<<<
- *         'c:spo': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'spo:c': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- */
-  __pyx_t_2 = __Pyx_PyInt_From_int((MDB_DUPSORT | MDB_DUPFIXED)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 736, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_12, __pyx_kp_u_sp_o, __pyx_t_2) < 0) __PYX_ERR(0, 731, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":737
- *         'so:p': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'sp:o': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'c:spo': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,             # <<<<<<<<<<<<<<
- *         'spo:c': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *     }
- */
-  __pyx_t_2 = __Pyx_PyInt_From_int((MDB_DUPSORT | MDB_DUPFIXED)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 737, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_12, __pyx_kp_u_c_spo, __pyx_t_2) < 0) __PYX_ERR(0, 731, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":738
- *         'sp:o': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'c:spo': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,
- *         'spo:c': lmdb.MDB_DUPSORT | lmdb.MDB_DUPFIXED,             # <<<<<<<<<<<<<<
- *     }
- * 
- */
-  __pyx_t_2 = __Pyx_PyInt_From_int((MDB_DUPSORT | MDB_DUPFIXED)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 738, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_12, __pyx_kp_u_spo_c, __pyx_t_2) < 0) __PYX_ERR(0, 731, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore->tp_dict, __pyx_n_s_dbi_flags, __pyx_t_12) < 0) __PYX_ERR(0, 730, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":741
- *     }
- * 
- *     flags = 0             # <<<<<<<<<<<<<<
- * 
- *     options = {
- */
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore->tp_dict, __pyx_n_s_flags, __pyx_int_0) < 0) __PYX_ERR(0, 741, __pyx_L1_error)
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":744
- * 
- *     options = {
- *         'map_size': 1024 ** 4 # 1Tb.             # <<<<<<<<<<<<<<
- *     }
- * 
- */
-  __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 744, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_map_size, __pyx_int_1099511627776) < 0) __PYX_ERR(0, 744, __pyx_L1_error)
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore->tp_dict, __pyx_n_s_options, __pyx_t_12) < 0) __PYX_ERR(0, 743, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  PyType_Modified(__pyx_ptype_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_LmdbTriplestore);
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":2039
- *     cdef void _append(
- *             self, unsigned char *value, size_t vlen, Key *nkey,
- *             unsigned char *dblabel=b'', lmdb.MDB_txn *txn=NULL,             # <<<<<<<<<<<<<<
- *             unsigned int flags=0) except *:
- *         """
- */
-  __pyx_k__30 = ((unsigned char *)((char const *)""));
-
-  /* "(tree fragment)":1
- * def __pyx_unpickle_SimpleGraph(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
- *     if __pyx_checksum != 0x8d777f3:
- *         from pickle import PickleError as __pyx_PickleError
- */
-  __pyx_t_12 = PyCFunction_NewEx(&__pyx_mdef_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_3__pyx_unpickle_SimpleGraph, NULL, __pyx_n_s_lakesuperior_store_ldp_rs_lmdb_t); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 1, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_SimpleGraph, __pyx_t_12) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-
-  /* "(tree fragment)":9
- *         __pyx_unpickle_SimpleGraph__set_state(<SimpleGraph> __pyx_result, __pyx_state)
- *     return __pyx_result
- * cdef __pyx_unpickle_SimpleGraph__set_state(SimpleGraph __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
- *     __pyx_result.data = __pyx_state[0]
- *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
- */
-  __pyx_t_12 = PyCFunction_NewEx(&__pyx_mdef_12lakesuperior_5store_6ldp_rs_16lmdb_triplestore_5__pyx_unpickle_Imr, NULL, __pyx_n_s_lakesuperior_store_ldp_rs_lmdb_t); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 1, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Imr, __pyx_t_12) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-
-  /* "lakesuperior/store/ldp_rs/lmdb_triplestore.pyx":1
- * import logging             # <<<<<<<<<<<<<<
- * 
- * from functools import wraps
- */
-  __pyx_t_12 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_12) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  __Pyx_TraceReturn(Py_None, 0);
-
-  /*--- Wrapped vars code ---*/
-
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_12);
-  __Pyx_XDECREF(__pyx_t_13);
-  __Pyx_XDECREF(__pyx_t_14);
-  if (__pyx_m) {
-    if (__pyx_d) {
-      __Pyx_AddTraceback("init lakesuperior.store.ldp_rs.lmdb_triplestore", 0, __pyx_lineno, __pyx_filename);
-    }
-    Py_DECREF(__pyx_m); __pyx_m = 0;
-  } else if (!PyErr_Occurred()) {
-    PyErr_SetString(PyExc_ImportError, "init lakesuperior.store.ldp_rs.lmdb_triplestore");
-  }
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  #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 --- */
-/* Refnanny */
-#if CYTHON_REFNANNY
-static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
-    PyObject *m = NULL, *p = NULL;
-    void *r = NULL;
-    m = PyImport_ImportModule((char *)modname);
-    if (!m) goto end;
-    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
-    if (!p) goto end;
-    r = PyLong_AsVoidPtr(p);
-end:
-    Py_XDECREF(p);
-    Py_XDECREF(m);
-    return (__Pyx_RefNannyAPIStruct *)r;
-}
-#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)) {
-        PyErr_Format(PyExc_NameError,
-#if PY_MAJOR_VERSION >= 3
-            "name '%U' is not defined", name);
-#else
-            "name '%.200s' is not defined", PyString_AS_STRING(name));
-#endif
-    }
-    return result;
-}
-
-/* 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
-
-/* Profile */
-#if CYTHON_PROFILE
-static int __Pyx_TraceSetupAndCall(PyCodeObject** code,
-                                   PyFrameObject** frame,
-                                   PyThreadState* tstate,
-                                   const char *funcname,
-                                   const char *srcfile,
-                                   int firstlineno) {
-    PyObject *type, *value, *traceback;
-    int retval;
-    if (*frame == NULL || !CYTHON_PROFILE_REUSE_FRAME) {
-        if (*code == NULL) {
-            *code = __Pyx_createFrameCodeObject(funcname, srcfile, firstlineno);
-            if (*code == NULL) return 0;
-        }
-        *frame = PyFrame_New(
-            tstate,                          /*PyThreadState *tstate*/
-            *code,                           /*PyCodeObject *code*/
-            __pyx_d,                  /*PyObject *globals*/
-            0                                /*PyObject *locals*/
-        );
-        if (*frame == NULL) return 0;
-        if (CYTHON_TRACE && (*frame)->f_trace == NULL) {
-            Py_INCREF(Py_None);
-            (*frame)->f_trace = Py_None;
-        }
-#if PY_VERSION_HEX < 0x030400B1
-    } else {
-        (*frame)->f_tstate = tstate;
-#endif
-    }
-      __Pyx_PyFrame_SetLineNumber(*frame, firstlineno);
-    retval = 1;
-    tstate->tracing++;
-    tstate->use_tracing = 0;
-    __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
-    #if CYTHON_TRACE
-    if (tstate->c_tracefunc)
-        retval = tstate->c_tracefunc(tstate->c_traceobj, *frame, PyTrace_CALL, NULL) == 0;
-    if (retval && tstate->c_profilefunc)
-    #endif
-        retval = tstate->c_profilefunc(tstate->c_profileobj, *frame, PyTrace_CALL, NULL) == 0;
-    tstate->use_tracing = (tstate->c_profilefunc ||
-                           (CYTHON_TRACE && tstate->c_tracefunc));
-    tstate->tracing--;
-    if (retval) {
-        __Pyx_ErrRestoreInState(tstate, type, value, traceback);
-        return tstate->use_tracing && retval;
-    } else {
-        Py_XDECREF(type);
-        Py_XDECREF(value);
-        Py_XDECREF(traceback);
-        return -1;
-    }
-}
-static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno) {
-    PyObject *py_srcfile = 0;
-    PyObject *py_funcname = 0;
-    PyCodeObject *py_code = 0;
-    #if PY_MAJOR_VERSION < 3
-    py_funcname = PyString_FromString(funcname);
-    py_srcfile = PyString_FromString(srcfile);
-    #else
-    py_funcname = PyUnicode_FromString(funcname);
-    py_srcfile = PyUnicode_FromString(srcfile);
-    #endif
-    if (!py_funcname | !py_srcfile) goto bad;
-    py_code = PyCode_New(
-        0,
-        #if PY_MAJOR_VERSION >= 3
-        0,
-        #endif
-        0,
-        0,
-        CO_OPTIMIZED | CO_NEWLOCALS,
-        __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,*/
-        firstlineno,
-        __pyx_empty_bytes      /*PyObject *lnotab*/
-    );
-bad:
-    Py_XDECREF(py_srcfile);
-    Py_XDECREF(py_funcname);
-    return py_code;
-}
-#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
-}
-
-/* RaiseArgTupleInvalid */
-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)
-{
-    Py_ssize_t num_expected;
-    const char *more_or_less;
-    if (num_found < num_min) {
-        num_expected = num_min;
-        more_or_less = "at least";
-    } else {
-        num_expected = num_max;
-        more_or_less = "at most";
-    }
-    if (exact) {
-        more_or_less = "exactly";
-    }
-    PyErr_Format(PyExc_TypeError,
-                 "%.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);
-}
-
-/* RaiseDoubleKeywords */
-static void __Pyx_RaiseDoubleKeywordsError(
-    const char* func_name,
-    PyObject* kw_name)
-{
-    PyErr_Format(PyExc_TypeError,
-        #if PY_MAJOR_VERSION >= 3
-        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
-        #else
-        "%s() got multiple values for keyword argument '%s'", func_name,
-        PyString_AsString(kw_name));
-        #endif
-}
-
-/* ParseKeywords */
-static int __Pyx_ParseOptionalKeywords(
-    PyObject *kwds,
-    PyObject **argnames[],
-    PyObject *kwds2,
-    PyObject *values[],
-    Py_ssize_t num_pos_args,
-    const char* function_name)
-{
-    PyObject *key = 0, *value = 0;
-    Py_ssize_t pos = 0;
-    PyObject*** name;
-    PyObject*** first_kw_arg = argnames + num_pos_args;
-    while (PyDict_Next(kwds, &pos, &key, &value)) {
-        name = first_kw_arg;
-        while (*name && (**name != key)) name++;
-        if (*name) {
-            values[name-argnames] = value;
-            continue;
-        }
-        name = first_kw_arg;
-        #if PY_MAJOR_VERSION < 3
-        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
-            while (*name) {
-                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
-                        && _PyString_Eq(**name, key)) {
-                    values[name-argnames] = value;
-                    break;
-                }
-                name++;
-            }
-            if (*name) continue;
-            else {
-                PyObject*** argname = argnames;
-                while (argname != first_kw_arg) {
-                    if ((**argname == key) || (
-                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
-                             && _PyString_Eq(**argname, key))) {
-                        goto arg_passed_twice;
-                    }
-                    argname++;
-                }
-            }
-        } else
-        #endif
-        if (likely(PyUnicode_Check(key))) {
-            while (*name) {
-                int cmp = (**name == key) ? 0 :
-                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
-                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
-                #endif
-                    PyUnicode_Compare(**name, key);
-                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
-                if (cmp == 0) {
-                    values[name-argnames] = value;
-                    break;
-                }
-                name++;
-            }
-            if (*name) continue;
-            else {
-                PyObject*** argname = argnames;
-                while (argname != first_kw_arg) {
-                    int cmp = (**argname == key) ? 0 :
-                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
-                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
-                    #endif
-                        PyUnicode_Compare(**argname, key);
-                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
-                    if (cmp == 0) goto arg_passed_twice;
-                    argname++;
-                }
-            }
-        } else
-            goto invalid_keyword_type;
-        if (kwds2) {
-            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
-        } else {
-            goto invalid_keyword;
-        }
-    }
-    return 0;
-arg_passed_twice:
-    __Pyx_RaiseDoubleKeywordsError(function_name, key);
-    goto bad;
-invalid_keyword_type:
-    PyErr_Format(PyExc_TypeError,
-        "%.200s() keywords must be strings", function_name);
-    goto bad;
-invalid_keyword:
-    PyErr_Format(PyExc_TypeError,
-    #if PY_MAJOR_VERSION < 3
-        "%.200s() got an unexpected keyword argument '%.200s'",
-        function_name, PyString_AsString(key));
-    #else
-        "%s() got an unexpected keyword argument '%U'",
-        function_name, key);
-    #endif
-bad:
-    return -1;
-}
-
-/* None */
-static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {
-    PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
-}
-
-/* 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
-
-/* 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;
-    else
-        Py_INCREF(value);
-    if (!tb || tb == Py_None)
-        tb = NULL;
-    else {
-        Py_INCREF(tb);
-        if (!PyTraceBack_Check(tb)) {
-            PyErr_SetString(PyExc_TypeError,
-                "raise: arg 3 must be a traceback or None");
-            goto raise_error;
-        }
-    }
-    if (PyType_Check(type)) {
-#if CYTHON_COMPILING_IN_PYPY
-        if (!value) {
-            Py_INCREF(Py_None);
-            value = Py_None;
-        }
-#endif
-        PyErr_NormalizeException(&type, &value, &tb);
-    } else {
-        if (value) {
-            PyErr_SetString(PyExc_TypeError,
-                "instance exception may not have a separate value");
-            goto raise_error;
-        }
-        value = type;
-        type = (PyObject*) Py_TYPE(type);
-        Py_INCREF(type);
-        if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
-            PyErr_SetString(PyExc_TypeError,
-                "raise: exception class must be a subclass of BaseException");
-            goto raise_error;
-        }
-    }
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrRestore(type, value, tb);
-    return;
-raise_error:
-    Py_XDECREF(value);
-    Py_XDECREF(type);
-    Py_XDECREF(tb);
-    return;
-}
-#else
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
-    PyObject* owned_instance = NULL;
-    if (tb == Py_None) {
-        tb = 0;
-    } else if (tb && !PyTraceBack_Check(tb)) {
-        PyErr_SetString(PyExc_TypeError,
-            "raise: arg 3 must be a traceback or None");
-        goto bad;
-    }
-    if (value == Py_None)
-        value = 0;
-    if (PyExceptionInstance_Check(type)) {
-        if (value) {
-            PyErr_SetString(PyExc_TypeError,
-                "instance exception may not have a separate value");
-            goto bad;
-        }
-        value = type;
-        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 (cause) {
-        PyObject *fixed_cause;
-        if (cause == Py_None) {
-            fixed_cause = NULL;
-        } else if (PyExceptionClass_Check(cause)) {
-            fixed_cause = PyObject_CallObject(cause, NULL);
-            if (fixed_cause == NULL)
-                goto bad;
-        } else if (PyExceptionInstance_Check(cause)) {
-            fixed_cause = cause;
-            Py_INCREF(fixed_cause);
-        } else {
-            PyErr_SetString(PyExc_TypeError,
-                            "exception causes must derive from "
-                            "BaseException");
-            goto bad;
-        }
-        PyException_SetCause(value, fixed_cause);
-    }
-    PyErr_SetObject(type, value);
-    if (tb) {
-#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);
-    return;
-}
-#endif
-
-/* GetModuleGlobalName */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
-    PyObject *result;
-#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 (likely(result)) {
-        Py_INCREF(result);
-    } else {
-#endif
-#else
-    result = PyObject_GetItem(__pyx_d, name);
-    if (!result) {
-        PyErr_Clear();
-#endif
-        result = __Pyx_GetBuiltinName(name);
-    }
-    return result;
-}
-
-/* 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 {
-        return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
-    }
-}
-#endif
-
-/* 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;
-}
-#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
-    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
-
-/* 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
-
-/* 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 <structmember.h>
-static PyObject *
-__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
-{
-    if (unlikely(op->func_doc == NULL)) {
-        if (op->func.m_ml->ml_doc) {
-#if PY_MAJOR_VERSION >= 3
-            op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc);
-#else
-            op->func_doc = PyString_FromString(op->func.m_ml->ml_doc);
-#endif
-            if (unlikely(op->func_doc == NULL))
-                return NULL;
-        } else {
-            Py_INCREF(Py_None);
-            return Py_None;
-        }
-    }
-    Py_INCREF(op->func_doc);
-    return op->func_doc;
-}
-static int
-__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
-{
-    PyObject *tmp = op->func_doc;
-    if (value == NULL) {
-        value = Py_None;
-    }
-    Py_INCREF(value);
-    op->func_doc = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-static PyObject *
-__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
-{
-    if (unlikely(op->func_name == NULL)) {
-#if PY_MAJOR_VERSION >= 3
-        op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name);
-#else
-        op->func_name = PyString_InternFromString(op->func.m_ml->ml_name);
-#endif
-        if (unlikely(op->func_name == NULL))
-            return NULL;
-    }
-    Py_INCREF(op->func_name);
-    return op->func_name;
-}
-static int
-__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
-{
-    PyObject *tmp;
-#if PY_MAJOR_VERSION >= 3
-    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
-#else
-    if (unlikely(value == NULL || !PyString_Check(value))) {
-#endif
-        PyErr_SetString(PyExc_TypeError,
-                        "__name__ must be set to a string object");
-        return -1;
-    }
-    tmp = op->func_name;
-    Py_INCREF(value);
-    op->func_name = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-static PyObject *
-__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op)
-{
-    Py_INCREF(op->func_qualname);
-    return op->func_qualname;
-}
-static int
-__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value)
-{
-    PyObject *tmp;
-#if PY_MAJOR_VERSION >= 3
-    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
-#else
-    if (unlikely(value == NULL || !PyString_Check(value))) {
-#endif
-        PyErr_SetString(PyExc_TypeError,
-                        "__qualname__ must be set to a string object");
-        return -1;
-    }
-    tmp = op->func_qualname;
-    Py_INCREF(value);
-    op->func_qualname = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-static PyObject *
-__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure)
-{
-    PyObject *self;
-    self = m->func_closure;
-    if (self == NULL)
-        self = Py_None;
-    Py_INCREF(self);
-    return self;
-}
-static PyObject *
-__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
-{
-    if (unlikely(op->func_dict == NULL)) {
-        op->func_dict = PyDict_New();
-        if (unlikely(op->func_dict == NULL))
-            return NULL;
-    }
-    Py_INCREF(op->func_dict);
-    return op->func_dict;
-}
-static int
-__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
-{
-    PyObject *tmp;
-    if (unlikely(value == NULL)) {
-        PyErr_SetString(PyExc_TypeError,
-               "function's dictionary may not be deleted");
-        return -1;
-    }
-    if (unlikely(!PyDict_Check(value))) {
-        PyErr_SetString(PyExc_TypeError,
-               "setting function's dictionary to a non-dict");
-        return -1;
-    }
-    tmp = op->func_dict;
-    Py_INCREF(value);
-    op->func_dict = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-static PyObject *
-__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op)
-{
-    Py_INCREF(op->func_globals);
-    return op->func_globals;
-}
-static PyObject *
-__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op)
-{
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-static PyObject *
-__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op)
-{
-    PyObject* result = (op->func_code) ? op->func_code : Py_None;
-    Py_INCREF(result);
-    return result;
-}
-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 result;
-}
-static int
-__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
-    PyObject* tmp;
-    if (!value) {
-        value = Py_None;
-    } else if (value != Py_None && !PyTuple_Check(value)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "__defaults__ must be set to a tuple object");
-        return -1;
-    }
-    Py_INCREF(value);
-    tmp = op->defaults_tuple;
-    op->defaults_tuple = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-static PyObject *
-__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
-    PyObject* result = op->defaults_tuple;
-    if (unlikely(!result)) {
-        if (op->defaults_getter) {
-            if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
-            result = op->defaults_tuple;
-        } else {
-            result = Py_None;
-        }
-    }
-    Py_INCREF(result);
-    return result;
-}
-static int
-__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
-    PyObject* tmp;
-    if (!value) {
-        value = Py_None;
-    } else if (value != Py_None && !PyDict_Check(value)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "__kwdefaults__ must be set to a dict object");
-        return -1;
-    }
-    Py_INCREF(value);
-    tmp = op->defaults_kwdict;
-    op->defaults_kwdict = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-static PyObject *
-__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
-    PyObject* result = op->defaults_kwdict;
-    if (unlikely(!result)) {
-        if (op->defaults_getter) {
-            if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
-            result = op->defaults_kwdict;
-        } else {
-            result = Py_None;
-        }
-    }
-    Py_INCREF(result);
-    return result;
-}
-static int
-__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
-    PyObject* tmp;
-    if (!value || value == Py_None) {
-        value = NULL;
-    } else if (!PyDict_Check(value)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "__annotations__ must be set to a dict object");
-        return -1;
-    }
-    Py_XINCREF(value);
-    tmp = op->func_annotations;
-    op->func_annotations = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-static PyObject *
-__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) {
-    PyObject* result = op->func_annotations;
-    if (unlikely(!result)) {
-        result = PyDict_New();
-        if (unlikely(!result)) return NULL;
-        op->func_annotations = result;
-    }
-    Py_INCREF(result);
-    return result;
-}
-static PyGetSetDef __pyx_CyFunction_getsets[] = {
-    {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
-    {(char *) "__doc__",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
-    {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
-    {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
-    {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
-    {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0},
-    {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
-    {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
-    {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
-    {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
-    {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
-    {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
-    {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
-    {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
-    {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
-    {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
-    {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
-    {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
-    {0, 0, 0, 0, 0}
-};
-static PyMemberDef __pyx_CyFunction_members[] = {
-    {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0},
-    {0, 0, 0,  0, 0}
-};
-static PyObject *
-__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
-{
-#if PY_MAJOR_VERSION >= 3
-    return PyUnicode_FromString(m->func.m_ml->ml_name);
-#else
-    return PyString_FromString(m->func.m_ml->ml_name);
-#endif
-}
-static PyMethodDef __pyx_CyFunction_methods[] = {
-    {"__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* globals, PyObject* code) {
-    __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type);
-    if (op == NULL)
-        return NULL;
-    op->flags = flags;
-    __Pyx_CyFunction_weakreflist(op) = NULL;
-    op->func.m_ml = ml;
-    op->func.m_self = (PyObject *) op;
-    Py_XINCREF(closure);
-    op->func_closure = closure;
-    Py_XINCREF(module);
-    op->func.m_module = module;
-    op->func_dict = NULL;
-    op->func_name = NULL;
-    Py_INCREF(qualname);
-    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;
-    op->defaults = NULL;
-    op->defaults_tuple = NULL;
-    op->defaults_kwdict = NULL;
-    op->defaults_getter = NULL;
-    op->func_annotations = NULL;
-    PyObject_GC_Track(op);
-    return (PyObject *) op;
-}
-static int
-__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
-{
-    Py_CLEAR(m->func_closure);
-    Py_CLEAR(m->func.m_module);
-    Py_CLEAR(m->func_dict);
-    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);
-    Py_CLEAR(m->defaults_kwdict);
-    Py_CLEAR(m->func_annotations);
-    if (m->defaults) {
-        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
-        int i;
-        for (i = 0; i < m->defaults_pyobjects; i++)
-            Py_XDECREF(pydefaults[i]);
-        PyObject_Free(m->defaults);
-        m->defaults = NULL;
-    }
-    return 0;
-}
-static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
-{
-    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);
-    Py_VISIT(m->func.m_module);
-    Py_VISIT(m->func_dict);
-    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);
-    Py_VISIT(m->defaults_kwdict);
-    if (m->defaults) {
-        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
-        int i;
-        for (i = 0; i < m->defaults_pyobjects; i++)
-            Py_VISIT(pydefaults[i]);
-    }
-    return 0;
-}
-static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type)
-{
-    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
-    if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) {
-        Py_INCREF(func);
-        return func;
-    }
-    if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) {
-        if (type == NULL)
-            type = (PyObject *)(Py_TYPE(obj));
-        return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type)));
-    }
-    if (obj == Py_None)
-        obj = NULL;
-    return __Pyx_PyMethod_New(func, obj, type);
-}
-static PyObject*
-__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
-{
-#if PY_MAJOR_VERSION >= 3
-    return PyUnicode_FromFormat("<cyfunction %U at %p>",
-                                op->func_qualname, (void *)op);
-#else
-    return PyString_FromFormat("<cyfunction %s at %p>",
-                               PyString_AsString(op->func_qualname), (void *)op);
-#endif
-}
-static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {
-    PyCFunctionObject* f = (PyCFunctionObject*)func;
-    PyCFunction meth = f->m_ml->ml_meth;
-    Py_ssize_t size;
-    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))
-            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)) {
-            size = PyTuple_GET_SIZE(arg);
-            if (likely(size == 0))
-                return (*meth)(self, NULL);
-            PyErr_Format(PyExc_TypeError,
-                "%.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)) {
-            size = PyTuple_GET_SIZE(arg);
-            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 (%" CYTHON_FORMAT_SSIZE_T "d given)",
-                f->m_ml->ml_name, size);
-            return NULL;
-        }
-        break;
-    default:
-        PyErr_SetString(PyExc_SystemError, "Bad call flags in "
-                        "__Pyx_CyFunction_Call. METH_OLDARGS is no "
-                        "longer supported!");
-        return NULL;
-    }
-    PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
-                 f->m_ml->ml_name);
-    return NULL;
-}
-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;
-}
-static PyTypeObject __pyx_CyFunctionType_type = {
-    PyVarObject_HEAD_INIT(0, 0)
-    "cython_function_or_method",
-    sizeof(__pyx_CyFunctionObject),
-    0,
-    (destructor) __Pyx_CyFunction_dealloc,
-    0,
-    0,
-    0,
-#if PY_MAJOR_VERSION < 3
-    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
-    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) {
-    __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
-    if (unlikely(__pyx_CyFunctionType == NULL)) {
-        return -1;
-    }
-    return 0;
-}
-static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
-    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
-    m->defaults = PyObject_Malloc(size);
-    if (unlikely(!m->defaults))
-        return PyErr_NoMemory();
-    memset(m->defaults, 0, size);
-    m->defaults_pyobjects = pyobjects;
-    return m->defaults;
-}
-static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
-    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
-    m->defaults_tuple = tuple;
-    Py_INCREF(tuple);
-}
-static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
-    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
-    m->defaults_kwdict = dict;
-    Py_INCREF(dict);
-}
-static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
-    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
-    m->func_annotations = dict;
-    Py_INCREF(dict);
-}
-
-/* ArgTypeTest */
-        static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
-{
-    if (unlikely(!type)) {
-        PyErr_SetString(PyExc_SystemError, "Missing type object");
-        return 0;
-    }
-    else if (exact) {
-        #if PY_MAJOR_VERSION == 2
-        if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
-        #endif
-    }
-    else {
-        if (likely(__Pyx_TypeCheck(obj, type))) return 1;
-    }
-    PyErr_Format(PyExc_TypeError,
-        "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
-        name, type->tp_name, Py_TYPE(obj)->tp_name);
-    return 0;
-}
-
-/* ExtTypeTest */
-        static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
-    if (unlikely(!type)) {
-        PyErr_SetString(PyExc_SystemError, "Missing type object");
-        return 0;
-    }
-    if (likely(__Pyx_TypeCheck(obj, type)))
-        return 1;
-    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
-                 Py_TYPE(obj)->tp_name, type->tp_name);
-    return 0;
-}
-
-/* pyfrozenset_new */
-        static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it) {
-    if (it) {
-        PyObject* result;
-#if CYTHON_COMPILING_IN_PYPY
-        PyObject* args;
-        args = PyTuple_Pack(1, it);
-        if (unlikely(!args))
-            return NULL;
-        result = PyObject_Call((PyObject*)&PyFrozenSet_Type, args, NULL);
-        Py_DECREF(args);
-        return result;
-#else
-        if (PyFrozenSet_CheckExact(it)) {
-            Py_INCREF(it);
-            return it;
-        }
-        result = PyFrozenSet_New(it);
-        if (unlikely(!result))
-            return NULL;
-        if (likely(PySet_GET_SIZE(result)))
-            return result;
-        Py_DECREF(result);
-#endif
-    }
-#if CYTHON_USE_TYPE_SLOTS
-    return PyFrozenSet_Type.tp_new(&PyFrozenSet_Type, __pyx_empty_tuple, NULL);
-#else
-    return PyObject_Call((PyObject*)&PyFrozenSet_Type, __pyx_empty_tuple, NULL);
-#endif
-}
-
-/* py_set_discard_unhashable */
-        static int __Pyx_PySet_DiscardUnhashable(PyObject *set, PyObject *key) {
-    PyObject *tmpkey;
-    int rv;
-    if (likely(!PySet_Check(key) || !PyErr_ExceptionMatches(PyExc_TypeError)))
-        return -1;
-    PyErr_Clear();
-    tmpkey = __Pyx_PyFrozenSet_New(key);
-    if (tmpkey == NULL)
-        return -1;
-    rv = PySet_Discard(set, tmpkey);
-    Py_DECREF(tmpkey);
-    return rv;
-}
-
-/* py_set_remove */
-        static int __Pyx_PySet_RemoveNotFound(PyObject *set, PyObject *key, int found) {
-    if (unlikely(found < 0)) {
-        found = __Pyx_PySet_DiscardUnhashable(set, key);
-    }
-    if (likely(found == 0)) {
-        PyObject *tup;
-        tup = PyTuple_Pack(1, key);
-        if (!tup)
-            return -1;
-        PyErr_SetObject(PyExc_KeyError, tup);
-        Py_DECREF(tup);
-        return -1;
-    }
-    return found;
-}
-static CYTHON_INLINE int __Pyx_PySet_Remove(PyObject *set, PyObject *key) {
-    int found = PySet_Discard(set, key);
-    if (unlikely(found != 1)) {
-        return __Pyx_PySet_RemoveNotFound(set, key, found);
-    }
-    return 0;
-}
-
-/* CIntToDigits */
-        static const char DIGIT_PAIRS_10[2*10*10+1] = {
-    "00010203040506070809"
-    "10111213141516171819"
-    "20212223242526272829"
-    "30313233343536373839"
-    "40414243444546474849"
-    "50515253545556575859"
-    "60616263646566676869"
-    "70717273747576777879"
-    "80818283848586878889"
-    "90919293949596979899"
-};
-static const char DIGIT_PAIRS_8[2*8*8+1] = {
-    "0001020304050607"
-    "1011121314151617"
-    "2021222324252627"
-    "3031323334353637"
-    "4041424344454647"
-    "5051525354555657"
-    "6061626364656667"
-    "7071727374757677"
-};
-static const char DIGITS_HEX[2*16+1] = {
-    "0123456789abcdef"
-    "0123456789ABCDEF"
-};
-
-/* BuildPyUnicode */
-        static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength,
-                                                int prepend_sign, char padding_char) {
-    PyObject *uval;
-    Py_ssize_t uoffset = ulength - clength;
-#if CYTHON_USE_UNICODE_INTERNALS
-    Py_ssize_t i;
-#if CYTHON_PEP393_ENABLED
-    void *udata;
-    uval = PyUnicode_New(ulength, 127);
-    if (unlikely(!uval)) return NULL;
-    udata = PyUnicode_DATA(uval);
-#else
-    Py_UNICODE *udata;
-    uval = PyUnicode_FromUnicode(NULL, ulength);
-    if (unlikely(!uval)) return NULL;
-    udata = PyUnicode_AS_UNICODE(uval);
-#endif
-    if (uoffset > 0) {
-        i = 0;
-        if (prepend_sign) {
-            __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, 0, '-');
-            i++;
-        }
-        for (; i < uoffset; i++) {
-            __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, i, padding_char);
-        }
-    }
-    for (i=0; i < clength; i++) {
-        __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, uoffset+i, chars[i]);
-    }
-#else
-    {
-        uval = NULL;
-        PyObject *sign = NULL, *padding = NULL;
-        if (uoffset > 0) {
-            prepend_sign = !!prepend_sign;
-            if (uoffset > prepend_sign) {
-                padding = PyUnicode_FromOrdinal(padding_char);
-                if (likely(padding) && uoffset > prepend_sign + 1) {
-                    PyObject *tmp;
-                    PyObject *repeat = PyInt_FromSize_t(uoffset - prepend_sign);
-                    if (unlikely(!repeat)) goto done_or_error;
-                    tmp = PyNumber_Multiply(padding, repeat);
-                    Py_DECREF(repeat);
-                    Py_DECREF(padding);
-                    padding = tmp;
-                }
-                if (unlikely(!padding)) goto done_or_error;
-            }
-            if (prepend_sign) {
-                sign = PyUnicode_FromOrdinal('-');
-                if (unlikely(!sign)) goto done_or_error;
-            }
-        }
-        uval = PyUnicode_DecodeASCII(chars, clength, NULL);
-        if (likely(uval) && padding) {
-            PyObject *tmp = PyNumber_Add(padding, uval);
-            Py_DECREF(uval);
-            uval = tmp;
-        }
-        if (likely(uval) && sign) {
-            PyObject *tmp = PyNumber_Add(sign, uval);
-            Py_DECREF(uval);
-            uval = tmp;
-        }
-done_or_error:
-        Py_XDECREF(padding);
-        Py_XDECREF(sign);
-    }
-#endif
-    return uval;
-}
-
-/* CIntToPyUnicode */
-        #ifdef _MSC_VER
-    #ifndef _MSC_STDINT_H_
-        #if _MSC_VER < 1300
-           typedef unsigned short    uint16_t;
-        #else
-           typedef unsigned __int16  uint16_t;
-        #endif
-    #endif
-#else
-   #include <stdint.h>
-#endif
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char) {
-    char digits[sizeof(Py_ssize_t)*3+2];
-    char *dpos, *end = digits + sizeof(Py_ssize_t)*3+2;
-    const char *hex_digits = DIGITS_HEX;
-    Py_ssize_t length, ulength;
-    int prepend_sign, last_one_off;
-    Py_ssize_t remaining;
-    const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (format_char == 'X') {
-        hex_digits += 16;
-        format_char = 'x';
-    }
-    remaining = value;
-    last_one_off = 0;
-    dpos = end;
-    do {
-        int digit_pos;
-        switch (format_char) {
-        case 'o':
-            digit_pos = abs((int)(remaining % (8*8)));
-            remaining = (Py_ssize_t) (remaining / (8*8));
-            dpos -= 2;
-            *(uint16_t*)dpos = ((uint16_t*)DIGIT_PAIRS_8)[digit_pos];
-            last_one_off = (digit_pos < 8);
-            break;
-        case 'd':
-            digit_pos = abs((int)(remaining % (10*10)));
-            remaining = (Py_ssize_t) (remaining / (10*10));
-            dpos -= 2;
-            *(uint16_t*)dpos = ((uint16_t*)DIGIT_PAIRS_10)[digit_pos];
-            last_one_off = (digit_pos < 10);
-            break;
-        case 'x':
-            *(--dpos) = hex_digits[abs((int)(remaining % 16))];
-            remaining = (Py_ssize_t) (remaining / 16);
-            break;
-        default:
-            assert(0);
-            break;
-        }
-    } while (unlikely(remaining != 0));
-    if (last_one_off) {
-        assert(*dpos == '0');
-        dpos++;
-    }
-    length = end - dpos;
-    ulength = length;
-    prepend_sign = 0;
-    if (!is_unsigned && value <= neg_one) {
-        if (padding_char == ' ' || width <= length + 1) {
-            *(--dpos) = '-';
-            ++length;
-        } else {
-            prepend_sign = 1;
-        }
-        ++ulength;
-    }
-    if (width > ulength) {
-        ulength = width;
-    }
-    if (ulength == 1) {
-        return PyUnicode_FromOrdinal(*dpos);
-    }
-    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
-}
-
-/* JoinPyUnicode */
-        static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
-                                      CYTHON_UNUSED Py_UCS4 max_char) {
-#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-    PyObject *result_uval;
-    int result_ukind;
-    Py_ssize_t i, char_pos;
-    void *result_udata;
-#if CYTHON_PEP393_ENABLED
-    result_uval = PyUnicode_New(result_ulength, max_char);
-    if (unlikely(!result_uval)) return NULL;
-    result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND;
-    result_udata = PyUnicode_DATA(result_uval);
-#else
-    result_uval = PyUnicode_FromUnicode(NULL, result_ulength);
-    if (unlikely(!result_uval)) return NULL;
-    result_ukind = sizeof(Py_UNICODE);
-    result_udata = PyUnicode_AS_UNICODE(result_uval);
-#endif
-    char_pos = 0;
-    for (i=0; i < value_count; i++) {
-        int ukind;
-        Py_ssize_t ulength;
-        void *udata;
-        PyObject *uval = PyTuple_GET_ITEM(value_tuple, i);
-        if (unlikely(__Pyx_PyUnicode_READY(uval)))
-            goto bad;
-        ulength = __Pyx_PyUnicode_GET_LENGTH(uval);
-        if (unlikely(!ulength))
-            continue;
-        if (unlikely(char_pos + ulength < 0))
-            goto overflow;
-        ukind = __Pyx_PyUnicode_KIND(uval);
-        udata = __Pyx_PyUnicode_DATA(uval);
-        if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) {
-            memcpy((char *)result_udata + char_pos * result_ukind, udata, (size_t) (ulength * result_ukind));
-        } else {
-            #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters)
-            _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength);
-            #else
-            Py_ssize_t j;
-            for (j=0; j < ulength; j++) {
-                Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j);
-                __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar);
-            }
-            #endif
-        }
-        char_pos += ulength;
-    }
-    return result_uval;
-overflow:
-    PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string");
-bad:
-    Py_DECREF(result_uval);
-    return NULL;
-#else
-    result_ulength++;
-    value_count++;
-    return PyUnicode_Join(__pyx_empty_unicode, value_tuple);
-#endif
-}
-
-/* PySetContains */
-        static int __Pyx_PySet_ContainsUnhashable(PyObject *set, PyObject *key) {
-    int result = -1;
-    if (PySet_Check(key) && PyErr_ExceptionMatches(PyExc_TypeError)) {
-        PyObject *tmpkey;
-        PyErr_Clear();
-        tmpkey = __Pyx_PyFrozenSet_New(key);
-        if (tmpkey != NULL) {
-            result = PySet_Contains(set, tmpkey);
-            Py_DECREF(tmpkey);
-        }
-    }
-    return result;
-}
-static CYTHON_INLINE int __Pyx_PySet_ContainsTF(PyObject* key, PyObject* set, int eq) {
-    int result = PySet_Contains(set, key);
-    if (unlikely(result < 0)) {
-        result = __Pyx_PySet_ContainsUnhashable(set, key);
-    }
-    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
-}
-
-/* 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
-
-/* 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);
-}
-
-/* RaiseNeedMoreValuesToUnpack */
-          static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
-    PyErr_Format(PyExc_ValueError,
-                 "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
-                 index, (index == 1) ? "" : "s");
-}
-
-/* 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(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) {
-            PyObject *exc_value, *exc_tb;
-            exc_value = tstate->curexc_value;
-            exc_tb = tstate->curexc_traceback;
-            tstate->curexc_type = 0;
-            tstate->curexc_value = 0;
-            tstate->curexc_traceback = 0;
-            Py_DECREF(exc_type);
-            Py_XDECREF(exc_value);
-            Py_XDECREF(exc_tb);
-            return 0;
-        } else {
-            return -1;
-        }
-    }
-    return 0;
-#else
-    if (unlikely(PyErr_Occurred())) {
-        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
-            PyErr_Clear();
-            return 0;
-        } else {
-            return -1;
-        }
-    }
-    return 0;
-#endif
-}
-
-/* UnpackItemEndCheck */
-          static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
-    if (unlikely(retval)) {
-        Py_DECREF(retval);
-        __Pyx_RaiseTooManyValuesError(expected);
-        return -1;
-    } else {
-        return __Pyx_IterFinish();
-    }
-    return 0;
-}
-
-/* set_iter */
-          static CYTHON_INLINE PyObject* __Pyx_set_iterator(PyObject* iterable, int is_set,
-                                                  Py_ssize_t* p_orig_length, int* p_source_is_set) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    is_set = is_set || likely(PySet_CheckExact(iterable) || PyFrozenSet_CheckExact(iterable));
-    *p_source_is_set = is_set;
-    if (likely(is_set)) {
-        *p_orig_length = PySet_Size(iterable);
-        Py_INCREF(iterable);
-        return iterable;
-    }
-#else
-    (void)is_set;
-    *p_source_is_set = 0;
-#endif
-    *p_orig_length = 0;
-    return PyObject_GetIter(iterable);
-}
-static CYTHON_INLINE int __Pyx_set_iter_next(
-        PyObject* iter_obj, Py_ssize_t orig_length,
-        Py_ssize_t* ppos, PyObject **value,
-        int source_is_set) {
-    if (!CYTHON_COMPILING_IN_CPYTHON || unlikely(!source_is_set)) {
-        *value = PyIter_Next(iter_obj);
-        if (unlikely(!*value)) {
-            return __Pyx_IterFinish();
-        }
-        (void)orig_length;
-        (void)ppos;
-        return 1;
-    }
-#if CYTHON_COMPILING_IN_CPYTHON
-    if (unlikely(PySet_GET_SIZE(iter_obj) != orig_length)) {
-        PyErr_SetString(
-            PyExc_RuntimeError,
-            "set changed size during iteration");
-        return -1;
-    }
-    {
-        Py_hash_t hash;
-        int ret = _PySet_NextEntry(iter_obj, ppos, value, &hash);
-        assert (ret != -1);
-        if (likely(ret)) {
-            Py_INCREF(*value);
-            return 1;
-        }
-    }
-#endif
-    return 0;
-}
-
-/* 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
-
-/* PyErrExceptionMatches */
-          #if CYTHON_FAST_THREAD_STATE
-static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
-    Py_ssize_t i, n;
-    n = PyTuple_GET_SIZE(tuple);
-#if PY_MAJOR_VERSION >= 3
-    for (i=0; i<n; i++) {
-        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
-    }
-#endif
-    for (i=0; i<n; i++) {
-        if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
-    }
-    return 0;
-}
-static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
-    PyObject *exc_type = tstate->curexc_type;
-    if (exc_type == err) return 1;
-    if (unlikely(!exc_type)) return 0;
-    if (unlikely(PyTuple_Check(err)))
-        return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
-    return __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
-}
-#endif
-
-/* GetAttr */
-          static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
-#if CYTHON_USE_TYPE_SLOTS
-#if PY_MAJOR_VERSION >= 3
-    if (likely(PyUnicode_Check(n)))
-#else
-    if (likely(PyString_Check(n)))
-#endif
-        return __Pyx_PyObject_GetAttrStr(o, n);
-#endif
-    return PyObject_GetAttr(o, n);
-}
-
-/* GetAttr3 */
-          static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
-        return NULL;
-    __Pyx_PyErr_Clear();
-    Py_INCREF(d);
-    return d;
-}
-static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
-    PyObject *r = __Pyx_GetAttr(o, n);
-    return (likely(r)) ? r : __Pyx_GetAttr3Default(d);
-}
-
-/* DictGetItem */
-          #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
-static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
-    PyObject *value;
-    value = PyDict_GetItemWithError(d, key);
-    if (unlikely(!value)) {
-        if (!PyErr_Occurred()) {
-            PyObject* args = PyTuple_Pack(1, key);
-            if (likely(args))
-                PyErr_SetObject(PyExc_KeyError, args);
-            Py_XDECREF(args);
-        }
-        return NULL;
-    }
-    Py_INCREF(value);
-    return value;
-}
-#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 >= 0x030700A3
-    *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 >= 0x030700A3
-    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 int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
-    Py_ssize_t i, n;
-    assert(PyExceptionClass_Check(exc_type));
-    n = PyTuple_GET_SIZE(tuple);
-#if PY_MAJOR_VERSION >= 3
-    for (i=0; i<n; i++) {
-        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
-    }
-#endif
-    for (i=0; i<n; i++) {
-        PyObject *t = PyTuple_GET_ITEM(tuple, i);
-        #if PY_MAJOR_VERSION < 3
-        if (likely(exc_type == t)) return 1;
-        #endif
-        if (likely(PyExceptionClass_Check(t))) {
-            if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
-        } else {
-        }
-    }
-    return 0;
-}
-static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
-    if (likely(err == exc_type)) return 1;
-    if (likely(PyExceptionClass_Check(err))) {
-        if (likely(PyExceptionClass_Check(exc_type))) {
-            return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
-        } else if (likely(PyTuple_Check(exc_type))) {
-            return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
-        } else {
-        }
-    }
-    return PyErr_GivenExceptionMatches(err, exc_type);
-}
-static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
-    assert(PyExceptionClass_Check(exc_type1));
-    assert(PyExceptionClass_Check(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 (local_tb) {
-        if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
-            goto bad;
-    }
-    #endif
-    Py_XINCREF(local_tb);
-    Py_XINCREF(local_type);
-    Py_XINCREF(local_value);
-    *type = local_type;
-    *value = local_value;
-    *tb = local_tb;
-#if CYTHON_FAST_THREAD_STATE
-    #if PY_VERSION_HEX >= 0x030700A3
-    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;
-    #endif
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-#else
-    PyErr_SetExcInfo(local_type, local_value, local_tb);
-#endif
-    return 0;
-bad:
-    *type = 0;
-    *value = 0;
-    *tb = 0;
-    Py_XDECREF(local_type);
-    Py_XDECREF(local_value);
-    Py_XDECREF(local_tb);
-    return -1;
-}
-
-/* SwapException */
-            #if CYTHON_FAST_THREAD_STATE
-static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    #if PY_VERSION_HEX >= 0x030700A3
-    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
-    *type = tmp_type;
-    *value = tmp_value;
-    *tb = tmp_tb;
-}
-#else
-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
-    PyErr_SetExcInfo(*type, *value, *tb);
-    *type = tmp_type;
-    *value = tmp_value;
-    *tb = tmp_tb;
-}
-#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
-}
-
-/* CIntToPyUnicode */
-            #ifdef _MSC_VER
-    #ifndef _MSC_STDINT_H_
-        #if _MSC_VER < 1300
-           typedef unsigned short    uint16_t;
-        #else
-           typedef unsigned __int16  uint16_t;
-        #endif
-    #endif
-#else
-   #include <stdint.h>
-#endif
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_size_t(size_t value, Py_ssize_t width, char padding_char, char format_char) {
-    char digits[sizeof(size_t)*3+2];
-    char *dpos, *end = digits + sizeof(size_t)*3+2;
-    const char *hex_digits = DIGITS_HEX;
-    Py_ssize_t length, ulength;
-    int prepend_sign, last_one_off;
-    size_t remaining;
-    const size_t neg_one = (size_t) -1, const_zero = (size_t) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (format_char == 'X') {
-        hex_digits += 16;
-        format_char = 'x';
-    }
-    remaining = value;
-    last_one_off = 0;
-    dpos = end;
-    do {
-        int digit_pos;
-        switch (format_char) {
-        case 'o':
-            digit_pos = abs((int)(remaining % (8*8)));
-            remaining = (size_t) (remaining / (8*8));
-            dpos -= 2;
-            *(uint16_t*)dpos = ((uint16_t*)DIGIT_PAIRS_8)[digit_pos];
-            last_one_off = (digit_pos < 8);
-            break;
-        case 'd':
-            digit_pos = abs((int)(remaining % (10*10)));
-            remaining = (size_t) (remaining / (10*10));
-            dpos -= 2;
-            *(uint16_t*)dpos = ((uint16_t*)DIGIT_PAIRS_10)[digit_pos];
-            last_one_off = (digit_pos < 10);
-            break;
-        case 'x':
-            *(--dpos) = hex_digits[abs((int)(remaining % 16))];
-            remaining = (size_t) (remaining / 16);
-            break;
-        default:
-            assert(0);
-            break;
-        }
-    } while (unlikely(remaining != 0));
-    if (last_one_off) {
-        assert(*dpos == '0');
-        dpos++;
-    }
-    length = end - dpos;
-    ulength = length;
-    prepend_sign = 0;
-    if (!is_unsigned && value <= neg_one) {
-        if (padding_char == ' ' || width <= length + 1) {
-            *(--dpos) = '-';
-            ++length;
-        } else {
-            prepend_sign = 1;
-        }
-        ++ulength;
-    }
-    if (width > ulength) {
-        ulength = width;
-    }
-    if (ulength == 1) {
-        return PyUnicode_FromOrdinal(*dpos);
-    }
-    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
-}
-
-/* RaiseNoneIterError */
-            static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-}
-
-/* CIntToPyUnicode */
-            #ifdef _MSC_VER
-    #ifndef _MSC_STDINT_H_
-        #if _MSC_VER < 1300
-           typedef unsigned short    uint16_t;
-        #else
-           typedef unsigned __int16  uint16_t;
-        #endif
-    #endif
-#else
-   #include <stdint.h>
-#endif
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_unsigned_char(unsigned char value, Py_ssize_t width, char padding_char, char format_char) {
-    char digits[sizeof(unsigned char)*3+2];
-    char *dpos, *end = digits + sizeof(unsigned char)*3+2;
-    const char *hex_digits = DIGITS_HEX;
-    Py_ssize_t length, ulength;
-    int prepend_sign, last_one_off;
-    unsigned char remaining;
-    const unsigned char neg_one = (unsigned char) -1, const_zero = (unsigned char) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (format_char == 'X') {
-        hex_digits += 16;
-        format_char = 'x';
-    }
-    remaining = value;
-    last_one_off = 0;
-    dpos = end;
-    do {
-        int digit_pos;
-        switch (format_char) {
-        case 'o':
-            digit_pos = abs((int)(remaining % (8*8)));
-            remaining = (unsigned char) (remaining / (8*8));
-            dpos -= 2;
-            *(uint16_t*)dpos = ((uint16_t*)DIGIT_PAIRS_8)[digit_pos];
-            last_one_off = (digit_pos < 8);
-            break;
-        case 'd':
-            digit_pos = abs((int)(remaining % (10*10)));
-            remaining = (unsigned char) (remaining / (10*10));
-            dpos -= 2;
-            *(uint16_t*)dpos = ((uint16_t*)DIGIT_PAIRS_10)[digit_pos];
-            last_one_off = (digit_pos < 10);
-            break;
-        case 'x':
-            *(--dpos) = hex_digits[abs((int)(remaining % 16))];
-            remaining = (unsigned char) (remaining / 16);
-            break;
-        default:
-            assert(0);
-            break;
-        }
-    } while (unlikely(remaining != 0));
-    if (last_one_off) {
-        assert(*dpos == '0');
-        dpos++;
-    }
-    length = end - dpos;
-    ulength = length;
-    prepend_sign = 0;
-    if (!is_unsigned && value <= neg_one) {
-        if (padding_char == ' ' || width <= length + 1) {
-            *(--dpos) = '-';
-            ++length;
-        } else {
-            prepend_sign = 1;
-        }
-        ++ulength;
-    }
-    if (width > ulength) {
-        ulength = width;
-    }
-    if (ulength == 1) {
-        return PyUnicode_FromOrdinal(*dpos);
-    }
-    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
-}
-
-/* None */
-            static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
-    PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
-}
-
-/* decode_c_string */
-            static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
-         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
-         const char* encoding, const char* errors,
-         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
-    Py_ssize_t length;
-    if (unlikely((start < 0) | (stop < 0))) {
-        size_t slen = strlen(cstring);
-        if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "c-string too long to convert to Python");
-            return NULL;
-        }
-        length = (Py_ssize_t) slen;
-        if (start < 0) {
-            start += length;
-            if (start < 0)
-                start = 0;
-        }
-        if (stop < 0)
-            stop += length;
-    }
-    length = stop - start;
-    if (unlikely(length <= 0))
-        return PyUnicode_FromUnicode(NULL, 0);
-    cstring += start;
-    if (decode_func) {
-        return decode_func(cstring, length, errors);
-    } else {
-        return PyUnicode_Decode(cstring, length, encoding, errors);
-    }
-}
-
-/* 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,
-        #if PY_MAJOR_VERSION < 3
-            "cannot import name %.230s", PyString_AS_STRING(name));
-        #else
-            "cannot import name %S", name);
-        #endif
-    }
-    return value;
-}
-
-/* HasAttr */
-            static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
-    PyObject *r;
-    if (unlikely(!__Pyx_PyBaseString_Check(n))) {
-        PyErr_SetString(PyExc_TypeError,
-                        "hasattr(): attribute name must be string");
-        return -1;
-    }
-    r = __Pyx_GetAttr(o, n);
-    if (unlikely(!r)) {
-        PyErr_Clear();
-        return 0;
-    } else {
-        Py_DECREF(r);
-        return 1;
-    }
-}
-
-/* CallNextTpDealloc */
-            static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) {
-    PyTypeObject* type = Py_TYPE(obj);
-    while (type && type->tp_dealloc != current_tp_dealloc)
-        type = type->tp_base;
-    while (type && type->tp_dealloc == current_tp_dealloc)
-        type = type->tp_base;
-    if (type)
-        type->tp_dealloc(obj);
-}
-
-/* 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
-
-/* SetVTable */
-            static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
-#if PY_VERSION_HEX >= 0x02070000
-    PyObject *ob = PyCapsule_New(vtable, 0, 0);
-#else
-    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
-#endif
-    if (!ob)
-        goto bad;
-    if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
-        goto bad;
-    Py_DECREF(ob);
-    return 0;
-bad:
-    Py_XDECREF(ob);
-    return -1;
-}
-
-/* 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;
-}
-
-/* GetVTable */
-            static void* __Pyx_GetVtable(PyObject *dict) {
-    void* ptr;
-    PyObject *ob = PyObject_GetItem(dict, __pyx_n_s_pyx_vtable);
-    if (!ob)
-        goto bad;
-#if PY_VERSION_HEX >= 0x02070000
-    ptr = PyCapsule_GetPointer(ob, 0);
-#else
-    ptr = PyCObject_AsVoidPtr(ob);
-#endif
-    if (!ptr && !PyErr_Occurred())
-        PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type");
-    Py_DECREF(ob);
-    return ptr;
-bad:
-    Py_XDECREF(ob);
-    return NULL;
-}
-
-/* GetNameInClass */
-            static PyObject *__Pyx_GetGlobalNameAfterAttributeLookup(PyObject *name) {
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
-        return NULL;
-    __Pyx_PyErr_Clear();
-    return __Pyx_GetModuleGlobalName(name);
-}
-static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name) {
-    PyObject *result;
-    result = __Pyx_PyObject_GetAttrStr(nmspace, name);
-    if (!result) {
-        result = __Pyx_GetGlobalNameAfterAttributeLookup(name);
-    }
-    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
-    PyObject **cython_runtime_dict;
-#endif
-    if (unlikely(!__pyx_cython_runtime)) {
-        return c_line;
-    }
-    __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
-#if CYTHON_COMPILING_IN_CPYTHON
-    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
-
-/* 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;
-    }
-    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;
-        }
-    }
-    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, (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
-    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 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);
-    }
-    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_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);
-}
-
-/* CIntFromPyVerify */
-            #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
-    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
-#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
-    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
-#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
-    {\
-        func_type value = func_value;\
-        if (sizeof(target_type) < sizeof(func_type)) {\
-            if (unlikely(value != (func_type) (target_type) value)) {\
-                func_type zero = 0;\
-                if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
-                    return (target_type) -1;\
-                if (is_unsigned && unlikely(value < zero))\
-                    goto raise_neg_overflow;\
-                else\
-                    goto raise_overflow;\
-            }\
-        }\
-        return (target_type) value;\
-    }
-
-/* CIntToPy */
-            static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
-    const int neg_one = (int) -1, const_zero = (int) 0;
-    const int is_unsigned = neg_one > const_zero;
-    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
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(int),
-                                     little, !is_unsigned);
-    }
-}
-
-/* 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 (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
-        }
-    } 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
-        }
-    }
-    {
-        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);
-    }
-}
-
-/* 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 (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
-        }
-    } 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
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(long),
-                                     little, !is_unsigned);
-    }
-}
-
-/* CIntToPy */
-            static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MDB_dbi(MDB_dbi value) {
-    const MDB_dbi neg_one = (MDB_dbi) -1, const_zero = (MDB_dbi) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(MDB_dbi) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(MDB_dbi) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-#ifdef HAVE_LONG_LONG
-        } else if (sizeof(MDB_dbi) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-#endif
-        }
-    } else {
-        if (sizeof(MDB_dbi) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-#ifdef HAVE_LONG_LONG
-        } else if (sizeof(MDB_dbi) <= 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(MDB_dbi),
-                                     little, !is_unsigned);
-    }
-}
-
-/* CIntToPy */
-            static CYTHON_INLINE PyObject* __Pyx_PyInt_From_char(char value) {
-    const char neg_one = (char) -1, const_zero = (char) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(char) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(char) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-#ifdef HAVE_LONG_LONG
-        } else if (sizeof(char) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-#endif
-        }
-    } else {
-        if (sizeof(char) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-#ifdef HAVE_LONG_LONG
-        } else if (sizeof(char) <= 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(char),
-                                     little, !is_unsigned);
-    }
-}
-
-/* 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))) {
-        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;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-#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
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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 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
-            return (size_t) -1;
-        }
-    } else {
-        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;
-    }
-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 unsigned char __Pyx_PyInt_As_unsigned_char(PyObject *x) {
-    const unsigned char neg_one = (unsigned char) -1, const_zero = (unsigned char) 0;
-    const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(unsigned char) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(unsigned char, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
-            }
-            return (unsigned char) val;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (unsigned char) 0;
-                case  1: __PYX_VERIFY_RETURN_INT(unsigned char, digit, digits[0])
-                case 2:
-                    if (8 * sizeof(unsigned char) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(unsigned char) >= 2 * PyLong_SHIFT) {
-                            return (unsigned char) (((((unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0]));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(unsigned char) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(unsigned char) >= 3 * PyLong_SHIFT) {
-                            return (unsigned char) (((((((unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0]));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(unsigned char) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned char, 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(unsigned char) >= 4 * PyLong_SHIFT) {
-                            return (unsigned char) (((((((((unsigned char)digits[3]) << PyLong_SHIFT) | (unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0]));
-                        }
-                    }
-                    break;
-            }
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-#else
-            {
-                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
-                if (unlikely(result < 0))
-                    return (unsigned char) -1;
-                if (unlikely(result == 1))
-                    goto raise_neg_overflow;
-            }
-#endif
-            if (sizeof(unsigned char) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(unsigned char, unsigned long, PyLong_AsUnsignedLong(x))
-#ifdef HAVE_LONG_LONG
-            } else if (sizeof(unsigned char) <= sizeof(unsigned PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(unsigned char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
-#endif
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (unsigned char) 0;
-                case -1: __PYX_VERIFY_RETURN_INT(unsigned char, sdigit, (sdigit) (-(sdigit)digits[0]))
-                case  1: __PYX_VERIFY_RETURN_INT(unsigned char,  digit, +digits[0])
-                case -2:
-                    if (8 * sizeof(unsigned char) - 1 > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(unsigned char) - 1 > 2 * PyLong_SHIFT) {
-                            return (unsigned char) (((unsigned char)-1)*(((((unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
-                        }
-                    }
-                    break;
-                case 2:
-                    if (8 * sizeof(unsigned char) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(unsigned char) - 1 > 2 * PyLong_SHIFT) {
-                            return (unsigned char) ((((((unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
-                        }
-                    }
-                    break;
-                case -3:
-                    if (8 * sizeof(unsigned char) - 1 > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(unsigned char) - 1 > 3 * PyLong_SHIFT) {
-                            return (unsigned char) (((unsigned char)-1)*(((((((unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(unsigned char) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(unsigned char) - 1 > 3 * PyLong_SHIFT) {
-                            return (unsigned char) ((((((((unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
-                        }
-                    }
-                    break;
-                case -4:
-                    if (8 * sizeof(unsigned char) - 1 > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned char, 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(unsigned char) - 1 > 4 * PyLong_SHIFT) {
-                            return (unsigned char) (((unsigned char)-1)*(((((((((unsigned char)digits[3]) << PyLong_SHIFT) | (unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(unsigned char) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(unsigned char, 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(unsigned char) - 1 > 4 * PyLong_SHIFT) {
-                            return (unsigned char) ((((((((((unsigned char)digits[3]) << PyLong_SHIFT) | (unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
-                        }
-                    }
-                    break;
-            }
-#endif
-            if (sizeof(unsigned char) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(unsigned char, long, PyLong_AsLong(x))
-#ifdef HAVE_LONG_LONG
-            } else if (sizeof(unsigned char) <= sizeof(PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(unsigned char, 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
-            unsigned char 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 (unsigned char) -1;
-        }
-    } else {
-        unsigned char val;
-        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
-        if (!tmp) return (unsigned char) -1;
-        val = __Pyx_PyInt_As_unsigned_char(tmp);
-        Py_DECREF(tmp);
-        return val;
-    }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to unsigned char");
-    return (unsigned char) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to unsigned char");
-    return (unsigned char) -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))) {
-        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;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                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
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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 (long) -1;
-        }
-    } else {
-        long val;
-        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
-        if (!tmp) return (long) -1;
-        val = __Pyx_PyInt_As_long(tmp);
-        Py_DECREF(tmp);
-        return val;
-    }
-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;
-}
-
-/* BytesContains */
-            static CYTHON_INLINE int __Pyx_BytesContains(PyObject* bytes, char character) {
-    const Py_ssize_t length = PyBytes_GET_SIZE(bytes);
-    char* char_start = PyBytes_AS_STRING(bytes);
-    return memchr(char_start, (unsigned char)character, (size_t)length) != NULL;
-}
-
-/* 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))) {
-        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;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-#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
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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 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
-            return (int) -1;
-        }
-    } else {
-        int val;
-        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
-        if (!tmp) return (int) -1;
-        val = __Pyx_PyInt_As_int(tmp);
-        Py_DECREF(tmp);
-        return val;
-    }
-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;
-}
-
-/* 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;
-}
-
-/* CoroutineBase */
-            #include <structmember.h>
-#include <frameobject.h>
-#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
-static int __Pyx_PyGen__FetchStopIterationValue(CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject **pvalue) {
-    PyObject *et, *ev, *tb;
-    PyObject *value = NULL;
-    __Pyx_ErrFetch(&et, &ev, &tb);
-    if (!et) {
-        Py_XDECREF(tb);
-        Py_XDECREF(ev);
-        Py_INCREF(Py_None);
-        *pvalue = Py_None;
-        return 0;
-    }
-    if (likely(et == PyExc_StopIteration)) {
-        if (!ev) {
-            Py_INCREF(Py_None);
-            value = Py_None;
-        }
-#if PY_VERSION_HEX >= 0x030300A0
-        else if (Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) {
-            value = ((PyStopIterationObject *)ev)->value;
-            Py_INCREF(value);
-            Py_DECREF(ev);
-        }
-#endif
-        else if (unlikely(PyTuple_Check(ev))) {
-            if (PyTuple_GET_SIZE(ev) >= 1) {
-#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-                value = PyTuple_GET_ITEM(ev, 0);
-                Py_INCREF(value);
-#else
-                value = PySequence_ITEM(ev, 0);
-#endif
-            } else {
-                Py_INCREF(Py_None);
-                value = Py_None;
-            }
-            Py_DECREF(ev);
-        }
-        else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) {
-            value = ev;
-        }
-        if (likely(value)) {
-            Py_XDECREF(tb);
-            Py_DECREF(et);
-            *pvalue = value;
-            return 0;
-        }
-    } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) {
-        __Pyx_ErrRestore(et, ev, tb);
-        return -1;
-    }
-    PyErr_NormalizeException(&et, &ev, &tb);
-    if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) {
-        __Pyx_ErrRestore(et, ev, tb);
-        return -1;
-    }
-    Py_XDECREF(tb);
-    Py_DECREF(et);
-#if PY_VERSION_HEX >= 0x030300A0
-    value = ((PyStopIterationObject *)ev)->value;
-    Py_INCREF(value);
-    Py_DECREF(ev);
-#else
-    {
-        PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args);
-        Py_DECREF(ev);
-        if (likely(args)) {
-            value = PySequence_GetItem(args, 0);
-            Py_DECREF(args);
-        }
-        if (unlikely(!value)) {
-            __Pyx_ErrRestore(NULL, NULL, NULL);
-            Py_INCREF(Py_None);
-            value = Py_None;
-        }
-    }
-#endif
-    *pvalue = value;
-    return 0;
-}
-static CYTHON_INLINE
-void __Pyx_Coroutine_ExceptionClear(__pyx_CoroutineObject *self) {
-    PyObject *exc_type = self->exc_type;
-    PyObject *exc_value = self->exc_value;
-    PyObject *exc_traceback = self->exc_traceback;
-    self->exc_type = NULL;
-    self->exc_value = NULL;
-    self->exc_traceback = NULL;
-    Py_XDECREF(exc_type);
-    Py_XDECREF(exc_value);
-    Py_XDECREF(exc_traceback);
-}
-#define __Pyx_Coroutine_AlreadyRunningError(gen)  (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL)
-static void __Pyx__Coroutine_AlreadyRunningError(CYTHON_UNUSED __pyx_CoroutineObject *gen) {
-    const char *msg;
-    if (0) {
-    #ifdef __Pyx_Coroutine_USED
-    } else if (__Pyx_Coroutine_Check((PyObject*)gen)) {
-        msg = "coroutine already executing";
-    #endif
-    #ifdef __Pyx_AsyncGen_USED
-    } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) {
-        msg = "async generator already executing";
-    #endif
-    } else {
-        msg = "generator already executing";
-    }
-    PyErr_SetString(PyExc_ValueError, msg);
-}
-#define __Pyx_Coroutine_NotStartedError(gen)  (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL)
-static void __Pyx__Coroutine_NotStartedError(CYTHON_UNUSED PyObject *gen) {
-    const char *msg;
-    if (0) {
-    #ifdef __Pyx_Coroutine_USED
-    } else if (__Pyx_Coroutine_Check(gen)) {
-        msg = "can't send non-None value to a just-started coroutine";
-    #endif
-    #ifdef __Pyx_AsyncGen_USED
-    } else if (__Pyx_AsyncGen_CheckExact(gen)) {
-        msg = "can't send non-None value to a just-started async generator";
-    #endif
-    } else {
-        msg = "can't send non-None value to a just-started generator";
-    }
-    PyErr_SetString(PyExc_TypeError, msg);
-}
-#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing)  (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL)
-static void __Pyx__Coroutine_AlreadyTerminatedError(CYTHON_UNUSED PyObject *gen, PyObject *value, CYTHON_UNUSED int closing) {
-    #ifdef __Pyx_Coroutine_USED
-    if (!closing && __Pyx_Coroutine_Check(gen)) {
-        PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine");
-    } else
-    #endif
-    if (value) {
-        #ifdef __Pyx_AsyncGen_USED
-        if (__Pyx_AsyncGen_CheckExact(gen))
-            PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
-        else
-        #endif
-        PyErr_SetNone(PyExc_StopIteration);
-    }
-}
-static
-PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) {
-    __Pyx_PyThreadState_declare
-    PyThreadState *tstate;
-    PyObject *retval;
-    assert(!self->is_running);
-    if (unlikely(self->resume_label == 0)) {
-        if (unlikely(value && value != Py_None)) {
-            return __Pyx_Coroutine_NotStartedError((PyObject*)self);
-        }
-    }
-    if (unlikely(self->resume_label == -1)) {
-        return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing);
-    }
-#if CYTHON_FAST_THREAD_STATE
-    __Pyx_PyThreadState_assign
-    tstate = __pyx_tstate;
-#else
-    tstate = __Pyx_PyThreadState_Current;
-#endif
-    if (self->exc_type) {
-#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
-#else
-        if (self->exc_traceback) {
-            PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
-            PyFrameObject *f = tb->tb_frame;
-            Py_XINCREF(tstate->frame);
-            assert(f->f_back == NULL);
-            f->f_back = tstate->frame;
-        }
-#endif
-        __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
-                            &self->exc_traceback);
-    } else {
-        __Pyx_Coroutine_ExceptionClear(self);
-        __Pyx_ExceptionSave(&self->exc_type, &self->exc_value, &self->exc_traceback);
-    }
-    self->is_running = 1;
-    retval = self->body((PyObject *) self, tstate, value);
-    self->is_running = 0;
-    return retval;
-}
-static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__pyx_CoroutineObject *self) {
-    if (likely(self->exc_traceback)) {
-#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
-#else
-        PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
-        PyFrameObject *f = tb->tb_frame;
-        Py_CLEAR(f->f_back);
-#endif
-    }
-}
-static CYTHON_INLINE
-PyObject *__Pyx_Coroutine_MethodReturn(CYTHON_UNUSED PyObject* gen, PyObject *retval) {
-    if (unlikely(!retval)) {
-        __Pyx_PyThreadState_declare
-        __Pyx_PyThreadState_assign
-        if (!__Pyx_PyErr_Occurred()) {
-            PyObject *exc = PyExc_StopIteration;
-            #ifdef __Pyx_AsyncGen_USED
-            if (__Pyx_AsyncGen_CheckExact(gen))
-                exc = __Pyx_PyExc_StopAsyncIteration;
-            #endif
-            __Pyx_PyErr_SetNone(exc);
-        }
-    }
-    return retval;
-}
-static CYTHON_INLINE
-PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) {
-    PyObject *ret;
-    PyObject *val = NULL;
-    __Pyx_Coroutine_Undelegate(gen);
-    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val);
-    ret = __Pyx_Coroutine_SendEx(gen, val, 0);
-    Py_XDECREF(val);
-    return ret;
-}
-static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) {
-    PyObject *retval;
-    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
-    PyObject *yf = gen->yieldfrom;
-    if (unlikely(gen->is_running))
-        return __Pyx_Coroutine_AlreadyRunningError(gen);
-    if (yf) {
-        PyObject *ret;
-        gen->is_running = 1;
-        #ifdef __Pyx_Generator_USED
-        if (__Pyx_Generator_CheckExact(yf)) {
-            ret = __Pyx_Coroutine_Send(yf, value);
-        } else
-        #endif
-        #ifdef __Pyx_Coroutine_USED
-        if (__Pyx_Coroutine_Check(yf)) {
-            ret = __Pyx_Coroutine_Send(yf, value);
-        } else
-        #endif
-        #ifdef __Pyx_AsyncGen_USED
-        if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
-            ret = __Pyx_async_gen_asend_send(yf, value);
-        } else
-        #endif
-        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
-        if (PyGen_CheckExact(yf)) {
-            ret = _PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
-        } else
-        #endif
-        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
-        if (PyCoro_CheckExact(yf)) {
-            ret = _PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
-        } else
-        #endif
-        {
-            if (value == Py_None)
-                ret = Py_TYPE(yf)->tp_iternext(yf);
-            else
-                ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value);
-        }
-        gen->is_running = 0;
-        if (likely(ret)) {
-            return ret;
-        }
-        retval = __Pyx_Coroutine_FinishDelegation(gen);
-    } else {
-        retval = __Pyx_Coroutine_SendEx(gen, value, 0);
-    }
-    return __Pyx_Coroutine_MethodReturn(self, retval);
-}
-static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) {
-    PyObject *retval = NULL;
-    int err = 0;
-    #ifdef __Pyx_Generator_USED
-    if (__Pyx_Generator_CheckExact(yf)) {
-        retval = __Pyx_Coroutine_Close(yf);
-        if (!retval)
-            return -1;
-    } else
-    #endif
-    #ifdef __Pyx_Coroutine_USED
-    if (__Pyx_Coroutine_Check(yf)) {
-        retval = __Pyx_Coroutine_Close(yf);
-        if (!retval)
-            return -1;
-    } else
-    if (__Pyx_CoroutineAwait_CheckExact(yf)) {
-        retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf);
-        if (!retval)
-            return -1;
-    } else
-    #endif
-    #ifdef __Pyx_AsyncGen_USED
-    if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
-        retval = __Pyx_async_gen_asend_close(yf, NULL);
-    } else
-    if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) {
-        retval = __Pyx_async_gen_athrow_close(yf, NULL);
-    } else
-    #endif
-    {
-        PyObject *meth;
-        gen->is_running = 1;
-        meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_close);
-        if (unlikely(!meth)) {
-            if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
-                PyErr_WriteUnraisable(yf);
-            }
-            PyErr_Clear();
-        } else {
-            retval = PyObject_CallFunction(meth, NULL);
-            Py_DECREF(meth);
-            if (!retval)
-                err = -1;
-        }
-        gen->is_running = 0;
-    }
-    Py_XDECREF(retval);
-    return err;
-}
-static PyObject *__Pyx_Generator_Next(PyObject *self) {
-    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
-    PyObject *yf = gen->yieldfrom;
-    if (unlikely(gen->is_running))
-        return __Pyx_Coroutine_AlreadyRunningError(gen);
-    if (yf) {
-        PyObject *ret;
-        gen->is_running = 1;
-        #ifdef __Pyx_Generator_USED
-        if (__Pyx_Generator_CheckExact(yf)) {
-            ret = __Pyx_Generator_Next(yf);
-        } else
-        #endif
-        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
-        if (PyGen_CheckExact(yf)) {
-            ret = _PyGen_Send((PyGenObject*)yf, NULL);
-        } else
-        #endif
-        #ifdef __Pyx_Coroutine_USED
-        if (__Pyx_Coroutine_Check(yf)) {
-            ret = __Pyx_Coroutine_Send(yf, Py_None);
-        } else
-        #endif
-            ret = Py_TYPE(yf)->tp_iternext(yf);
-        gen->is_running = 0;
-        if (likely(ret)) {
-            return ret;
-        }
-        return __Pyx_Coroutine_FinishDelegation(gen);
-    }
-    return __Pyx_Coroutine_SendEx(gen, Py_None, 0);
-}
-static PyObject *__Pyx_Coroutine_Close(PyObject *self) {
-    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
-    PyObject *retval, *raised_exception;
-    PyObject *yf = gen->yieldfrom;
-    int err = 0;
-    if (unlikely(gen->is_running))
-        return __Pyx_Coroutine_AlreadyRunningError(gen);
-    if (yf) {
-        Py_INCREF(yf);
-        err = __Pyx_Coroutine_CloseIter(gen, yf);
-        __Pyx_Coroutine_Undelegate(gen);
-        Py_DECREF(yf);
-    }
-    if (err == 0)
-        PyErr_SetNone(PyExc_GeneratorExit);
-    retval = __Pyx_Coroutine_SendEx(gen, NULL, 1);
-    if (unlikely(retval)) {
-        const char *msg;
-        Py_DECREF(retval);
-        if ((0)) {
-        #ifdef __Pyx_Coroutine_USED
-        } else if (__Pyx_Coroutine_Check(self)) {
-            msg = "coroutine ignored GeneratorExit";
-        #endif
-        #ifdef __Pyx_AsyncGen_USED
-        } else if (__Pyx_AsyncGen_CheckExact(self)) {
-#if PY_VERSION_HEX < 0x03060000
-            msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)";
-#else
-            msg = "async generator ignored GeneratorExit";
-#endif
-        #endif
-        } else {
-            msg = "generator ignored GeneratorExit";
-        }
-        PyErr_SetString(PyExc_RuntimeError, msg);
-        return NULL;
-    }
-    raised_exception = PyErr_Occurred();
-    if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) {
-        if (raised_exception) PyErr_Clear();
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return NULL;
-}
-static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb,
-                                        PyObject *args, int close_on_genexit) {
-    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
-    PyObject *yf = gen->yieldfrom;
-    if (unlikely(gen->is_running))
-        return __Pyx_Coroutine_AlreadyRunningError(gen);
-    if (yf) {
-        PyObject *ret;
-        Py_INCREF(yf);
-        if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) {
-            int err = __Pyx_Coroutine_CloseIter(gen, yf);
-            Py_DECREF(yf);
-            __Pyx_Coroutine_Undelegate(gen);
-            if (err < 0)
-                return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
-            goto throw_here;
-        }
-        gen->is_running = 1;
-        if (0
-        #ifdef __Pyx_Generator_USED
-            || __Pyx_Generator_CheckExact(yf)
-        #endif
-        #ifdef __Pyx_Coroutine_USED
-            || __Pyx_Coroutine_Check(yf)
-        #endif
-            ) {
-            ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit);
-        #ifdef __Pyx_Coroutine_USED
-        } else if (__Pyx_CoroutineAwait_CheckExact(yf)) {
-            ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit);
-        #endif
-        } else {
-            PyObject *meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_throw);
-            if (unlikely(!meth)) {
-                Py_DECREF(yf);
-                if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
-                    gen->is_running = 0;
-                    return NULL;
-                }
-                PyErr_Clear();
-                __Pyx_Coroutine_Undelegate(gen);
-                gen->is_running = 0;
-                goto throw_here;
-            }
-            if (likely(args)) {
-                ret = PyObject_CallObject(meth, args);
-            } else {
-                ret = PyObject_CallFunctionObjArgs(meth, typ, val, tb, NULL);
-            }
-            Py_DECREF(meth);
-        }
-        gen->is_running = 0;
-        Py_DECREF(yf);
-        if (!ret) {
-            ret = __Pyx_Coroutine_FinishDelegation(gen);
-        }
-        return __Pyx_Coroutine_MethodReturn(self, ret);
-    }
-throw_here:
-    __Pyx_Raise(typ, val, tb, NULL);
-    return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
-}
-static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) {
-    PyObject *typ;
-    PyObject *val = NULL;
-    PyObject *tb = NULL;
-    if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))
-        return NULL;
-    return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1);
-}
-static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) {
-    Py_VISIT(gen->closure);
-    Py_VISIT(gen->classobj);
-    Py_VISIT(gen->yieldfrom);
-    Py_VISIT(gen->exc_type);
-    Py_VISIT(gen->exc_value);
-    Py_VISIT(gen->exc_traceback);
-    return 0;
-}
-static int __Pyx_Coroutine_clear(PyObject *self) {
-    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
-    Py_CLEAR(gen->closure);
-    Py_CLEAR(gen->classobj);
-    Py_CLEAR(gen->yieldfrom);
-    Py_CLEAR(gen->exc_type);
-    Py_CLEAR(gen->exc_value);
-    Py_CLEAR(gen->exc_traceback);
-#ifdef __Pyx_AsyncGen_USED
-    if (__Pyx_AsyncGen_CheckExact(self)) {
-        Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer);
-    }
-#endif
-    Py_CLEAR(gen->gi_code);
-    Py_CLEAR(gen->gi_name);
-    Py_CLEAR(gen->gi_qualname);
-    Py_CLEAR(gen->gi_modulename);
-    return 0;
-}
-static void __Pyx_Coroutine_dealloc(PyObject *self) {
-    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
-    PyObject_GC_UnTrack(gen);
-    if (gen->gi_weakreflist != NULL)
-        PyObject_ClearWeakRefs(self);
-    if (gen->resume_label >= 0) {
-        PyObject_GC_Track(self);
-#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE
-        if (PyObject_CallFinalizerFromDealloc(self))
-#else
-        Py_TYPE(gen)->tp_del(self);
-        if (self->ob_refcnt > 0)
-#endif
-        {
-            return;
-        }
-        PyObject_GC_UnTrack(self);
-    }
-#ifdef __Pyx_AsyncGen_USED
-    if (__Pyx_AsyncGen_CheckExact(self)) {
-        /* We have to handle this case for asynchronous generators
-           right here, because this code has to be between UNTRACK
-           and GC_Del. */
-        Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer);
-    }
-#endif
-    __Pyx_Coroutine_clear(self);
-    PyObject_GC_Del(gen);
-}
-static void __Pyx_Coroutine_del(PyObject *self) {
-    PyObject *error_type, *error_value, *error_traceback;
-    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
-    __Pyx_PyThreadState_declare
-    if (gen->resume_label < 0) {
-        return;
-    }
-#if !CYTHON_USE_TP_FINALIZE
-    assert(self->ob_refcnt == 0);
-    self->ob_refcnt = 1;
-#endif
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
-#ifdef __Pyx_AsyncGen_USED
-    if (__Pyx_AsyncGen_CheckExact(self)) {
-        __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self;
-        PyObject *finalizer = agen->ag_finalizer;
-        if (finalizer && !agen->ag_closed) {
-            PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self);
-            if (unlikely(!res)) {
-                PyErr_WriteUnraisable(self);
-            } else {
-                Py_DECREF(res);
-            }
-            __Pyx_ErrRestore(error_type, error_value, error_traceback);
-            return;
-        }
-    }
-#endif
-    if (unlikely(gen->resume_label == 0 && !error_value)) {
-#ifdef __Pyx_Coroutine_USED
-#ifdef __Pyx_Generator_USED
-    if (!__Pyx_Generator_CheckExact(self))
-#endif
-        {
-        PyObject_GC_UnTrack(self);
-#if PY_MAJOR_VERSION >= 3  || defined(PyErr_WarnFormat)
-        if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0))
-            PyErr_WriteUnraisable(self);
-#else
-        {PyObject *msg;
-        char *cmsg;
-        #if CYTHON_COMPILING_IN_PYPY
-        msg = NULL;
-        cmsg = (char*) "coroutine was never awaited";
-        #else
-        char *cname;
-        PyObject *qualname;
-        qualname = gen->gi_qualname;
-        cname = PyString_AS_STRING(qualname);
-        msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname);
-        if (unlikely(!msg)) {
-            PyErr_Clear();
-            cmsg = (char*) "coroutine was never awaited";
-        } else {
-            cmsg = PyString_AS_STRING(msg);
-        }
-        #endif
-        if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0))
-            PyErr_WriteUnraisable(self);
-        Py_XDECREF(msg);}
-#endif
-        PyObject_GC_Track(self);
-        }
-#endif
-    } else {
-        PyObject *res = __Pyx_Coroutine_Close(self);
-        if (unlikely(!res)) {
-            if (PyErr_Occurred())
-                PyErr_WriteUnraisable(self);
-        } else {
-            Py_DECREF(res);
-        }
-    }
-    __Pyx_ErrRestore(error_type, error_value, error_traceback);
-#if !CYTHON_USE_TP_FINALIZE
-    assert(self->ob_refcnt > 0);
-    if (--self->ob_refcnt == 0) {
-        return;
-    }
-    {
-        Py_ssize_t refcnt = self->ob_refcnt;
-        _Py_NewReference(self);
-        self->ob_refcnt = refcnt;
-    }
-#if CYTHON_COMPILING_IN_CPYTHON
-    assert(PyType_IS_GC(self->ob_type) &&
-           _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
-    _Py_DEC_REFTOTAL;
-#endif
-#ifdef COUNT_ALLOCS
-    --Py_TYPE(self)->tp_frees;
-    --Py_TYPE(self)->tp_allocs;
-#endif
-#endif
-}
-static PyObject *
-__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self)
-{
-    PyObject *name = self->gi_name;
-    if (unlikely(!name)) name = Py_None;
-    Py_INCREF(name);
-    return name;
-}
-static int
-__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value)
-{
-    PyObject *tmp;
-#if PY_MAJOR_VERSION >= 3
-    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
-#else
-    if (unlikely(value == NULL || !PyString_Check(value))) {
-#endif
-        PyErr_SetString(PyExc_TypeError,
-                        "__name__ must be set to a string object");
-        return -1;
-    }
-    tmp = self->gi_name;
-    Py_INCREF(value);
-    self->gi_name = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-static PyObject *
-__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self)
-{
-    PyObject *name = self->gi_qualname;
-    if (unlikely(!name)) name = Py_None;
-    Py_INCREF(name);
-    return name;
-}
-static int
-__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value)
-{
-    PyObject *tmp;
-#if PY_MAJOR_VERSION >= 3
-    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
-#else
-    if (unlikely(value == NULL || !PyString_Check(value))) {
-#endif
-        PyErr_SetString(PyExc_TypeError,
-                        "__qualname__ must be set to a string object");
-        return -1;
-    }
-    tmp = self->gi_qualname;
-    Py_INCREF(value);
-    self->gi_qualname = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-static __pyx_CoroutineObject *__Pyx__Coroutine_New(
-            PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
-            PyObject *name, PyObject *qualname, PyObject *module_name) {
-    __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type);
-    if (unlikely(!gen))
-        return NULL;
-    return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name);
-}
-static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
-            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
-            PyObject *name, PyObject *qualname, PyObject *module_name) {
-    gen->body = body;
-    gen->closure = closure;
-    Py_XINCREF(closure);
-    gen->is_running = 0;
-    gen->resume_label = 0;
-    gen->classobj = NULL;
-    gen->yieldfrom = NULL;
-    gen->exc_type = NULL;
-    gen->exc_value = NULL;
-    gen->exc_traceback = NULL;
-    gen->gi_weakreflist = NULL;
-    Py_XINCREF(qualname);
-    gen->gi_qualname = qualname;
-    Py_XINCREF(name);
-    gen->gi_name = name;
-    Py_XINCREF(module_name);
-    gen->gi_modulename = module_name;
-    Py_XINCREF(code);
-    gen->gi_code = code;
-    PyObject_GC_Track(gen);
-    return gen;
-}
-
-/* PatchModuleWithCoroutine */
-                static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) {
-#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
-    int result;
-    PyObject *globals, *result_obj;
-    globals = PyDict_New();  if (unlikely(!globals)) goto ignore;
-    result = PyDict_SetItemString(globals, "_cython_coroutine_type",
-    #ifdef __Pyx_Coroutine_USED
-        (PyObject*)__pyx_CoroutineType);
-    #else
-        Py_None);
-    #endif
-    if (unlikely(result < 0)) goto ignore;
-    result = PyDict_SetItemString(globals, "_cython_generator_type",
-    #ifdef __Pyx_Generator_USED
-        (PyObject*)__pyx_GeneratorType);
-    #else
-        Py_None);
-    #endif
-    if (unlikely(result < 0)) goto ignore;
-    if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore;
-    if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore;
-    result_obj = PyRun_String(py_code, Py_file_input, globals, globals);
-    if (unlikely(!result_obj)) goto ignore;
-    Py_DECREF(result_obj);
-    Py_DECREF(globals);
-    return module;
-ignore:
-    Py_XDECREF(globals);
-    PyErr_WriteUnraisable(module);
-    if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) {
-        Py_DECREF(module);
-        module = NULL;
-    }
-#else
-    py_code++;
-#endif
-    return module;
-}
-
-/* PatchGeneratorABC */
-                #ifndef CYTHON_REGISTER_ABCS
-#define CYTHON_REGISTER_ABCS 1
-#endif
-#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
-static PyObject* __Pyx_patch_abc_module(PyObject *module);
-static PyObject* __Pyx_patch_abc_module(PyObject *module) {
-    module = __Pyx_Coroutine_patch_module(
-        module, ""
-"if _cython_generator_type is not None:\n"
-"    try: Generator = _module.Generator\n"
-"    except AttributeError: pass\n"
-"    else: Generator.register(_cython_generator_type)\n"
-"if _cython_coroutine_type is not None:\n"
-"    try: Coroutine = _module.Coroutine\n"
-"    except AttributeError: pass\n"
-"    else: Coroutine.register(_cython_coroutine_type)\n"
-    );
-    return module;
-}
-#endif
-static int __Pyx_patch_abc(void) {
-#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
-    static int abc_patched = 0;
-    if (CYTHON_REGISTER_ABCS && !abc_patched) {
-        PyObject *module;
-        module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections");
-        if (!module) {
-            PyErr_WriteUnraisable(NULL);
-            if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning,
-                    ((PY_MAJOR_VERSION >= 3) ?
-                        "Cython module failed to register with collections.abc module" :
-                        "Cython module failed to register with collections module"), 1) < 0)) {
-                return -1;
-            }
-        } else {
-            module = __Pyx_patch_abc_module(module);
-            abc_patched = 1;
-            if (unlikely(!module))
-                return -1;
-            Py_DECREF(module);
-        }
-        module = PyImport_ImportModule("backports_abc");
-        if (module) {
-            module = __Pyx_patch_abc_module(module);
-            Py_XDECREF(module);
-        }
-        if (!module) {
-            PyErr_Clear();
-        }
-    }
-#else
-    if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL);
-#endif
-    return 0;
-}
-
-/* Generator */
-                static PyMethodDef __pyx_Generator_methods[] = {
-    {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
-     (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")},
-    {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
-     (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")},
-    {"close", (PyCFunction) __Pyx_Coroutine_Close, METH_NOARGS,
-     (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")},
-    {0, 0, 0, 0}
-};
-static PyMemberDef __pyx_Generator_memberlist[] = {
-    {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL},
-    {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
-     (char*) PyDoc_STR("object being iterated by 'yield from', or None")},
-    {(char*) "gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL},
-    {0, 0, 0, 0, 0}
-};
-static PyGetSetDef __pyx_Generator_getsets[] = {
-    {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
-     (char*) PyDoc_STR("name of the generator"), 0},
-    {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
-     (char*) PyDoc_STR("qualified name of the generator"), 0},
-    {0, 0, 0, 0, 0}
-};
-static PyTypeObject __pyx_GeneratorType_type = {
-    PyVarObject_HEAD_INIT(0, 0)
-    "generator",
-    sizeof(__pyx_CoroutineObject),
-    0,
-    (destructor) __Pyx_Coroutine_dealloc,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
-    0,
-    (traverseproc) __Pyx_Coroutine_traverse,
-    0,
-    0,
-    offsetof(__pyx_CoroutineObject, gi_weakreflist),
-    0,
-    (iternextfunc) __Pyx_Generator_Next,
-    __pyx_Generator_methods,
-    __pyx_Generator_memberlist,
-    __pyx_Generator_getsets,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-#if CYTHON_USE_TP_FINALIZE
-    0,
-#else
-    __Pyx_Coroutine_del,
-#endif
-    0,
-#if CYTHON_USE_TP_FINALIZE
-    __Pyx_Coroutine_del,
-#elif PY_VERSION_HEX >= 0x030400a1
-    0,
-#endif
-};
-static int __pyx_Generator_init(void) {
-    __pyx_GeneratorType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
-    __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter;
-    __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type);
-    if (unlikely(!__pyx_GeneratorType)) {
-        return -1;
-    }
-    return 0;
-}
-
-/* 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());
-    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
-        char message[200];
-        PyOS_snprintf(message, sizeof(message),
-                      "compiletime version %s of module '%.100s' "
-                      "does not match runtime version %s",
-                      ctversion, __Pyx_MODULE_NAME, rtversion);
-        return PyErr_WarnEx(NULL, message, 1);
-    }
-    return 0;
-}
-
-/* ModuleImport */
-                #ifndef __PYX_HAVE_RT_ImportModule
-#define __PYX_HAVE_RT_ImportModule
-static PyObject *__Pyx_ImportModule(const char *name) {
-    PyObject *py_name = 0;
-    PyObject *py_module = 0;
-    py_name = __Pyx_PyIdentifier_FromString(name);
-    if (!py_name)
-        goto bad;
-    py_module = PyImport_Import(py_name);
-    Py_DECREF(py_name);
-    return py_module;
-bad:
-    Py_XDECREF(py_name);
-    return 0;
-}
-#endif
-
-/* 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)
-{
-    PyObject *py_module = 0;
-    PyObject *result = 0;
-    PyObject *py_name = 0;
-    char warning[200];
-    Py_ssize_t basicsize;
-#ifdef Py_LIMITED_API
-    PyObject *py_basicsize;
-#endif
-    py_module = __Pyx_ImportModule(module_name);
-    if (!py_module)
-        goto bad;
-    py_name = __Pyx_PyIdentifier_FromString(class_name);
-    if (!py_name)
-        goto bad;
-    result = PyObject_GetAttr(py_module, py_name);
-    Py_DECREF(py_name);
-    py_name = 0;
-    Py_DECREF(py_module);
-    py_module = 0;
-    if (!result)
-        goto bad;
-    if (!PyType_Check(result)) {
-        PyErr_Format(PyExc_TypeError,
-            "%.200s.%.200s is not a type object",
-            module_name, class_name);
-        goto bad;
-    }
-#ifndef Py_LIMITED_API
-    basicsize = ((PyTypeObject *)result)->tp_basicsize;
-#else
-    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
-    if (!py_basicsize)
-        goto bad;
-    basicsize = PyLong_AsSsize_t(py_basicsize);
-    Py_DECREF(py_basicsize);
-    py_basicsize = 0;
-    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
-        goto bad;
-#endif
-    if (!strict && (size_t)basicsize > size) {
-        PyOS_snprintf(warning, sizeof(warning),
-            "%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;
-    }
-    else if ((size_t)basicsize != size) {
-        PyErr_Format(PyExc_ValueError,
-            "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd",
-            module_name, class_name, basicsize, size);
-        goto bad;
-    }
-    return (PyTypeObject *)result;
-bad:
-    Py_XDECREF(py_module);
-    Py_XDECREF(result);
-    return NULL;
-}
-#endif
-
-/* VoidPtrImport */
-                #ifndef __PYX_HAVE_RT_ImportVoidPtr
-#define __PYX_HAVE_RT_ImportVoidPtr
-static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig) {
-    PyObject *d = 0;
-    PyObject *cobj = 0;
-    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
-    if (!d)
-        goto bad;
-    cobj = PyDict_GetItemString(d, name);
-    if (!cobj) {
-        PyErr_Format(PyExc_ImportError,
-            "%.200s does not export expected C variable %.200s",
-                PyModule_GetName(module), name);
-        goto bad;
-    }
-#if PY_VERSION_HEX >= 0x02070000
-    if (!PyCapsule_IsValid(cobj, sig)) {
-        PyErr_Format(PyExc_TypeError,
-            "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
-             PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj));
-        goto bad;
-    }
-    *p = PyCapsule_GetPointer(cobj, sig);
-#else
-    {const char *desc, *s1, *s2;
-    desc = (const char *)PyCObject_GetDesc(cobj);
-    if (!desc)
-        goto bad;
-    s1 = desc; s2 = sig;
-    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
-    if (*s1 != *s2) {
-        PyErr_Format(PyExc_TypeError,
-            "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
-             PyModule_GetName(module), name, sig, desc);
-        goto bad;
-    }
-    *p = PyCObject_AsVoidPtr(cobj);}
-#endif
-    if (!(*p))
-        goto bad;
-    Py_DECREF(d);
-    return 0;
-bad:
-    Py_XDECREF(d);
-    return -1;
-}
-#endif
-
-/* FunctionImport */
-                #ifndef __PYX_HAVE_RT_ImportFunction
-#define __PYX_HAVE_RT_ImportFunction
-static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
-    PyObject *d = 0;
-    PyObject *cobj = 0;
-    union {
-        void (*fp)(void);
-        void *p;
-    } tmp;
-    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
-    if (!d)
-        goto bad;
-    cobj = PyDict_GetItemString(d, funcname);
-    if (!cobj) {
-        PyErr_Format(PyExc_ImportError,
-            "%.200s does not export expected C function %.200s",
-                PyModule_GetName(module), funcname);
-        goto bad;
-    }
-#if PY_VERSION_HEX >= 0x02070000
-    if (!PyCapsule_IsValid(cobj, sig)) {
-        PyErr_Format(PyExc_TypeError,
-            "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
-             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
-        goto bad;
-    }
-    tmp.p = PyCapsule_GetPointer(cobj, sig);
-#else
-    {const char *desc, *s1, *s2;
-    desc = (const char *)PyCObject_GetDesc(cobj);
-    if (!desc)
-        goto bad;
-    s1 = desc; s2 = sig;
-    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
-    if (*s1 != *s2) {
-        PyErr_Format(PyExc_TypeError,
-            "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
-             PyModule_GetName(module), funcname, sig, desc);
-        goto bad;
-    }
-    tmp.p = PyCObject_AsVoidPtr(cobj);}
-#endif
-    *f = tmp.fp;
-    if (!(*f))
-        goto bad;
-    Py_DECREF(d);
-    return 0;
-bad:
-    Py_XDECREF(d);
-    return -1;
-}
-#endif
-
-/* InitStrings */
-                static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
-    while (t->p) {
-        #if PY_MAJOR_VERSION < 3
-        if (t->is_unicode) {
-            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
-        } else if (t->intern) {
-            *t->p = PyString_InternFromString(t->s);
-        } else {
-            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
-        }
-        #else
-        if (t->is_unicode | t->is_str) {
-            if (t->intern) {
-                *t->p = PyUnicode_InternFromString(t->s);
-            } else if (t->encoding) {
-                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
-            } else {
-                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
-            }
-        } else {
-            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
-        }
-        #endif
-        if (!*t->p)
-            return -1;
-        if (PyObject_Hash(*t->p) == -1)
-            return -1;
-        ++t;
-    }
-    return 0;
-}
-
-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 const char* __Pyx_PyObject_AsString(PyObject* o) {
-    Py_ssize_t ignore;
-    return __Pyx_PyObject_AsStringAndSize(o, &ignore);
-}
-#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)) {
-        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
-    {
-        char* result;
-        int r = PyBytes_AsStringAndSize(o, &result, length);
-        if (unlikely(r < 0)) {
-            return NULL;
-        } else {
-            return result;
-        }
-    }
-}
-static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
-   int is_true = x == Py_True;
-   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
-   else return PyObject_IsTrue(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 (likely(PyInt_Check(x) || PyLong_Check(x)))
-#else
-  if (likely(PyLong_Check(x)))
-#endif
-    return __Pyx_NewRef(x);
-#if CYTHON_USE_TYPE_SLOTS
-  m = Py_TYPE(x)->tp_as_number;
-  #if PY_MAJOR_VERSION < 3
-  if (m && m->nb_int) {
-    name = "int";
-    res = m->nb_int(x);
-  }
-  else if (m && m->nb_long) {
-    name = "long";
-    res = m->nb_long(x);
-  }
-  #else
-  if (likely(m && m->nb_int)) {
-    name = "int";
-    res = m->nb_int(x);
-  }
-  #endif
-#else
-  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
-    res = PyNumber_Int(x);
-  }
-#endif
-  if (likely(res)) {
-#if PY_MAJOR_VERSION < 3
-    if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
-#else
-    if (unlikely(!PyLong_CheckExact(res))) {
-#endif
-        return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
-    }
-  }
-  else if (!PyErr_Occurred()) {
-    PyErr_SetString(PyExc_TypeError,
-                    "an integer is required");
-  }
-  return res;
-}
-static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
-  Py_ssize_t ival;
-  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) {
-    return PyInt_FromSize_t(ival);
-}
-
-
-#endif /* Py_PYTHON_H */

+ 0 - 5165
lakesuperior/store/ldp_rs/term.c

@@ -1,5165 +0,0 @@
-/* Generated by Cython 0.28.4 */
-
-/* BEGIN: Cython Metadata
-{
-    "distutils": {
-        "depends": [],
-        "extra_compile_args": [
-            "-fopenmp"
-        ],
-        "extra_link_args": [
-            "-fopenmp"
-        ],
-        "include_dirs": [
-            "/home/scossu/code/lsup/src/lakesuperior/cy_include",
-            "/home/scossu/code/lsup/src/ext/include"
-        ],
-        "libraries": [
-            "crypto"
-        ],
-        "name": "lakesuperior.store.ldp_rs.term",
-        "sources": [
-            "/home/scossu/code/lsup/src/lakesuperior/store/ldp_rs/term.pyx",
-            "/home/scossu/code/lsup/src/ext/lib/tpl.c",
-            "/home/scossu/code/lsup/src/ext/lib/mdb.c",
-            "/home/scossu/code/lsup/src/ext/lib/midl.c"
-        ]
-    },
-    "module_name": "lakesuperior.store.ldp_rs.term"
-}
-END: Cython Metadata */
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#ifndef Py_PYTHON_H
-    #error Python headers needed to compile C extensions, please install development version of Python.
-#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
-    #error Cython requires Python 2.6+ or Python 3.3+.
-#else
-#define CYTHON_ABI "0_28_4"
-#define CYTHON_FUTURE_DIVISION 1
-#include <stddef.h>
-#ifndef offsetof
-  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
-#endif
-#if !defined(WIN32) && !defined(MS_WINDOWS)
-  #ifndef __stdcall
-    #define __stdcall
-  #endif
-  #ifndef __cdecl
-    #define __cdecl
-  #endif
-  #ifndef __fastcall
-    #define __fastcall
-  #endif
-#endif
-#ifndef DL_IMPORT
-  #define DL_IMPORT(t) t
-#endif
-#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
-#ifndef Py_HUGE_VAL
-  #define Py_HUGE_VAL HUGE_VAL
-#endif
-#ifdef PYPY_VERSION
-  #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_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<class T> 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
-   #include <stdint.h>
-#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+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)\
-          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
-  #define __Pyx_DefaultClassType PyType_Type
-#endif
-#ifndef Py_TPFLAGS_CHECKTYPES
-  #define Py_TPFLAGS_CHECKTYPES 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_INDEX
-  #define Py_TPFLAGS_HAVE_INDEX 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
-  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
-#endif
-#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)) ?\
-                                              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_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
-  #define PyStringObject               PyUnicodeObject
-  #define PyString_Type                PyUnicode_Type
-  #define PyString_Check               PyUnicode_Check
-  #define PyString_CheckExact          PyUnicode_CheckExact
-  #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_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
-#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
-  #define PyInt_Check(op)              PyLong_Check(op)
-  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
-  #define PyInt_FromString             PyLong_FromString
-  #define PyInt_FromUnicode            PyLong_FromUnicode
-  #define PyInt_FromLong               PyLong_FromLong
-  #define PyInt_FromSize_t             PyLong_FromSize_t
-  #define PyInt_FromSsize_t            PyLong_FromSsize_t
-  #define PyInt_AsLong                 PyLong_AsLong
-  #define PyInt_AS_LONG                PyLong_AS_LONG
-  #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_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
-#else
-  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
-  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
-#endif
-#if PY_MAJOR_VERSION >= 3
-  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func))
-#else
-  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
-#endif
-#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 __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
-  #endif
-#else
-  #define __Pyx_PyType_AsAsync(obj) NULL
-#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 <math.h>
-#ifdef NAN
-#define __PYX_NAN() ((float) NAN)
-#else
-static CYTHON_INLINE float __PYX_NAN() {
-  float value;
-  memset(&value, 0xFF, sizeof(value));
-  return value;
-}
-#endif
-#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
-#define __Pyx_truncl trunc
-#else
-#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"
-  #else
-    #define __PYX_EXTERN_C extern
-  #endif
-#endif
-
-#define __PYX_HAVE__lakesuperior__store__ldp_rs__term
-#define __PYX_HAVE_API__lakesuperior__store__ldp_rs__term
-/* Early includes */
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdint.h>
-#include "tpl.h"
-#ifdef _OPENMP
-#include <omp.h>
-#endif /* _OPENMP */
-
-#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
-#define CYTHON_WITHOUT_ASSERTIONS
-#endif
-
-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
-#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 <cstdlib>
-    #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(const char*);
-#if PY_MAJOR_VERSION < 3
-    #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
-    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
-#else
-    #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
-    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
-#endif
-#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 (size_t)(u_end - u - 1);
-}
-#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_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_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);
-#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(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) 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 {
-        char ascii_chars[128];
-        int c;
-        for (c = 0; c < 128; c++) {
-            ascii_chars[c] = c;
-        }
-        __Pyx_sys_getdefaultencoding_not_ascii = 1;
-        ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
-        if (!ascii_chars_u) goto bad;
-        ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
-        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 '%.200s' is not a superset of ascii.",
-                default_encoding_c);
-            goto bad;
-        }
-        Py_DECREF(ascii_chars_u);
-        Py_DECREF(ascii_chars_b);
-    }
-    Py_DECREF(default_encoding);
-    return 0;
-bad:
-    Py_XDECREF(default_encoding);
-    Py_XDECREF(ascii_chars_u);
-    Py_XDECREF(ascii_chars_b);
-    return -1;
-}
-#endif
-#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
-#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
-#else
-#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(void) {
-    PyObject* sys;
-    PyObject* default_encoding = NULL;
-    char* default_encoding_c;
-    sys = PyImport_ImportModule("sys");
-    if (!sys) goto bad;
-    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
-    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(default_encoding);
-    return 0;
-bad:
-    Py_XDECREF(default_encoding);
-    return -1;
-}
-#endif
-#endif
-
-
-/* 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 = 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__;
-static const char *__pyx_filename;
-
-
-static const char *__pyx_f[] = {
-  "lakesuperior/store/ldp_rs/term.pyx",
-  "type.pxd",
-};
-
-/*--- Type declarations ---*/
-struct __pyx_t_12lakesuperior_5store_6ldp_rs_4term_IdentifierTerm;
-struct __pyx_t_12lakesuperior_5store_6ldp_rs_4term_LiteralTerm;
-
-/* "lakesuperior/store/ldp_rs/term.pxd":10
- *     #size_t pack_size
- * 
- *     struct IdentifierTerm:             # <<<<<<<<<<<<<<
- *         char type
- *         unsigned char *data
- */
-struct __pyx_t_12lakesuperior_5store_6ldp_rs_4term_IdentifierTerm {
-  char type;
-  unsigned char *data;
-};
-
-/* "lakesuperior/store/ldp_rs/term.pxd":14
- *         unsigned char *data
- * 
- *     struct LiteralTerm:             # <<<<<<<<<<<<<<
- *         char type
- *         unsigned char *data
- */
-struct __pyx_t_12lakesuperior_5store_6ldp_rs_4term_LiteralTerm {
-  char type;
-  unsigned char *data;
-  unsigned char *datatype;
-  unsigned char *lang;
-};
-
-/* --- Runtime support code (head) --- */
-/* Refnanny.proto */
-#ifndef CYTHON_REFNANNY
-  #define CYTHON_REFNANNY 0
-#endif
-#if CYTHON_REFNANNY
-  typedef struct {
-    void (*INCREF)(void*, PyObject*, int);
-    void (*DECREF)(void*, PyObject*, int);
-    void (*GOTREF)(void*, PyObject*, int);
-    void (*GIVEREF)(void*, PyObject*, int);
-    void* (*SetupContext)(const char*, int, const char*);
-    void (*FinishContext)(void**);
-  } __Pyx_RefNannyAPIStruct;
-  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
-  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__);\
-          }
-#else
-  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
-          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
-#endif
-  #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__)
-  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
-  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
-  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
-  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
-  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
-  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
-#else
-  #define __Pyx_RefNannyDeclarations
-  #define __Pyx_RefNannySetupContext(name, acquire_gil)
-  #define __Pyx_RefNannyFinishContext()
-  #define __Pyx_INCREF(r) Py_INCREF(r)
-  #define __Pyx_DECREF(r) Py_DECREF(r)
-  #define __Pyx_GOTREF(r)
-  #define __Pyx_GIVEREF(r)
-  #define __Pyx_XINCREF(r) Py_XINCREF(r)
-  #define __Pyx_XDECREF(r) Py_XDECREF(r)
-  #define __Pyx_XGOTREF(r)
-  #define __Pyx_XGIVEREF(r)
-#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)
-
-/* 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
-
-/* GetBuiltinName.proto */
-static PyObject *__Pyx_GetBuiltinName(PyObject *name);
-
-/* 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
-
-/* Profile.proto */
-#ifndef CYTHON_PROFILE
-#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
-  #define CYTHON_PROFILE 0
-#else
-  #define CYTHON_PROFILE 1
-#endif
-#endif
-#ifndef CYTHON_TRACE_NOGIL
-  #define CYTHON_TRACE_NOGIL 0
-#else
-  #if CYTHON_TRACE_NOGIL && !defined(CYTHON_TRACE)
-    #define CYTHON_TRACE 1
-  #endif
-#endif
-#ifndef CYTHON_TRACE
-  #define CYTHON_TRACE 0
-#endif
-#if CYTHON_TRACE
-  #undef CYTHON_PROFILE_REUSE_FRAME
-#endif
-#ifndef CYTHON_PROFILE_REUSE_FRAME
-  #define CYTHON_PROFILE_REUSE_FRAME 0
-#endif
-#if CYTHON_PROFILE || CYTHON_TRACE
-  #include "compile.h"
-  #include "frameobject.h"
-  #include "traceback.h"
-  #if CYTHON_PROFILE_REUSE_FRAME
-    #define CYTHON_FRAME_MODIFIER static
-    #define CYTHON_FRAME_DEL(frame)
-  #else
-    #define CYTHON_FRAME_MODIFIER
-    #define CYTHON_FRAME_DEL(frame) Py_CLEAR(frame)
-  #endif
-  #define __Pyx_TraceDeclarations\
-  static PyCodeObject *__pyx_frame_code = NULL;\
-  CYTHON_FRAME_MODIFIER PyFrameObject *__pyx_frame = NULL;\
-  int __Pyx_use_tracing = 0;
-  #define __Pyx_TraceFrameInit(codeobj)\
-  if (codeobj) __pyx_frame_code = (PyCodeObject*) codeobj;
-  #ifdef WITH_THREAD
-  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
-  if (nogil) {\
-      if (CYTHON_TRACE_NOGIL) {\
-          PyThreadState *tstate;\
-          PyGILState_STATE state = PyGILState_Ensure();\
-          tstate = __Pyx_PyThreadState_Current;\
-          if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
-                  (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
-              __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
-          }\
-          PyGILState_Release(state);\
-          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
-      }\
-  } else {\
-      PyThreadState* tstate = PyThreadState_GET();\
-      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
-              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
-          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
-          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
-      }\
-  }
-  #else
-  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
-  {   PyThreadState* tstate = PyThreadState_GET();\
-      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
-              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
-          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
-          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
-      }\
-  }
-  #endif
-  #define __Pyx_TraceException()\
-  if (likely(!__Pyx_use_tracing)); else {\
-      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
-      if (tstate->use_tracing &&\
-              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
-          tstate->tracing++;\
-          tstate->use_tracing = 0;\
-          PyObject *exc_info = __Pyx_GetExceptionTuple(tstate);\
-          if (exc_info) {\
-              if (CYTHON_TRACE && tstate->c_tracefunc)\
-                  tstate->c_tracefunc(\
-                      tstate->c_traceobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
-              tstate->c_profilefunc(\
-                  tstate->c_profileobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
-              Py_DECREF(exc_info);\
-          }\
-          tstate->use_tracing = 1;\
-          tstate->tracing--;\
-      }\
-  }
-  static void __Pyx_call_return_trace_func(PyThreadState *tstate, PyFrameObject *frame, PyObject *result) {
-      PyObject *type, *value, *traceback;
-      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
-      tstate->tracing++;
-      tstate->use_tracing = 0;
-      if (CYTHON_TRACE && tstate->c_tracefunc)
-          tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_RETURN, result);
-      if (tstate->c_profilefunc)
-          tstate->c_profilefunc(tstate->c_profileobj, frame, PyTrace_RETURN, result);
-      CYTHON_FRAME_DEL(frame);
-      tstate->use_tracing = 1;
-      tstate->tracing--;
-      __Pyx_ErrRestoreInState(tstate, type, value, traceback);
-  }
-  #ifdef WITH_THREAD
-  #define __Pyx_TraceReturn(result, nogil)\
-  if (likely(!__Pyx_use_tracing)); else {\
-      if (nogil) {\
-          if (CYTHON_TRACE_NOGIL) {\
-              PyThreadState *tstate;\
-              PyGILState_STATE state = PyGILState_Ensure();\
-              tstate = __Pyx_PyThreadState_Current;\
-              if (tstate->use_tracing) {\
-                  __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
-              }\
-              PyGILState_Release(state);\
-          }\
-      } else {\
-          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
-          if (tstate->use_tracing) {\
-              __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
-          }\
-      }\
-  }
-  #else
-  #define __Pyx_TraceReturn(result, nogil)\
-  if (likely(!__Pyx_use_tracing)); else {\
-      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
-      if (tstate->use_tracing) {\
-          __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
-      }\
-  }
-  #endif
-  static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno);
-  static int __Pyx_TraceSetupAndCall(PyCodeObject** code, PyFrameObject** frame, PyThreadState* tstate, const char *funcname, const char *srcfile, int firstlineno);
-#else
-  #define __Pyx_TraceDeclarations
-  #define __Pyx_TraceFrameInit(codeobj)
-  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)   if ((1)); else goto_error;
-  #define __Pyx_TraceException()
-  #define __Pyx_TraceReturn(result, nogil)
-#endif
-#if CYTHON_TRACE
-  static int __Pyx_call_line_trace_func(PyThreadState *tstate, PyFrameObject *frame, int lineno) {
-      int ret;
-      PyObject *type, *value, *traceback;
-      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
-      __Pyx_PyFrame_SetLineNumber(frame, lineno);
-      tstate->tracing++;
-      tstate->use_tracing = 0;
-      ret = tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_LINE, NULL);
-      tstate->use_tracing = 1;
-      tstate->tracing--;
-      if (likely(!ret)) {
-          __Pyx_ErrRestoreInState(tstate, type, value, traceback);
-      } else {
-          Py_XDECREF(type);
-          Py_XDECREF(value);
-          Py_XDECREF(traceback);
-      }
-      return ret;
-  }
-  #ifdef WITH_THREAD
-  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
-  if (likely(!__Pyx_use_tracing)); else {\
-      if (nogil) {\
-          if (CYTHON_TRACE_NOGIL) {\
-              int ret = 0;\
-              PyThreadState *tstate;\
-              PyGILState_STATE state = PyGILState_Ensure();\
-              tstate = __Pyx_PyThreadState_Current;\
-              if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
-                  ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
-              }\
-              PyGILState_Release(state);\
-              if (unlikely(ret)) goto_error;\
-          }\
-      } else {\
-          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
-          if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
-              int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
-              if (unlikely(ret)) goto_error;\
-          }\
-      }\
-  }
-  #else
-  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
-  if (likely(!__Pyx_use_tracing)); else {\
-      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
-      if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
-          int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
-          if (unlikely(ret)) goto_error;\
-      }\
-  }
-  #endif
-#else
-  #define __Pyx_TraceLine(lineno, nogil, goto_error)   if ((1)); else goto_error;
-#endif
-
-/* 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
-
-/* 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
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
-#endif
-
-/* PyObjectCallOneArg.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-
-/* 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
-
-/* GetModuleGlobalName.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
-
-/* GetAttr.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
-
-/* PyObjectFormatSimple.proto */
-#if CYTHON_COMPILING_IN_PYPY
-    #define __Pyx_PyObject_FormatSimple(s, f) (\
-        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
-        PyObject_Format(s, f))
-#elif PY_MAJOR_VERSION < 3
-    #define __Pyx_PyObject_FormatSimple(s, f) (\
-        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
-        likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\
-        PyObject_Format(s, f))
-#elif CYTHON_USE_TYPE_SLOTS
-    #define __Pyx_PyObject_FormatSimple(s, f) (\
-        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
-        likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_str(s) :\
-        likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_str(s) :\
-        PyObject_Format(s, f))
-#else
-    #define __Pyx_PyObject_FormatSimple(s, f) (\
-        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
-        PyObject_Format(s, f))
-#endif
-
-/* RaiseException.proto */
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
-
-/* IncludeStringH.proto */
-#include <string.h>
-
-/* BytesEquals.proto */
-static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
-
-/* decode_c_string_utf16.proto */
-static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) {
-    int byteorder = 0;
-    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
-}
-static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) {
-    int byteorder = -1;
-    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
-}
-static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) {
-    int byteorder = 1;
-    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
-}
-
-/* decode_c_string.proto */
-static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
-         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
-         const char* encoding, const char* errors,
-         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));
-
-/* BuildPyUnicode.proto */
-static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength,
-                                                int prepend_sign, char padding_char);
-
-/* CIntToPyUnicode.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_char(char value, Py_ssize_t width, char padding_char, char format_char);
-
-/* 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
-
-/* SwapException.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_ExceptionSwap(type, value, tb)  __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#else
-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
-#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
-
-/* Import.proto */
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
-
-/* ImportFrom.proto */
-static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
-
-/* 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
-
-/* 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);
-
-/* AddTraceback.proto */
-static void __Pyx_AddTraceback(const char *funcname, int c_line,
-                               int py_line, const char *filename);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
-
-/* 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)
-
-/* CheckBinaryVersion.proto */
-static int __Pyx_check_binary_version(void);
-
-/* 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
-
-/* VoidPtrExport.proto */
-static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig);
-
-/* FunctionExport.proto */
-static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig);
-
-/* PyIdentifierFromString.proto */
-#if !defined(__Pyx_PyIdentifier_FromString)
-#if PY_MAJOR_VERSION < 3
-  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
-#else
-  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
-#endif
-#endif
-
-/* ModuleImport.proto */
-static PyObject *__Pyx_ImportModule(const char *name);
-
-/* TypeImport.proto */
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);
-
-/* InitStrings.proto */
-static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
-
-
-/* Module declarations from 'libc.string' */
-
-/* Module declarations from 'libc.stdlib' */
-
-/* Module declarations from 'lakesuperior.cy_include' */
-
-/* Module declarations from 'libc.stdio' */
-
-/* Module declarations from '__builtin__' */
-
-/* Module declarations from 'cpython.type' */
-static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0;
-
-/* Module declarations from 'cpython' */
-
-/* Module declarations from 'cpython.object' */
-
-/* Module declarations from 'cpython.string' */
-
-/* Module declarations from 'libc.stdint' */
-
-/* Module declarations from 'lakesuperior.cy_include.cytpl' */
-
-/* Module declarations from 'lakesuperior.store.ldp_rs.term' */
-static unsigned char __pyx_v_12lakesuperior_5store_6ldp_rs_4term_term_type;
-static unsigned char *__pyx_v_12lakesuperior_5store_6ldp_rs_4term_pack_fmt;
-static unsigned char *__pyx_v_12lakesuperior_5store_6ldp_rs_4term_term_data;
-static unsigned char *__pyx_v_12lakesuperior_5store_6ldp_rs_4term_term_datatype;
-static unsigned char *__pyx_v_12lakesuperior_5store_6ldp_rs_4term_term_lang;
-#define __Pyx_MODULE_NAME "lakesuperior.store.ldp_rs.term"
-extern int __pyx_module_is_main_lakesuperior__store__ldp_rs__term;
-int __pyx_module_is_main_lakesuperior__store__ldp_rs__term = 0;
-
-/* Implementation of 'lakesuperior.store.ldp_rs.term' */
-static PyObject *__pyx_builtin_ValueError;
-static PyObject *__pyx_builtin_IOError;
-static const char __pyx_k_[] = "";
-static const char __pyx_k_S_cs[] = "S(cs)";
-static const char __pyx_k_lang[] = "lang";
-static const char __pyx_k_main[] = "__main__";
-static const char __pyx_k_test[] = "__test__";
-static const char __pyx_k_BNode[] = "BNode";
-static const char __pyx_k_S_csss[] = "S(csss)";
-static const char __pyx_k_URIRef[] = "URIRef";
-static const char __pyx_k_encode[] = "encode";
-static const char __pyx_k_import[] = "__import__";
-static const char __pyx_k_rdflib[] = "rdflib";
-static const char __pyx_k_IOError[] = "IOError";
-static const char __pyx_k_Literal[] = "Literal";
-static const char __pyx_k_datatype[] = "datatype";
-static const char __pyx_k_language[] = "language";
-static const char __pyx_k_pack_fmt[] = "pack_fmt";
-static const char __pyx_k_pyx_capi[] = "__pyx_capi__";
-static const char __pyx_k_term_data[] = "term_data";
-static const char __pyx_k_term_lang[] = "term_lang";
-static const char __pyx_k_term_type[] = "term_type";
-static const char __pyx_k_ValueError[] = "ValueError";
-static const char __pyx_k_term_datatype[] = "term_datatype";
-static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
-static const char __pyx_k_Unsupported_term_type[] = "Unsupported term type: ";
-static const char __pyx_k_Unknown_term_type_code[] = "Unknown term type code: ";
-static const char __pyx_k_Unknown_structure_pack_format[] = "Unknown structure pack format: ";
-static PyObject *__pyx_kp_u_;
-static PyObject *__pyx_n_s_BNode;
-static PyObject *__pyx_n_s_IOError;
-static PyObject *__pyx_n_s_Literal;
-static PyObject *__pyx_kp_b_S_cs;
-static PyObject *__pyx_kp_b_S_csss;
-static PyObject *__pyx_n_s_URIRef;
-static PyObject *__pyx_kp_u_Unknown_structure_pack_format;
-static PyObject *__pyx_kp_u_Unknown_term_type_code;
-static PyObject *__pyx_kp_u_Unsupported_term_type;
-static PyObject *__pyx_n_s_ValueError;
-static PyObject *__pyx_n_s_cline_in_traceback;
-static PyObject *__pyx_n_s_datatype;
-static PyObject *__pyx_n_u_datatype;
-static PyObject *__pyx_n_s_encode;
-static PyObject *__pyx_n_s_import;
-static PyObject *__pyx_n_s_lang;
-static PyObject *__pyx_n_u_language;
-static PyObject *__pyx_n_s_main;
-static PyObject *__pyx_n_s_pack_fmt;
-static PyObject *__pyx_n_s_pyx_capi;
-static PyObject *__pyx_n_s_rdflib;
-static PyObject *__pyx_n_s_term_data;
-static PyObject *__pyx_n_s_term_datatype;
-static PyObject *__pyx_n_s_term_lang;
-static PyObject *__pyx_n_s_term_type;
-static PyObject *__pyx_n_s_test;
-/* Late includes */
-
-/* "lakesuperior/store/ldp_rs/term.pyx":16
- * 
- * 
- * cdef int serialize(             # <<<<<<<<<<<<<<
- *         term, unsigned char **pack_data, size_t *pack_size) except -1:
- *     cdef:
- */
-
-static int __pyx_f_12lakesuperior_5store_6ldp_rs_4term_serialize(PyObject *__pyx_v_term, unsigned char **__pyx_v_pack_data, size_t *__pyx_v_pack_size) {
-  PyObject *__pyx_v_term_data = 0;
-  PyObject *__pyx_v_term_datatype = 0;
-  PyObject *__pyx_v_term_lang = 0;
-  struct __pyx_t_12lakesuperior_5store_6ldp_rs_4term_IdentifierTerm __pyx_v_id_t;
-  struct __pyx_t_12lakesuperior_5store_6ldp_rs_4term_LiteralTerm __pyx_v_lit_t;
-  int __pyx_r;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_t_4;
-  int __pyx_t_5;
-  unsigned char *__pyx_t_6;
-  __Pyx_RefNannySetupContext("serialize", 0);
-  __Pyx_TraceCall("serialize", __pyx_f[0], 16, 0, __PYX_ERR(0, 16, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":19
- *         term, unsigned char **pack_data, size_t *pack_size) except -1:
- *     cdef:
- *         bytes term_data = term.encode()             # <<<<<<<<<<<<<<
- *         bytes term_datatype
- *         bytes term_lang
- */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_term, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __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, 19, __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, 19, __pyx_L1_error)
-  }
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 19, __pyx_L1_error)
-  __pyx_v_term_data = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":25
- *         LiteralTerm lit_t
- * 
- *     if isinstance(term, Literal):             # <<<<<<<<<<<<<<
- *         term_datatype = (getattr(term, 'datatype') or '').encode()
- *         term_lang = (getattr(term, 'language') or '').encode()
- */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Literal); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 25, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = PyObject_IsInstance(__pyx_v_term, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 25, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_5 = (__pyx_t_4 != 0);
-  if (__pyx_t_5) {
-
-    /* "lakesuperior/store/ldp_rs/term.pyx":26
- * 
- *     if isinstance(term, Literal):
- *         term_datatype = (getattr(term, 'datatype') or '').encode()             # <<<<<<<<<<<<<<
- *         term_lang = (getattr(term, 'language') or '').encode()
- * 
- */
-    __pyx_t_3 = __Pyx_GetAttr(__pyx_v_term, __pyx_n_u_datatype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 26, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 26, __pyx_L1_error)
-    if (!__pyx_t_5) {
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    } else {
-      __Pyx_INCREF(__pyx_t_3);
-      __pyx_t_2 = __pyx_t_3;
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      goto __pyx_L4_bool_binop_done;
-    }
-    __Pyx_INCREF(__pyx_kp_u_);
-    __pyx_t_2 = __pyx_kp_u_;
-    __pyx_L4_bool_binop_done:;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 26, __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, 26, __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, 26, __pyx_L1_error)
-    }
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 26, __pyx_L1_error)
-    __pyx_v_term_datatype = ((PyObject*)__pyx_t_1);
-    __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/ldp_rs/term.pyx":27
- *     if isinstance(term, Literal):
- *         term_datatype = (getattr(term, 'datatype') or '').encode()
- *         term_lang = (getattr(term, 'language') or '').encode()             # <<<<<<<<<<<<<<
- * 
- *         lit_t.type = LSUP_TERM_TYPE_LITERAL
- */
-    __pyx_t_2 = __Pyx_GetAttr(__pyx_v_term, __pyx_n_u_language); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 27, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 27, __pyx_L1_error)
-    if (!__pyx_t_5) {
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    } else {
-      __Pyx_INCREF(__pyx_t_2);
-      __pyx_t_3 = __pyx_t_2;
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      goto __pyx_L6_bool_binop_done;
-    }
-    __Pyx_INCREF(__pyx_kp_u_);
-    __pyx_t_3 = __pyx_kp_u_;
-    __pyx_L6_bool_binop_done:;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 27, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 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, 27, __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, 27, __pyx_L1_error)
-    }
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 27, __pyx_L1_error)
-    __pyx_v_term_lang = ((PyObject*)__pyx_t_1);
-    __pyx_t_1 = 0;
-
-    /* "lakesuperior/store/ldp_rs/term.pyx":29
- *         term_lang = (getattr(term, 'language') or '').encode()
- * 
- *         lit_t.type = LSUP_TERM_TYPE_LITERAL             # <<<<<<<<<<<<<<
- *         lit_t.data = term_data
- *         lit_t.datatype = <unsigned char *>term_datatype
- */
-    __pyx_v_lit_t.type = 3;
-
-    /* "lakesuperior/store/ldp_rs/term.pyx":30
- * 
- *         lit_t.type = LSUP_TERM_TYPE_LITERAL
- *         lit_t.data = term_data             # <<<<<<<<<<<<<<
- *         lit_t.datatype = <unsigned char *>term_datatype
- *         lit_t.lang = <unsigned char *>term_lang
- */
-    if (unlikely(__pyx_v_term_data == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
-      __PYX_ERR(0, 30, __pyx_L1_error)
-    }
-    __pyx_t_6 = __Pyx_PyBytes_AsWritableUString(__pyx_v_term_data); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 30, __pyx_L1_error)
-    __pyx_v_lit_t.data = __pyx_t_6;
-
-    /* "lakesuperior/store/ldp_rs/term.pyx":31
- *         lit_t.type = LSUP_TERM_TYPE_LITERAL
- *         lit_t.data = term_data
- *         lit_t.datatype = <unsigned char *>term_datatype             # <<<<<<<<<<<<<<
- *         lit_t.lang = <unsigned char *>term_lang
- * 
- */
-    if (unlikely(__pyx_v_term_datatype == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
-      __PYX_ERR(0, 31, __pyx_L1_error)
-    }
-    __pyx_t_6 = __Pyx_PyBytes_AsWritableUString(__pyx_v_term_datatype); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 31, __pyx_L1_error)
-    __pyx_v_lit_t.datatype = ((unsigned char *)__pyx_t_6);
-
-    /* "lakesuperior/store/ldp_rs/term.pyx":32
- *         lit_t.data = term_data
- *         lit_t.datatype = <unsigned char *>term_datatype
- *         lit_t.lang = <unsigned char *>term_lang             # <<<<<<<<<<<<<<
- * 
- *         tpl.tpl_jot(tpl.TPL_MEM, pack_data, pack_size, LSUP_PK_FMT_LIT, &lit_t)
- */
-    if (unlikely(__pyx_v_term_lang == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
-      __PYX_ERR(0, 32, __pyx_L1_error)
-    }
-    __pyx_t_6 = __Pyx_PyBytes_AsWritableUString(__pyx_v_term_lang); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 32, __pyx_L1_error)
-    __pyx_v_lit_t.lang = ((unsigned char *)__pyx_t_6);
-
-    /* "lakesuperior/store/ldp_rs/term.pyx":34
- *         lit_t.lang = <unsigned char *>term_lang
- * 
- *         tpl.tpl_jot(tpl.TPL_MEM, pack_data, pack_size, LSUP_PK_FMT_LIT, &lit_t)             # <<<<<<<<<<<<<<
- *     else:
- *         if isinstance(term, URIRef):
- */
-    (void)(tpl_jot(TPL_MEM, __pyx_v_pack_data, __pyx_v_pack_size, ((char *)"S(csss)"), (&__pyx_v_lit_t)));
-
-    /* "lakesuperior/store/ldp_rs/term.pyx":25
- *         LiteralTerm lit_t
- * 
- *     if isinstance(term, Literal):             # <<<<<<<<<<<<<<
- *         term_datatype = (getattr(term, 'datatype') or '').encode()
- *         term_lang = (getattr(term, 'language') or '').encode()
- */
-    goto __pyx_L3;
-  }
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":36
- *         tpl.tpl_jot(tpl.TPL_MEM, pack_data, pack_size, LSUP_PK_FMT_LIT, &lit_t)
- *     else:
- *         if isinstance(term, URIRef):             # <<<<<<<<<<<<<<
- *             id_t.type = LSUP_TERM_TYPE_URIREF
- *         elif isinstance(term, BNode):
- */
-  /*else*/ {
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_URIRef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyObject_IsInstance(__pyx_v_term, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 36, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_4 = (__pyx_t_5 != 0);
-    if (__pyx_t_4) {
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":37
- *     else:
- *         if isinstance(term, URIRef):
- *             id_t.type = LSUP_TERM_TYPE_URIREF             # <<<<<<<<<<<<<<
- *         elif isinstance(term, BNode):
- *             id_t.type = LSUP_TERM_TYPE_BNODE
- */
-      __pyx_v_id_t.type = 1;
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":36
- *         tpl.tpl_jot(tpl.TPL_MEM, pack_data, pack_size, LSUP_PK_FMT_LIT, &lit_t)
- *     else:
- *         if isinstance(term, URIRef):             # <<<<<<<<<<<<<<
- *             id_t.type = LSUP_TERM_TYPE_URIREF
- *         elif isinstance(term, BNode):
- */
-      goto __pyx_L8;
-    }
-
-    /* "lakesuperior/store/ldp_rs/term.pyx":38
- *         if isinstance(term, URIRef):
- *             id_t.type = LSUP_TERM_TYPE_URIREF
- *         elif isinstance(term, BNode):             # <<<<<<<<<<<<<<
- *             id_t.type = LSUP_TERM_TYPE_BNODE
- *         else:
- */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_BNode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 38, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = PyObject_IsInstance(__pyx_v_term, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 38, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_5 = (__pyx_t_4 != 0);
-    if (likely(__pyx_t_5)) {
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":39
- *             id_t.type = LSUP_TERM_TYPE_URIREF
- *         elif isinstance(term, BNode):
- *             id_t.type = LSUP_TERM_TYPE_BNODE             # <<<<<<<<<<<<<<
- *         else:
- *             raise ValueError(f'Unsupported term type: {type(term)}')
- */
-      __pyx_v_id_t.type = 2;
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":38
- *         if isinstance(term, URIRef):
- *             id_t.type = LSUP_TERM_TYPE_URIREF
- *         elif isinstance(term, BNode):             # <<<<<<<<<<<<<<
- *             id_t.type = LSUP_TERM_TYPE_BNODE
- *         else:
- */
-      goto __pyx_L8;
-    }
-
-    /* "lakesuperior/store/ldp_rs/term.pyx":41
- *             id_t.type = LSUP_TERM_TYPE_BNODE
- *         else:
- *             raise ValueError(f'Unsupported term type: {type(term)}')             # <<<<<<<<<<<<<<
- *         id_t.data = term_data
- *         tpl.tpl_jot(tpl.TPL_MEM, pack_data, pack_size, LSUP_PK_FMT_ID, &id_t)
- */
-    /*else*/ {
-      __pyx_t_1 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_term)), __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 41, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Unsupported_term_type, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 41, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __PYX_ERR(0, 41, __pyx_L1_error)
-    }
-    __pyx_L8:;
-
-    /* "lakesuperior/store/ldp_rs/term.pyx":42
- *         else:
- *             raise ValueError(f'Unsupported term type: {type(term)}')
- *         id_t.data = term_data             # <<<<<<<<<<<<<<
- *         tpl.tpl_jot(tpl.TPL_MEM, pack_data, pack_size, LSUP_PK_FMT_ID, &id_t)
- * 
- */
-    if (unlikely(__pyx_v_term_data == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
-      __PYX_ERR(0, 42, __pyx_L1_error)
-    }
-    __pyx_t_6 = __Pyx_PyBytes_AsWritableUString(__pyx_v_term_data); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 42, __pyx_L1_error)
-    __pyx_v_id_t.data = __pyx_t_6;
-
-    /* "lakesuperior/store/ldp_rs/term.pyx":43
- *             raise ValueError(f'Unsupported term type: {type(term)}')
- *         id_t.data = term_data
- *         tpl.tpl_jot(tpl.TPL_MEM, pack_data, pack_size, LSUP_PK_FMT_ID, &id_t)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-    (void)(tpl_jot(TPL_MEM, __pyx_v_pack_data, __pyx_v_pack_size, ((char *)"S(cs)"), (&__pyx_v_id_t)));
-  }
-  __pyx_L3:;
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":16
- * 
- * 
- * cdef int serialize(             # <<<<<<<<<<<<<<
- *         term, unsigned char **pack_data, size_t *pack_size) except -1:
- *     cdef:
- */
-
-  /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("lakesuperior.store.ldp_rs.term.serialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_term_data);
-  __Pyx_XDECREF(__pyx_v_term_datatype);
-  __Pyx_XDECREF(__pyx_v_term_lang);
-  __Pyx_TraceReturn(Py_None, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "lakesuperior/store/ldp_rs/term.pyx":46
- * 
- * 
- * cdef deserialize(const unsigned char *data, const size_t data_size):             # <<<<<<<<<<<<<<
- *     cdef:
- *         char term_type
- */
-
-static PyObject *__pyx_f_12lakesuperior_5store_6ldp_rs_4term_deserialize(unsigned char const *__pyx_v_data, size_t const __pyx_v_data_size) {
-  char __pyx_v_term_type;
-  char *__pyx_v_fmt;
-  char *__pyx_v__pk;
-  unsigned char *__pyx_v_term_data;
-  unsigned char *__pyx_v_term_lang;
-  unsigned char *__pyx_v_term_datatype;
-  PyObject *__pyx_v_datatype = NULL;
-  PyObject *__pyx_v_lang = NULL;
-  PyObject *__pyx_v_uri = NULL;
-  PyObject *__pyx_v_msg = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_TraceDeclarations
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  size_t __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  int __pyx_t_7;
-  int __pyx_t_8;
-  char const *__pyx_t_9;
-  PyObject *__pyx_t_10 = NULL;
-  PyObject *__pyx_t_11 = NULL;
-  PyObject *__pyx_t_12 = NULL;
-  PyObject *__pyx_t_13 = NULL;
-  PyObject *__pyx_t_14 = NULL;
-  PyObject *__pyx_t_15 = NULL;
-  __Pyx_RefNannySetupContext("deserialize", 0);
-  __Pyx_TraceCall("deserialize", __pyx_f[0], 46, 0, __PYX_ERR(0, 46, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":49
- *     cdef:
- *         char term_type
- *         char *fmt = NULL             # <<<<<<<<<<<<<<
- *         char *_pk = NULL
- *         unsigned char *term_data = NULL
- */
-  __pyx_v_fmt = NULL;
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":50
- *         char term_type
- *         char *fmt = NULL
- *         char *_pk = NULL             # <<<<<<<<<<<<<<
- *         unsigned char *term_data = NULL
- *         unsigned char *term_lang = NULL
- */
-  __pyx_v__pk = NULL;
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":51
- *         char *fmt = NULL
- *         char *_pk = NULL
- *         unsigned char *term_data = NULL             # <<<<<<<<<<<<<<
- *         unsigned char *term_lang = NULL
- *         unsigned char *term_datatype = NULL
- */
-  __pyx_v_term_data = NULL;
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":52
- *         char *_pk = NULL
- *         unsigned char *term_data = NULL
- *         unsigned char *term_lang = NULL             # <<<<<<<<<<<<<<
- *         unsigned char *term_datatype = NULL
- * 
- */
-  __pyx_v_term_lang = NULL;
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":53
- *         unsigned char *term_data = NULL
- *         unsigned char *term_lang = NULL
- *         unsigned char *term_datatype = NULL             # <<<<<<<<<<<<<<
- * 
- *     datatype = None
- */
-  __pyx_v_term_datatype = NULL;
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":55
- *         unsigned char *term_datatype = NULL
- * 
- *     datatype = None             # <<<<<<<<<<<<<<
- *     lang = None
- * 
- */
-  __Pyx_INCREF(Py_None);
-  __pyx_v_datatype = Py_None;
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":56
- * 
- *     datatype = None
- *     lang = None             # <<<<<<<<<<<<<<
- * 
- *     fmt = tpl.tpl_peek(tpl.TPL_MEM, data, data_size)
- */
-  __Pyx_INCREF(Py_None);
-  __pyx_v_lang = Py_None;
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":58
- *     lang = None
- * 
- *     fmt = tpl.tpl_peek(tpl.TPL_MEM, data, data_size)             # <<<<<<<<<<<<<<
- *     try:
- *         if fmt == LSUP_PK_FMT_LIT:
- */
-  __pyx_v_fmt = tpl_peek(TPL_MEM, __pyx_v_data, __pyx_v_data_size);
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":59
- * 
- *     fmt = tpl.tpl_peek(tpl.TPL_MEM, data, data_size)
- *     try:             # <<<<<<<<<<<<<<
- *         if fmt == LSUP_PK_FMT_LIT:
- *             _pk = tpl.tpl_peek(
- */
-  /*try:*/ {
-
-    /* "lakesuperior/store/ldp_rs/term.pyx":60
- *     fmt = tpl.tpl_peek(tpl.TPL_MEM, data, data_size)
- *     try:
- *         if fmt == LSUP_PK_FMT_LIT:             # <<<<<<<<<<<<<<
- *             _pk = tpl.tpl_peek(
- *                     tpl.TPL_MEM | tpl.TPL_DATAPEEK, data, data_size, b'csss',
- */
-    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_fmt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 60, __pyx_L4_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_t_1, __pyx_kp_b_S_csss, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 60, __pyx_L4_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (__pyx_t_2) {
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":61
- *     try:
- *         if fmt == LSUP_PK_FMT_LIT:
- *             _pk = tpl.tpl_peek(             # <<<<<<<<<<<<<<
- *                     tpl.TPL_MEM | tpl.TPL_DATAPEEK, data, data_size, b'csss',
- *                     &term_type, &term_data, &term_datatype, &term_lang)
- */
-      __pyx_v__pk = tpl_peek((TPL_MEM | TPL_DATAPEEK), __pyx_v_data, __pyx_v_data_size, ((char *)"csss"), (&__pyx_v_term_type), (&__pyx_v_term_data), (&__pyx_v_term_datatype), (&__pyx_v_term_lang));
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":64
- *                     tpl.TPL_MEM | tpl.TPL_DATAPEEK, data, data_size, b'csss',
- *                     &term_type, &term_data, &term_datatype, &term_lang)
- *             if len(term_datatype) > 0:             # <<<<<<<<<<<<<<
- *                 datatype = term_datatype.decode()
- *             elif len(term_lang) > 0:
- */
-      __pyx_t_3 = strlen(((char const *)__pyx_v_term_datatype)); 
-      __pyx_t_2 = ((__pyx_t_3 > 0) != 0);
-      if (__pyx_t_2) {
-
-        /* "lakesuperior/store/ldp_rs/term.pyx":65
- *                     &term_type, &term_data, &term_datatype, &term_lang)
- *             if len(term_datatype) > 0:
- *                 datatype = term_datatype.decode()             # <<<<<<<<<<<<<<
- *             elif len(term_lang) > 0:
- *                 lang = term_lang.decode()
- */
-        __pyx_t_1 = __Pyx_decode_c_string(((char const *)__pyx_v_term_datatype), 0, strlen(((char const *)__pyx_v_term_datatype)), NULL, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L4_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF_SET(__pyx_v_datatype, __pyx_t_1);
-        __pyx_t_1 = 0;
-
-        /* "lakesuperior/store/ldp_rs/term.pyx":64
- *                     tpl.TPL_MEM | tpl.TPL_DATAPEEK, data, data_size, b'csss',
- *                     &term_type, &term_data, &term_datatype, &term_lang)
- *             if len(term_datatype) > 0:             # <<<<<<<<<<<<<<
- *                 datatype = term_datatype.decode()
- *             elif len(term_lang) > 0:
- */
-        goto __pyx_L7;
-      }
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":66
- *             if len(term_datatype) > 0:
- *                 datatype = term_datatype.decode()
- *             elif len(term_lang) > 0:             # <<<<<<<<<<<<<<
- *                 lang = term_lang.decode()
- * 
- */
-      __pyx_t_3 = strlen(((char const *)__pyx_v_term_lang)); 
-      __pyx_t_2 = ((__pyx_t_3 > 0) != 0);
-      if (__pyx_t_2) {
-
-        /* "lakesuperior/store/ldp_rs/term.pyx":67
- *                 datatype = term_datatype.decode()
- *             elif len(term_lang) > 0:
- *                 lang = term_lang.decode()             # <<<<<<<<<<<<<<
- * 
- *             return Literal(term_data.decode(), datatype=datatype, lang=lang)
- */
-        __pyx_t_1 = __Pyx_decode_c_string(((char const *)__pyx_v_term_lang), 0, strlen(((char const *)__pyx_v_term_lang)), NULL, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L4_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF_SET(__pyx_v_lang, __pyx_t_1);
-        __pyx_t_1 = 0;
-
-        /* "lakesuperior/store/ldp_rs/term.pyx":66
- *             if len(term_datatype) > 0:
- *                 datatype = term_datatype.decode()
- *             elif len(term_lang) > 0:             # <<<<<<<<<<<<<<
- *                 lang = term_lang.decode()
- * 
- */
-      }
-      __pyx_L7:;
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":69
- *                 lang = term_lang.decode()
- * 
- *             return Literal(term_data.decode(), datatype=datatype, lang=lang)             # <<<<<<<<<<<<<<
- * 
- *         elif fmt == LSUP_PK_FMT_ID:
- */
-      __Pyx_XDECREF(__pyx_r);
-      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Literal); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = __Pyx_decode_c_string(((char const *)__pyx_v_term_data), 0, strlen(((char const *)__pyx_v_term_data)), NULL, NULL, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 69, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 69, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_GIVEREF(__pyx_t_4);
-      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
-      __pyx_t_4 = 0;
-      __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 69, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_datatype, __pyx_v_datatype) < 0) __PYX_ERR(0, 69, __pyx_L4_error)
-      if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_lang, __pyx_v_lang) < 0) __PYX_ERR(0, 69, __pyx_L4_error)
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 69, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_r = __pyx_t_6;
-      __pyx_t_6 = 0;
-      goto __pyx_L3_return;
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":60
- *     fmt = tpl.tpl_peek(tpl.TPL_MEM, data, data_size)
- *     try:
- *         if fmt == LSUP_PK_FMT_LIT:             # <<<<<<<<<<<<<<
- *             _pk = tpl.tpl_peek(
- *                     tpl.TPL_MEM | tpl.TPL_DATAPEEK, data, data_size, b'csss',
- */
-    }
-
-    /* "lakesuperior/store/ldp_rs/term.pyx":71
- *             return Literal(term_data.decode(), datatype=datatype, lang=lang)
- * 
- *         elif fmt == LSUP_PK_FMT_ID:             # <<<<<<<<<<<<<<
- *             _pk = tpl.tpl_peek(
- *                     tpl.TPL_MEM | tpl.TPL_DATAPEEK, data, data_size, b'cs',
- */
-    __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_fmt); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 71, __pyx_L4_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_t_6, __pyx_kp_b_S_cs, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 71, __pyx_L4_error)
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (likely(__pyx_t_2)) {
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":72
- * 
- *         elif fmt == LSUP_PK_FMT_ID:
- *             _pk = tpl.tpl_peek(             # <<<<<<<<<<<<<<
- *                     tpl.TPL_MEM | tpl.TPL_DATAPEEK, data, data_size, b'cs',
- *                     &term_type, &term_data)
- */
-      __pyx_v__pk = tpl_peek((TPL_MEM | TPL_DATAPEEK), __pyx_v_data, __pyx_v_data_size, ((char *)"cs"), (&__pyx_v_term_type), (&__pyx_v_term_data));
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":75
- *                     tpl.TPL_MEM | tpl.TPL_DATAPEEK, data, data_size, b'cs',
- *                     &term_type, &term_data)
- *             uri = term_data.decode()             # <<<<<<<<<<<<<<
- *             if term_type == LSUP_TERM_TYPE_URIREF:
- *                 return URIRef(uri)
- */
-      __pyx_t_6 = __Pyx_decode_c_string(((char const *)__pyx_v_term_data), 0, strlen(((char const *)__pyx_v_term_data)), NULL, NULL, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 75, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __pyx_v_uri = __pyx_t_6;
-      __pyx_t_6 = 0;
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":76
- *                     &term_type, &term_data)
- *             uri = term_data.decode()
- *             if term_type == LSUP_TERM_TYPE_URIREF:             # <<<<<<<<<<<<<<
- *                 return URIRef(uri)
- *             elif term_type == LSUP_TERM_TYPE_BNODE:
- */
-      switch (__pyx_v_term_type) {
-        case 1:
-
-        /* "lakesuperior/store/ldp_rs/term.pyx":77
- *             uri = term_data.decode()
- *             if term_type == LSUP_TERM_TYPE_URIREF:
- *                 return URIRef(uri)             # <<<<<<<<<<<<<<
- *             elif term_type == LSUP_TERM_TYPE_BNODE:
- *                 return BNode(uri)
- */
-        __Pyx_XDECREF(__pyx_r);
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_URIRef); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 77, __pyx_L4_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __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_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_uri); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 77, __pyx_L4_error)
-          __Pyx_GOTREF(__pyx_t_6);
-        } else {
-          #if CYTHON_FAST_PYCALL
-          if (PyFunction_Check(__pyx_t_4)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_uri};
-            __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 77, __pyx_L4_error)
-            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-            __Pyx_GOTREF(__pyx_t_6);
-          } else
-          #endif
-          #if CYTHON_FAST_PYCCALL
-          if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_uri};
-            __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 77, __pyx_L4_error)
-            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-            __Pyx_GOTREF(__pyx_t_6);
-          } else
-          #endif
-          {
-            __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L4_error)
-            __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
-            __Pyx_INCREF(__pyx_v_uri);
-            __Pyx_GIVEREF(__pyx_v_uri);
-            PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_uri);
-            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 77, __pyx_L4_error)
-            __Pyx_GOTREF(__pyx_t_6);
-            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-          }
-        }
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_r = __pyx_t_6;
-        __pyx_t_6 = 0;
-        goto __pyx_L3_return;
-
-        /* "lakesuperior/store/ldp_rs/term.pyx":76
- *                     &term_type, &term_data)
- *             uri = term_data.decode()
- *             if term_type == LSUP_TERM_TYPE_URIREF:             # <<<<<<<<<<<<<<
- *                 return URIRef(uri)
- *             elif term_type == LSUP_TERM_TYPE_BNODE:
- */
-        break;
-
-        /* "lakesuperior/store/ldp_rs/term.pyx":78
- *             if term_type == LSUP_TERM_TYPE_URIREF:
- *                 return URIRef(uri)
- *             elif term_type == LSUP_TERM_TYPE_BNODE:             # <<<<<<<<<<<<<<
- *                 return BNode(uri)
- *             else:
- */
-        case 2:
-
-        /* "lakesuperior/store/ldp_rs/term.pyx":79
- *                 return URIRef(uri)
- *             elif term_type == LSUP_TERM_TYPE_BNODE:
- *                 return BNode(uri)             # <<<<<<<<<<<<<<
- *             else:
- *                 raise IOError(f'Unknown term type code: {term_type}')
- */
-        __Pyx_XDECREF(__pyx_r);
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_BNode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 79, __pyx_L4_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_1 = NULL;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
-          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
-          if (likely(__pyx_t_1)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-            __Pyx_INCREF(__pyx_t_1);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_4, function);
-          }
-        }
-        if (!__pyx_t_1) {
-          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_uri); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L4_error)
-          __Pyx_GOTREF(__pyx_t_6);
-        } else {
-          #if CYTHON_FAST_PYCALL
-          if (PyFunction_Check(__pyx_t_4)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_uri};
-            __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L4_error)
-            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-            __Pyx_GOTREF(__pyx_t_6);
-          } else
-          #endif
-          #if CYTHON_FAST_PYCCALL
-          if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_uri};
-            __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L4_error)
-            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-            __Pyx_GOTREF(__pyx_t_6);
-          } else
-          #endif
-          {
-            __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L4_error)
-            __Pyx_GOTREF(__pyx_t_5);
-            __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
-            __Pyx_INCREF(__pyx_v_uri);
-            __Pyx_GIVEREF(__pyx_v_uri);
-            PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_uri);
-            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L4_error)
-            __Pyx_GOTREF(__pyx_t_6);
-            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-          }
-        }
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_r = __pyx_t_6;
-        __pyx_t_6 = 0;
-        goto __pyx_L3_return;
-
-        /* "lakesuperior/store/ldp_rs/term.pyx":78
- *             if term_type == LSUP_TERM_TYPE_URIREF:
- *                 return URIRef(uri)
- *             elif term_type == LSUP_TERM_TYPE_BNODE:             # <<<<<<<<<<<<<<
- *                 return BNode(uri)
- *             else:
- */
-        break;
-        default:
-
-        /* "lakesuperior/store/ldp_rs/term.pyx":81
- *                 return BNode(uri)
- *             else:
- *                 raise IOError(f'Unknown term type code: {term_type}')             # <<<<<<<<<<<<<<
- *         else:
- *             msg = f'Unknown structure pack format: {fmt}'
- */
-        __pyx_t_6 = __Pyx_PyUnicode_From_char(__pyx_v_term_type, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 81, __pyx_L4_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Unknown_term_type_code, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 81, __pyx_L4_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IOError, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 81, __pyx_L4_error)
-        __Pyx_GOTREF(__pyx_t_6);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
-        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __PYX_ERR(0, 81, __pyx_L4_error)
-        break;
-      }
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":71
- *             return Literal(term_data.decode(), datatype=datatype, lang=lang)
- * 
- *         elif fmt == LSUP_PK_FMT_ID:             # <<<<<<<<<<<<<<
- *             _pk = tpl.tpl_peek(
- *                     tpl.TPL_MEM | tpl.TPL_DATAPEEK, data, data_size, b'cs',
- */
-    }
-
-    /* "lakesuperior/store/ldp_rs/term.pyx":83
- *                 raise IOError(f'Unknown term type code: {term_type}')
- *         else:
- *             msg = f'Unknown structure pack format: {fmt}'             # <<<<<<<<<<<<<<
- *             raise IOError(msg)
- *     finally:
- */
-    /*else*/ {
-      __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_fmt); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 83, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 83, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Unknown_structure_pack_format, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 83, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_v_msg = ((PyObject*)__pyx_t_6);
-      __pyx_t_6 = 0;
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":84
- *         else:
- *             msg = f'Unknown structure pack format: {fmt}'
- *             raise IOError(msg)             # <<<<<<<<<<<<<<
- *     finally:
- *         free(term_data)
- */
-      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IOError, __pyx_v_msg); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 84, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __PYX_ERR(0, 84, __pyx_L4_error)
-    }
-  }
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":86
- *             raise IOError(msg)
- *     finally:
- *         free(term_data)             # <<<<<<<<<<<<<<
- *         free(term_datatype)
- *         free(term_lang)
- */
-  /*finally:*/ {
-    __pyx_L4_error:;
-    /*exception exit:*/{
-      __Pyx_PyThreadState_declare
-      __Pyx_PyThreadState_assign
-      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
-      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __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;
-      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
-      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
-      __Pyx_XGOTREF(__pyx_t_10);
-      __Pyx_XGOTREF(__pyx_t_11);
-      __Pyx_XGOTREF(__pyx_t_12);
-      __Pyx_XGOTREF(__pyx_t_13);
-      __Pyx_XGOTREF(__pyx_t_14);
-      __Pyx_XGOTREF(__pyx_t_15);
-      __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
-      {
-        free(__pyx_v_term_data);
-
-        /* "lakesuperior/store/ldp_rs/term.pyx":87
- *     finally:
- *         free(term_data)
- *         free(term_datatype)             # <<<<<<<<<<<<<<
- *         free(term_lang)
- *         free(_pk)
- */
-        free(__pyx_v_term_datatype);
-
-        /* "lakesuperior/store/ldp_rs/term.pyx":88
- *         free(term_data)
- *         free(term_datatype)
- *         free(term_lang)             # <<<<<<<<<<<<<<
- *         free(_pk)
- *         free(fmt)
- */
-        free(__pyx_v_term_lang);
-
-        /* "lakesuperior/store/ldp_rs/term.pyx":89
- *         free(term_datatype)
- *         free(term_lang)
- *         free(_pk)             # <<<<<<<<<<<<<<
- *         free(fmt)
- */
-        free(__pyx_v__pk);
-
-        /* "lakesuperior/store/ldp_rs/term.pyx":90
- *         free(term_lang)
- *         free(_pk)
- *         free(fmt)             # <<<<<<<<<<<<<<
- */
-        free(__pyx_v_fmt);
-      }
-      if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_13);
-        __Pyx_XGIVEREF(__pyx_t_14);
-        __Pyx_XGIVEREF(__pyx_t_15);
-        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
-      }
-      __Pyx_XGIVEREF(__pyx_t_10);
-      __Pyx_XGIVEREF(__pyx_t_11);
-      __Pyx_XGIVEREF(__pyx_t_12);
-      __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
-      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
-      __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
-      goto __pyx_L1_error;
-    }
-    __pyx_L3_return: {
-      __pyx_t_15 = __pyx_r;
-      __pyx_r = 0;
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":86
- *             raise IOError(msg)
- *     finally:
- *         free(term_data)             # <<<<<<<<<<<<<<
- *         free(term_datatype)
- *         free(term_lang)
- */
-      free(__pyx_v_term_data);
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":87
- *     finally:
- *         free(term_data)
- *         free(term_datatype)             # <<<<<<<<<<<<<<
- *         free(term_lang)
- *         free(_pk)
- */
-      free(__pyx_v_term_datatype);
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":88
- *         free(term_data)
- *         free(term_datatype)
- *         free(term_lang)             # <<<<<<<<<<<<<<
- *         free(_pk)
- *         free(fmt)
- */
-      free(__pyx_v_term_lang);
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":89
- *         free(term_datatype)
- *         free(term_lang)
- *         free(_pk)             # <<<<<<<<<<<<<<
- *         free(fmt)
- */
-      free(__pyx_v__pk);
-
-      /* "lakesuperior/store/ldp_rs/term.pyx":90
- *         free(term_lang)
- *         free(_pk)
- *         free(fmt)             # <<<<<<<<<<<<<<
- */
-      free(__pyx_v_fmt);
-      __pyx_r = __pyx_t_15;
-      __pyx_t_15 = 0;
-      goto __pyx_L0;
-    }
-  }
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":46
- * 
- * 
- * cdef deserialize(const unsigned char *data, const size_t data_size):             # <<<<<<<<<<<<<<
- *     cdef:
- *         char term_type
- */
-
-  /* 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_AddTraceback("lakesuperior.store.ldp_rs.term.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_datatype);
-  __Pyx_XDECREF(__pyx_v_lang);
-  __Pyx_XDECREF(__pyx_v_uri);
-  __Pyx_XDECREF(__pyx_v_msg);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_TraceReturn(__pyx_r, 0);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyMethodDef __pyx_methods[] = {
-  {0, 0, 0, 0}
-};
-
-#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_term(PyObject* module); /*proto*/
-static PyModuleDef_Slot __pyx_moduledef_slots[] = {
-  {Py_mod_create, (void*)__pyx_pymod_create},
-  {Py_mod_exec, (void*)__pyx_pymod_exec_term},
-  {0, NULL}
-};
-#endif
-
-static struct PyModuleDef __pyx_moduledef = {
-    PyModuleDef_HEAD_INIT,
-    "term",
-    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 */
-};
-#endif
-
-static __Pyx_StringTabEntry __pyx_string_tab[] = {
-  {&__pyx_kp_u_, __pyx_k_, sizeof(__pyx_k_), 0, 1, 0, 0},
-  {&__pyx_n_s_BNode, __pyx_k_BNode, sizeof(__pyx_k_BNode), 0, 0, 1, 1},
-  {&__pyx_n_s_IOError, __pyx_k_IOError, sizeof(__pyx_k_IOError), 0, 0, 1, 1},
-  {&__pyx_n_s_Literal, __pyx_k_Literal, sizeof(__pyx_k_Literal), 0, 0, 1, 1},
-  {&__pyx_kp_b_S_cs, __pyx_k_S_cs, sizeof(__pyx_k_S_cs), 0, 0, 0, 0},
-  {&__pyx_kp_b_S_csss, __pyx_k_S_csss, sizeof(__pyx_k_S_csss), 0, 0, 0, 0},
-  {&__pyx_n_s_URIRef, __pyx_k_URIRef, sizeof(__pyx_k_URIRef), 0, 0, 1, 1},
-  {&__pyx_kp_u_Unknown_structure_pack_format, __pyx_k_Unknown_structure_pack_format, sizeof(__pyx_k_Unknown_structure_pack_format), 0, 1, 0, 0},
-  {&__pyx_kp_u_Unknown_term_type_code, __pyx_k_Unknown_term_type_code, sizeof(__pyx_k_Unknown_term_type_code), 0, 1, 0, 0},
-  {&__pyx_kp_u_Unsupported_term_type, __pyx_k_Unsupported_term_type, sizeof(__pyx_k_Unsupported_term_type), 0, 1, 0, 0},
-  {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 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_n_s_datatype, __pyx_k_datatype, sizeof(__pyx_k_datatype), 0, 0, 1, 1},
-  {&__pyx_n_u_datatype, __pyx_k_datatype, sizeof(__pyx_k_datatype), 0, 1, 0, 1},
-  {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1},
-  {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
-  {&__pyx_n_s_lang, __pyx_k_lang, sizeof(__pyx_k_lang), 0, 0, 1, 1},
-  {&__pyx_n_u_language, __pyx_k_language, sizeof(__pyx_k_language), 0, 1, 0, 1},
-  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
-  {&__pyx_n_s_pack_fmt, __pyx_k_pack_fmt, sizeof(__pyx_k_pack_fmt), 0, 0, 1, 1},
-  {&__pyx_n_s_pyx_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 0, 0, 1, 1},
-  {&__pyx_n_s_rdflib, __pyx_k_rdflib, sizeof(__pyx_k_rdflib), 0, 0, 1, 1},
-  {&__pyx_n_s_term_data, __pyx_k_term_data, sizeof(__pyx_k_term_data), 0, 0, 1, 1},
-  {&__pyx_n_s_term_datatype, __pyx_k_term_datatype, sizeof(__pyx_k_term_datatype), 0, 0, 1, 1},
-  {&__pyx_n_s_term_lang, __pyx_k_term_lang, sizeof(__pyx_k_term_lang), 0, 0, 1, 1},
-  {&__pyx_n_s_term_type, __pyx_k_term_type, sizeof(__pyx_k_term_type), 0, 0, 1, 1},
-  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
-  {0, 0, 0, 0, 0, 0, 0}
-};
-static int __Pyx_InitCachedBuiltins(void) {
-  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 41, __pyx_L1_error)
-  __pyx_builtin_IOError = __Pyx_GetBuiltinName(__pyx_n_s_IOError); if (!__pyx_builtin_IOError) __PYX_ERR(0, 81, __pyx_L1_error)
-  return 0;
-  __pyx_L1_error:;
-  return -1;
-}
-
-static int __Pyx_InitCachedConstants(void) {
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
-  __Pyx_RefNannyFinishContext();
-  return 0;
-}
-
-static int __Pyx_InitGlobals(void) {
-  if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
-  return 0;
-  __pyx_L1_error:;
-  return -1;
-}
-
-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
-  __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 ---*/
-  if (__Pyx_ExportVoidPtr(__pyx_n_s_term_type, (void *)&__pyx_v_12lakesuperior_5store_6ldp_rs_4term_term_type, "unsigned char") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ExportVoidPtr(__pyx_n_s_pack_fmt, (void *)&__pyx_v_12lakesuperior_5store_6ldp_rs_4term_pack_fmt, "unsigned char *") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ExportVoidPtr(__pyx_n_s_term_data, (void *)&__pyx_v_12lakesuperior_5store_6ldp_rs_4term_term_data, "unsigned char *") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ExportVoidPtr(__pyx_n_s_term_datatype, (void *)&__pyx_v_12lakesuperior_5store_6ldp_rs_4term_term_datatype, "unsigned char *") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ExportVoidPtr(__pyx_n_s_term_lang, (void *)&__pyx_v_12lakesuperior_5store_6ldp_rs_4term_term_lang, "unsigned char *") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_RefNannyFinishContext();
-  return 0;
-  __pyx_L1_error:;
-  __Pyx_RefNannyFinishContext();
-  return -1;
-}
-
-static int __Pyx_modinit_function_export_code(void) {
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
-  /*--- Function export code ---*/
-  if (__Pyx_ExportFunction("serialize", (void (*)(void))__pyx_f_12lakesuperior_5store_6ldp_rs_4term_serialize, "int (PyObject *, unsigned char **, size_t *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("deserialize", (void (*)(void))__pyx_f_12lakesuperior_5store_6ldp_rs_4term_deserialize, "PyObject *(unsigned char *, size_t)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_RefNannyFinishContext();
-  return 0;
-  __pyx_L1_error:;
-  __Pyx_RefNannyFinishContext();
-  return -1;
-}
-
-static int __Pyx_modinit_type_init_code(void) {
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
-  /*--- Type init code ---*/
-  __Pyx_RefNannyFinishContext();
-  return 0;
-}
-
-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(1, 9, __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 initterm(void) CYTHON_SMALL_CODE; /*proto*/
-__Pyx_PyMODINIT_FUNC initterm(void)
-#else
-__Pyx_PyMODINIT_FUNC PyInit_term(void) CYTHON_SMALL_CODE; /*proto*/
-__Pyx_PyMODINIT_FUNC PyInit_term(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_term(PyObject *__pyx_pyinit_module)
-#endif
-#endif
-{
-  __Pyx_TraceDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = 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_term(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("term", __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 (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
-  /*--- Initialize various global constants etc. ---*/
-  if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  #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_ERR(0, 1, __pyx_L1_error)
-  #endif
-  if (__pyx_module_is_main_lakesuperior__store__ldp_rs__term) {
-    if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  }
-  #if PY_MAJOR_VERSION >= 3
-  {
-    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
-    if (!PyDict_GetItemString(modules, "lakesuperior.store.ldp_rs.term")) {
-      if (unlikely(PyDict_SetItemString(modules, "lakesuperior.store.ldp_rs.term", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
-    }
-  }
-  #endif
-  /*--- 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();
-  if (unlikely(__Pyx_modinit_variable_export_code() != 0)) goto __pyx_L1_error;
-  if (unlikely(__Pyx_modinit_function_export_code() != 0)) goto __pyx_L1_error;
-  (void)__Pyx_modinit_type_init_code();
-  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
-  __Pyx_TraceCall("__Pyx_PyMODINIT_FUNC PyInit_term(void)", __pyx_f[0], 1, 0, __PYX_ERR(0, 1, __pyx_L1_error));
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":1
- * from rdflib import URIRef, BNode, Literal             # <<<<<<<<<<<<<<
- * 
- * #from cpython.mem cimport PyMem_Malloc, PyMem_Free
- */
-  __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_n_s_URIRef);
-  __Pyx_GIVEREF(__pyx_n_s_URIRef);
-  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_URIRef);
-  __Pyx_INCREF(__pyx_n_s_BNode);
-  __Pyx_GIVEREF(__pyx_n_s_BNode);
-  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_BNode);
-  __Pyx_INCREF(__pyx_n_s_Literal);
-  __Pyx_GIVEREF(__pyx_n_s_Literal);
-  PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_Literal);
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_rdflib, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_URIRef); 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_URIRef, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_BNode); 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_BNode, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Literal); 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_Literal, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "lakesuperior/store/ldp_rs/term.pyx":46
- * 
- * 
- * cdef deserialize(const unsigned char *data, const size_t data_size):             # <<<<<<<<<<<<<<
- *     cdef:
- *         char term_type
- */
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_TraceReturn(Py_None, 0);
-
-  /*--- Wrapped vars code ---*/
-
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  if (__pyx_m) {
-    if (__pyx_d) {
-      __Pyx_AddTraceback("init lakesuperior.store.ldp_rs.term", 0, __pyx_lineno, __pyx_filename);
-    }
-    Py_DECREF(__pyx_m); __pyx_m = 0;
-  } else if (!PyErr_Occurred()) {
-    PyErr_SetString(PyExc_ImportError, "init lakesuperior.store.ldp_rs.term");
-  }
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  #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 --- */
-/* Refnanny */
-#if CYTHON_REFNANNY
-static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
-    PyObject *m = NULL, *p = NULL;
-    void *r = NULL;
-    m = PyImport_ImportModule((char *)modname);
-    if (!m) goto end;
-    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
-    if (!p) goto end;
-    r = PyLong_AsVoidPtr(p);
-end:
-    Py_XDECREF(p);
-    Py_XDECREF(m);
-    return (__Pyx_RefNannyAPIStruct *)r;
-}
-#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)) {
-        PyErr_Format(PyExc_NameError,
-#if PY_MAJOR_VERSION >= 3
-            "name '%U' is not defined", name);
-#else
-            "name '%.200s' is not defined", PyString_AS_STRING(name));
-#endif
-    }
-    return result;
-}
-
-/* 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
-
-/* Profile */
-#if CYTHON_PROFILE
-static int __Pyx_TraceSetupAndCall(PyCodeObject** code,
-                                   PyFrameObject** frame,
-                                   PyThreadState* tstate,
-                                   const char *funcname,
-                                   const char *srcfile,
-                                   int firstlineno) {
-    PyObject *type, *value, *traceback;
-    int retval;
-    if (*frame == NULL || !CYTHON_PROFILE_REUSE_FRAME) {
-        if (*code == NULL) {
-            *code = __Pyx_createFrameCodeObject(funcname, srcfile, firstlineno);
-            if (*code == NULL) return 0;
-        }
-        *frame = PyFrame_New(
-            tstate,                          /*PyThreadState *tstate*/
-            *code,                           /*PyCodeObject *code*/
-            __pyx_d,                  /*PyObject *globals*/
-            0                                /*PyObject *locals*/
-        );
-        if (*frame == NULL) return 0;
-        if (CYTHON_TRACE && (*frame)->f_trace == NULL) {
-            Py_INCREF(Py_None);
-            (*frame)->f_trace = Py_None;
-        }
-#if PY_VERSION_HEX < 0x030400B1
-    } else {
-        (*frame)->f_tstate = tstate;
-#endif
-    }
-      __Pyx_PyFrame_SetLineNumber(*frame, firstlineno);
-    retval = 1;
-    tstate->tracing++;
-    tstate->use_tracing = 0;
-    __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
-    #if CYTHON_TRACE
-    if (tstate->c_tracefunc)
-        retval = tstate->c_tracefunc(tstate->c_traceobj, *frame, PyTrace_CALL, NULL) == 0;
-    if (retval && tstate->c_profilefunc)
-    #endif
-        retval = tstate->c_profilefunc(tstate->c_profileobj, *frame, PyTrace_CALL, NULL) == 0;
-    tstate->use_tracing = (tstate->c_profilefunc ||
-                           (CYTHON_TRACE && tstate->c_tracefunc));
-    tstate->tracing--;
-    if (retval) {
-        __Pyx_ErrRestoreInState(tstate, type, value, traceback);
-        return tstate->use_tracing && retval;
-    } else {
-        Py_XDECREF(type);
-        Py_XDECREF(value);
-        Py_XDECREF(traceback);
-        return -1;
-    }
-}
-static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno) {
-    PyObject *py_srcfile = 0;
-    PyObject *py_funcname = 0;
-    PyCodeObject *py_code = 0;
-    #if PY_MAJOR_VERSION < 3
-    py_funcname = PyString_FromString(funcname);
-    py_srcfile = PyString_FromString(srcfile);
-    #else
-    py_funcname = PyUnicode_FromString(funcname);
-    py_srcfile = PyUnicode_FromString(srcfile);
-    #endif
-    if (!py_funcname | !py_srcfile) goto bad;
-    py_code = PyCode_New(
-        0,
-        #if PY_MAJOR_VERSION >= 3
-        0,
-        #endif
-        0,
-        0,
-        CO_OPTIMIZED | CO_NEWLOCALS,
-        __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,*/
-        firstlineno,
-        __pyx_empty_bytes      /*PyObject *lnotab*/
-    );
-bad:
-    Py_XDECREF(py_srcfile);
-    Py_XDECREF(py_funcname);
-    return py_code;
-}
-#endif
-
-/* 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 {
-        return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
-    }
-}
-#endif
-
-/* 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;
-}
-#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
-    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
-
-/* 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
-
-/* GetModuleGlobalName */
-  static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
-    PyObject *result;
-#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 (likely(result)) {
-        Py_INCREF(result);
-    } else {
-#endif
-#else
-    result = PyObject_GetItem(__pyx_d, name);
-    if (!result) {
-        PyErr_Clear();
-#endif
-        result = __Pyx_GetBuiltinName(name);
-    }
-    return result;
-}
-
-/* GetAttr */
-      static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
-#if CYTHON_USE_TYPE_SLOTS
-#if PY_MAJOR_VERSION >= 3
-    if (likely(PyUnicode_Check(n)))
-#else
-    if (likely(PyString_Check(n)))
-#endif
-        return __Pyx_PyObject_GetAttrStr(o, n);
-#endif
-    return PyObject_GetAttr(o, n);
-}
-
-/* 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;
-    else
-        Py_INCREF(value);
-    if (!tb || tb == Py_None)
-        tb = NULL;
-    else {
-        Py_INCREF(tb);
-        if (!PyTraceBack_Check(tb)) {
-            PyErr_SetString(PyExc_TypeError,
-                "raise: arg 3 must be a traceback or None");
-            goto raise_error;
-        }
-    }
-    if (PyType_Check(type)) {
-#if CYTHON_COMPILING_IN_PYPY
-        if (!value) {
-            Py_INCREF(Py_None);
-            value = Py_None;
-        }
-#endif
-        PyErr_NormalizeException(&type, &value, &tb);
-    } else {
-        if (value) {
-            PyErr_SetString(PyExc_TypeError,
-                "instance exception may not have a separate value");
-            goto raise_error;
-        }
-        value = type;
-        type = (PyObject*) Py_TYPE(type);
-        Py_INCREF(type);
-        if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
-            PyErr_SetString(PyExc_TypeError,
-                "raise: exception class must be a subclass of BaseException");
-            goto raise_error;
-        }
-    }
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrRestore(type, value, tb);
-    return;
-raise_error:
-    Py_XDECREF(value);
-    Py_XDECREF(type);
-    Py_XDECREF(tb);
-    return;
-}
-#else
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
-    PyObject* owned_instance = NULL;
-    if (tb == Py_None) {
-        tb = 0;
-    } else if (tb && !PyTraceBack_Check(tb)) {
-        PyErr_SetString(PyExc_TypeError,
-            "raise: arg 3 must be a traceback or None");
-        goto bad;
-    }
-    if (value == Py_None)
-        value = 0;
-    if (PyExceptionInstance_Check(type)) {
-        if (value) {
-            PyErr_SetString(PyExc_TypeError,
-                "instance exception may not have a separate value");
-            goto bad;
-        }
-        value = type;
-        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 (cause) {
-        PyObject *fixed_cause;
-        if (cause == Py_None) {
-            fixed_cause = NULL;
-        } else if (PyExceptionClass_Check(cause)) {
-            fixed_cause = PyObject_CallObject(cause, NULL);
-            if (fixed_cause == NULL)
-                goto bad;
-        } else if (PyExceptionInstance_Check(cause)) {
-            fixed_cause = cause;
-            Py_INCREF(fixed_cause);
-        } else {
-            PyErr_SetString(PyExc_TypeError,
-                            "exception causes must derive from "
-                            "BaseException");
-            goto bad;
-        }
-        PyException_SetCause(value, fixed_cause);
-    }
-    PyErr_SetObject(type, value);
-    if (tb) {
-#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);
-    return;
-}
-#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
-}
-
-/* decode_c_string */
-      static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
-         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
-         const char* encoding, const char* errors,
-         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
-    Py_ssize_t length;
-    if (unlikely((start < 0) | (stop < 0))) {
-        size_t slen = strlen(cstring);
-        if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "c-string too long to convert to Python");
-            return NULL;
-        }
-        length = (Py_ssize_t) slen;
-        if (start < 0) {
-            start += length;
-            if (start < 0)
-                start = 0;
-        }
-        if (stop < 0)
-            stop += length;
-    }
-    length = stop - start;
-    if (unlikely(length <= 0))
-        return PyUnicode_FromUnicode(NULL, 0);
-    cstring += start;
-    if (decode_func) {
-        return decode_func(cstring, length, errors);
-    } else {
-        return PyUnicode_Decode(cstring, length, encoding, errors);
-    }
-}
-
-/* CIntToDigits */
-      static const char DIGIT_PAIRS_10[2*10*10+1] = {
-    "00010203040506070809"
-    "10111213141516171819"
-    "20212223242526272829"
-    "30313233343536373839"
-    "40414243444546474849"
-    "50515253545556575859"
-    "60616263646566676869"
-    "70717273747576777879"
-    "80818283848586878889"
-    "90919293949596979899"
-};
-static const char DIGIT_PAIRS_8[2*8*8+1] = {
-    "0001020304050607"
-    "1011121314151617"
-    "2021222324252627"
-    "3031323334353637"
-    "4041424344454647"
-    "5051525354555657"
-    "6061626364656667"
-    "7071727374757677"
-};
-static const char DIGITS_HEX[2*16+1] = {
-    "0123456789abcdef"
-    "0123456789ABCDEF"
-};
-
-/* BuildPyUnicode */
-      static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength,
-                                                int prepend_sign, char padding_char) {
-    PyObject *uval;
-    Py_ssize_t uoffset = ulength - clength;
-#if CYTHON_USE_UNICODE_INTERNALS
-    Py_ssize_t i;
-#if CYTHON_PEP393_ENABLED
-    void *udata;
-    uval = PyUnicode_New(ulength, 127);
-    if (unlikely(!uval)) return NULL;
-    udata = PyUnicode_DATA(uval);
-#else
-    Py_UNICODE *udata;
-    uval = PyUnicode_FromUnicode(NULL, ulength);
-    if (unlikely(!uval)) return NULL;
-    udata = PyUnicode_AS_UNICODE(uval);
-#endif
-    if (uoffset > 0) {
-        i = 0;
-        if (prepend_sign) {
-            __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, 0, '-');
-            i++;
-        }
-        for (; i < uoffset; i++) {
-            __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, i, padding_char);
-        }
-    }
-    for (i=0; i < clength; i++) {
-        __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, uoffset+i, chars[i]);
-    }
-#else
-    {
-        uval = NULL;
-        PyObject *sign = NULL, *padding = NULL;
-        if (uoffset > 0) {
-            prepend_sign = !!prepend_sign;
-            if (uoffset > prepend_sign) {
-                padding = PyUnicode_FromOrdinal(padding_char);
-                if (likely(padding) && uoffset > prepend_sign + 1) {
-                    PyObject *tmp;
-                    PyObject *repeat = PyInt_FromSize_t(uoffset - prepend_sign);
-                    if (unlikely(!repeat)) goto done_or_error;
-                    tmp = PyNumber_Multiply(padding, repeat);
-                    Py_DECREF(repeat);
-                    Py_DECREF(padding);
-                    padding = tmp;
-                }
-                if (unlikely(!padding)) goto done_or_error;
-            }
-            if (prepend_sign) {
-                sign = PyUnicode_FromOrdinal('-');
-                if (unlikely(!sign)) goto done_or_error;
-            }
-        }
-        uval = PyUnicode_DecodeASCII(chars, clength, NULL);
-        if (likely(uval) && padding) {
-            PyObject *tmp = PyNumber_Add(padding, uval);
-            Py_DECREF(uval);
-            uval = tmp;
-        }
-        if (likely(uval) && sign) {
-            PyObject *tmp = PyNumber_Add(sign, uval);
-            Py_DECREF(uval);
-            uval = tmp;
-        }
-done_or_error:
-        Py_XDECREF(padding);
-        Py_XDECREF(sign);
-    }
-#endif
-    return uval;
-}
-
-/* CIntToPyUnicode */
-      #ifdef _MSC_VER
-    #ifndef _MSC_STDINT_H_
-        #if _MSC_VER < 1300
-           typedef unsigned short    uint16_t;
-        #else
-           typedef unsigned __int16  uint16_t;
-        #endif
-    #endif
-#else
-   #include <stdint.h>
-#endif
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_char(char value, Py_ssize_t width, char padding_char, char format_char) {
-    char digits[sizeof(char)*3+2];
-    char *dpos, *end = digits + sizeof(char)*3+2;
-    const char *hex_digits = DIGITS_HEX;
-    Py_ssize_t length, ulength;
-    int prepend_sign, last_one_off;
-    char remaining;
-    const char neg_one = (char) -1, const_zero = (char) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (format_char == 'X') {
-        hex_digits += 16;
-        format_char = 'x';
-    }
-    remaining = value;
-    last_one_off = 0;
-    dpos = end;
-    do {
-        int digit_pos;
-        switch (format_char) {
-        case 'o':
-            digit_pos = abs((int)(remaining % (8*8)));
-            remaining = (char) (remaining / (8*8));
-            dpos -= 2;
-            *(uint16_t*)dpos = ((uint16_t*)DIGIT_PAIRS_8)[digit_pos];
-            last_one_off = (digit_pos < 8);
-            break;
-        case 'd':
-            digit_pos = abs((int)(remaining % (10*10)));
-            remaining = (char) (remaining / (10*10));
-            dpos -= 2;
-            *(uint16_t*)dpos = ((uint16_t*)DIGIT_PAIRS_10)[digit_pos];
-            last_one_off = (digit_pos < 10);
-            break;
-        case 'x':
-            *(--dpos) = hex_digits[abs((int)(remaining % 16))];
-            remaining = (char) (remaining / 16);
-            break;
-        default:
-            assert(0);
-            break;
-        }
-    } while (unlikely(remaining != 0));
-    if (last_one_off) {
-        assert(*dpos == '0');
-        dpos++;
-    }
-    length = end - dpos;
-    ulength = length;
-    prepend_sign = 0;
-    if (!is_unsigned && value <= neg_one) {
-        if (padding_char == ' ' || width <= length + 1) {
-            *(--dpos) = '-';
-            ++length;
-        } else {
-            prepend_sign = 1;
-        }
-        ++ulength;
-    }
-    if (width > ulength) {
-        ulength = width;
-    }
-    if (ulength == 1) {
-        return PyUnicode_FromOrdinal(*dpos);
-    }
-    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
-}
-
-/* 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 (local_tb) {
-        if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
-            goto bad;
-    }
-    #endif
-    Py_XINCREF(local_tb);
-    Py_XINCREF(local_type);
-    Py_XINCREF(local_value);
-    *type = local_type;
-    *value = local_value;
-    *tb = local_tb;
-#if CYTHON_FAST_THREAD_STATE
-    #if PY_VERSION_HEX >= 0x030700A3
-    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;
-    #endif
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-#else
-    PyErr_SetExcInfo(local_type, local_value, local_tb);
-#endif
-    return 0;
-bad:
-    *type = 0;
-    *value = 0;
-    *tb = 0;
-    Py_XDECREF(local_type);
-    Py_XDECREF(local_value);
-    Py_XDECREF(local_tb);
-    return -1;
-}
-
-/* SwapException */
-        #if CYTHON_FAST_THREAD_STATE
-static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    #if PY_VERSION_HEX >= 0x030700A3
-    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
-    *type = tmp_type;
-    *value = tmp_value;
-    *tb = tmp_tb;
-}
-#else
-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
-    PyErr_SetExcInfo(*type, *value, *tb);
-    *type = tmp_type;
-    *value = tmp_value;
-    *tb = tmp_tb;
-}
-#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 >= 0x030700A3
-    *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 >= 0x030700A3
-    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
-
-/* 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,
-        #if PY_MAJOR_VERSION < 3
-            "cannot import name %.230s", PyString_AS_STRING(name));
-        #else
-            "cannot import name %S", name);
-        #endif
-    }
-    return value;
-}
-
-/* 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
-    PyObject **cython_runtime_dict;
-#endif
-    if (unlikely(!__pyx_cython_runtime)) {
-        return c_line;
-    }
-    __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
-#if CYTHON_COMPILING_IN_CPYTHON
-    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
-
-/* 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;
-    }
-    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;
-        }
-    }
-    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, (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
-    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 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);
-    }
-    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_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);
-}
-
-/* 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 (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
-        }
-    } 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
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(long),
-                                     little, !is_unsigned);
-    }
-}
-
-/* CIntFromPyVerify */
-        #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
-    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
-#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
-    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
-#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
-    {\
-        func_type value = func_value;\
-        if (sizeof(target_type) < sizeof(func_type)) {\
-            if (unlikely(value != (func_type) (target_type) value)) {\
-                func_type zero = 0;\
-                if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
-                    return (target_type) -1;\
-                if (is_unsigned && unlikely(value < zero))\
-                    goto raise_neg_overflow;\
-                else\
-                    goto raise_overflow;\
-            }\
-        }\
-        return (target_type) value;\
-    }
-
-/* CIntFromPy */
-        static CYTHON_INLINE 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))) {
-        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;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                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
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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 (long) -1;
-        }
-    } else {
-        long val;
-        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
-        if (!tmp) return (long) -1;
-        val = __Pyx_PyInt_As_long(tmp);
-        Py_DECREF(tmp);
-        return val;
-    }
-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;
-}
-
-/* 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))) {
-        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;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-#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
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            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 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
-            return (int) -1;
-        }
-    } else {
-        int val;
-        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
-        if (!tmp) return (int) -1;
-        val = __Pyx_PyInt_As_int(tmp);
-        Py_DECREF(tmp);
-        return val;
-    }
-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;
-}
-
-/* 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 int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
-    Py_ssize_t i, n;
-    assert(PyExceptionClass_Check(exc_type));
-    n = PyTuple_GET_SIZE(tuple);
-#if PY_MAJOR_VERSION >= 3
-    for (i=0; i<n; i++) {
-        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
-    }
-#endif
-    for (i=0; i<n; i++) {
-        PyObject *t = PyTuple_GET_ITEM(tuple, i);
-        #if PY_MAJOR_VERSION < 3
-        if (likely(exc_type == t)) return 1;
-        #endif
-        if (likely(PyExceptionClass_Check(t))) {
-            if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
-        } else {
-        }
-    }
-    return 0;
-}
-static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
-    if (likely(err == exc_type)) return 1;
-    if (likely(PyExceptionClass_Check(err))) {
-        if (likely(PyExceptionClass_Check(exc_type))) {
-            return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
-        } else if (likely(PyTuple_Check(exc_type))) {
-            return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
-        } else {
-        }
-    }
-    return PyErr_GivenExceptionMatches(err, exc_type);
-}
-static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
-    assert(PyExceptionClass_Check(exc_type1));
-    assert(PyExceptionClass_Check(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
-
-/* 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());
-    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
-        char message[200];
-        PyOS_snprintf(message, sizeof(message),
-                      "compiletime version %s of module '%.100s' "
-                      "does not match runtime version %s",
-                      ctversion, __Pyx_MODULE_NAME, rtversion);
-        return PyErr_WarnEx(NULL, message, 1);
-    }
-    return 0;
-}
-
-/* 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
-
-/* VoidPtrExport */
-        static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) {
-    PyObject *d;
-    PyObject *cobj = 0;
-    d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi);
-    Py_XINCREF(d);
-    if (!d) {
-        d = PyDict_New();
-        if (!d)
-            goto bad;
-        if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0)
-            goto bad;
-    }
-#if PY_VERSION_HEX >= 0x02070000
-    cobj = PyCapsule_New(p, sig, 0);
-#else
-    cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0);
-#endif
-    if (!cobj)
-        goto bad;
-    if (PyDict_SetItem(d, name, cobj) < 0)
-        goto bad;
-    Py_DECREF(cobj);
-    Py_DECREF(d);
-    return 0;
-bad:
-    Py_XDECREF(cobj);
-    Py_XDECREF(d);
-    return -1;
-}
-
-/* FunctionExport */
-        static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
-    PyObject *d = 0;
-    PyObject *cobj = 0;
-    union {
-        void (*fp)(void);
-        void *p;
-    } tmp;
-    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
-    if (!d) {
-        PyErr_Clear();
-        d = PyDict_New();
-        if (!d)
-            goto bad;
-        Py_INCREF(d);
-        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
-            goto bad;
-    }
-    tmp.fp = f;
-#if PY_VERSION_HEX >= 0x02070000
-    cobj = PyCapsule_New(tmp.p, sig, 0);
-#else
-    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
-#endif
-    if (!cobj)
-        goto bad;
-    if (PyDict_SetItemString(d, name, cobj) < 0)
-        goto bad;
-    Py_DECREF(cobj);
-    Py_DECREF(d);
-    return 0;
-bad:
-    Py_XDECREF(cobj);
-    Py_XDECREF(d);
-    return -1;
-}
-
-/* ModuleImport */
-        #ifndef __PYX_HAVE_RT_ImportModule
-#define __PYX_HAVE_RT_ImportModule
-static PyObject *__Pyx_ImportModule(const char *name) {
-    PyObject *py_name = 0;
-    PyObject *py_module = 0;
-    py_name = __Pyx_PyIdentifier_FromString(name);
-    if (!py_name)
-        goto bad;
-    py_module = PyImport_Import(py_name);
-    Py_DECREF(py_name);
-    return py_module;
-bad:
-    Py_XDECREF(py_name);
-    return 0;
-}
-#endif
-
-/* 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)
-{
-    PyObject *py_module = 0;
-    PyObject *result = 0;
-    PyObject *py_name = 0;
-    char warning[200];
-    Py_ssize_t basicsize;
-#ifdef Py_LIMITED_API
-    PyObject *py_basicsize;
-#endif
-    py_module = __Pyx_ImportModule(module_name);
-    if (!py_module)
-        goto bad;
-    py_name = __Pyx_PyIdentifier_FromString(class_name);
-    if (!py_name)
-        goto bad;
-    result = PyObject_GetAttr(py_module, py_name);
-    Py_DECREF(py_name);
-    py_name = 0;
-    Py_DECREF(py_module);
-    py_module = 0;
-    if (!result)
-        goto bad;
-    if (!PyType_Check(result)) {
-        PyErr_Format(PyExc_TypeError,
-            "%.200s.%.200s is not a type object",
-            module_name, class_name);
-        goto bad;
-    }
-#ifndef Py_LIMITED_API
-    basicsize = ((PyTypeObject *)result)->tp_basicsize;
-#else
-    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
-    if (!py_basicsize)
-        goto bad;
-    basicsize = PyLong_AsSsize_t(py_basicsize);
-    Py_DECREF(py_basicsize);
-    py_basicsize = 0;
-    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
-        goto bad;
-#endif
-    if (!strict && (size_t)basicsize > size) {
-        PyOS_snprintf(warning, sizeof(warning),
-            "%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;
-    }
-    else if ((size_t)basicsize != size) {
-        PyErr_Format(PyExc_ValueError,
-            "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd",
-            module_name, class_name, basicsize, size);
-        goto bad;
-    }
-    return (PyTypeObject *)result;
-bad:
-    Py_XDECREF(py_module);
-    Py_XDECREF(result);
-    return NULL;
-}
-#endif
-
-/* InitStrings */
-        static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
-    while (t->p) {
-        #if PY_MAJOR_VERSION < 3
-        if (t->is_unicode) {
-            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
-        } else if (t->intern) {
-            *t->p = PyString_InternFromString(t->s);
-        } else {
-            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
-        }
-        #else
-        if (t->is_unicode | t->is_str) {
-            if (t->intern) {
-                *t->p = PyUnicode_InternFromString(t->s);
-            } else if (t->encoding) {
-                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
-            } else {
-                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
-            }
-        } else {
-            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
-        }
-        #endif
-        if (!*t->p)
-            return -1;
-        if (PyObject_Hash(*t->p) == -1)
-            return -1;
-        ++t;
-    }
-    return 0;
-}
-
-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 const char* __Pyx_PyObject_AsString(PyObject* o) {
-    Py_ssize_t ignore;
-    return __Pyx_PyObject_AsStringAndSize(o, &ignore);
-}
-#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)) {
-        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
-    {
-        char* result;
-        int r = PyBytes_AsStringAndSize(o, &result, length);
-        if (unlikely(r < 0)) {
-            return NULL;
-        } else {
-            return result;
-        }
-    }
-}
-static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
-   int is_true = x == Py_True;
-   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
-   else return PyObject_IsTrue(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 (likely(PyInt_Check(x) || PyLong_Check(x)))
-#else
-  if (likely(PyLong_Check(x)))
-#endif
-    return __Pyx_NewRef(x);
-#if CYTHON_USE_TYPE_SLOTS
-  m = Py_TYPE(x)->tp_as_number;
-  #if PY_MAJOR_VERSION < 3
-  if (m && m->nb_int) {
-    name = "int";
-    res = m->nb_int(x);
-  }
-  else if (m && m->nb_long) {
-    name = "long";
-    res = m->nb_long(x);
-  }
-  #else
-  if (likely(m && m->nb_int)) {
-    name = "int";
-    res = m->nb_int(x);
-  }
-  #endif
-#else
-  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
-    res = PyNumber_Int(x);
-  }
-#endif
-  if (likely(res)) {
-#if PY_MAJOR_VERSION < 3
-    if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
-#else
-    if (unlikely(!PyLong_CheckExact(res))) {
-#endif
-        return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
-    }
-  }
-  else if (!PyErr_Occurred()) {
-    PyErr_SetString(PyExc_TypeError,
-                    "an integer is required");
-  }
-  return res;
-}
-static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
-  Py_ssize_t ival;
-  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) {
-    return PyInt_FromSize_t(ival);
-}
-
-
-#endif /* Py_PYTHON_H */

+ 8 - 3
setup.py

@@ -15,14 +15,17 @@ from os import path
 
 import lakesuperior
 
+# Use this version to build C files from .pyx sources.
+CYTHON_VERSION='0.28.4'
+
 try:
+    import Cython
     from Cython.Build import cythonize
 except ImportError:
     USE_CYTHON = False
-    print('Not using Cython to compile extensions.')
 else:
-    USE_CYTHON = True
-    print('Using Cython to compile extensions.')
+    if Cython.__version__ == CYTHON_VERSION:
+        USE_CYTHON = True
 
 
 # ``pytest_runner`` is referenced in ``setup_requires``.
@@ -44,9 +47,11 @@ include_dirs = [
     path.join(ext_dir, 'include'),
 ]
 if USE_CYTHON:
+    print(f'Using Cython {CYTHON_VERSION} to generate C extensions.')
     include_dirs.append(path.join(lakesuperior.basedir, 'cy_include'))
     ext = 'pyx'
 else:
+    print(f'Cython {CYTHON_VERSION} not found. Using provided C extensions.')
     ext = 'c'
 
 extensions = [