pyogrio 0.9.0__cp39-cp39-win_amd64.whl → 0.10.0__cp39-cp39-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 (104) hide show
  1. pyogrio/__init__.py +33 -22
  2. pyogrio/_compat.py +7 -1
  3. pyogrio/_env.py +4 -6
  4. pyogrio/_err.c +460 -445
  5. pyogrio/_err.cp39-win_amd64.pyd +0 -0
  6. pyogrio/_geometry.c +645 -612
  7. pyogrio/_geometry.cp39-win_amd64.pyd +0 -0
  8. pyogrio/_io.c +7749 -7596
  9. pyogrio/_io.cp39-win_amd64.pyd +0 -0
  10. pyogrio/_ogr.c +601 -609
  11. pyogrio/_ogr.cp39-win_amd64.pyd +0 -0
  12. pyogrio/_version.py +3 -3
  13. pyogrio/_vsi.c +7570 -2514
  14. pyogrio/_vsi.cp39-win_amd64.pyd +0 -0
  15. pyogrio/core.py +86 -20
  16. pyogrio/errors.py +9 -16
  17. pyogrio/gdal_data/GDAL-targets.cmake +1 -1
  18. pyogrio/gdal_data/GDALConfig.cmake +0 -1
  19. pyogrio/gdal_data/GDALConfigVersion.cmake +3 -3
  20. pyogrio/gdal_data/MM_m_idofic.csv +321 -0
  21. pyogrio/gdal_data/gdaltileindex.xsd +269 -0
  22. pyogrio/gdal_data/gdalvrt.xsd +130 -22
  23. pyogrio/gdal_data/ogrinfo_output.schema.json +23 -0
  24. pyogrio/gdal_data/ogrvrt.xsd +3 -0
  25. pyogrio/gdal_data/pci_datum.txt +222 -155
  26. pyogrio/gdal_data/pci_ellips.txt +90 -38
  27. pyogrio/gdal_data/vcpkg.spdx.json +21 -21
  28. pyogrio/gdal_data/vcpkg_abi_info.txt +27 -27
  29. pyogrio/geopandas.py +32 -24
  30. pyogrio/proj_data/proj-config-version.cmake +2 -2
  31. pyogrio/proj_data/proj-targets.cmake +1 -1
  32. pyogrio/proj_data/proj.db +0 -0
  33. pyogrio/proj_data/proj4-targets.cmake +1 -1
  34. pyogrio/proj_data/projjson.schema.json +1 -1
  35. pyogrio/proj_data/vcpkg.spdx.json +17 -17
  36. pyogrio/proj_data/vcpkg_abi_info.txt +15 -15
  37. pyogrio/raw.py +46 -30
  38. pyogrio/tests/conftest.py +206 -12
  39. pyogrio/tests/fixtures/README.md +32 -13
  40. pyogrio/tests/fixtures/curve.gpkg +0 -0
  41. pyogrio/tests/fixtures/{test_multisurface.gpkg → curvepolygon.gpkg} +0 -0
  42. pyogrio/tests/fixtures/line_zm.gpkg +0 -0
  43. pyogrio/tests/fixtures/multisurface.gpkg +0 -0
  44. pyogrio/tests/test_arrow.py +178 -24
  45. pyogrio/tests/test_core.py +162 -72
  46. pyogrio/tests/test_geopandas_io.py +239 -99
  47. pyogrio/tests/test_path.py +29 -17
  48. pyogrio/tests/test_raw_io.py +165 -54
  49. pyogrio/tests/test_util.py +56 -0
  50. pyogrio/util.py +54 -30
  51. pyogrio-0.10.0.dist-info/DELVEWHEEL +2 -0
  52. {pyogrio-0.9.0.dist-info → pyogrio-0.10.0.dist-info}/LICENSE +1 -1
  53. {pyogrio-0.9.0.dist-info → pyogrio-0.10.0.dist-info}/METADATA +37 -8
  54. {pyogrio-0.9.0.dist-info → pyogrio-0.10.0.dist-info}/RECORD +75 -91
  55. {pyogrio-0.9.0.dist-info → pyogrio-0.10.0.dist-info}/WHEEL +1 -1
  56. pyogrio.libs/.load-order-pyogrio-0.10.0 +18 -0
  57. pyogrio.libs/{Lerc-5e4d8cbeeabca06f95e2270792304dc3.dll → Lerc-089e3fef3df84b17326dcddbf1dedaa4.dll} +0 -0
  58. pyogrio.libs/{gdal-b434963605a006e01c486c0df6dea4e0.dll → gdal-debee5933f0da7bb90b4bcd009023377.dll} +0 -0
  59. pyogrio.libs/{geos-f0622d0794b81c937a851b2e6fa9b712.dll → geos-ace4c5b5c1f569bb4213e7bbd0b0322e.dll} +0 -0
  60. pyogrio.libs/{geos_c-0e16bf70612fc3301d077b9d863a3fdb.dll → geos_c-7478ca0a86136b280d9b2d245c6f6627.dll} +0 -0
  61. pyogrio.libs/geotiff-c8fe8a095520a4ea4e465d27e06add3a.dll +0 -0
  62. pyogrio.libs/{iconv-2-8fcc23ddc6f096c45871011b6e008b44.dll → iconv-2-27352d156a5467ca5383d3951093ea5a.dll} +0 -0
  63. pyogrio.libs/{jpeg62-2f9b7af22d78338e8f0be0058503dc35.dll → jpeg62-e56b6f95a95af498f4623b8da4cebd46.dll} +0 -0
  64. pyogrio.libs/{json-c-e52a077545e4057de42beb4948289b41.dll → json-c-c84940e2654a4f8468bfcf2ce992aa93.dll} +0 -0
  65. pyogrio.libs/libcurl-d69cfd4ad487d53d58743b6778ec85e7.dll +0 -0
  66. pyogrio.libs/{libexpat-fbe03ca8917dfda776562d4338b289b8.dll → libexpat-6576a8d02641b6a3dbad35901ec200a7.dll} +0 -0
  67. pyogrio.libs/liblzma-9ee4accb476ec1ae24e924953140273d.dll +0 -0
  68. pyogrio.libs/{libpng16-13928571ad910705eae8d7dd8eef8b11.dll → libpng16-7c36142dda59f186f6bb683e8dae2bfe.dll} +0 -0
  69. pyogrio.libs/{msvcp140-46db46e967c8db2cb7a20fc75872a57e.dll → msvcp140-98b3e5b80de1e5e9d1703b786d795623.dll} +0 -0
  70. pyogrio.libs/proj-a408c5327f3fd2f5fabe8c56815beed7.dll +0 -0
  71. pyogrio.libs/{qhull_r-c45abde5d0c92faf723cc2942138af77.dll → qhull_r-516897f855568caab1ab1fe37912766c.dll} +0 -0
  72. pyogrio.libs/sqlite3-9bc109d8536d5ed9666332fec94485fc.dll +0 -0
  73. pyogrio.libs/{tiff-43630f30487a9015213475ae86ed3fa3.dll → tiff-9b3f605fffe0bccc0a964c374ee4f820.dll} +0 -0
  74. pyogrio.libs/{zlib1-e1272810861a13dd8d6cff3beac47f17.dll → zlib1-e5af16a15c63f05bd82d90396807ae5b.dll} +0 -0
  75. pyogrio/_err.pxd +0 -4
  76. pyogrio/_err.pyx +0 -250
  77. pyogrio/_geometry.pxd +0 -4
  78. pyogrio/_geometry.pyx +0 -129
  79. pyogrio/_io.pxd +0 -0
  80. pyogrio/_io.pyx +0 -2742
  81. pyogrio/_ogr.pxd +0 -444
  82. pyogrio/_ogr.pyx +0 -346
  83. pyogrio/_vsi.pxd +0 -4
  84. pyogrio/_vsi.pyx +0 -140
  85. pyogrio/arrow_bridge.h +0 -115
  86. pyogrio/gdal_data/bag_template.xml +0 -201
  87. pyogrio/gdal_data/gmlasconf.xml +0 -169
  88. pyogrio/gdal_data/gmlasconf.xsd +0 -1066
  89. pyogrio/gdal_data/netcdf_config.xsd +0 -143
  90. pyogrio/gdal_data/template_tiles.mapml +0 -28
  91. pyogrio/tests/fixtures/poly_not_enough_points.shp.zip +0 -0
  92. pyogrio/tests/fixtures/test_datetime.geojson +0 -7
  93. pyogrio/tests/fixtures/test_datetime_tz.geojson +0 -8
  94. pyogrio/tests/fixtures/test_fgdb.gdb.zip +0 -0
  95. pyogrio/tests/fixtures/test_nested.geojson +0 -18
  96. pyogrio/tests/fixtures/test_ogr_types_list.geojson +0 -12
  97. pyogrio-0.9.0.dist-info/DELVEWHEEL +0 -2
  98. pyogrio.libs/.load-order-pyogrio-0.9.0 +0 -18
  99. pyogrio.libs/geotiff-772e7c705fb15ddf91b432adb4eb1f6c.dll +0 -0
  100. pyogrio.libs/libcurl-bc81cd8afe15b10c0821b181b6af8bd0.dll +0 -0
  101. pyogrio.libs/liblzma-6b36f24d54d3dd45f274a2aebef81085.dll +0 -0
  102. pyogrio.libs/proj-8a30239ef2dfc3b9dd2bb48e8abb330f.dll +0 -0
  103. pyogrio.libs/sqlite3-df30c3cf230727e23c43c40126a530f7.dll +0 -0
  104. {pyogrio-0.9.0.dist-info → pyogrio-0.10.0.dist-info}/top_level.txt +0 -0
