pyogrio 0.10.0__cp310-cp310-win_amd64.whl → 0.11.0__cp310-cp310-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pyogrio might be problematic. Click here for more details.

Files changed (87) hide show
  1. pyogrio/__init__.py +13 -14
  2. pyogrio/_compat.py +8 -0
  3. pyogrio/_err.c +9881 -4061
  4. pyogrio/_err.cp310-win_amd64.pyd +0 -0
  5. pyogrio/_geometry.c +372 -204
  6. pyogrio/_geometry.cp310-win_amd64.pyd +0 -0
  7. pyogrio/_io.c +7119 -6034
  8. pyogrio/_io.cp310-win_amd64.pyd +0 -0
  9. pyogrio/_ogr.c +1317 -1232
  10. pyogrio/_ogr.cp310-win_amd64.pyd +0 -0
  11. pyogrio/_version.py +3 -3
  12. pyogrio/_vsi.c +417 -424
  13. pyogrio/_vsi.cp310-win_amd64.pyd +0 -0
  14. pyogrio/gdal_data/GDAL-targets.cmake +2 -2
  15. pyogrio/gdal_data/GDALConfigVersion.cmake +3 -3
  16. pyogrio/gdal_data/gdalinfo_output.schema.json +3 -3
  17. pyogrio/gdal_data/gdaltileindex.xsd +1 -17
  18. pyogrio/gdal_data/gdalvrt.xsd +48 -41
  19. pyogrio/gdal_data/nitf_spec.xml +1 -17
  20. pyogrio/gdal_data/nitf_spec.xsd +1 -17
  21. pyogrio/gdal_data/ogrvrt.xsd +1 -17
  22. pyogrio/gdal_data/osmconf.ini +3 -1
  23. pyogrio/gdal_data/pdfcomposition.xsd +1 -17
  24. pyogrio/gdal_data/template_tiles.mapml +28 -0
  25. pyogrio/gdal_data/vcpkg.spdx.json +28 -23
  26. pyogrio/gdal_data/vcpkg_abi_info.txt +29 -28
  27. pyogrio/gdal_data/vdv452.xml +1 -17
  28. pyogrio/gdal_data/vdv452.xsd +1 -17
  29. pyogrio/geopandas.py +91 -43
  30. pyogrio/proj_data/ITRF2014 +1 -1
  31. pyogrio/proj_data/ITRF2020 +91 -0
  32. pyogrio/proj_data/proj-config-version.cmake +3 -3
  33. pyogrio/proj_data/proj-config.cmake +1 -1
  34. pyogrio/proj_data/proj-targets-release.cmake +3 -2
  35. pyogrio/proj_data/proj-targets.cmake +2 -2
  36. pyogrio/proj_data/proj.db +0 -0
  37. pyogrio/proj_data/proj.ini +11 -3
  38. pyogrio/proj_data/proj4-targets-release.cmake +3 -2
  39. pyogrio/proj_data/proj4-targets.cmake +2 -2
  40. pyogrio/proj_data/usage +7 -2
  41. pyogrio/proj_data/vcpkg.spdx.json +26 -21
  42. pyogrio/proj_data/vcpkg_abi_info.txt +17 -16
  43. pyogrio/tests/conftest.py +8 -0
  44. pyogrio/tests/test_arrow.py +3 -0
  45. pyogrio/tests/test_core.py +8 -4
  46. pyogrio/tests/test_geopandas_io.py +250 -42
  47. pyogrio/tests/test_path.py +10 -0
  48. pyogrio/tests/test_raw_io.py +6 -2
  49. pyogrio/util.py +15 -2
  50. pyogrio-0.11.0.dist-info/DELVEWHEEL +2 -0
  51. {pyogrio-0.10.0.dist-info → pyogrio-0.11.0.dist-info}/METADATA +32 -37
  52. {pyogrio-0.10.0.dist-info → pyogrio-0.11.0.dist-info}/RECORD +75 -71
  53. {pyogrio-0.10.0.dist-info → pyogrio-0.11.0.dist-info}/WHEEL +1 -1
  54. pyogrio.libs/{Lerc-089e3fef3df84b17326dcddbf1dedaa4.dll → Lerc-0a4c85fb364eca6153da109568898e6c.dll} +0 -0
  55. pyogrio.libs/{gdal-debee5933f0da7bb90b4bcd009023377.dll → gdal-34e3e080255b205ef706390e097fa4dc.dll} +0 -0
  56. pyogrio.libs/geos-d8f20037634583c2efcd6ea1f4153169.dll +0 -0
  57. pyogrio.libs/geos_c-046e8885887192fced9516bda554471d.dll +0 -0
  58. pyogrio.libs/{geotiff-c8fe8a095520a4ea4e465d27e06add3a.dll → geotiff-1f2f76a5d30685a8e0497d9dbf8a79cf.dll} +0 -0
  59. pyogrio.libs/{iconv-2-27352d156a5467ca5383d3951093ea5a.dll → iconv-2-4b71ebbdf6834234e0c64cb2439b77cf.dll} +0 -0
  60. pyogrio.libs/{jpeg62-e56b6f95a95af498f4623b8da4cebd46.dll → jpeg62-bf2a75b1f2695748cd86238ddb19c65b.dll} +0 -0
  61. pyogrio.libs/json-c-4bc6781090e73c9b22d8dc057618a277.dll +0 -0
  62. pyogrio.libs/libcrypto-3-x64-c8f1692ed45cf55faecce2c448056b2e.dll +0 -0
  63. pyogrio.libs/libcurl-f3604410cd467a44d927794ebdce81b8.dll +0 -0
  64. pyogrio.libs/libexpat-385074fd54deb4b640baafa42cbb3146.dll +0 -0
  65. pyogrio.libs/liblzma-8968f0bfd463b7fe612b20d07adc3c1e.dll +0 -0
  66. pyogrio.libs/libpng16-44105208fe941d03e9f0c17bdbb952f7.dll +0 -0
  67. pyogrio.libs/libssl-3-x64-58c364315f431ab1f0e48b311b8cf105.dll +0 -0
  68. pyogrio.libs/msvcp140-99aa35e2033bb8d388bc35c8a68b77e3.dll +0 -0
  69. pyogrio.libs/proj_9-ee59474f99643c112eb02aa34a910237.dll +0 -0
  70. pyogrio.libs/{qhull_r-516897f855568caab1ab1fe37912766c.dll → qhull_r-eaac2f11a3d8241f082e54447c7504d7.dll} +0 -0
  71. pyogrio.libs/sqlite3-dc748e3452944fd41001abacdd783569.dll +0 -0
  72. pyogrio.libs/tiff-c409ddbe87b39639b83fee50d4aea318.dll +0 -0
  73. pyogrio.libs/{zlib1-e5af16a15c63f05bd82d90396807ae5b.dll → zlib1-094085b7b78666197dcc8e1fce2d835d.dll} +0 -0
  74. pyogrio-0.10.0.dist-info/DELVEWHEEL +0 -2
  75. pyogrio.libs/geos-ace4c5b5c1f569bb4213e7bbd0b0322e.dll +0 -0
  76. pyogrio.libs/geos_c-7478ca0a86136b280d9b2d245c6f6627.dll +0 -0
  77. pyogrio.libs/json-c-c84940e2654a4f8468bfcf2ce992aa93.dll +0 -0
  78. pyogrio.libs/libcurl-d69cfd4ad487d53d58743b6778ec85e7.dll +0 -0
  79. pyogrio.libs/libexpat-6576a8d02641b6a3dbad35901ec200a7.dll +0 -0
  80. pyogrio.libs/liblzma-9ee4accb476ec1ae24e924953140273d.dll +0 -0
  81. pyogrio.libs/libpng16-7c36142dda59f186f6bb683e8dae2bfe.dll +0 -0
  82. pyogrio.libs/msvcp140-98b3e5b80de1e5e9d1703b786d795623.dll +0 -0
  83. pyogrio.libs/proj-a408c5327f3fd2f5fabe8c56815beed7.dll +0 -0
  84. pyogrio.libs/sqlite3-9bc109d8536d5ed9666332fec94485fc.dll +0 -0
  85. pyogrio.libs/tiff-9b3f605fffe0bccc0a964c374ee4f820.dll +0 -0
  86. {pyogrio-0.10.0.dist-info → pyogrio-0.11.0.dist-info/licenses}/LICENSE +0 -0
  87. {pyogrio-0.10.0.dist-info → pyogrio-0.11.0.dist-info}/top_level.txt +0 -0
pyogrio/_geometry.c CHANGED
@@ -1,4 +1,4 @@
1
- /* Generated by Cython 3.0.11 */
1
+ /* Generated by Cython 3.0.12 */
2
2
 
3
3
  /* BEGIN: Cython Metadata
4
4
  {
@@ -58,10 +58,10 @@ END: Cython Metadata */
58
58
  #else
59
59
  #define __PYX_EXTRA_ABI_MODULE_NAME ""
60
60
  #endif
61
- #define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME
61
+ #define CYTHON_ABI "3_0_12" __PYX_EXTRA_ABI_MODULE_NAME
62
62
  #define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
63
63
  #define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."
64
- #define CYTHON_HEX_VERSION 0x03000BF0
64
+ #define CYTHON_HEX_VERSION 0x03000CF0
65
65
  #define CYTHON_FUTURE_DIVISION 1
66
66
  #include <stddef.h>
67
67
  #ifndef offsetof
@@ -1515,6 +1515,7 @@ static const char *__pyx_filename;
1515
1515
 
1516
1516
  static const char *__pyx_f[] = {
1517
1517
  "pyogrio\\\\_geometry.pyx",
1518
+ "pyogrio\\\\_err.pxd",
1518
1519
  };
1519
1520
  /* #### Code section: utility_code_proto_before_types ### */
1520
1521
  /* ForceInitThreads.proto */
