Skip to content

Commit

Permalink
switch from IOError to OSError (#725)
Browse files Browse the repository at this point in the history
  • Loading branch information
zigaLuksic authored Aug 28, 2023
1 parent c32fd17 commit 93b4172
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 14 deletions.
14 changes: 7 additions & 7 deletions eolearn/core/eodata_io.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ def _infer_temporal_selection(

patch_timestamps = eopatch.get_timestamps("Cannot infer temporal selection. EOPatch to be saved has no timestamps.")
if file_information.timestamps is None:
raise IOError("Cannot infer temporal selection. Saved EOPatch does not have timestamps.")
raise OSError("Cannot infer temporal selection. Saved EOPatch does not have timestamps.")
full_timestamps = FeatureIOTimestamps(file_information.timestamps, filesystem).load()
timestamp_indices = {timestamp: idx for idx, timestamp in enumerate(full_timestamps)}
if not all(timestamp in timestamp_indices for timestamp in patch_timestamps):
Expand Down Expand Up @@ -333,7 +333,7 @@ def _extract_temporal_selection(
full_timestamps = FeatureIOTimestamps(timestamps_path, filesystem).load()
simple_selection = temporal_selection(full_timestamps)
return simple_selection, [timestamp for timestamp, include in zip(full_timestamps, simple_selection) if include]
raise IOError(f"Cannot perform loading temporal selection, EOPatch at {patch_location} has no timestamps.")
raise OSError(f"Cannot perform loading temporal selection, EOPatch at {patch_location} has no timestamps.")


def _load_features(
Expand Down Expand Up @@ -362,7 +362,7 @@ def _load_features(
features_dict[(ftype, fname)] = _get_feature_io(ftype, path, filesystem, temporal_selection)
else:
if ftype not in file_information.features or fname not in file_information.features[ftype]:
raise IOError(err_msg.format((ftype, fname)))
raise OSError(err_msg.format((ftype, fname)))
path = file_information.features[ftype][fname]
features_dict[(ftype, fname)] = _get_feature_io(ftype, path, filesystem, temporal_selection)
return features_dict
Expand All @@ -383,7 +383,7 @@ def _get_feature_io(
return FeatureIOZarr(path, filesystem, temporal_selection)
if temporal_selection is None:
return FeatureIONumpy(path, filesystem)
raise IOError(
raise OSError(
f"Cannot perform loading with temporal selection for numpy data at {path}. Resave feature with"
" `use_zarr=True` to enable loading with temporal selections."
)
Expand Down Expand Up @@ -471,11 +471,11 @@ def _check_letter_case_collisions(eopatch_features: Features, filesystem_feature
lowercase_features = {_to_lowercase(*feature) for feature in eopatch_features}

if len(lowercase_features) != len(eopatch_features):
raise IOError("Some features differ only in casing and cannot be saved in separate files.")
raise OSError("Some features differ only in casing and cannot be saved in separate files.")

for feature, _ in filesystem_features.iterate_features():
if feature not in eopatch_features and _to_lowercase(*feature) in lowercase_features:
raise IOError(
raise OSError(
f"There already exists a feature {feature} in the filesystem that only differs in "
"casing from a feature that should be saved."
)
Expand Down Expand Up @@ -776,7 +776,7 @@ def save(
zarr_shape = (full_size, *data.shape[1:])
zarray = zarr.create(zarr_shape, dtype=data.dtype, chunks=chunk_size, store=store)
else:
raise IOError(
raise OSError(
f"Unable to open Zarr array at {path!r}. Saving with `temporal_selection` requires an initialized"
' zarr array. You can also try saving with `temporal_selection="infer"`.'
) from error
Expand Down
1 change: 0 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,6 @@ ignore = [
"B904", # want `raise ... from None` instead of just `raise ...`
"B028", # always demands a stacklevel argument when warning
"PT011", # complains for `pytest.raises(ValueError)` but we use it a lot
"UP024", # wants to switch IOError with OSError
]
per-file-ignores = { "__init__.py" = ["F401", "I002"], "conf.py" = ["I002", "FA100"] }
exclude = [".git", "__pycache__", "build", "dist"]
Expand Down
12 changes: 6 additions & 6 deletions tests/core/test_eodata_io.py
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ def test_overwrite_failure(fs_loader, use_zarr: bool):
eopatch.mask_timeless["mask"] = mask
eopatch.mask_timeless["Mask"] = mask

with fs_loader() as temp_fs, pytest.raises(IOError):
with fs_loader() as temp_fs, pytest.raises(OSError):
eopatch.save("/", filesystem=temp_fs, use_zarr=use_zarr)

with fs_loader() as temp_fs:
Expand All @@ -309,7 +309,7 @@ def test_overwrite_failure(fs_loader, use_zarr: bool):
use_zarr=use_zarr,
)

with pytest.raises(IOError):
with pytest.raises(OSError):
eopatch.save(
"/",
filesystem=temp_fs,
Expand Down Expand Up @@ -353,7 +353,7 @@ def test_fail_saving_nonexistent_feature(eopatch, fs_loader):
@pytest.mark.parametrize("fs_loader", FS_LOADERS)
def test_fail_loading_nonexistent_feature(fs_loader):
for features in [[(FeatureType.DATA, "nonexistent")], [(FeatureType.META_INFO, "nonexistent")]]:
with fs_loader() as temp_fs, pytest.raises(IOError):
with fs_loader() as temp_fs, pytest.raises(OSError):
EOPatch.load("/", filesystem=temp_fs, features=features)


Expand Down Expand Up @@ -604,7 +604,7 @@ def test_partial_temporal_loading_fails_for_numpy(fs_loader: type[FS], eopatch:
with fs_loader() as temp_fs:
eopatch.save(path="patch-folder", filesystem=temp_fs, use_zarr=False)

with pytest.raises(IOError):
with pytest.raises(OSError):
EOPatch.load(path="patch-folder", filesystem=temp_fs, temporal_selection=[0])


Expand Down Expand Up @@ -694,7 +694,7 @@ def test_partial_temporal_saving_fails(eopatch: EOPatch):
io_kwargs = dict(
path="patch-folder", filesystem=temp_fs, use_zarr=True, overwrite_permission="OVERWRITE_FEATURES"
)
with pytest.raises(IOError):
with pytest.raises(OSError):
# patch does not exist yet
eopatch.save(**io_kwargs, temporal_selection=slice(2, None))

Expand All @@ -721,7 +721,7 @@ def test_partial_temporal_saving_fails(eopatch: EOPatch):
EOPatch(bbox=eopatch.bbox, timestamps=["2012-01-01"]).save(**io_kwargs, temporal_selection="infer")

EOPatch(bbox=eopatch.bbox).save(path="other-folder", filesystem=temp_fs)
with pytest.raises(IOError, match=r"Saved EOPatch does not have timestamps"):
with pytest.raises(OSError, match=r"Saved EOPatch does not have timestamps"):
# no timestamps saved
eopatch.save(path="other-folder", filesystem=temp_fs, use_zarr=True, temporal_selection="infer")

Expand Down

0 comments on commit 93b4172

Please sign in to comment.