GeoDataset: allow a mix of str and pathlib paths (#2270)

* GeoDataset: allow a mix of str and pathlib paths

* Update type hints

* Simpler str conversion
This commit is contained in:
Adam J. Stewart 2024-09-03 16:36:44 +02:00 коммит произвёл GitHub
Родитель da6ff04a77
Коммит 6576b40019
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
2 изменённых файлов: 11 добавлений и 3 удалений

Просмотреть файл

@ -205,6 +205,14 @@ class TestGeoDataset:
CustomGeoDataset(paths=paths1).files == CustomGeoDataset(paths=paths2).files
)
def test_files_property_mix_str_and_pathlib(self, tmp_path: Path) -> None:
foo = tmp_path / 'foo.txt'
bar = tmp_path / 'bar.txt'
foo.touch()
bar.touch()
ds = CustomGeoDataset(paths=[str(foo), bar])
assert ds.files == [str(bar), str(foo)]
class TestRasterDataset:
naip_dir = os.path.join('tests', 'data', 'naip')

Просмотреть файл

@ -291,7 +291,7 @@ class GeoDataset(Dataset[dict[str, Any]], abc.ABC):
self._res = new_res
@property
def files(self) -> list[Path]:
def files(self) -> list[str]:
"""A list of all files in the dataset.
Returns:
@ -306,7 +306,7 @@ class GeoDataset(Dataset[dict[str, Any]], abc.ABC):
paths = self.paths
# Using set to remove any duplicates if directories are overlapping
files: set[Path] = set()
files: set[str] = set()
for path in paths:
if os.path.isdir(path):
pathname = os.path.join(path, '**', self.filename_glob)
@ -314,7 +314,7 @@ class GeoDataset(Dataset[dict[str, Any]], abc.ABC):
elif (os.path.isfile(path) or path_is_vsi(path)) and fnmatch.fnmatch(
str(path), f'*{self.filename_glob}'
):
files.add(path)
files.add(str(path))
elif not hasattr(self, 'download'):
warnings.warn(
f"Could not find any relevant files for provided path '{path}'. "