Skip to content

Commit e2e0a01

Browse files
authored
ENH: enable more ruff rules + make appropriate changes (#415)
1 parent 4b8c5ae commit e2e0a01

17 files changed

+345
-215
lines changed

.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
files: 'pyogrio\/'
22
repos:
33
- repo: https://github.com/astral-sh/ruff-pre-commit
4-
rev: "v0.1.13"
4+
rev: "v0.5.2"
55
hooks:
66
- id: ruff-format
7-
- id: ruff
7+
- id: ruff

environment-dev.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ dependencies:
1414
- cython
1515
- pre-commit
1616
- pytest
17-
- ruff
18-
- versioneer
17+
- ruff==0.5.2
18+
- versioneer

pyogrio/__init__.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
1+
"""Vectorized vector I/O using OGR."""
2+
13
try:
24
# we try importing shapely, to ensure it is imported (and it can load its
35
# own GEOS copy) before we load GDAL and its linked GEOS
4-
import shapely # noqa
5-
import shapely.geos # noqa
6+
import shapely
7+
import shapely.geos # noqa: F401
68
except Exception:
79
pass
810

11+
from pyogrio._version import get_versions
912
from pyogrio.core import (
10-
list_drivers,
13+
__gdal_geos_version__,
14+
__gdal_version__,
15+
__gdal_version_string__,
1116
detect_write_driver,
17+
get_gdal_config_option,
18+
get_gdal_data_path,
19+
list_drivers,
1220
list_layers,
1321
read_bounds,
1422
read_info,
1523
set_gdal_config_options,
16-
get_gdal_config_option,
17-
get_gdal_data_path,
18-
__gdal_version__,
19-
__gdal_version_string__,
20-
__gdal_geos_version__,
2124
)
22-
from pyogrio.raw import read_arrow, open_arrow, write_arrow
2325
from pyogrio.geopandas import read_dataframe, write_dataframe
24-
from pyogrio._version import get_versions
25-
26+
from pyogrio.raw import open_arrow, read_arrow, write_arrow
2627

2728
__version__ = get_versions()["version"]
2829
del get_versions

pyogrio/_compat.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from packaging.version import Version
22

3-
from pyogrio.core import __gdal_version__, __gdal_geos_version__
3+
from pyogrio.core import __gdal_geos_version__, __gdal_version__
44

55
# detect optional dependencies
66
try:

pyogrio/_env.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44
# adapted from Fiona: https://github.com/Toblerity/Fiona/pull/875
55

66

7-
from contextlib import contextmanager
87
import logging
98
import os
10-
from pathlib import Path
119
import platform
1210
import sys
13-
11+
from contextlib import contextmanager
12+
from pathlib import Path
1413

1514
log = logging.getLogger(__name__)
1615
log.addHandler(logging.NullHandler())
@@ -32,7 +31,7 @@
3231
if platform.system() == "Windows" and sys.version_info >= (3, 8):
3332
# if loading of extension modules fails, search for gdal dll directory
3433
try:
35-
import pyogrio._io # NOQA
34+
import pyogrio._io # noqa: F401
3635

3736
except ImportError:
3837
for path in os.getenv("PATH", "").split(os.pathsep):

pyogrio/core.py

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,28 @@
1+
"""Core functions to interact with OGR data sources."""
2+
13
from pyogrio._env import GDALEnv
24
from pyogrio.util import (
3-
get_vsi_path_or_buffer,
4-
_preprocess_options_key_value,
55
_mask_to_wkb,
6+
_preprocess_options_key_value,
7+
get_vsi_path_or_buffer,
68
)
79

8-
910
with GDALEnv():
11+
from pyogrio._err import _register_error_handler
12+
from pyogrio._io import ogr_list_layers, ogr_read_bounds, ogr_read_info
1013
from pyogrio._ogr import (
11-
get_gdal_version,
12-
get_gdal_version_string,
13-
get_gdal_geos_version,
14-
ogr_list_drivers,
15-
set_gdal_config_options as _set_gdal_config_options,
14+
_get_drivers_for_path,
15+
_register_drivers,
1616
get_gdal_config_option as _get_gdal_config_option,
1717
get_gdal_data_path as _get_gdal_data_path,
18+
get_gdal_geos_version,
19+
get_gdal_version,
20+
get_gdal_version_string,
1821
init_gdal_data as _init_gdal_data,
1922
init_proj_data as _init_proj_data,
20-
_register_drivers,
21-
_get_drivers_for_path,
23+
ogr_list_drivers,
24+
set_gdal_config_options as _set_gdal_config_options,
2225
)
23-
from pyogrio._err import _register_error_handler
24-
from pyogrio._io import ogr_list_layers, ogr_read_bounds, ogr_read_info
2526

2627
_init_gdal_data()
2728
_init_proj_data()
@@ -48,8 +49,8 @@ def list_drivers(read=False, write=False):
4849
dict
4950
Mapping of driver name to file mode capabilities: ``"r"``: read, ``"w"``: write.
5051
Drivers that are available but with unknown support are marked with ``"?"``
51-
"""
5252
53+
"""
5354
drivers = ogr_list_drivers()
5455

5556
if read:
@@ -62,20 +63,23 @@ def list_drivers(read=False, write=False):
6263

6364

6465
def detect_write_driver(path):
65-
"""Attempt to infer the driver for a path by extension or prefix. Only
66-
drivers that support write capabilities will be detected.
66+
"""Attempt to infer the driver for a path by extension or prefix.
67+
68+
Only drivers that support write capabilities will be detected.
6769
6870
If the path cannot be resolved to a single driver, a ValueError will be
6971
raised.
7072
7173
Parameters
7274
----------
7375
path : str
76+
data source path
7477
7578
Returns
7679
-------
7780
str
7881
name of the driver, if detected
82+
7983
"""
8084
# try to infer driver from path
8185
drivers = _get_drivers_for_path(path)
@@ -106,14 +110,15 @@ def list_layers(path_or_buffer, /):
106110
Parameters
107111
----------
108112
path_or_buffer : str, pathlib.Path, bytes, or file-like
113+
A dataset path or URI, raw buffer, or file-like object with a read method.
109114
110115
Returns
111116
-------
112117
ndarray shape (2, n)
113118
array of pairs of [<layer name>, <layer geometry type>]
114119
Note: geometry is `None` for nonspatial layers.
115-
"""
116120
121+
"""
117122
return ogr_list_layers(get_vsi_path_or_buffer(path_or_buffer))
118123

119124

@@ -136,6 +141,7 @@ def read_bounds(
136141
Parameters
137142
----------
138143
path_or_buffer : str, pathlib.Path, bytes, or file-like
144+
A dataset path or URI, raw buffer, or file-like object with a read method.
139145
layer : int or str, optional (default: first layer)
140146
If an integer is provided, it corresponds to the index of the layer
141147
with the data source. If a string is provided, it must match the name
@@ -172,8 +178,8 @@ def read_bounds(
172178
fids are global IDs read from the FID field of the dataset
173179
bounds are ndarray of shape(4, n) containing ``xmin``, ``ymin``, ``xmax``,
174180
``ymax``
175-
"""
176181
182+
"""
177183
return ogr_read_bounds(
178184
get_vsi_path_or_buffer(path_or_buffer),
179185
layer=layer,
@@ -222,6 +228,7 @@ def read_info(
222228
Parameters
223229
----------
224230
path_or_buffer : str, pathlib.Path, bytes, or file-like
231+
A dataset path or URI, raw buffer, or file-like object with a read method.
225232
layer : [type], optional
226233
Name or index of layer in data source. Reads the first layer by default.
227234
encoding : [type], optional (default: None)
@@ -257,8 +264,8 @@ def read_info(
257264
"dataset_metadata": "<dict of dataset metadata or None>"
258265
"layer_metadata": "<dict of layer metadata or None>"
259266
}
260-
"""
261267
268+
"""
262269
dataset_kwargs = _preprocess_options_key_value(kwargs) if kwargs else {}
263270

264271
return ogr_read_info(
@@ -288,8 +295,8 @@ def set_gdal_config_options(options):
288295
configuration options. ``True`` / ``False`` are normalized to ``'ON'``
289296
/ ``'OFF'``. A value of ``None`` for a config option can be used to clear out a
290297
previously set value.
291-
"""
292298
299+
"""
293300
_set_gdal_config_options(options)
294301

295302

@@ -305,8 +312,8 @@ def get_gdal_config_option(name):
305312
-------
306313
value of the option or None if not set
307314
``'ON'`` / ``'OFF'`` are normalized to ``True`` / ``False``.
308-
"""
309315
316+
"""
310317
return _get_gdal_config_option(name)
311318

312319

@@ -316,5 +323,6 @@ def get_gdal_data_path():
316323
Returns
317324
-------
318325
str, or None if data directory was not found
326+
319327
"""
320328
return _get_gdal_data_path()

pyogrio/errors.py

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,25 @@
1-
class DataSourceError(RuntimeError):
2-
"""Errors relating to opening or closing an OGRDataSource (with >= 1 layers)"""
1+
"""Custom errors."""
2+
33

4-
pass
4+
class DataSourceError(RuntimeError):
5+
"""Errors relating to opening or closing an OGRDataSource (with >= 1 layers)."""
56

67

78
class DataLayerError(RuntimeError):
8-
"""Errors relating to working with a single OGRLayer"""
9-
10-
pass
9+
"""Errors relating to working with a single OGRLayer."""
1110

1211

1312
class CRSError(DataLayerError):
14-
"""Errors relating to getting or setting CRS values"""
15-
16-
pass
13+
"""Errors relating to getting or setting CRS values."""
1714

1815

1916
class FeatureError(DataLayerError):
20-
"""Errors related to reading or writing a feature"""
21-
22-
pass
17+
"""Errors related to reading or writing a feature."""
2318

2419

2520
class GeometryError(DataLayerError):
26-
"""Errors relating to getting or setting a geometry field"""
27-
28-
pass
21+
"""Errors relating to getting or setting a geometry field."""
2922

3023

3124
class FieldError(DataLayerError):
32-
"""Errors relating to getting or setting a non-geometry field"""
25+
"""Errors relating to getting or setting a non-geometry field."""

0 commit comments

Comments
 (0)