@@ -3,13 +3,13 @@
3
3
  "spdxVersion": "SPDX-2.2",
4
4
  "dataLicense": "CC0-1.0",
5
5
  "SPDXID": "SPDXRef-DOCUMENT",
6
- "documentNamespace": "https://spdx.org/spdxdocs/proj-x64-windows-dynamic-release-9.4.0-daacbcc8-9226-41de-9883-fbe8ff1c19b2",
7
- "name": "proj:x64-windows-dynamic-release@9.4.0 516fa62b68e81f38b2aa8da0bb1252756e2fe2ca50e4bcfc768ed71aaf477468",
6
+ "documentNamespace": "https://spdx.org/spdxdocs/proj-x64-windows-dynamic-release-9.4.1-095f755e-004d-4a27-9645-4fbfcf353ec5",
7
+ "name": "proj:x64-windows-dynamic-release@9.4.1 3221250292d4cd48d645445f204396e392ced5a9f49a37c6db6c1d43e529dde7",
8
8
  "creationInfo": {
9
9
  "creators": [
10
- "Tool: vcpkg-d6945642ee5c3076addd1a42c331bbf4cfc97457"
10
+ "Tool: vcpkg-2024-08-01-fd884a0d390d12783076341bd43d77c3a6a15658"
11
11
  ],
12
- "created": "2024-06-17T19:46:20Z"
12
+ "created": "2024-09-05T06:36:23Z"
13
13
  },
