|
2 | 2 | from collections import defaultdict |
3 | 3 | from enum import Enum |
4 | 4 | from pathlib import Path |
5 | | -from typing import List, NamedTuple, Optional |
| 5 | +from typing import List, NamedTuple, Optional, NewType |
6 | 6 |
|
7 | | -from osgeo import ogr, osr |
| 7 | +from osgeo import gdal, ogr, osr |
8 | 8 | from PyQt5.QtCore import QFileInfo, QVariant |
9 | 9 | from qgis.core import ( |
10 | 10 | Qgis, |
|
25 | 25 |
|
26 | 26 | from .utils.logger import logger |
27 | 27 |
|
| 28 | +# In GDAL 3.10.0 the return value of `ogr.CreateDataSource` changed from `ogr.DataSource` to `gdal.Dataset`. |
| 29 | +if gdal.VersionInfo() > "3010000": |
| 30 | + OgrDataset = NewType("OgrDataset", gdal.Dataset) # type: ignore |
| 31 | +else: |
| 32 | + OgrDataset = NewType("OgrDataset", ogr.DataSource) # type: ignore |
| 33 | + |
28 | 34 | FID_NULL = -4294967296 |
29 | 35 |
|
30 | 36 | CUSTOM_PROPERTY_IS_OFFLINE_EDITABLE = "isOfflineEditable" |
@@ -219,7 +225,7 @@ def ogr_escape(self, data: str): |
219 | 225 | return data |
220 | 226 |
|
221 | 227 | def create_layer( |
222 | | - self, layer: QgsVectorLayer, data_source: ogr.DataSource, offline_gpkg_path: str |
| 228 | + self, layer: QgsVectorLayer, data_source: OgrDataset, offline_gpkg_path: str |
223 | 229 | ) -> None: |
224 | 230 | """ |
225 | 231 | Will create a new layer for ``layer`` in the GeoPackage specified as ``data_source`` which is stored at ``offline_gpkg_path``. |
@@ -270,7 +276,7 @@ def create_layer( |
270 | 276 | def convert_to_offline_layer( |
271 | 277 | self, |
272 | 278 | layer: QgsVectorLayer, |
273 | | - data_source: ogr.DataSource, |
| 279 | + data_source: OgrDataset, |
274 | 280 | offline_gpkg_path: str, |
275 | 281 | feature_request: QgsFeatureRequest = QgsFeatureRequest(), |
276 | 282 | ) -> str: |
|
0 commit comments