@@ -1527,9 +1528,10 @@ static const char *__pyx_f[] = {
1527
1528
  /* #### Code section: type_declarations ### */
1528
1529
 
1529
1530
  /*--- Type declarations ---*/
1531
+ struct __pyx_obj_7pyogrio_4_err_ErrorHandler;
1530
1532
  struct __pyx_opt_args_7pyogrio_4_ogr_get_string;
1531
1533
 
1532
- /* "pyogrio/_ogr.pxd":452
1534
+ /* "pyogrio/_ogr.pxd":514
1533
1535
  *
1534
1536
  *
1535
1537
  * cdef get_string(const char *c_str, str encoding=*) # <<<<<<<<<<<<<<
@@ -1538,6 +1540,28 @@ struct __pyx_opt_args_7pyogrio_4_ogr_get_string {
1538
1540
  int __pyx_n;
1539
1541
  PyObject *encoding;
1540
1542
  };
1543
+
1544
+ /* "pyogrio/_err.pxd":5
1545
+ * cdef void *check_pointer(void *ptr) except NULL
1546
+ *
1547
+ * cdef class ErrorHandler: # <<<<<<<<<<<<<<
1548
+ * cdef object error_stack
1549
+ * cdef int check_int(self, int retval, bint squash_errors) except -1
1550
+ */
1551
+ struct __pyx_obj_7pyogrio_4_err_ErrorHandler {
1552
+ PyObject_HEAD
1553
+ struct __pyx_vtabstruct_7pyogrio_4_err_ErrorHandler *__pyx_vtab;
1554
+ PyObject *error_stack;
1555
+ };
1556
+
1557
+
1558
+
1559
+ struct __pyx_vtabstruct_7pyogrio_4_err_ErrorHandler {
1560
+ int (*check_int)(struct __pyx_obj_7pyogrio_4_err_ErrorHandler *, int, int);
1561
+ void *(*check_pointer)(struct __pyx_obj_7pyogrio_4_err_ErrorHandler *, void *, int);
1562
+ void (*_handle_error_stack)(struct __pyx_obj_7pyogrio_4_err_ErrorHandler *, int);
1563
+ };
1564
+ static struct __pyx_vtabstruct_7pyogrio_4_err_ErrorHandler *__pyx_vtabptr_7pyogrio_4_err_ErrorHandler;
1541
1565
  /* #### Code section: utility_code_proto ### */
1542
1566
 
1543
1567
  /* --- Runtime support code (head) --- */
@@ -1787,7 +1811,7 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
1787
1811
  #if !CYTHON_VECTORCALL
1788
1812
  #if PY_VERSION_HEX >= 0x03080000
1789
1813
  #include "frameobject.h"
1790
- #if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API
1814
+ #if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API && !defined(PYPY_VERSION)
1791
1815
  #ifndef Py_BUILD_CORE
1792
1816
  #define Py_BUILD_CORE 1
1793
1817
  #endif
@@ -1939,6 +1963,28 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
1939
1963
  #define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name)
1940
1964
  #endif
1941
1965
 
1966
+ /* TypeImport.proto */
1967
+ #ifndef __PYX_HAVE_RT_ImportType_proto_3_0_12
1968
+ #define __PYX_HAVE_RT_ImportType_proto_3_0_12
1969
+ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
1970
+ #include <stdalign.h>
1971
+ #endif
1972
+ #if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L
1973
+ #define __PYX_GET_STRUCT_ALIGNMENT_3_0_12(s) alignof(s)
1974
+ #else
1975
+ #define __PYX_GET_STRUCT_ALIGNMENT_3_0_12(s) sizeof(void*)
1976
+ #endif
1977
+ enum __Pyx_ImportType_CheckSize_3_0_12 {
1978
+ __Pyx_ImportType_CheckSize_Error_3_0_12 = 0,
1979
+ __Pyx_ImportType_CheckSize_Warn_3_0_12 = 1,
1980
+ __Pyx_ImportType_CheckSize_Ignore_3_0_12 = 2
1981
+ };
1982
+ static PyTypeObject *__Pyx_ImportType_3_0_12(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_12 check_size);
1983
+ #endif
1984
+
1985
+ /* GetVTable.proto */
1986
+ static void* __Pyx_GetVtable(PyTypeObject *type);
1987
+
1942
1988
  /* Import.proto */
1943
1989
  static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
1944
1990
 
@@ -2060,7 +2106,7 @@ static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt
2060
2106
  static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig);
2061
2107
 
2062
2108
  /* FunctionImport.proto */
2063
- static int __Pyx_ImportFunction_3_0_11(PyObject *module, const char *funcname, void (**f)(void), const char *sig);
2109
+ static int __Pyx_ImportFunction_3_0_12(PyObject *module, const char *funcname, void (**f)(void), const char *sig);
2064
2110
 
2065
2111
  /* InitStrings.proto */
2066
2112
  static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
@@ -2076,7 +2122,7 @@ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
2076
2122
  /* Module declarations from "pyogrio._ogr" */
2077
2123
 
2078
2124
  /* Module declarations from "pyogrio._err" */
2079
- static void *(*__pyx_f_7pyogrio_4_err_exc_wrap_pointer)(void *); /*proto*/
2125
+ static void *(*__pyx_f_7pyogrio_4_err_check_pointer)(void *); /*proto*/
2080
2126
 
2081
2127
  /* Module declarations from "pyogrio._geometry" */
2082
2128
  static PyObject *__pyx_7genexpr__pyx_v_7pyogrio_9_geometry_k;
@@ -2114,6 +2160,7 @@ static const char __pyx_k_2_5D_Point[] = "2.5D Point";
2114
2160
  static const char __pyx_k_LineString[] = "LineString";
2115
2161
  static const char __pyx_k_LinearRing[] = "LinearRing";
2116
2162
  static const char __pyx_k_MultiPoint[] = "MultiPoint";
2163
+ static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
2117
2164
  static const char __pyx_k_2_5D_Polygon[] = "2.5D Polygon";
2118
2165
  static const char __pyx_k_LineString_Z[] = "LineString Z";
2119
2166
  static const char __pyx_k_MultiPoint_Z[] = "MultiPoint Z";