14
14
  "relationships": [
15
15
  {
@@ -87,8 +87,8 @@
87
87
  {
88
88
  "name": "proj",
89
89
  "SPDXID": "SPDXRef-port",
90
- "versionInfo": "9.4.0",
91
- "downloadLocation": "git+https://github.com/Microsoft/vcpkg@62e9ace469641b907291184ebc7e76d96f629881",
90
+ "versionInfo": "9.4.1",
91
+ "downloadLocation": "git+https://github.com/Microsoft/vcpkg@dafa38417689eb52c17a425ace8e1f3ecfb74045",
92
92
  "homepage": "https://proj.org/",
93
93
  "licenseConcluded": "MIT",
94
94
  "licenseDeclared": "NOASSERTION",
@@ -99,7 +99,7 @@
99
99
  {
100
100
  "name": "proj:x64-windows-dynamic-release",
101
101
  "SPDXID": "SPDXRef-binary",
102
- "versionInfo": "516fa62b68e81f38b2aa8da0bb1252756e2fe2ca50e4bcfc768ed71aaf477468",
102
+ "versionInfo": "3221250292d4cd48d645445f204396e392ced5a9f49a37c6db6c1d43e529dde7",
103
103
  "downloadLocation": "NONE",
104
104
  "licenseConcluded": "MIT",
105
105
  "licenseDeclared": "NOASSERTION",
@@ -109,21 +109,21 @@
109
109
  {
110
110
  "SPDXID": "SPDXRef-resource-1",
111
111
  "name": "OSGeo/PROJ",
112
- "downloadLocation": "git+https://github.com/OSGeo/PROJ@9.4.0",
112
+ "downloadLocation": "git+https://github.com/OSGeo/PROJ@9.4.1",
113
113
  "licenseConcluded": "NOASSERTION",
114
114
  "licenseDeclared": "NOASSERTION",
115
115
  "copyrightText": "NOASSERTION",
116
116
  "checksums": [
117
117
  {
118
118
  "algorithm": "SHA512",
119
- "checksumValue": "5bc53723a81d9950599d6c47a837de5e9052aa56f943951e3ad0911cbeb71585bac648f37b9b626f32bb5d0b481ce5aef9be0833910e53b4b015b573808b8981"
119
+ "checksumValue": "4b3ceb9e3b2213b0bb2fc839f4dd70e08ee53323465c7bb473131907e4b66c836623da115c7413dfd8bafd0a992fa173003063e2233ab577139ab8462655b6cc"
120
120
  }
121
121
  ]
122
122
  }
123
123
  ],
124
124
  "files": [
125
125
  {
126
- "fileName": "./C:/vcpkg/buildtrees/versioning_/versions/proj/62e9ace469641b907291184ebc7e76d96f629881/fix-proj4-targets-cmake.patch",
126
+ "fileName": "./C:/vcpkg/buildtrees/versioning_/versions/proj/dafa38417689eb52c17a425ace8e1f3ecfb74045/fix-proj4-targets-cmake.patch",
127
127
  "SPDXID": "SPDXRef-file-0",
128
128
  "checksums": [
129
129
  {
@@ -135,7 +135,7 @@
135
135
  "copyrightText": "NOASSERTION"
136
136
  },
137
137
  {
138
- "fileName": "./C:/vcpkg/buildtrees/versioning_/versions/proj/62e9ace469641b907291184ebc7e76d96f629881/fix-win-output-name.patch",
138
+ "fileName": "./C:/vcpkg/buildtrees/versioning_/versions/proj/dafa38417689eb52c17a425ace8e1f3ecfb74045/fix-win-output-name.patch",
139
139
  "SPDXID": "SPDXRef-file-1",
140
140
  "checksums": [
141
141
  {
@@ -147,19 +147,19 @@
147
147
  "copyrightText": "NOASSERTION"
148
148
  },
149
149
  {
150
- "fileName": "./C:/vcpkg/buildtrees/versioning_/versions/proj/62e9ace469641b907291184ebc7e76d96f629881/portfile.cmake",
150
+ "fileName": "./C:/vcpkg/buildtrees/versioning_/versions/proj/dafa38417689eb52c17a425ace8e1f3ecfb74045/portfile.cmake",
151
151
  "SPDXID": "SPDXRef-file-2",
152
152
  "checksums": [
153
153
  {
154
154
  "algorithm": "SHA256",
155
- "checksumValue": "58b4048cfc81891c1e32e41bc00b52ea7ae2821bd577b46ab63d2c962ef8747d"
155
+ "checksumValue": "c1e2909ff16c46a449fbb7e71e14ea3d33103491f21ce5191d899cafded1822f"
156
156
  }
157
157
  ],
158
158
  "licenseConcluded": "NOASSERTION",
159
159
  "copyrightText": "NOASSERTION"
160
160
  },
161
161
  {
162
- "fileName": "./C:/vcpkg/buildtrees/versioning_/versions/proj/62e9ace469641b907291184ebc7e76d96f629881/remove_toolset_restriction.patch",
162
+ "fileName": "./C:/vcpkg/buildtrees/versioning_/versions/proj/dafa38417689eb52c17a425ace8e1f3ecfb74045/remove_toolset_restriction.patch",
163
163
  "SPDXID": "SPDXRef-file-3",
164
164
  "checksums": [
165
165
  {
@@ -171,7 +171,7 @@
171
171
  "copyrightText": "NOASSERTION"
172
172
  },
173
173
  {
174
- "fileName": "./C:/vcpkg/buildtrees/versioning_/versions/proj/62e9ace469641b907291184ebc7e76d96f629881/usage",
174
+ "fileName": "./C:/vcpkg/buildtrees/versioning_/versions/proj/dafa38417689eb52c17a425ace8e1f3ecfb74045/usage",
175
175
  "SPDXID": "SPDXRef-file-4",
176
176
  "checksums": [
177
177
  {
@@ -183,12 +183,12 @@
183
183
  "copyrightText": "NOASSERTION"
184
184
  },
185
185
  {
186
- "fileName": "./C:/vcpkg/buildtrees/versioning_/versions/proj/62e9ace469641b907291184ebc7e76d96f629881/vcpkg.json",
186
+ "fileName": "./C:/vcpkg/buildtrees/versioning_/versions/proj/dafa38417689eb52c17a425ace8e1f3ecfb74045/vcpkg.json",
187
187
  "SPDXID": "SPDXRef-file-5",
188
188
  "checksums": [
189
189
  {
190
190
  "algorithm": "SHA256",
191
- "checksumValue": "d31d1d3beb5ef0890e4b5db1ee5b72a925a58aa53bfaee688d4b5af1cea2bba4"
191
+ "checksumValue": "0dbf128c799775bc808b756ed9800d1fd349f7d41b874ad78a204d17988b8737"
192
192
  }
193
193
  ],
194
194
  "licenseConcluded": "NOASSERTION",
@@ -1,28 +1,28 @@
1
- cmake 3.29.5
2
- curl 6a9f6535d0371ecc5300df22e045bc77397b1b9fa38595d0b422c548ef9b9a5f
1
+ cmake 3.30.3
2
+ curl fa497fcd4e5d3fd8f58bfa8f9006baaa188e5c93e8b79f9b5126abb4f495f28f
3
3
  features core;net;tiff
4
4
  fix-proj4-targets-cmake.patch d76e1d419d3367dda3381fd11a637f3465bc838d611fa8ceaca20048c1b3cd6e
5
5
  fix-win-output-name.patch 706e536cfe9a90c1b071ab5b00932fa96bb35c67fcb0f96c0fc4feb7c0b44011
6
- nlohmann-json 95fd97ffd2d90f42a00b57d6237e236f378adb7969ee808866e85439e0e522ca
7
- portfile.cmake 58b4048cfc81891c1e32e41bc00b52ea7ae2821bd577b46ab63d2c962ef8747d
8
- ports.cmake 0500e9e2422fe0084c99bdd0c9de4c7069b76da14c8b58228a7e95ebac43058a
6
+ nlohmann-json 1992b817b1214344e17bd46e22e4498057511c321df06607a03b40ba70ad0ec9
7
+ portfile.cmake c1e2909ff16c46a449fbb7e71e14ea3d33103491f21ce5191d899cafded1822f
8
+ ports.cmake 3581688c16865b2026d28240d7c6257b848475ffc9fe81b3f3d304973253cf5e
9
9
  post_build_checks 2
10
- powershell 7.4.2
10
+ powershell 7.4.5
11
11
  remove_toolset_restriction.patch 25c1c986673bd539f5ec920684a08b38d0d37d9e24b6793e5b79dbd717bde04e
12
- sqlite3 0ea00a282f5b99592dd974e790033e3709e3273da3ffc774f8db4fbe4f342f9c
13
- sqlite3 2753e40c21e926994e46e96f4ddf3cd0dc446c8e5fe4a5d6ba4c865827a6849c
14
- tiff ffa4985cd425743272cac47070bf68ec92b8919d8deeb849fb8e7bd7ec242df9
12
+ sqlite3 84e61031efc3524e589d914a2c94f365f4f4f144a9d91540a855cd6fda40f8ec
13
+ sqlite3 ffb3c277bdd19d8191a04558135a4e193077986db6a5c6a2fdd2a0baa5dbfddb
14
+ tiff 425dab9735e21a8cdea7696a65aada4e50bd6bb50c496df903d548c2fb92c7cc
15
15
  triplet x64-windows-dynamic-release
16
- triplet_abi 36210185afbd528d6d7303808480ab7d54f062730bbef9fc1603f69b72ca549a-e36df1c7f50ab25f9c182fa927d06c19ae082e0d599f132b3f655784b49e4b33-3361a17d8afbd07b0f5c7f4dac4bd892b23a29d3
16
+ triplet_abi 36210185afbd528d6d7303808480ab7d54f062730bbef9fc1603f69b72ca549a-35332a22d6cb1309b1967c1f42a8f3c0ff58fec1939f84bb1deef16946b27c77-3361a17d8afbd07b0f5c7f4dac4bd892b23a29d3
17
17
  usage 26169363c27e71a44cba9d703b22bbd13c191ab5e2d0612b3dd35c735c971fe6
18
- vcpkg-cmake fa107b73894bb46b2c72b30466a3255d25400d5579640cabf6665ac44176d095
19
- vcpkg-cmake-config 5a8514250466c9d2b68d50c2037242af99e55bd8fabcd47e0f10562bb3e69683
20
- vcpkg.json d31d1d3beb5ef0890e4b5db1ee5b72a925a58aa53bfaee688d4b5af1cea2bba4
18
+ vcpkg-cmake 12907141e9d55701694a88fd0cf5a014cb0ac18de8e6298f393fe85d9d6b2082
19
+ vcpkg-cmake-config 353dcf000b6eb17d159df15cc49bf4035aaf38f785d32fb5774689f0dc44f341
20
+ vcpkg.json 0dbf128c799775bc808b756ed9800d1fd349f7d41b874ad78a204d17988b8737
21
21
  vcpkg_check_features 943b217e0968d64cf2cb9c272608e6a0b497377e792034f819809a79e1502c2b
22
22
  vcpkg_copy_pdbs d57e4f196c82dc562a9968c6155073094513c31e2de475694143d3aa47954b1c
23
23
  vcpkg_copy_tools 3d45ff761bddbabe8923b52330168dc3abd295fa469d3f2e47cb14dce85332d5
24
- vcpkg_fixup_pkgconfig 904e67c46ecbb67379911bc1d7222855c0cbfcf1129bf47783858bcf0cc44970
24
+ vcpkg_fixup_pkgconfig 1a15f6c6d8e2b244d83a7514a0412d339127d2217d1df60ad1388b546c85f777
25
25
  vcpkg_from_git 96ed81968f76354c00096dd8cd4e63c6a235fa969334a11ab18d11c0c512ff58
26
26
  vcpkg_from_github b743742296a114ea1b18ae99672e02f142c4eb2bef7f57d36c038bedbfb0502f
27
27
  vcpkg_list f5de3ebcbc40a4db90622ade9aca918e2cf404dc0d91342fcde457d730e6fa29
28
- vcpkg_replace_string d43c8699ce27e25d47367c970d1c546f6bc36b6df8fb0be0c3986eb5830bd4f1
28
+ vcpkg_replace_string b450deb79207478b37119743e00808ebc42de0628e7b98c14ab24728bd5c78b8
pyogrio/raw.py CHANGED
@@ -1,8 +1,11 @@
1
- from io import BytesIO
1
+ """Low level functions to read and write OGR data sources."""
2
+
2
3
  import warnings
4
+ from io import BytesIO
5
+ from pathlib import Path
3
6
 
4
- from pyogrio._env import GDALEnv
5
7
  from pyogrio._compat import HAS_ARROW_API, HAS_ARROW_WRITE_API, HAS_PYARROW
8
+ from pyogrio._env import GDALEnv
6
9
  from pyogrio.core import detect_write_driver
7
10
  from pyogrio.errors import DataSourceError
8
11
  from pyogrio.util import (
@@ -18,8 +21,8 @@ with GDALEnv():
18
21
  _get_driver_metadata_item,
19
22
  get_gdal_version,
20
23
  get_gdal_version_string,
21
- ogr_driver_supports_write,
22
24
  ogr_driver_supports_vsi,
25
+ ogr_driver_supports_write,
23
26
  )
24
27
 
25
28
 
@@ -61,7 +64,7 @@ def read(
61
64
  Parameters
62
65
  ----------
63
66
  path_or_buffer : pathlib.Path or str, or bytes buffer
64
- A dataset path or URI, or raw buffer.
67
+ A dataset path or URI, raw buffer, or file-like object with a read method.
65
68
  layer : int or str, optional (default: first layer)
66
69
  If an integer is provided, it corresponds to the index of the layer
67
70
  with the data source. If a string is provided, it must match the name
@@ -190,7 +193,6 @@ def read(
190
193
  https://www.gaia-gis.it/gaia-sins/spatialite-sql-latest.html
191
194
 
192
195
  """
193
-
194
196
  dataset_kwargs = _preprocess_options_key_value(kwargs) if kwargs else {}
195
197
 
196
198
  return ogr_read(
@@ -233,8 +235,7 @@ def read_arrow(
233
235
  return_fids=False,
234
236
  **kwargs,
235
237
  ):
236
- """
237
- Read OGR data source into a pyarrow Table.
238
+ """Read OGR data source into a pyarrow Table.
238
239
 
239
240
  See docstring of `read` for parameters.
240
241
 
@@ -252,6 +253,7 @@ def read_arrow(
252
253
  "geometry_type": "<geometry_type>",
253
254
  "geometry_name": "<name of geometry column in arrow table>",
254
255
  }
256
+
255
257
  """
256
258
  if not HAS_PYARROW:
257
259
  raise RuntimeError(
@@ -358,8 +360,7 @@ def open_arrow(
358
360
  use_pyarrow=False,
359
361
  **kwargs,
360
362
  ):
361
- """
362
- Open OGR data source as a stream of Arrow record batches.
363
+ """Open OGR data source as a stream of Arrow record batches.
363
364
 
364
365
  See docstring of `read` for parameters.
365
366
 
@@ -388,7 +389,6 @@ def open_arrow(
388
389
 
389
390
  Examples
390
391
  --------
391
-
392
392
  >>> from pyogrio.raw import open_arrow
393
393
  >>> import pyarrow as pa
394
394
  >>> import shapely
@@ -397,8 +397,9 @@ def open_arrow(
397
397
  >>> meta, stream = source
398
398
  >>> # wrap the arrow stream object in a pyarrow RecordBatchReader
399
399
  >>> reader = pa.RecordBatchReader.from_stream(stream)
400
+ >>> geom_col = meta["geometry_name"] or "wkb_geometry"
400
401
  >>> for batch in reader:
401
- >>> geometries = shapely.from_wkb(batch[meta["geometry_name"] or "wkb_geometry"])
402
+ >>> geometries = shapely.from_wkb(batch[geom_col])
402
403
 
403
404
  The returned `stream` object needs to be consumed by a library implementing
404
405
  the Arrow PyCapsule Protocol. In the above example, pyarrow is used through
@@ -407,8 +408,9 @@ def open_arrow(
407
408
 
408
409
  >>> with open_arrow(path, use_pyarrow=True) as source:
409
410
  >>> meta, reader = source
411
+ >>> geom_col = meta["geometry_name"] or "wkb_geometry"
410
412
  >>> for batch in reader:
411
- >>> geometries = shapely.from_wkb(batch[meta["geometry_name"] or "wkb_geometry"])
413
+ >>> geometries = shapely.from_wkb(batch[geom_col])
412
414
 
413
415
  Returns
414
416
  -------
@@ -425,6 +427,7 @@ def open_arrow(
425
427
  "geometry_type": "<geometry_type>",
426
428
  "geometry_name": "<name of geometry column in arrow table>",
427
429
  }
430
+
428
431
  """
429
432
  if not HAS_ARROW_API:
430
433
  raise RuntimeError("GDAL>= 3.6 required to read using arrow")
@@ -454,7 +457,7 @@ def open_arrow(
454
457
 
455
458
 
456
459
  def _parse_options_names(xml):
457
- """Convert metadata xml to list of names"""
460
+ """Convert metadata xml to list of names."""
458
461
  # Based on Fiona's meta.py
459
462
  # (https://github.com/Toblerity/Fiona/blob/91c13ad8424641557a4e5f038f255f9b657b1bc5/fiona/meta.py)
460
463
  import xml.etree.ElementTree as ET
@@ -471,29 +474,27 @@ def _parse_options_names(xml):
471
474
 
472
475
 
473
476
  def _validate_metadata(dataset_metadata, layer_metadata, metadata):
474
- """ """
477
+ """Validate the metadata."""
475
478
  if metadata is not None:
476
479
  if layer_metadata is not None:
477
480
  raise ValueError("Cannot pass both metadata and layer_metadata")
478
481
  layer_metadata = metadata
479
482
 
480
483
  # validate metadata types
481
- for metadata in [dataset_metadata, layer_metadata]:
482
- if metadata is not None:
483
- for k, v in metadata.items():
484
+ for meta in [dataset_metadata, layer_metadata]:
485
+ if meta is not None:
486
+ for k, v in meta.items():
484
487
  if not isinstance(k, str):
485
488
  raise ValueError(f"metadata key {k} must be a string")
486
489
 
487
490
  if not isinstance(v, str):
488
491
  raise ValueError(f"metadata value {v} must be a string")
492
+
489
493
  return dataset_metadata, layer_metadata
490
494
 
491
495
 
492
496
  def _preprocess_options_kwargs(driver, dataset_options, layer_options, kwargs):
493
- """
494
- Preprocess kwargs and split in dataset and layer creation options.
495
- """
496
-
497
+ """Preprocess kwargs and split in dataset and layer creation options."""
497
498
  dataset_kwargs = _preprocess_options_key_value(dataset_options or {})
498
499
  layer_kwargs = _preprocess_options_key_value(layer_options or {})
499
500
  if kwargs:
@@ -516,13 +517,14 @@ def _preprocess_options_kwargs(driver, dataset_options, layer_options, kwargs):
516
517
 
517
518
 
518
519
  def _get_write_path_driver(path, driver, append=False):
519
- """Validate and return path and driver
520
+ """Validate and return path and driver.
520
521
 
521
522
  Parameters
522
523
  ----------
523
524
  path : str or io.BytesIO
524
525
  path to output file on writeable file system or an io.BytesIO object to
525
- allow writing to memory
526
+ allow writing to memory. Will raise NotImplementedError if an open file
527
+ handle is passed.
526
528
  driver : str, optional (default: None)
527
529
  The OGR format driver used to write the vector file. By default attempts
528
530
  to infer driver from path. Must be provided to write to a file-like
@@ -533,8 +535,8 @@ def _get_write_path_driver(path, driver, append=False):
533
535
  Returns
534
536
  -------
535
537
  (path, driver)
536
- """
537
538
 
539
+ """
538
540
  if isinstance(path, BytesIO):
539
541
  if driver is None:
540
542
  raise ValueError("driver must be provided to write to in-memory file")
@@ -554,8 +556,14 @@ def _get_write_path_driver(path, driver, append=False):
554
556
  if append:
555
557
  raise NotImplementedError("append is not supported for in-memory files")
556
558
 
559
+ elif hasattr(path, "write") and not isinstance(path, Path):
560
+ raise NotImplementedError(
561
+ "writing to an open file handle is not yet supported; instead, write to a "
562
+ "BytesIO instance and then read bytes from that to write to the file handle"
563
+ )
564
+
557
565
  else:
558
- path = vsi_path(str(path))
566
+ path = vsi_path(path)
559
567
 
560
568
  if driver is None:
561
569
  driver = detect_write_driver(path)
@@ -605,7 +613,8 @@ def write(
605
613
  ----------
606
614
  path : str or io.BytesIO
607
615
  path to output file on writeable file system or an io.BytesIO object to
608
- allow writing to memory
616
+ allow writing to memory. Will raise NotImplementedError if an open file
617
+ handle is passed; use BytesIO instead.
609
618
  NOTE: support for writing to memory is limited to specific drivers.
610
619
  geometry : ndarray of WKB encoded geometries or None
611
620
  If None, geometries will not be written to output file
@@ -677,6 +686,10 @@ def write(
677
686
  a key-value dictionary.
678
687
  gdal_tz_offsets : dict, optional (default: None)
679
688
  Used to handle GDAL timezone offsets for each field contained in dict.
689
+ **kwargs
690
+ Additional driver-specific dataset creation options passed to OGR. Invalid
691
+ options will trigger a warning.
692
+
680
693
  """
681
694
  # if dtypes is given, remove it from kwargs (dtypes is included in meta returned by
682
695
  # read, and it is convenient to pass meta directly into write for round trip tests)
@@ -698,7 +711,8 @@ def write(
698
711
  warnings.warn(
699
712
  "'crs' was not provided. The output dataset will not have "
700
713
  "projection information defined and may not be usable in other "
701
- "systems."
714
+ "systems.",
715
+ stacklevel=2,
702
716
  )
703
717
 
704
718
  # preprocess kwargs and split in dataset and layer creation options
@@ -745,8 +759,7 @@ def write_arrow(
745
759
  layer_options=None,
746
760
  **kwargs,
747
761
  ):
748
- """
749
- Write an Arrow-compatible data source to an OGR file format.
762
+ """Write an Arrow-compatible data source to an OGR file format.
750
763
 
751
764
  .. _Arrow PyCapsule Protocol: https://arrow.apache.org/docs/format/CDataInterface/PyCapsuleInterface.html
752
765
 
@@ -782,6 +795,8 @@ def write_arrow(
782
795
  type of the output file to this value. Use this parameter with caution because
783
796
  using a wrong layer geometry type may result in errors when writing the
784
797
  file, may be ignored by the driver, or may result in invalid files.
798
+ crs : str, optional (default: None)
799
+ WKT-encoded CRS of the geometries to be written.
785
800
  encoding : str, optional (default: None)
786
801
  Only used for the .dbf file of ESRI Shapefiles. If not specified,
787
802
  uses the default locale.
@@ -842,7 +857,8 @@ def write_arrow(
842
857
  warnings.warn(
843
858
  "'crs' was not provided. The output dataset will not have "
844
859
  "projection information defined and may not be usable in other "
845
- "systems."
860
+ "systems.",
861
+ stacklevel=2,
846
862
  )
847
863
 
848
864
  dataset_metadata, layer_metadata = _validate_metadata(