@@ -2194,6 +2241,7 @@ typedef struct {
2194
2241
  #endif
2195
2242
  #if CYTHON_USE_MODULE_STATE
2196
2243
  #endif
2244
+ PyTypeObject *__pyx_ptype_7pyogrio_4_err_ErrorHandler;
2197
2245
  #if CYTHON_USE_MODULE_STATE
2198
2246
  #endif
2199
2247
  PyObject *__pyx_kp_u_;
@@ -2257,6 +2305,7 @@ typedef struct {
2257
2305
  PyObject *__pyx_n_s_name;
2258
2306
  PyObject *__pyx_n_s_pyogrio__err;
2259
2307
  PyObject *__pyx_n_s_pyogrio_errors;
2308
+ PyObject *__pyx_n_s_pyx_vtable;
2260
2309
  PyObject *__pyx_n_s_spec;
2261
2310
  PyObject *__pyx_n_s_test;
2262
2311
  PyObject *__pyx_n_s_update;
@@ -2311,6 +2360,7 @@ static int __pyx_m_clear(PyObject *m) {
2311
2360
  #ifdef __Pyx_FusedFunction_USED
2312
2361
  Py_CLEAR(clear_module_state->__pyx_FusedFunctionType);
2313
2362
  #endif
2363
+ Py_CLEAR(clear_module_state->__pyx_ptype_7pyogrio_4_err_ErrorHandler);
2314
2364
  Py_CLEAR(clear_module_state->__pyx_kp_u_);
2315
2365
  Py_CLEAR(clear_module_state->__pyx_kp_u_2_5D_GeometryCollection);
2316
2366
  Py_CLEAR(clear_module_state->__pyx_kp_u_2_5D_LineString);
@@ -2372,6 +2422,7 @@ static int __pyx_m_clear(PyObject *m) {
2372
2422
  Py_CLEAR(clear_module_state->__pyx_n_s_name);
2373
2423
  Py_CLEAR(clear_module_state->__pyx_n_s_pyogrio__err);
2374
2424
  Py_CLEAR(clear_module_state->__pyx_n_s_pyogrio_errors);
2425
+ Py_CLEAR(clear_module_state->__pyx_n_s_pyx_vtable);
2375
2426
  Py_CLEAR(clear_module_state->__pyx_n_s_spec);
2376
2427
  Py_CLEAR(clear_module_state->__pyx_n_s_test);
2377
2428
  Py_CLEAR(clear_module_state->__pyx_n_s_update);
@@ -2404,6 +2455,7 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
2404
2455
  #ifdef __Pyx_FusedFunction_USED
2405
2456
  Py_VISIT(traverse_module_state->__pyx_FusedFunctionType);
2406
2457
  #endif
2458
+ Py_VISIT(traverse_module_state->__pyx_ptype_7pyogrio_4_err_ErrorHandler);
2407
2459
  Py_VISIT(traverse_module_state->__pyx_kp_u_);
2408
2460
  Py_VISIT(traverse_module_state->__pyx_kp_u_2_5D_GeometryCollection);
2409
2461
  Py_VISIT(traverse_module_state->__pyx_kp_u_2_5D_LineString);
@@ -2465,6 +2517,7 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
2465
2517
  Py_VISIT(traverse_module_state->__pyx_n_s_name);
2466
2518
  Py_VISIT(traverse_module_state->__pyx_n_s_pyogrio__err);
2467
2519
  Py_VISIT(traverse_module_state->__pyx_n_s_pyogrio_errors);
2520
+ Py_VISIT(traverse_module_state->__pyx_n_s_pyx_vtable);
2468
2521
  Py_VISIT(traverse_module_state->__pyx_n_s_spec);
2469
2522
  Py_VISIT(traverse_module_state->__pyx_n_s_test);
2470
2523
  Py_VISIT(traverse_module_state->__pyx_n_s_update);
@@ -2515,6 +2568,7 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
2515
2568
  #endif
2516
2569
  #if CYTHON_USE_MODULE_STATE
2517
2570
  #endif
2571
+ #define __pyx_ptype_7pyogrio_4_err_ErrorHandler __pyx_mstate_global->__pyx_ptype_7pyogrio_4_err_ErrorHandler
2518
2572
  #if CYTHON_USE_MODULE_STATE
2519
2573
  #endif
2520
2574
  #define __pyx_kp_u_ __pyx_mstate_global->__pyx_kp_u_
@@ -2578,6 +2632,7 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
2578
2632
  #define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name
2579
2633
  #define __pyx_n_s_pyogrio__err __pyx_mstate_global->__pyx_n_s_pyogrio__err
2580
2634
  #define __pyx_n_s_pyogrio_errors __pyx_mstate_global->__pyx_n_s_pyogrio_errors
2635
+ #define __pyx_n_s_pyx_vtable __pyx_mstate_global->__pyx_n_s_pyx_vtable
2581
2636
  #define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec
2582
2637
  #define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test
2583
2638
  #define __pyx_n_s_update __pyx_mstate_global->__pyx_n_s_update
@@ -2601,9 +2656,8 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
2601
2656
  */
2602
2657
 
2603
2658
  static PyObject *__pyx_f_7pyogrio_9_geometry_get_geometry_type(void *__pyx_v_ogr_layer) {
2604
- CYTHON_UNUSED void *__pyx_v_cogr_featuredef;
2605
- OGRwkbGeometryType __pyx_v_ogr_type;
2606
2659
  void *__pyx_v_ogr_featuredef;
2660
+ OGRwkbGeometryType __pyx_v_ogr_type;
2607
2661
  PyObject *__pyx_v_exc = NULL;
2608
2662
  PyObject *__pyx_v_original_type = NULL;
2609
2663
  PyObject *__pyx_r = NULL;
@@ -2640,17 +2694,17 @@ static PyObject *__pyx_f_7pyogrio_9_geometry_get_geometry_type(void *__pyx_v_ogr
2640
2694
  /* "pyogrio/_geometry.pyx":83
2641
2695
  * geometry type
2642
2696
  * """
2643
- * cdef void *cogr_featuredef = NULL # <<<<<<<<<<<<<<
2697
+ * cdef void *ogr_featuredef = NULL # <<<<<<<<<<<<<<
2644
2698
  * cdef OGRwkbGeometryType ogr_type
2645
2699
  *
2646
2700
  */
2647
- __pyx_v_cogr_featuredef = NULL;
2701
+ __pyx_v_ogr_featuredef = NULL;
2648
2702
 
2649
2703
  /* "pyogrio/_geometry.pyx":86
2650
2704
  * cdef OGRwkbGeometryType ogr_type
2651
2705
  *
2652
2706
  * try: # <<<<<<<<<<<<<<
2653
- * ogr_featuredef = exc_wrap_pointer(OGR_L_GetLayerDefn(ogr_layer))
2707
+ * ogr_featuredef = check_pointer(OGR_L_GetLayerDefn(ogr_layer))
2654
2708
  * except NullPointerError:
2655
2709
  */
2656
2710
  {
@@ -2665,18 +2719,18 @@ static PyObject *__pyx_f_7pyogrio_9_geometry_get_geometry_type(void *__pyx_v_ogr
2665
2719
  /* "pyogrio/_geometry.pyx":87
2666
2720
  *
2667
2721
  * try:
2668
- * ogr_featuredef = exc_wrap_pointer(OGR_L_GetLayerDefn(ogr_layer)) # <<<<<<<<<<<<<<
2722
+ * ogr_featuredef = check_pointer(OGR_L_GetLayerDefn(ogr_layer)) # <<<<<<<<<<<<<<
2669
2723
  * except NullPointerError:
2670
2724
  * raise DataLayerError("Could not get layer definition")
2671
2725
  */
2672
- __pyx_t_4 = __pyx_f_7pyogrio_4_err_exc_wrap_pointer(OGR_L_GetLayerDefn(__pyx_v_ogr_layer)); if (unlikely(__pyx_t_4 == ((void *)NULL))) __PYX_ERR(0, 87, __pyx_L3_error)
2726
+ __pyx_t_4 = __pyx_f_7pyogrio_4_err_check_pointer(OGR_L_GetLayerDefn(__pyx_v_ogr_layer)); if (unlikely(__pyx_t_4 == ((void *)NULL))) __PYX_ERR(0, 87, __pyx_L3_error)
2673
2727
  __pyx_v_ogr_featuredef = __pyx_t_4;
2674
2728
 
2675
2729
  /* "pyogrio/_geometry.pyx":86
2676
2730
  * cdef OGRwkbGeometryType ogr_type
2677
2731
  *
2678
2732
  * try: # <<<<<<<<<<<<<<
2679
- * ogr_featuredef = exc_wrap_pointer(OGR_L_GetLayerDefn(ogr_layer))
2733
+ * ogr_featuredef = check_pointer(OGR_L_GetLayerDefn(ogr_layer))
2680
2734
  * except NullPointerError:
2681
2735
  */
2682
2736
  }
@@ -2688,7 +2742,7 @@ static PyObject *__pyx_f_7pyogrio_9_geometry_get_geometry_type(void *__pyx_v_ogr
2688
2742
 
2689
2743
  /* "pyogrio/_geometry.pyx":88
2690
2744
  * try:
2691
- * ogr_featuredef = exc_wrap_pointer(OGR_L_GetLayerDefn(ogr_layer))
2745
+ * ogr_featuredef = check_pointer(OGR_L_GetLayerDefn(ogr_layer))
2692
2746
  * except NullPointerError: # <<<<<<<<<<<<<<
2693
2747
  * raise DataLayerError("Could not get layer definition")
2694
2748
  *
@@ -2708,7 +2762,7 @@ static PyObject *__pyx_f_7pyogrio_9_geometry_get_geometry_type(void *__pyx_v_ogr
2708
2762
  __Pyx_XGOTREF(__pyx_t_5);
2709
2763
 
2710
2764
  /* "pyogrio/_geometry.pyx":89
2711
- * ogr_featuredef = exc_wrap_pointer(OGR_L_GetLayerDefn(ogr_layer))
2765
+ * ogr_featuredef = check_pointer(OGR_L_GetLayerDefn(ogr_layer))
2712
2766
  * except NullPointerError:
2713
2767
  * raise DataLayerError("Could not get layer definition") # <<<<<<<<<<<<<<
2714
2768
  *
@@ -2857,7 +2911,7 @@ static PyObject *__pyx_f_7pyogrio_9_geometry_get_geometry_type(void *__pyx_v_ogr
2857
2911
  * cdef OGRwkbGeometryType ogr_type
2858
2912
  *
2859
2913
  * try: # <<<<<<<<<<<<<<
2860
- * ogr_featuredef = exc_wrap_pointer(OGR_L_GetLayerDefn(ogr_layer))
2914
+ * ogr_featuredef = check_pointer(OGR_L_GetLayerDefn(ogr_layer))
2861
2915
  * except NullPointerError:
2862
2916
  */
2863
2917
  __pyx_L5_except_error:;
@@ -3348,6 +3402,7 @@ static int __Pyx_CreateStringTabAndInitStrings(void) {
3348
3402
  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
3349
3403
  {&__pyx_n_s_pyogrio__err, __pyx_k_pyogrio__err, sizeof(__pyx_k_pyogrio__err), 0, 0, 1, 1},
3350
3404
  {&__pyx_n_s_pyogrio_errors, __pyx_k_pyogrio_errors, sizeof(__pyx_k_pyogrio_errors), 0, 0, 1, 1},
3405
+ {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
3351
3406
  {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1},
3352
3407
  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
3353
3408
  {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
@@ -3443,10 +3498,23 @@ static int __Pyx_modinit_type_init_code(void) {
3443
3498
 
3444
3499
  static int __Pyx_modinit_type_import_code(void) {
3445
3500
  __Pyx_RefNannyDeclarations
3501
+ PyObject *__pyx_t_1 = NULL;
3502
+ int __pyx_lineno = 0;
3503
+ const char *__pyx_filename = NULL;
3504
+ int __pyx_clineno = 0;
3446
3505
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
3447
3506
  /*--- Type import code ---*/
3507
+ __pyx_t_1 = PyImport_ImportModule("pyogrio._err"); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
3508
+ __Pyx_GOTREF(__pyx_t_1);
3509
+ __pyx_ptype_7pyogrio_4_err_ErrorHandler = __Pyx_ImportType_3_0_12(__pyx_t_1, "pyogrio._err", "ErrorHandler", sizeof(struct __pyx_obj_7pyogrio_4_err_ErrorHandler), __PYX_GET_STRUCT_ALIGNMENT_3_0_12(struct __pyx_obj_7pyogrio_4_err_ErrorHandler),__Pyx_ImportType_CheckSize_Warn_3_0_12); if (!__pyx_ptype_7pyogrio_4_err_ErrorHandler) __PYX_ERR(1, 5, __pyx_L1_error)
3510
+ __pyx_vtabptr_7pyogrio_4_err_ErrorHandler = (struct __pyx_vtabstruct_7pyogrio_4_err_ErrorHandler*)__Pyx_GetVtable(__pyx_ptype_7pyogrio_4_err_ErrorHandler); if (unlikely(!__pyx_vtabptr_7pyogrio_4_err_ErrorHandler)) __PYX_ERR(1, 5, __pyx_L1_error)
3511
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3448
3512
  __Pyx_RefNannyFinishContext();
3449
3513
  return 0;
3514
+ __pyx_L1_error:;
3515
+ __Pyx_XDECREF(__pyx_t_1);
3516
+ __Pyx_RefNannyFinishContext();
3517
+ return -1;
3450
3518
  }
3451
3519
 
3452
3520
  static int __Pyx_modinit_variable_import_code(void) {
@@ -3467,7 +3535,7 @@ static int __Pyx_modinit_function_import_code(void) {
3467
3535
  /*--- Function import code ---*/
3468
3536
  __pyx_t_1 = PyImport_ImportModule("pyogrio._err"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error)
3469
3537
  __Pyx_GOTREF(__pyx_t_1);
3470
- if (__Pyx_ImportFunction_3_0_11(__pyx_t_1, "exc_wrap_pointer", (void (**)(void))&__pyx_f_7pyogrio_4_err_exc_wrap_pointer, "void *(void *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
3538
+ if (__Pyx_ImportFunction_3_0_12(__pyx_t_1, "check_pointer", (void (**)(void))&__pyx_f_7pyogrio_4_err_check_pointer, "void *(void *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
3471
3539
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3472
3540
  __Pyx_RefNannyFinishContext();
3473
3541
  return 0;
@@ -3754,7 +3822,7 @@ if (!__Pyx_RefNanny) {
3754
3822
  (void)__Pyx_modinit_variable_export_code();
3755
3823
  if (unlikely((__Pyx_modinit_function_export_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
3756
3824
  (void)__Pyx_modinit_type_init_code();
3757
- (void)__Pyx_modinit_type_import_code();
3825
+ if (unlikely((__Pyx_modinit_type_import_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
3758
3826
  (void)__Pyx_modinit_variable_import_code();
3759
3827
  if (unlikely((__Pyx_modinit_function_import_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
3760
3828
  /*--- Execution code ---*/
@@ -3831,9 +3899,9 @@ if (!__Pyx_RefNanny) {
3831
3899
  /* "pyogrio/_geometry.pyx":11
3832
3900
  *
3833
3901
  * GEOMETRY_TYPES = {
3834
- * wkbUnknown: 'Unknown', # <<<<<<<<<<<<<<
3835
- * wkbPoint: 'Point',
3836
- * wkbLineString: 'LineString',
3902
+ * wkbUnknown: "Unknown", # <<<<<<<<<<<<<<
3903
+ * wkbPoint: "Point",
3904
+ * wkbLineString: "LineString",
3837
3905
  */
3838
3906
  __pyx_t_2 = __Pyx_PyDict_NewPresized(31); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error)
3839
3907
  __Pyx_GOTREF(__pyx_t_2);
@@ -3844,10 +3912,10 @@ if (!__Pyx_RefNanny) {
3844
3912
 
3845
3913
  /* "pyogrio/_geometry.pyx":12
3846
3914
  * GEOMETRY_TYPES = {
3847
- * wkbUnknown: 'Unknown',
3848
- * wkbPoint: 'Point', # <<<<<<<<<<<<<<
3849
- * wkbLineString: 'LineString',
3850
- * wkbPolygon: 'Polygon',
3915
+ * wkbUnknown: "Unknown",
3916
+ * wkbPoint: "Point", # <<<<<<<<<<<<<<
3917
+ * wkbLineString: "LineString",
3918
+ * wkbPolygon: "Polygon",
3851
3919
  */
3852
3920
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbPoint); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error)
3853
3921
  __Pyx_GOTREF(__pyx_t_3);
@@ -3855,11 +3923,11 @@ if (!__Pyx_RefNanny) {
3855
3923
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3856
3924
 
3857
3925
  /* "pyogrio/_geometry.pyx":13
3858
- * wkbUnknown: 'Unknown',
3859
- * wkbPoint: 'Point',
3860
- * wkbLineString: 'LineString', # <<<<<<<<<<<<<<
3861
- * wkbPolygon: 'Polygon',
3862
- * wkbMultiPoint: 'MultiPoint',
3926
+ * wkbUnknown: "Unknown",
3927
+ * wkbPoint: "Point",
3928
+ * wkbLineString: "LineString", # <<<<<<<<<<<<<<
3929
+ * wkbPolygon: "Polygon",
3930
+ * wkbMultiPoint: "MultiPoint",
3863
3931
  */
3864
3932
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbLineString); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error)
3865
3933
  __Pyx_GOTREF(__pyx_t_3);
@@ -3867,11 +3935,11 @@ if (!__Pyx_RefNanny) {
3867
3935
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3868
3936
 
3869
3937
  /* "pyogrio/_geometry.pyx":14
3870
- * wkbPoint: 'Point',
3871
- * wkbLineString: 'LineString',
3872
- * wkbPolygon: 'Polygon', # <<<<<<<<<<<<<<
3873
- * wkbMultiPoint: 'MultiPoint',
3874
- * wkbMultiLineString: 'MultiLineString',
3938
+ * wkbPoint: "Point",
3939
+ * wkbLineString: "LineString",
3940
+ * wkbPolygon: "Polygon", # <<<<<<<<<<<<<<
3941
+ * wkbMultiPoint: "MultiPoint",
3942
+ * wkbMultiLineString: "MultiLineString",
3875
3943
  */
3876
3944
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbPolygon); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 14, __pyx_L1_error)
3877
3945
  __Pyx_GOTREF(__pyx_t_3);
@@ -3879,11 +3947,11 @@ if (!__Pyx_RefNanny) {
3879
3947
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3880
3948
 
3881
3949
  /* "pyogrio/_geometry.pyx":15
3882
- * wkbLineString: 'LineString',
3883
- * wkbPolygon: 'Polygon',
3884
- * wkbMultiPoint: 'MultiPoint', # <<<<<<<<<<<<<<
3885
- * wkbMultiLineString: 'MultiLineString',
3886
- * wkbMultiPolygon: 'MultiPolygon',
3950
+ * wkbLineString: "LineString",
3951
+ * wkbPolygon: "Polygon",
3952
+ * wkbMultiPoint: "MultiPoint", # <<<<<<<<<<<<<<
3953
+ * wkbMultiLineString: "MultiLineString",
3954
+ * wkbMultiPolygon: "MultiPolygon",
3887
3955
  */
3888
3956
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbMultiPoint); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 15, __pyx_L1_error)
3889
3957
  __Pyx_GOTREF(__pyx_t_3);
@@ -3891,11 +3959,11 @@ if (!__Pyx_RefNanny) {
3891
3959
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3892
3960
 
3893
3961
  /* "pyogrio/_geometry.pyx":16
3894
- * wkbPolygon: 'Polygon',
3895
- * wkbMultiPoint: 'MultiPoint',
3896
- * wkbMultiLineString: 'MultiLineString', # <<<<<<<<<<<<<<
3897
- * wkbMultiPolygon: 'MultiPolygon',
3898
- * wkbGeometryCollection: 'GeometryCollection',
3962
+ * wkbPolygon: "Polygon",
3963
+ * wkbMultiPoint: "MultiPoint",
3964
+ * wkbMultiLineString: "MultiLineString", # <<<<<<<<<<<<<<
3965
+ * wkbMultiPolygon: "MultiPolygon",
3966
+ * wkbGeometryCollection: "GeometryCollection",
3899
3967
  */
3900
3968
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbMultiLineString); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error)
3901
3969
  __Pyx_GOTREF(__pyx_t_3);
@@ -3903,10 +3971,10 @@ if (!__Pyx_RefNanny) {
3903
3971
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3904
3972
 
3905
3973
  /* "pyogrio/_geometry.pyx":17
3906
- * wkbMultiPoint: 'MultiPoint',
3907
- * wkbMultiLineString: 'MultiLineString',
3908
- * wkbMultiPolygon: 'MultiPolygon', # <<<<<<<<<<<<<<
3909
- * wkbGeometryCollection: 'GeometryCollection',
3974
+ * wkbMultiPoint: "MultiPoint",
3975
+ * wkbMultiLineString: "MultiLineString",
3976
+ * wkbMultiPolygon: "MultiPolygon", # <<<<<<<<<<<<<<
3977
+ * wkbGeometryCollection: "GeometryCollection",
3910
3978
  * wkbNone: None,
3911
3979
  */
3912
3980
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbMultiPolygon); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 17, __pyx_L1_error)
@@ -3915,11 +3983,11 @@ if (!__Pyx_RefNanny) {
3915
3983
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3916
3984
 
3917
3985
  /* "pyogrio/_geometry.pyx":18
3918
- * wkbMultiLineString: 'MultiLineString',
3919
- * wkbMultiPolygon: 'MultiPolygon',
3920
- * wkbGeometryCollection: 'GeometryCollection', # <<<<<<<<<<<<<<
3986
+ * wkbMultiLineString: "MultiLineString",
3987
+ * wkbMultiPolygon: "MultiPolygon",
3988
+ * wkbGeometryCollection: "GeometryCollection", # <<<<<<<<<<<<<<
3921
3989
  * wkbNone: None,
3922
- * wkbLinearRing: 'LinearRing',
3990
+ * wkbLinearRing: "LinearRing",
3923
3991
  */
3924
3992
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbGeometryCollection); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 18, __pyx_L1_error)
3925
3993
  __Pyx_GOTREF(__pyx_t_3);
@@ -3927,10 +3995,10 @@ if (!__Pyx_RefNanny) {
3927
3995
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3928
3996
 
3929
3997
  /* "pyogrio/_geometry.pyx":19
3930
- * wkbMultiPolygon: 'MultiPolygon',
3931
- * wkbGeometryCollection: 'GeometryCollection',
3998
+ * wkbMultiPolygon: "MultiPolygon",
3999
+ * wkbGeometryCollection: "GeometryCollection",
3932
4000
  * wkbNone: None, # <<<<<<<<<<<<<<
3933
- * wkbLinearRing: 'LinearRing',
4001
+ * wkbLinearRing: "LinearRing",
3934
4002
  * # WARNING: Measured types are not supported in GEOS and downstream uses
3935
4003
  */
3936
4004
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbNone); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error)
@@ -3939,9 +4007,9 @@ if (!__Pyx_RefNanny) {
3939
4007
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3940
4008
 
3941
4009
  /* "pyogrio/_geometry.pyx":20
3942
- * wkbGeometryCollection: 'GeometryCollection',
4010
+ * wkbGeometryCollection: "GeometryCollection",
3943
4011
  * wkbNone: None,
3944
- * wkbLinearRing: 'LinearRing', # <<<<<<<<<<<<<<
4012
+ * wkbLinearRing: "LinearRing", # <<<<<<<<<<<<<<
3945
4013
  * # WARNING: Measured types are not supported in GEOS and downstream uses
3946
4014
  * # these are stripped automatically to their corresponding 2D / 3D types
3947
4015
  */
@@ -3953,9 +4021,9 @@ if (!__Pyx_RefNanny) {
3953
4021
  /* "pyogrio/_geometry.pyx":23
3954
4022
  * # WARNING: Measured types are not supported in GEOS and downstream uses
3955
4023
  * # these are stripped automatically to their corresponding 2D / 3D types
3956
- * wkbPointM: 'PointM', # <<<<<<<<<<<<<<
3957
- * wkbLineStringM: 'Measured LineString',
3958
- * wkbPolygonM: 'Measured Polygon',
4024
+ * wkbPointM: "PointM", # <<<<<<<<<<<<<<
4025
+ * wkbLineStringM: "Measured LineString",
4026
+ * wkbPolygonM: "Measured Polygon",
3959
4027
  */
3960
4028
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbPointM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error)
3961
4029
  __Pyx_GOTREF(__pyx_t_3);
@@ -3964,10 +4032,10 @@ if (!__Pyx_RefNanny) {
3964
4032
 
3965
4033
  /* "pyogrio/_geometry.pyx":24
3966
4034
  * # these are stripped automatically to their corresponding 2D / 3D types
3967
- * wkbPointM: 'PointM',
3968
- * wkbLineStringM: 'Measured LineString', # <<<<<<<<<<<<<<
3969
- * wkbPolygonM: 'Measured Polygon',
3970
- * wkbMultiPointM: 'Measured MultiPoint',
4035
+ * wkbPointM: "PointM",
4036
+ * wkbLineStringM: "Measured LineString", # <<<<<<<<<<<<<<
4037
+ * wkbPolygonM: "Measured Polygon",
4038
+ * wkbMultiPointM: "Measured MultiPoint",
3971
4039
  */
3972
4040
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbLineStringM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error)
3973
4041
  __Pyx_GOTREF(__pyx_t_3);
@@ -3975,11 +4043,11 @@ if (!__Pyx_RefNanny) {
3975
4043
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3976
4044
 
3977
4045
  /* "pyogrio/_geometry.pyx":25
3978
- * wkbPointM: 'PointM',
3979
- * wkbLineStringM: 'Measured LineString',
3980
- * wkbPolygonM: 'Measured Polygon', # <<<<<<<<<<<<<<
3981
- * wkbMultiPointM: 'Measured MultiPoint',
3982
- * wkbMultiLineStringM: 'Measured MultiLineString',
4046
+ * wkbPointM: "PointM",
4047
+ * wkbLineStringM: "Measured LineString",
4048
+ * wkbPolygonM: "Measured Polygon", # <<<<<<<<<<<<<<
4049
+ * wkbMultiPointM: "Measured MultiPoint",
4050
+ * wkbMultiLineStringM: "Measured MultiLineString",
3983
4051
  */
3984
4052
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbPolygonM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 25, __pyx_L1_error)
3985
4053
  __Pyx_GOTREF(__pyx_t_3);
@@ -3987,11 +4055,11 @@ if (!__Pyx_RefNanny) {
3987
4055
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3988
4056
 
3989
4057
  /* "pyogrio/_geometry.pyx":26
3990
- * wkbLineStringM: 'Measured LineString',
3991
- * wkbPolygonM: 'Measured Polygon',
3992
- * wkbMultiPointM: 'Measured MultiPoint', # <<<<<<<<<<<<<<
3993
- * wkbMultiLineStringM: 'Measured MultiLineString',
3994
- * wkbMultiPolygonM: 'Measured MultiPolygon',
4058
+ * wkbLineStringM: "Measured LineString",
4059
+ * wkbPolygonM: "Measured Polygon",
4060
+ * wkbMultiPointM: "Measured MultiPoint", # <<<<<<<<<<<<<<
4061
+ * wkbMultiLineStringM: "Measured MultiLineString",
4062
+ * wkbMultiPolygonM: "Measured MultiPolygon",
3995
4063
  */
3996
4064
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbMultiPointM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 26, __pyx_L1_error)
3997
4065
  __Pyx_GOTREF(__pyx_t_3);
@@ -3999,11 +4067,11 @@ if (!__Pyx_RefNanny) {
3999
4067
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4000
4068
 
4001
4069
  /* "pyogrio/_geometry.pyx":27
4002
- * wkbPolygonM: 'Measured Polygon',
4003
- * wkbMultiPointM: 'Measured MultiPoint',
4004
- * wkbMultiLineStringM: 'Measured MultiLineString', # <<<<<<<<<<<<<<
4005
- * wkbMultiPolygonM: 'Measured MultiPolygon',
4006
- * wkbGeometryCollectionM: 'Measured GeometryCollection',
4070
+ * wkbPolygonM: "Measured Polygon",
4071
+ * wkbMultiPointM: "Measured MultiPoint",
4072
+ * wkbMultiLineStringM: "Measured MultiLineString", # <<<<<<<<<<<<<<
4073
+ * wkbMultiPolygonM: "Measured MultiPolygon",
4074
+ * wkbGeometryCollectionM: "Measured GeometryCollection",
4007
4075
  */
4008
4076
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbMultiLineStringM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 27, __pyx_L1_error)
4009
4077
  __Pyx_GOTREF(__pyx_t_3);
@@ -4011,11 +4079,11 @@ if (!__Pyx_RefNanny) {
4011
4079
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4012
4080
 
4013
4081
  /* "pyogrio/_geometry.pyx":28
4014
- * wkbMultiPointM: 'Measured MultiPoint',
4015
- * wkbMultiLineStringM: 'Measured MultiLineString',
4016
- * wkbMultiPolygonM: 'Measured MultiPolygon', # <<<<<<<<<<<<<<
4017
- * wkbGeometryCollectionM: 'Measured GeometryCollection',
4018
- * wkbPointZM: 'Measured 3D Point',
4082
+ * wkbMultiPointM: "Measured MultiPoint",
4083
+ * wkbMultiLineStringM: "Measured MultiLineString",
4084
+ * wkbMultiPolygonM: "Measured MultiPolygon", # <<<<<<<<<<<<<<
4085
+ * wkbGeometryCollectionM: "Measured GeometryCollection",
4086
+ * wkbPointZM: "Measured 3D Point",
4019
4087
  */
4020
4088
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbMultiPolygonM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 28, __pyx_L1_error)
4021
4089
  __Pyx_GOTREF(__pyx_t_3);
@@ -4023,11 +4091,11 @@ if (!__Pyx_RefNanny) {
4023
4091
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4024
4092
 
4025
4093
  /* "pyogrio/_geometry.pyx":29
4026
- * wkbMultiLineStringM: 'Measured MultiLineString',
4027
- * wkbMultiPolygonM: 'Measured MultiPolygon',
4028
- * wkbGeometryCollectionM: 'Measured GeometryCollection', # <<<<<<<<<<<<<<
4029
- * wkbPointZM: 'Measured 3D Point',
4030
- * wkbLineStringZM: 'Measured 3D LineString',
4094
+ * wkbMultiLineStringM: "Measured MultiLineString",
4095
+ * wkbMultiPolygonM: "Measured MultiPolygon",
4096
+ * wkbGeometryCollectionM: "Measured GeometryCollection", # <<<<<<<<<<<<<<
4097
+ * wkbPointZM: "Measured 3D Point",
4098
+ * wkbLineStringZM: "Measured 3D LineString",
4031
4099
  */
4032
4100
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbGeometryCollectionM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 29, __pyx_L1_error)
4033
4101
  __Pyx_GOTREF(__pyx_t_3);
@@ -4035,11 +4103,11 @@ if (!__Pyx_RefNanny) {
4035
4103
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4036
4104
 
4037
4105
  /* "pyogrio/_geometry.pyx":30
4038
- * wkbMultiPolygonM: 'Measured MultiPolygon',
4039
- * wkbGeometryCollectionM: 'Measured GeometryCollection',
4040
- * wkbPointZM: 'Measured 3D Point', # <<<<<<<<<<<<<<
4041
- * wkbLineStringZM: 'Measured 3D LineString',
4042
- * wkbPolygonZM: 'Measured 3D Polygon',
4106
+ * wkbMultiPolygonM: "Measured MultiPolygon",
4107
+ * wkbGeometryCollectionM: "Measured GeometryCollection",
4108
+ * wkbPointZM: "Measured 3D Point", # <<<<<<<<<<<<<<
4109
+ * wkbLineStringZM: "Measured 3D LineString",
4110
+ * wkbPolygonZM: "Measured 3D Polygon",
4043
4111
  */
4044
4112
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbPointZM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 30, __pyx_L1_error)
4045
4113
  __Pyx_GOTREF(__pyx_t_3);
@@ -4047,11 +4115,11 @@ if (!__Pyx_RefNanny) {
4047
4115
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4048
4116
 
4049
4117
  /* "pyogrio/_geometry.pyx":31
4050
- * wkbGeometryCollectionM: 'Measured GeometryCollection',
4051
- * wkbPointZM: 'Measured 3D Point',
4052
- * wkbLineStringZM: 'Measured 3D LineString', # <<<<<<<<<<<<<<
4053
- * wkbPolygonZM: 'Measured 3D Polygon',
4054
- * wkbMultiPointZM: 'Measured 3D MultiPoint',
4118
+ * wkbGeometryCollectionM: "Measured GeometryCollection",
4119
+ * wkbPointZM: "Measured 3D Point",
4120
+ * wkbLineStringZM: "Measured 3D LineString", # <<<<<<<<<<<<<<
4121
+ * wkbPolygonZM: "Measured 3D Polygon",
4122
+ * wkbMultiPointZM: "Measured 3D MultiPoint",
4055
4123
  */
4056
4124
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbLineStringZM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L1_error)
4057
4125
  __Pyx_GOTREF(__pyx_t_3);
@@ -4059,11 +4127,11 @@ if (!__Pyx_RefNanny) {
4059
4127
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4060
4128
 
4061
4129
  /* "pyogrio/_geometry.pyx":32
4062
- * wkbPointZM: 'Measured 3D Point',
4063
- * wkbLineStringZM: 'Measured 3D LineString',
4064
- * wkbPolygonZM: 'Measured 3D Polygon', # <<<<<<<<<<<<<<
4065
- * wkbMultiPointZM: 'Measured 3D MultiPoint',
4066
- * wkbMultiLineStringZM: 'Measured 3D MultiLineString',
4130
+ * wkbPointZM: "Measured 3D Point",
4131
+ * wkbLineStringZM: "Measured 3D LineString",
4132
+ * wkbPolygonZM: "Measured 3D Polygon", # <<<<<<<<<<<<<<
4133
+ * wkbMultiPointZM: "Measured 3D MultiPoint",
4134
+ * wkbMultiLineStringZM: "Measured 3D MultiLineString",
4067
4135
  */
4068
4136
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbPolygonZM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error)
4069
4137
  __Pyx_GOTREF(__pyx_t_3);
@@ -4071,11 +4139,11 @@ if (!__Pyx_RefNanny) {
4071
4139
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4072
4140
 
4073
4141
  /* "pyogrio/_geometry.pyx":33
4074
- * wkbLineStringZM: 'Measured 3D LineString',
4075
- * wkbPolygonZM: 'Measured 3D Polygon',
4076
- * wkbMultiPointZM: 'Measured 3D MultiPoint', # <<<<<<<<<<<<<<
4077
- * wkbMultiLineStringZM: 'Measured 3D MultiLineString',
4078
- * wkbMultiPolygonZM: 'Measured 3D MultiPolygon',
4142
+ * wkbLineStringZM: "Measured 3D LineString",
4143
+ * wkbPolygonZM: "Measured 3D Polygon",
4144
+ * wkbMultiPointZM: "Measured 3D MultiPoint", # <<<<<<<<<<<<<<
4145
+ * wkbMultiLineStringZM: "Measured 3D MultiLineString",
4146
+ * wkbMultiPolygonZM: "Measured 3D MultiPolygon",
4079
4147
  */
4080
4148
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbMultiPointZM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 33, __pyx_L1_error)
4081
4149
  __Pyx_GOTREF(__pyx_t_3);
@@ -4083,11 +4151,11 @@ if (!__Pyx_RefNanny) {
4083
4151
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4084
4152
 
4085
4153
  /* "pyogrio/_geometry.pyx":34
4086
- * wkbPolygonZM: 'Measured 3D Polygon',
4087
- * wkbMultiPointZM: 'Measured 3D MultiPoint',
4088
- * wkbMultiLineStringZM: 'Measured 3D MultiLineString', # <<<<<<<<<<<<<<
4089
- * wkbMultiPolygonZM: 'Measured 3D MultiPolygon',
4090
- * wkbGeometryCollectionZM: 'Measured 3D GeometryCollection',
4154
+ * wkbPolygonZM: "Measured 3D Polygon",
4155
+ * wkbMultiPointZM: "Measured 3D MultiPoint",
4156
+ * wkbMultiLineStringZM: "Measured 3D MultiLineString", # <<<<<<<<<<<<<<
4157
+ * wkbMultiPolygonZM: "Measured 3D MultiPolygon",
4158
+ * wkbGeometryCollectionZM: "Measured 3D GeometryCollection",
4091
4159
  */
4092
4160
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbMultiLineStringZM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 34, __pyx_L1_error)
4093
4161
  __Pyx_GOTREF(__pyx_t_3);
@@ -4095,11 +4163,11 @@ if (!__Pyx_RefNanny) {
4095
4163
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4096
4164
 
4097
4165
  /* "pyogrio/_geometry.pyx":35
4098
- * wkbMultiPointZM: 'Measured 3D MultiPoint',
4099
- * wkbMultiLineStringZM: 'Measured 3D MultiLineString',
4100
- * wkbMultiPolygonZM: 'Measured 3D MultiPolygon', # <<<<<<<<<<<<<<
4101
- * wkbGeometryCollectionZM: 'Measured 3D GeometryCollection',
4102
- * wkbPoint25D: 'Point Z',
4166
+ * wkbMultiPointZM: "Measured 3D MultiPoint",
4167
+ * wkbMultiLineStringZM: "Measured 3D MultiLineString",
4168
+ * wkbMultiPolygonZM: "Measured 3D MultiPolygon", # <<<<<<<<<<<<<<
4169
+ * wkbGeometryCollectionZM: "Measured 3D GeometryCollection",
4170
+ * wkbPoint25D: "Point Z",
4103
4171
  */
4104
4172
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbMultiPolygonZM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 35, __pyx_L1_error)
4105
4173
  __Pyx_GOTREF(__pyx_t_3);
@@ -4107,11 +4175,11 @@ if (!__Pyx_RefNanny) {
4107
4175
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4108
4176
 
4109
4177
  /* "pyogrio/_geometry.pyx":36
4110
- * wkbMultiLineStringZM: 'Measured 3D MultiLineString',
4111
- * wkbMultiPolygonZM: 'Measured 3D MultiPolygon',
4112
- * wkbGeometryCollectionZM: 'Measured 3D GeometryCollection', # <<<<<<<<<<<<<<
4113
- * wkbPoint25D: 'Point Z',
4114
- * wkbLineString25D: 'LineString Z',
4178
+ * wkbMultiLineStringZM: "Measured 3D MultiLineString",
4179
+ * wkbMultiPolygonZM: "Measured 3D MultiPolygon",
4180
+ * wkbGeometryCollectionZM: "Measured 3D GeometryCollection", # <<<<<<<<<<<<<<
4181
+ * wkbPoint25D: "Point Z",
4182
+ * wkbLineString25D: "LineString Z",
4115
4183
  */
4116
4184
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbGeometryCollectionZM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 36, __pyx_L1_error)
4117
4185
  __Pyx_GOTREF(__pyx_t_3);
@@ -4119,11 +4187,11 @@ if (!__Pyx_RefNanny) {
4119
4187
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4120
4188
 
4121
4189
  /* "pyogrio/_geometry.pyx":37
4122
- * wkbMultiPolygonZM: 'Measured 3D MultiPolygon',
4123
- * wkbGeometryCollectionZM: 'Measured 3D GeometryCollection',
4124
- * wkbPoint25D: 'Point Z', # <<<<<<<<<<<<<<
4125
- * wkbLineString25D: 'LineString Z',
4126
- * wkbPolygon25D: 'Polygon Z',
4190
+ * wkbMultiPolygonZM: "Measured 3D MultiPolygon",
4191
+ * wkbGeometryCollectionZM: "Measured 3D GeometryCollection",
4192
+ * wkbPoint25D: "Point Z", # <<<<<<<<<<<<<<
4193
+ * wkbLineString25D: "LineString Z",
4194
+ * wkbPolygon25D: "Polygon Z",
4127
4195
  */
4128
4196
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbPoint25D); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error)
4129
4197
  __Pyx_GOTREF(__pyx_t_3);
@@ -4131,11 +4199,11 @@ if (!__Pyx_RefNanny) {
4131
4199
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4132
4200
 
4133
4201
  /* "pyogrio/_geometry.pyx":38
4134
- * wkbGeometryCollectionZM: 'Measured 3D GeometryCollection',
4135
- * wkbPoint25D: 'Point Z',
4136
- * wkbLineString25D: 'LineString Z', # <<<<<<<<<<<<<<
4137
- * wkbPolygon25D: 'Polygon Z',
4138
- * wkbMultiPoint25D: 'MultiPoint Z',
4202
+ * wkbGeometryCollectionZM: "Measured 3D GeometryCollection",
4203
+ * wkbPoint25D: "Point Z",
4204
+ * wkbLineString25D: "LineString Z", # <<<<<<<<<<<<<<
4205
+ * wkbPolygon25D: "Polygon Z",
4206
+ * wkbMultiPoint25D: "MultiPoint Z",
4139
4207
  */
4140
4208
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbLineString25D); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 38, __pyx_L1_error)
4141
4209
  __Pyx_GOTREF(__pyx_t_3);
@@ -4143,11 +4211,11 @@ if (!__Pyx_RefNanny) {
4143
4211
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4144
4212
 
4145
4213
  /* "pyogrio/_geometry.pyx":39
4146
- * wkbPoint25D: 'Point Z',
4147
- * wkbLineString25D: 'LineString Z',
4148
- * wkbPolygon25D: 'Polygon Z', # <<<<<<<<<<<<<<
4149
- * wkbMultiPoint25D: 'MultiPoint Z',
4150
- * wkbMultiLineString25D: 'MultiLineString Z',
4214
+ * wkbPoint25D: "Point Z",
4215
+ * wkbLineString25D: "LineString Z",
4216
+ * wkbPolygon25D: "Polygon Z", # <<<<<<<<<<<<<<
4217
+ * wkbMultiPoint25D: "MultiPoint Z",
4218
+ * wkbMultiLineString25D: "MultiLineString Z",
4151
4219
  */
4152
4220
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbPolygon25D); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 39, __pyx_L1_error)
4153
4221
  __Pyx_GOTREF(__pyx_t_3);
@@ -4155,11 +4223,11 @@ if (!__Pyx_RefNanny) {
4155
4223
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4156
4224
 
4157
4225
  /* "pyogrio/_geometry.pyx":40
4158
- * wkbLineString25D: 'LineString Z',
4159
- * wkbPolygon25D: 'Polygon Z',
4160
- * wkbMultiPoint25D: 'MultiPoint Z', # <<<<<<<<<<<<<<
4161
- * wkbMultiLineString25D: 'MultiLineString Z',
4162
- * wkbMultiPolygon25D: 'MultiPolygon Z',
4226
+ * wkbLineString25D: "LineString Z",
4227
+ * wkbPolygon25D: "Polygon Z",
4228
+ * wkbMultiPoint25D: "MultiPoint Z", # <<<<<<<<<<<<<<
4229
+ * wkbMultiLineString25D: "MultiLineString Z",
4230
+ * wkbMultiPolygon25D: "MultiPolygon Z",
4163
4231
  */
4164
4232
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbMultiPoint25D); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 40, __pyx_L1_error)
4165
4233
  __Pyx_GOTREF(__pyx_t_3);
@@ -4167,11 +4235,11 @@ if (!__Pyx_RefNanny) {
4167
4235
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4168
4236
 
4169
4237
  /* "pyogrio/_geometry.pyx":41
4170
- * wkbPolygon25D: 'Polygon Z',
4171
- * wkbMultiPoint25D: 'MultiPoint Z',
4172
- * wkbMultiLineString25D: 'MultiLineString Z', # <<<<<<<<<<<<<<
4173
- * wkbMultiPolygon25D: 'MultiPolygon Z',
4174
- * wkbGeometryCollection25D: 'GeometryCollection Z',
4238
+ * wkbPolygon25D: "Polygon Z",
4239
+ * wkbMultiPoint25D: "MultiPoint Z",
4240
+ * wkbMultiLineString25D: "MultiLineString Z", # <<<<<<<<<<<<<<
4241
+ * wkbMultiPolygon25D: "MultiPolygon Z",
4242
+ * wkbGeometryCollection25D: "GeometryCollection Z",
4175
4243
  */
4176
4244
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbMultiLineString25D); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 41, __pyx_L1_error)
4177
4245
  __Pyx_GOTREF(__pyx_t_3);
@@ -4179,10 +4247,10 @@ if (!__Pyx_RefNanny) {
4179
4247
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4180
4248
 
4181
4249
  /* "pyogrio/_geometry.pyx":42
4182
- * wkbMultiPoint25D: 'MultiPoint Z',
4183
- * wkbMultiLineString25D: 'MultiLineString Z',
4184
- * wkbMultiPolygon25D: 'MultiPolygon Z', # <<<<<<<<<<<<<<
4185
- * wkbGeometryCollection25D: 'GeometryCollection Z',
4250
+ * wkbMultiPoint25D: "MultiPoint Z",
4251
+ * wkbMultiLineString25D: "MultiLineString Z",
4252
+ * wkbMultiPolygon25D: "MultiPolygon Z", # <<<<<<<<<<<<<<
4253
+ * wkbGeometryCollection25D: "GeometryCollection Z",
4186
4254
  * }
4187
4255
  */
4188
4256
  __pyx_t_3 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbMultiPolygon25D); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 42, __pyx_L1_error)
@@ -4191,9 +4259,9 @@ if (!__Pyx_RefNanny) {
4191
4259
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4192
4260
 
4193
4261
  /* "pyogrio/_geometry.pyx":43
4194
- * wkbMultiLineString25D: 'MultiLineString Z',
4195
- * wkbMultiPolygon25D: 'MultiPolygon Z',
4196
- * wkbGeometryCollection25D: 'GeometryCollection Z', # <<<<<<<<<<<<<<
4262
+ * wkbMultiLineString25D: "MultiLineString Z",
4263
+ * wkbMultiPolygon25D: "MultiPolygon Z",
4264
+ * wkbGeometryCollection25D: "GeometryCollection Z", # <<<<<<<<<<<<<<
4197
4265
  * }
4198
4266
  *
4199
4267
  */
@@ -4207,7 +4275,7 @@ if (!__Pyx_RefNanny) {
4207
4275
  /* "pyogrio/_geometry.pyx":46
4208
4276
  * }
4209
4277
  *
4210
- * GEOMETRY_TYPE_CODES = {v:k for k, v in GEOMETRY_TYPES.items()} # <<<<<<<<<<<<<<
4278
+ * GEOMETRY_TYPE_CODES = {v: k for k, v in GEOMETRY_TYPES.items()} # <<<<<<<<<<<<<<
4211
4279
  *
4212
4280
  * # add additional aliases from 2.5D format
4213
4281
  */
@@ -4264,8 +4332,8 @@ if (!__Pyx_RefNanny) {
4264
4332
  *
4265
4333
  * # add additional aliases from 2.5D format
4266
4334
  * GEOMETRY_TYPE_CODES.update({ # <<<<<<<<<<<<<<
4267
- * '2.5D Point': wkbPoint25D,
4268
- * '2.5D LineString': wkbLineString25D,
4335
+ * "2.5D Point": wkbPoint25D,
4336
+ * "2.5D LineString": wkbLineString25D,
4269
4337
  */
4270
4338
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_GEOMETRY_TYPE_CODES); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error)
4271
4339
  __Pyx_GOTREF(__pyx_t_2);
@@ -4276,9 +4344,9 @@ if (!__Pyx_RefNanny) {
4276
4344
  /* "pyogrio/_geometry.pyx":50
4277
4345
  * # add additional aliases from 2.5D format
4278
4346
  * GEOMETRY_TYPE_CODES.update({
4279
- * '2.5D Point': wkbPoint25D, # <<<<<<<<<<<<<<
4280
- * '2.5D LineString': wkbLineString25D,
4281
- * '2.5D Polygon': wkbPolygon25D,
4347
+ * "2.5D Point": wkbPoint25D, # <<<<<<<<<<<<<<
4348
+ * "2.5D LineString": wkbLineString25D,
4349
+ * "2.5D Polygon": wkbPolygon25D,
4282
4350
  */
4283
4351
  __pyx_t_2 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 50, __pyx_L1_error)
4284
4352
  __Pyx_GOTREF(__pyx_t_2);
@@ -4289,10 +4357,10 @@ if (!__Pyx_RefNanny) {
4289
4357
 
4290
4358
  /* "pyogrio/_geometry.pyx":51
4291
4359
  * GEOMETRY_TYPE_CODES.update({
4292
- * '2.5D Point': wkbPoint25D,
4293
- * '2.5D LineString': wkbLineString25D, # <<<<<<<<<<<<<<
4294
- * '2.5D Polygon': wkbPolygon25D,
4295
- * '2.5D MultiPoint': wkbMultiPoint25D,
4360
+ * "2.5D Point": wkbPoint25D,
4361
+ * "2.5D LineString": wkbLineString25D, # <<<<<<<<<<<<<<
4362
+ * "2.5D Polygon": wkbPolygon25D,
4363
+ * "2.5D MultiPoint": wkbMultiPoint25D,
4296
4364
  */
4297
4365
  __pyx_t_7 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbLineString25D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 51, __pyx_L1_error)
4298
4366
  __Pyx_GOTREF(__pyx_t_7);
@@ -4300,11 +4368,11 @@ if (!__Pyx_RefNanny) {
4300
4368
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4301
4369
 
4302
4370
  /* "pyogrio/_geometry.pyx":52
4303
- * '2.5D Point': wkbPoint25D,
4304
- * '2.5D LineString': wkbLineString25D,
4305
- * '2.5D Polygon': wkbPolygon25D, # <<<<<<<<<<<<<<
4306
- * '2.5D MultiPoint': wkbMultiPoint25D,
4307
- * '2.5D MultiLineString': wkbMultiLineString25D,
4371
+ * "2.5D Point": wkbPoint25D,
4372
+ * "2.5D LineString": wkbLineString25D,
4373
+ * "2.5D Polygon": wkbPolygon25D, # <<<<<<<<<<<<<<
4374
+ * "2.5D MultiPoint": wkbMultiPoint25D,
4375
+ * "2.5D MultiLineString": wkbMultiLineString25D,
4308
4376
  */
4309
4377
  __pyx_t_7 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbPolygon25D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 52, __pyx_L1_error)
4310
4378
  __Pyx_GOTREF(__pyx_t_7);
@@ -4312,11 +4380,11 @@ if (!__Pyx_RefNanny) {
4312
4380
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4313
4381
 
4314
4382
  /* "pyogrio/_geometry.pyx":53
4315
- * '2.5D LineString': wkbLineString25D,
4316
- * '2.5D Polygon': wkbPolygon25D,
4317
- * '2.5D MultiPoint': wkbMultiPoint25D, # <<<<<<<<<<<<<<
4318
- * '2.5D MultiLineString': wkbMultiLineString25D,
4319
- * '2.5D MultiPolygon': wkbMultiPolygon25D,
4383
+ * "2.5D LineString": wkbLineString25D,
4384
+ * "2.5D Polygon": wkbPolygon25D,
4385
+ * "2.5D MultiPoint": wkbMultiPoint25D, # <<<<<<<<<<<<<<
4386
+ * "2.5D MultiLineString": wkbMultiLineString25D,
4387
+ * "2.5D MultiPolygon": wkbMultiPolygon25D,
4320
4388
  */
4321
4389
  __pyx_t_7 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbMultiPoint25D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 53, __pyx_L1_error)
4322
4390
  __Pyx_GOTREF(__pyx_t_7);
@@ -4324,11 +4392,11 @@ if (!__Pyx_RefNanny) {
4324
4392
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4325
4393
 
4326
4394
  /* "pyogrio/_geometry.pyx":54
4327
- * '2.5D Polygon': wkbPolygon25D,
4328
- * '2.5D MultiPoint': wkbMultiPoint25D,
4329
- * '2.5D MultiLineString': wkbMultiLineString25D, # <<<<<<<<<<<<<<
4330
- * '2.5D MultiPolygon': wkbMultiPolygon25D,
4331
- * '2.5D GeometryCollection': wkbGeometryCollection25D
4395
+ * "2.5D Polygon": wkbPolygon25D,
4396
+ * "2.5D MultiPoint": wkbMultiPoint25D,
4397
+ * "2.5D MultiLineString": wkbMultiLineString25D, # <<<<<<<<<<<<<<
4398
+ * "2.5D MultiPolygon": wkbMultiPolygon25D,
4399
+ * "2.5D GeometryCollection": wkbGeometryCollection25D
4332
4400
  */
4333
4401
  __pyx_t_7 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbMultiLineString25D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 54, __pyx_L1_error)
4334
4402
  __Pyx_GOTREF(__pyx_t_7);
@@ -4336,10 +4404,10 @@ if (!__Pyx_RefNanny) {
4336
4404
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4337
4405
 
4338
4406
  /* "pyogrio/_geometry.pyx":55
4339
- * '2.5D MultiPoint': wkbMultiPoint25D,
4340
- * '2.5D MultiLineString': wkbMultiLineString25D,
4341
- * '2.5D MultiPolygon': wkbMultiPolygon25D, # <<<<<<<<<<<<<<
4342
- * '2.5D GeometryCollection': wkbGeometryCollection25D
4407
+ * "2.5D MultiPoint": wkbMultiPoint25D,
4408
+ * "2.5D MultiLineString": wkbMultiLineString25D,
4409
+ * "2.5D MultiPolygon": wkbMultiPolygon25D, # <<<<<<<<<<<<<<
4410
+ * "2.5D GeometryCollection": wkbGeometryCollection25D
4343
4411
  * })
4344
4412
  */
4345
4413
  __pyx_t_7 = __Pyx_PyInt_From_OGRwkbGeometryType(wkbMultiPolygon25D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 55, __pyx_L1_error)
@@ -4348,9 +4416,9 @@ if (!__Pyx_RefNanny) {
4348
4416
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4349
4417
 
4350
4418
  /* "pyogrio/_geometry.pyx":56
4351
- * '2.5D MultiLineString': wkbMultiLineString25D,
4352
- * '2.5D MultiPolygon': wkbMultiPolygon25D,
4353
- * '2.5D GeometryCollection': wkbGeometryCollection25D # <<<<<<<<<<<<<<
4419
+ * "2.5D MultiLineString": wkbMultiLineString25D,
4420
+ * "2.5D MultiPolygon": wkbMultiPolygon25D,
4421
+ * "2.5D GeometryCollection": wkbGeometryCollection25D # <<<<<<<<<<<<<<
4354
4422
  * })
4355
4423
  *
4356
4424
  */
@@ -4363,8 +4431,8 @@ if (!__Pyx_RefNanny) {
4363
4431
  *
4364
4432
  * # add additional aliases from 2.5D format
4365
4433
  * GEOMETRY_TYPE_CODES.update({ # <<<<<<<<<<<<<<
4366
- * '2.5D Point': wkbPoint25D,
4367
- * '2.5D LineString': wkbLineString25D,
4434
+ * "2.5D Point": wkbPoint25D,
4435
+ * "2.5D LineString": wkbLineString25D,
4368
4436
  */
4369
4437
  __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 49, __pyx_L1_error)
4370
4438
  __Pyx_GOTREF(__pyx_t_7);
@@ -4376,8 +4444,8 @@ if (!__Pyx_RefNanny) {
4376
4444
  *
4377
4445
  * # 2.5D also represented using negative numbers not enumerated above
4378
4446
  * GEOMETRY_TYPES.update({ # <<<<<<<<<<<<<<
4379
- * -2147483647: 'Point Z',
4380
- * -2147483646: 'LineString Z',
4447
+ * -2147483647: "Point Z",
4448
+ * -2147483646: "LineString Z",
4381
4449
  */
4382
4450
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_GEOMETRY_TYPES); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 60, __pyx_L1_error)
4383
4451
  __Pyx_GOTREF(__pyx_t_7);
@@ -4388,9 +4456,9 @@ if (!__Pyx_RefNanny) {
4388
4456
  /* "pyogrio/_geometry.pyx":61
4389
4457
  * # 2.5D also represented using negative numbers not enumerated above
4390
4458
  * GEOMETRY_TYPES.update({
4391
- * -2147483647: 'Point Z', # <<<<<<<<<<<<<<
4392
- * -2147483646: 'LineString Z',
4393
- * -2147483645: 'Polygon Z',
4459
+ * -2147483647: "Point Z", # <<<<<<<<<<<<<<
4460
+ * -2147483646: "LineString Z",
4461
+ * -2147483645: "Polygon Z",
4394
4462
  */
4395
4463
  __pyx_t_7 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 61, __pyx_L1_error)
4396
4464
  __Pyx_GOTREF(__pyx_t_7);
@@ -4406,8 +4474,8 @@ if (!__Pyx_RefNanny) {
4406
4474
  *
4407
4475
  * # 2.5D also represented using negative numbers not enumerated above
4408
4476
  * GEOMETRY_TYPES.update({ # <<<<<<<<<<<<<<
4409
- * -2147483647: 'Point Z',
4410
- * -2147483646: 'LineString Z',
4477
+ * -2147483647: "Point Z",
4478
+ * -2147483646: "LineString Z",
4411
4479
  */
4412
4480
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error)
4413
4481
  __Pyx_GOTREF(__pyx_t_3);
@@ -5920,6 +5988,106 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
5920
5988
  }
5921
5989
  #endif
5922
5990
 
5991
+ /* TypeImport */
5992
+ #ifndef __PYX_HAVE_RT_ImportType_3_0_12
5993
+ #define __PYX_HAVE_RT_ImportType_3_0_12
5994
+ static PyTypeObject *__Pyx_ImportType_3_0_12(PyObject *module, const char *module_name, const char *class_name,
5995
+ size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_12 check_size)
5996
+ {
5997
+ PyObject *result = 0;
5998
+ char warning[200];
5999
+ Py_ssize_t basicsize;
6000
+ Py_ssize_t itemsize;
6001
+ #if CYTHON_COMPILING_IN_LIMITED_API
6002
+ PyObject *py_basicsize;
6003
+ PyObject *py_itemsize;
6004
+ #endif
6005
+ result = PyObject_GetAttrString(module, class_name);
6006
+ if (!result)
6007
+ goto bad;
6008
+ if (!PyType_Check(result)) {
6009
+ PyErr_Format(PyExc_TypeError,
6010
+ "%.200s.%.200s is not a type object",
6011
+ module_name, class_name);
6012
+ goto bad;
6013
+ }
6014
+ #if !CYTHON_COMPILING_IN_LIMITED_API
6015
+ basicsize = ((PyTypeObject *)result)->tp_basicsize;
6016
+ itemsize = ((PyTypeObject *)result)->tp_itemsize;
6017
+ #else
6018
+ py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
6019
+ if (!py_basicsize)
6020
+ goto bad;
6021
+ basicsize = PyLong_AsSsize_t(py_basicsize);
6022
+ Py_DECREF(py_basicsize);
6023
+ py_basicsize = 0;
6024
+ if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
6025
+ goto bad;
6026
+ py_itemsize = PyObject_GetAttrString(result, "__itemsize__");
6027
+ if (!py_itemsize)
6028
+ goto bad;
6029
+ itemsize = PyLong_AsSsize_t(py_itemsize);
6030
+ Py_DECREF(py_itemsize);
6031
+ py_itemsize = 0;
6032
+ if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred())
6033
+ goto bad;
6034
+ #endif
6035
+ if (itemsize) {
6036
+ if (size % alignment) {
6037
+ alignment = size % alignment;
6038
+ }
6039
+ if (itemsize < (Py_ssize_t)alignment)
6040
+ itemsize = (Py_ssize_t)alignment;
6041
+ }
6042
+ if ((size_t)(basicsize + itemsize) < size) {
6043
+ PyErr_Format(PyExc_ValueError,
6044
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
6045
+ "Expected %zd from C header, got %zd from PyObject",
6046
+ module_name, class_name, size, basicsize+itemsize);
6047
+ goto bad;
6048
+ }
6049
+ if (check_size == __Pyx_ImportType_CheckSize_Error_3_0_12 &&
6050
+ ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) {
6051
+ PyErr_Format(PyExc_ValueError,
6052
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
6053
+ "Expected %zd from C header, got %zd-%zd from PyObject",
6054
+ module_name, class_name, size, basicsize, basicsize+itemsize);
6055
+ goto bad;
6056
+ }
6057
+ else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_0_12 && (size_t)basicsize > size) {
6058
+ PyOS_snprintf(warning, sizeof(warning),
6059
+ "%s.%s size changed, may indicate binary incompatibility. "
6060
+ "Expected %zd from C header, got %zd from PyObject",
6061
+ module_name, class_name, size, basicsize);
6062
+ if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
6063
+ }
6064
+ return (PyTypeObject *)result;
6065
+ bad:
6066
+ Py_XDECREF(result);
6067
+ return NULL;
6068
+ }
6069
+ #endif
6070
+
6071
+ /* GetVTable */
6072
+ static void* __Pyx_GetVtable(PyTypeObject *type) {
6073
+ void* ptr;
6074
+ #if CYTHON_COMPILING_IN_LIMITED_API
6075
+ PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_n_s_pyx_vtable);
6076
+ #else
6077
+ PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_n_s_pyx_vtable);
6078
+ #endif
6079
+ if (!ob)
6080
+ goto bad;
6081
+ ptr = PyCapsule_GetPointer(ob, 0);
6082
+ if (!ptr && !PyErr_Occurred())
6083
+ PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type");
6084
+ Py_DECREF(ob);
6085
+ return ptr;
6086
+ bad:
6087
+ Py_XDECREF(ob);
6088
+ return NULL;
6089
+ }
6090
+
5923
6091
  /* Import */
5924
6092
  static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
5925
6093
  PyObject *module = 0;
@@ -6623,7 +6791,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
6623
6791
  #include "compile.h"
6624
6792
  #include "frameobject.h"
6625
6793
  #include "traceback.h"
6626
- #if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API
6794
+ #if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API && !defined(PYPY_VERSION)
6627
6795
  #ifndef Py_BUILD_CORE
6628
6796
  #define Py_BUILD_CORE 1
6629
6797
  #endif
@@ -7808,9 +7976,9 @@ bad:
7808
7976
  }
7809
7977
 
7810
7978
  /* FunctionImport */
7811
- #ifndef __PYX_HAVE_RT_ImportFunction_3_0_11
7812
- #define __PYX_HAVE_RT_ImportFunction_3_0_11
7813
- static int __Pyx_ImportFunction_3_0_11(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
7979
+ #ifndef __PYX_HAVE_RT_ImportFunction_3_0_12
7980
+ #define __PYX_HAVE_RT_ImportFunction_3_0_12
7981
+ static int __Pyx_ImportFunction_3_0_12(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
7814
7982
  PyObject *d = 0;
7815
7983
  PyObject *cobj = 0;
7816
7984
  union {