From 72702ef4d508625d9865f1538d52e2809a4507e6 Mon Sep 17 00:00:00 2001 From: Adrian Tofting Date: Thu, 22 Jun 2023 13:07:57 +0200 Subject: [PATCH 01/58] Make RasterDataset accept list of files --- torchgeo/datasets/geo.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index dc2b5fa1388..bc6989d8c34 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -10,7 +10,7 @@ import re import sys from collections.abc import Sequence -from typing import Any, Callable, Optional, cast +from typing import Any, Callable, Optional, Union, cast import fiona import fiona.transform @@ -329,7 +329,7 @@ def dtype(self) -> torch.dtype: def __init__( self, - root: str = "data", + root: Union[str, list[str]] = "data", crs: Optional[CRS] = None, res: Optional[float] = None, bands: Optional[Sequence[str]] = None, @@ -339,7 +339,8 @@ def __init__( """Initialize a new Dataset instance. Args: - root: root directory where dataset can be found + root: root directory or list of absolute filepaths where + dataset can be found crs: :term:`coordinate reference system (CRS)` to warp to (defaults to the CRS of the first file found) res: resolution of the dataset in units of CRS @@ -358,11 +359,22 @@ def __init__( self.bands = bands or self.all_bands self.cache = cache + if not isinstance(root, str): + root = [cast(str, root)] + + filespaths = [] + for dir_or_file in root: + _, ext = os.path.splitext(dir_or_file) + if ext: + filespaths.append(dir_or_file) + else: + pathname = os.path.join(dir_or_file, "**", self.filename_glob) + filespaths.extend(glob.iglob(pathname, recursive=True)) + # Populate the dataset index i = 0 - pathname = os.path.join(root, "**", self.filename_glob) filename_regex = re.compile(self.filename_regex, re.VERBOSE) - for filepath in glob.iglob(pathname, recursive=True): + for filepath in filespaths: match = re.match(filename_regex, os.path.basename(filepath)) if match is not None: try: From b68dd5a4bd1d583f730c9ffc7f3572d449415b84 Mon Sep 17 00:00:00 2001 From: Adrian Tofting Date: Thu, 22 Jun 2023 13:11:29 +0200 Subject: [PATCH 02/58] Fix check if str --- torchgeo/datasets/geo.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index bc6989d8c34..07ef802e013 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -359,8 +359,8 @@ def __init__( self.bands = bands or self.all_bands self.cache = cache - if not isinstance(root, str): - root = [cast(str, root)] + if isinstance(root, str): + root = [root] filespaths = [] for dir_or_file in root: From e90d01c74591be8d2316f8a2492ae2c7d5ca9d89 Mon Sep 17 00:00:00 2001 From: Adrian Tofting Date: Fri, 23 Jun 2023 13:02:35 +0200 Subject: [PATCH 03/58] Use isdir and isfile --- torchgeo/datasets/geo.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index 07ef802e013..4039d604d4f 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -362,14 +362,17 @@ def __init__( if isinstance(root, str): root = [root] - filespaths = [] + filespaths: list[str] = [] for dir_or_file in root: - _, ext = os.path.splitext(dir_or_file) - if ext: - filespaths.append(dir_or_file) + if os.path.exists(dir_or_file): + if os.path.isdir(dir_or_file): + pathname = os.path.join(dir_or_file, "**", self.filename_glob) + filespaths.extend(glob.iglob(pathname, recursive=True)) + else: + filespaths.append(dir_or_file) else: - pathname = os.path.join(dir_or_file, "**", self.filename_glob) - filespaths.extend(glob.iglob(pathname, recursive=True)) + # TODO: Handle remote and virtual files + continue # Populate the dataset index i = 0 From dfad0792c92728483f51dd1e80ceffb4d94a56fb Mon Sep 17 00:00:00 2001 From: Adrian Tofting Date: Mon, 5 Jun 2023 20:02:25 +0200 Subject: [PATCH 04/58] Add kwarg vsi to RasterDataset to support GDAL VSI --- torchgeo/datasets/geo.py | 11 +++++++++-- torchgeo/datasets/utils.py | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index 4039d604d4f..d04f82cee21 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -29,8 +29,13 @@ from torchvision.datasets import ImageFolder from torchvision.datasets.folder import default_loader as pil_loader -from .utils import BoundingBox, concat_samples, disambiguate_timestamp, merge_samples - +from .utils import ( + BoundingBox, + concat_samples, + disambiguate_timestamp, + merge_samples, + listdir_vsi_recursive +) class GeoDataset(Dataset[dict[str, Any]], abc.ABC): """Abstract base class for datasets containing geospatial information. @@ -335,6 +340,7 @@ def __init__( bands: Optional[Sequence[str]] = None, transforms: Optional[Callable[[dict[str, Any]], dict[str, Any]]] = None, cache: bool = True, + vsi: bool = False ) -> None: """Initialize a new Dataset instance. @@ -349,6 +355,7 @@ def __init__( transforms: a function/transform that takes an input sample and returns a transformed version cache: if True, cache file handle to speed up repeated sampling + vsi: if True, will support GDAL Virtual File Systems Raises: FileNotFoundError: if no files are found in ``root`` diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 55d94abed6f..7fbaa93923c 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -21,6 +21,7 @@ import numpy as np import rasterio +from fiona.errors import FionaValueError import torch from torch import Tensor from torchvision.datasets.utils import check_integrity, download_url @@ -43,6 +44,7 @@ "draw_semantic_segmentation_masks", "rgb_to_mask", "percentile_normalization", + "listdir_vsi_recursive" ) @@ -737,3 +739,16 @@ def percentile_normalization( (img - lower_percentile) / (upper_percentile - lower_percentile + 1e-5), 0, 1 ) return img_normalized + + +def listdir_vsi_recursive(root): + dirs = [root] + files = [] + while dirs: + dir = dirs.pop() + try: + subdirs = fiona.listdir(dir) + dirs.extend([os.path.join(dir,subdir) for subdir in subdirs]) + except FionaValueError: + files.append(dir) + return files \ No newline at end of file From 7291f3e8d38f188c9d4d787f0c8ffc8e4797c7a3 Mon Sep 17 00:00:00 2001 From: Adrian Tofting Date: Mon, 5 Jun 2023 20:09:51 +0200 Subject: [PATCH 05/58] Fix formatting --- torchgeo/datasets/geo.py | 5 +++-- torchgeo/datasets/utils.py | 9 +++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index d04f82cee21..9e85e059c62 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -33,10 +33,11 @@ BoundingBox, concat_samples, disambiguate_timestamp, + listdir_vsi_recursive, merge_samples, - listdir_vsi_recursive ) + class GeoDataset(Dataset[dict[str, Any]], abc.ABC): """Abstract base class for datasets containing geospatial information. @@ -340,7 +341,7 @@ def __init__( bands: Optional[Sequence[str]] = None, transforms: Optional[Callable[[dict[str, Any]], dict[str, Any]]] = None, cache: bool = True, - vsi: bool = False + vsi: bool = False, ) -> None: """Initialize a new Dataset instance. diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 7fbaa93923c..c3e91c73b98 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -19,10 +19,11 @@ from datetime import datetime, timedelta from typing import Any, cast, overload +import fiona import numpy as np import rasterio -from fiona.errors import FionaValueError import torch +from fiona.errors import FionaValueError from torch import Tensor from torchvision.datasets.utils import check_integrity, download_url from torchvision.utils import draw_segmentation_masks @@ -44,7 +45,7 @@ "draw_semantic_segmentation_masks", "rgb_to_mask", "percentile_normalization", - "listdir_vsi_recursive" + "listdir_vsi_recursive", ) @@ -748,7 +749,7 @@ def listdir_vsi_recursive(root): dir = dirs.pop() try: subdirs = fiona.listdir(dir) - dirs.extend([os.path.join(dir,subdir) for subdir in subdirs]) + dirs.extend([os.path.join(dir, subdir) for subdir in subdirs]) except FionaValueError: files.append(dir) - return files \ No newline at end of file + return files From 6b41f1818521390ff4383bf1d8f005115c14211c Mon Sep 17 00:00:00 2001 From: Adrian Tofting Date: Mon, 5 Jun 2023 20:30:10 +0200 Subject: [PATCH 06/58] Add type hints and docstring to method in utils --- torchgeo/datasets/utils.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index c3e91c73b98..2b0b0a87c89 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -742,7 +742,18 @@ def percentile_normalization( return img_normalized -def listdir_vsi_recursive(root): +def listdir_vsi_recursive(root: str) -> List[str]: + """Walk directory and return list of all files in subdirectories. + + Also supports listing filenames within a GDAL Virtual File System like + cloud buckets. https://gdal.org/user/virtual_file_systems.html + + Args: + root: root directory or blob in bucket + + Returns + List of absolute filepaths withing the root + """ dirs = [root] files = [] while dirs: From 2b2be024bb2521818b7fa864193add7af21c71bc Mon Sep 17 00:00:00 2001 From: Adrian Tofting Date: Mon, 5 Jun 2023 20:32:14 +0200 Subject: [PATCH 07/58] Fix missing import List --- torchgeo/datasets/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 2b0b0a87c89..b9d8ca98376 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -17,7 +17,7 @@ from collections.abc import Iterable, Iterator, Sequence from dataclasses import dataclass from datetime import datetime, timedelta -from typing import Any, cast, overload +from typing import Any, cast, List, overload import fiona import numpy as np From 3f91e97ec686bf81dae4f26d94f2c96263454427 Mon Sep 17 00:00:00 2001 From: Adrian Tofting Date: Mon, 5 Jun 2023 20:37:00 +0200 Subject: [PATCH 08/58] Fix type hints --- torchgeo/datasets/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index b9d8ca98376..e33cfdf466c 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -17,7 +17,7 @@ from collections.abc import Iterable, Iterator, Sequence from dataclasses import dataclass from datetime import datetime, timedelta -from typing import Any, cast, List, overload +from typing import Any, cast, overload import fiona import numpy as np @@ -742,7 +742,7 @@ def percentile_normalization( return img_normalized -def listdir_vsi_recursive(root: str) -> List[str]: +def listdir_vsi_recursive(root: str) -> list[str]: """Walk directory and return list of all files in subdirectories. Also supports listing filenames within a GDAL Virtual File System like From f0d9475cd470a79c6ce74c07cee8fd3716003820 Mon Sep 17 00:00:00 2001 From: Adrian Tofting Date: Thu, 22 Jun 2023 16:12:45 +0200 Subject: [PATCH 09/58] Refactor with respect to other branch --- torchgeo/datasets/geo.py | 9 ++++----- torchgeo/datasets/utils.py | 40 ++++++++++++++++++++++++++++---------- 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index 9e85e059c62..e572af9ec69 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -33,7 +33,7 @@ BoundingBox, concat_samples, disambiguate_timestamp, - listdir_vsi_recursive, + list_directory_recursive, merge_samples, ) @@ -341,7 +341,6 @@ def __init__( bands: Optional[Sequence[str]] = None, transforms: Optional[Callable[[dict[str, Any]], dict[str, Any]]] = None, cache: bool = True, - vsi: bool = False, ) -> None: """Initialize a new Dataset instance. @@ -356,7 +355,6 @@ def __init__( transforms: a function/transform that takes an input sample and returns a transformed version cache: if True, cache file handle to speed up repeated sampling - vsi: if True, will support GDAL Virtual File Systems Raises: FileNotFoundError: if no files are found in ``root`` @@ -379,8 +377,9 @@ def __init__( else: filespaths.append(dir_or_file) else: - # TODO: Handle remote and virtual files - continue + filespaths.extend( + list_directory_recursive(dir_or_file, self.filename_glob) + ) # Populate the dataset index i = 0 diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index e33cfdf466c..13bedf29ab4 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -9,6 +9,8 @@ import bz2 import collections import contextlib +import fnmatch +import glob import gzip import lzma import os @@ -45,7 +47,7 @@ "draw_semantic_segmentation_masks", "rgb_to_mask", "percentile_normalization", - "listdir_vsi_recursive", + "list_directory_recursive", ) @@ -742,18 +744,17 @@ def percentile_normalization( return img_normalized -def listdir_vsi_recursive(root: str) -> list[str]: - """Walk directory and return list of all files in subdirectories. +def _path_is_vsi(path: str) -> bool: + from rasterio._path import SCHEMES - Also supports listing filenames within a GDAL Virtual File System like - cloud buckets. https://gdal.org/user/virtual_file_systems.html + prefix = path.split("://")[0] + schemes = prefix.split("+") + is_apache_vfs_scheme = set(schemes).issubset(set(SCHEMES)) + is_gdal_vsi = path.startswith("/vsi") + return is_gdal_vsi or is_apache_vfs_scheme - Args: - root: root directory or blob in bucket - Returns - List of absolute filepaths withing the root - """ +def _listdir_vsi_recursive(root: str) -> list[str]: dirs = [root] files = [] while dirs: @@ -764,3 +765,22 @@ def listdir_vsi_recursive(root: str) -> list[str]: except FionaValueError: files.append(dir) return files + + +def list_directory_recursive(root: str, filename_glob: str) -> list[str]: + """Lists files in directory recursively. + + Also supports gdal virtual file systems (vsi). + + Args: + root: directory to list. For vsi these can start with + e.g. /vsiaz or az:// for azure blob storage + filename_glob: filename pattern to filter filenames + """ + if _path_is_vsi(root): + filepaths = _listdir_vsi_recursive(root) + filepaths = fnmatch.filter(filepaths, filename_glob) + else: + pathname = os.path.join(root, "**", filename_glob) + filepaths = list(glob.iglob(pathname, recursive=True)) + return filepaths From 7ca3cb797356b17eed1557eb318102ed31e1bbdb Mon Sep 17 00:00:00 2001 From: Adrian Tofting Date: Fri, 23 Jun 2023 14:21:50 +0200 Subject: [PATCH 10/58] Make try-catch more targeted --- torchgeo/datasets/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 13bedf29ab4..1a61727acb8 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -762,8 +762,9 @@ def _listdir_vsi_recursive(root: str) -> list[str]: try: subdirs = fiona.listdir(dir) dirs.extend([os.path.join(dir, subdir) for subdir in subdirs]) - except FionaValueError: - files.append(dir) + except FionaValueError as e: + if "is not a directory" in str(e): + files.append(dir) return files From d5190615b3543f750ba0e58a50428a1631c00dd7 Mon Sep 17 00:00:00 2001 From: Adrian Tofting Date: Fri, 23 Jun 2023 14:27:13 +0200 Subject: [PATCH 11/58] Remove redundant iglob usage --- torchgeo/datasets/geo.py | 8 ++------ torchgeo/datasets/utils.py | 4 +++- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index e572af9ec69..2f9e8622898 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -370,12 +370,8 @@ def __init__( filespaths: list[str] = [] for dir_or_file in root: - if os.path.exists(dir_or_file): - if os.path.isdir(dir_or_file): - pathname = os.path.join(dir_or_file, "**", self.filename_glob) - filespaths.extend(glob.iglob(pathname, recursive=True)) - else: - filespaths.append(dir_or_file) + if os.path.exists(dir_or_file) and os.path.isfile(dir_or_file): + filespaths.append(dir_or_file) else: filespaths.extend( list_directory_recursive(dir_or_file, self.filename_glob) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 1a61727acb8..4c0ebead5e2 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -765,6 +765,8 @@ def _listdir_vsi_recursive(root: str) -> list[str]: except FionaValueError as e: if "is not a directory" in str(e): files.append(dir) + else: + raise e return files @@ -778,7 +780,7 @@ def list_directory_recursive(root: str, filename_glob: str) -> list[str]: e.g. /vsiaz or az:// for azure blob storage filename_glob: filename pattern to filter filenames """ - if _path_is_vsi(root): + if not _path_is_vsi(root): filepaths = _listdir_vsi_recursive(root) filepaths = fnmatch.filter(filepaths, filename_glob) else: From 2ee3c8500b3ba43e1081815ef3afdbd2aa8c6fc5 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Tue, 6 Aug 2024 17:23:26 +0200 Subject: [PATCH 12/58] Remove unused imports --- torchgeo/datasets/geo.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index 26738e3faab..77880c3a151 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -5,7 +5,6 @@ import abc import functools -import glob import os import pathlib import re @@ -40,7 +39,7 @@ concat_samples, disambiguate_timestamp, merge_samples, - path_is_vsi, list_directory_recursive, + list_directory_recursive, ) From 5c6e4447e20d218ef41f8f0a60931d995316582b Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Thu, 8 Aug 2024 11:33:13 +0200 Subject: [PATCH 13/58] Add wildcard for directories --- torchgeo/datasets/geo.py | 2 +- torchgeo/datasets/utils.py | 27 +++++++++++++++------------ 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index 77880c3a151..9ed98767d6e 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -38,8 +38,8 @@ array_to_tensor, concat_samples, disambiguate_timestamp, - merge_samples, list_directory_recursive, + merge_samples, ) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index a1a5cbfd712..fe18f26a096 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -776,39 +776,42 @@ def path_is_vsi(path: Path) -> bool: return '://' in str(path) or str(path).startswith('/vsi') -def _listdir_vsi_recursive(root: str) -> list[str]: +def _listdir_vsi_recursive(root: Path) -> list[Path]: dirs = [root] files = [] while dirs: dir = dirs.pop() try: subdirs = fiona.listdir(dir) - dirs.extend([os.path.join(dir, subdir) for subdir in subdirs]) + dirs.extend([pathlib.Path(dir) / subdir for subdir in subdirs]) except FionaValueError as e: - if "is not a directory" in str(e): + if 'is not a directory' in str(e): files.append(dir) else: raise e return files -def list_directory_recursive(root: str, filename_glob: str) -> list[str]: - """Lists files in directory recursively. +def list_directory_recursive(root: Path, filename_glob: str) -> list[Path]: + """Lists files in directory recursively matching the given glob expression. Also supports gdal virtual file systems (vsi). Args: - root: directory to list. For vsi these can start with + root: directory to list. For vsi these will have prefix e.g. /vsiaz or az:// for azure blob storage filename_glob: filename pattern to filter filenames """ - if not path_is_vsi(root): - filepaths = _listdir_vsi_recursive(root) - filepaths = fnmatch.filter(filepaths, filename_glob) + files: list[Path] + if path_is_vsi(root): + # Change type to match expected input to filter + files_as_str: list[str] = [str(file) for file in _listdir_vsi_recursive(root)] + # Prefix glob with wildcard to ignore directories + files = cast(list[Path], fnmatch.filter(files_as_str, '*' + filename_glob)) else: - pathname = os.path.join(root, "**", filename_glob) - filepaths = list(glob.iglob(pathname, recursive=True)) - return filepaths + pathname = os.path.join(root, '**', filename_glob) + files = list(glob.iglob(pathname, recursive=True)) + return files def array_to_tensor(array: np.typing.NDArray[Any]) -> Tensor: From 2da9c4a9992c20339da09f08215701c74da3aa6e Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Thu, 8 Aug 2024 11:51:16 +0200 Subject: [PATCH 14/58] Allow vsi files to not exist --- torchgeo/datasets/utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index fe18f26a096..c74514eaba5 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -785,7 +785,9 @@ def _listdir_vsi_recursive(root: Path) -> list[Path]: subdirs = fiona.listdir(dir) dirs.extend([pathlib.Path(dir) / subdir for subdir in subdirs]) except FionaValueError as e: - if 'is not a directory' in str(e): + # Assuming file was found as it is not a directory + # Also allowing non-existent file while no vsi test data is available. + if 'is not a directory' in str(e) or 'does not exist' in str(e): files.append(dir) else: raise e From e79061f9817787561908afe74b7132052cb18aaf Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Thu, 8 Aug 2024 11:54:14 +0200 Subject: [PATCH 15/58] Make protected method public --- torchgeo/datasets/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index c74514eaba5..72962728bdb 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -776,7 +776,7 @@ def path_is_vsi(path: Path) -> bool: return '://' in str(path) or str(path).startswith('/vsi') -def _listdir_vsi_recursive(root: Path) -> list[Path]: +def listdir_vsi_recursive(root: Path) -> list[Path]: dirs = [root] files = [] while dirs: @@ -807,7 +807,7 @@ def list_directory_recursive(root: Path, filename_glob: str) -> list[Path]: files: list[Path] if path_is_vsi(root): # Change type to match expected input to filter - files_as_str: list[str] = [str(file) for file in _listdir_vsi_recursive(root)] + files_as_str: list[str] = [str(file) for file in listdir_vsi_recursive(root)] # Prefix glob with wildcard to ignore directories files = cast(list[Path], fnmatch.filter(files_as_str, '*' + filename_glob)) else: From 00594de1ab698c280fa274abdf277cafb4a3c45d Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Thu, 8 Aug 2024 13:33:55 +0200 Subject: [PATCH 16/58] Add zipped dataset to test vsi listdir --- ...N0400_R108_T26EMU_20220414T165533.SAFE.zip | Bin 0 -> 264679 bytes tests/datasets/test_geo.py | 21 +++++++++++++++++- torchgeo/datasets/utils.py | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 tests/data/sentinel2/S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE.zip diff --git a/tests/data/sentinel2/S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE.zip b/tests/data/sentinel2/S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE.zip new file mode 100644 index 0000000000000000000000000000000000000000..d5b0244d43772002d355a6867f52c626d2062641 GIT binary patch literal 264679 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

jo6PpY%6#u($UGS_*T<)4wYJ{%g&!$Cp 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

#N1=8|zQ-r*#KAF`PJN3&B;)Lt1=5%-qQ9u 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

eDrMLiH1$E@kx&w=Rz4?HT#9zV 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

DK?gK1c+WGc)#nkx8 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 U^EC=(0{mK5LZRBbnSnq38_!lJh5!Hn literal 0 HcmV?d00001 diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index 398821bfbb1..57ca21c0341 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -1,8 +1,8 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. - import math import os +import pathlib import pickle import sys from collections.abc import Iterable @@ -205,6 +205,25 @@ def test_files_property_deterministic(self) -> None: CustomGeoDataset(paths=paths1).files == CustomGeoDataset(paths=paths2).files ) + def test_zipped_sentinel2_dataset(self) -> None: + bands = ['B04', 'B03', 'B02'] + transforms = nn.Identity() + cache = False + + dir_not_zipped = 'tests/data/sentinel2/S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE' + dir_zipped = f'zip://{dir_not_zipped}.zip' + + files_not_zipped = Sentinel2( + paths=dir_not_zipped, bands=bands, transforms=transforms, cache=cache + ).files + files_zipped = Sentinel2( + paths=[dir_zipped], bands=bands, transforms=transforms, cache=cache + ).files + + basenames_not_zipped = [pathlib.Path(path).stem for path in files_not_zipped] + basenames_zipped = [pathlib.Path(path).stem for path in files_zipped] + assert basenames_zipped == basenames_not_zipped + class TestRasterDataset: @pytest.fixture(params=zip([['R', 'G', 'B'], None], [True, False])) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 72962728bdb..32b09f6cac0 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -783,7 +783,7 @@ def listdir_vsi_recursive(root: Path) -> list[Path]: dir = dirs.pop() try: subdirs = fiona.listdir(dir) - dirs.extend([pathlib.Path(dir) / subdir for subdir in subdirs]) + dirs.extend([os.path.join(dir, subdir) for subdir in subdirs]) except FionaValueError as e: # Assuming file was found as it is not a directory # Also allowing non-existent file while no vsi test data is available. From 8a611087f975cc52c54f5a09af338225ef86be7d Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Thu, 8 Aug 2024 13:59:40 +0200 Subject: [PATCH 17/58] Update fiona version in min-reqs.old --- requirements/min-reqs.old | 2 +- torchgeo/datasets/utils.py | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/requirements/min-reqs.old b/requirements/min-reqs.old index 66fec79be70..2fd829e4c74 100644 --- a/requirements/min-reqs.old +++ b/requirements/min-reqs.old @@ -3,7 +3,7 @@ setuptools==61.0.0 # install einops==0.3.0 -fiona==1.8.21 +fiona==1.9.6 kornia==0.7.3 lightly==1.4.5 lightning[pytorch-extra]==2.0.0 diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 32b09f6cac0..1f483da3148 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -784,13 +784,14 @@ def listdir_vsi_recursive(root: Path) -> list[Path]: try: subdirs = fiona.listdir(dir) dirs.extend([os.path.join(dir, subdir) for subdir in subdirs]) - except FionaValueError as e: - # Assuming file was found as it is not a directory - # Also allowing non-existent file while no vsi test data is available. - if 'is not a directory' in str(e) or 'does not exist' in str(e): - files.append(dir) - else: - raise e + except FionaValueError: + # Assuming dir is a file as it is not a directory + # fiona.listdir can throw FionaValueError for only two reasons + # 1. 'is not a directory' + # 2. 'does not exist' + # We currently don't have tests for existing vsi, and will thus + # allow vsi to not exist. + files.append(dir) return files From 014e5f52cfb1d67c8b6e2d79af9449bbdbfca593 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 12 Aug 2024 16:45:31 +0200 Subject: [PATCH 18/58] Update docstring of list_directory_recursive Co-authored-by: Adam J. Stewart --- torchgeo/datasets/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 1f483da3148..21c1c89d77b 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -798,7 +798,7 @@ def listdir_vsi_recursive(root: Path) -> list[Path]: def list_directory_recursive(root: Path, filename_glob: str) -> list[Path]: """Lists files in directory recursively matching the given glob expression. - Also supports gdal virtual file systems (vsi). + Also supports GDAL Virtual File Systems (VSI). Args: root: directory to list. For vsi these will have prefix From 0bf5d686f1c44be54bed13f8d05b77b747b9bd42 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 12 Aug 2024 16:48:38 +0200 Subject: [PATCH 19/58] Set fiona version in min-reqs.old Co-authored-by: Adam J. Stewart --- requirements/min-reqs.old | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/min-reqs.old b/requirements/min-reqs.old index 2fd829e4c74..5dff22c9073 100644 --- a/requirements/min-reqs.old +++ b/requirements/min-reqs.old @@ -3,7 +3,7 @@ setuptools==61.0.0 # install einops==0.3.0 -fiona==1.9.6 +fiona==1.9.0 kornia==0.7.3 lightly==1.4.5 lightning[pytorch-extra]==2.0.0 From 41e3dfb7f2559d7fe209c8897fb58257274086ca Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 12 Aug 2024 16:49:19 +0200 Subject: [PATCH 20/58] Remove redundant path exists Co-authored-by: Adam J. Stewart --- torchgeo/datasets/geo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index 9ed98767d6e..bda3dd9753f 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -306,7 +306,7 @@ def files(self) -> list[Path]: # Using set to remove any duplicates if directories are overlapping files: set[Path] = set() for path in paths: - if os.path.exists(path) and os.path.isfile(path): + if os.path.isfile(path): files.add(path) else: files |= set(list_directory_recursive(path, self.filename_glob)) From 56b1c765696616d8a80aa4cab380a17915a1f257 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 12 Aug 2024 16:52:13 +0200 Subject: [PATCH 21/58] Remove duplicated import --- tests/datasets/test_geo.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index 57ca21c0341..2e684c69a8b 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -2,7 +2,6 @@ # Licensed under the MIT License. import math import os -import pathlib import pickle import sys from collections.abc import Iterable @@ -220,8 +219,8 @@ def test_zipped_sentinel2_dataset(self) -> None: paths=[dir_zipped], bands=bands, transforms=transforms, cache=cache ).files - basenames_not_zipped = [pathlib.Path(path).stem for path in files_not_zipped] - basenames_zipped = [pathlib.Path(path).stem for path in files_zipped] + basenames_not_zipped = [Path(path).stem for path in files_not_zipped] + basenames_zipped = [Path(path).stem for path in files_zipped] assert basenames_zipped == basenames_not_zipped From d03120d12cd3efbe3b6a625e5689c73cd55755bc Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 12 Aug 2024 17:19:56 +0200 Subject: [PATCH 22/58] Create temp archive for test --- ..._N0400_R108_T26EMU_20220414T165533.SAFE.zip | Bin 264679 -> 0 bytes tests/datasets/test_geo.py | 15 +++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) delete mode 100644 tests/data/sentinel2/S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE.zip diff --git a/tests/data/sentinel2/S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE.zip b/tests/data/sentinel2/S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE.zip deleted file mode 100644 index d5b0244d43772002d355a6867f52c626d2062641..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264679 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

#N1=8|zQ-r*#KAF`PJN3&B;)Lt1=5%-qQ9u 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

eDrMLiH1$E@kx&w=Rz4?HT#9zV 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

DK?gK1c+WGc)#nkx8 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 U^EC=(0{mK5LZRBbnSnq38_!lJh5!Hn diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index 2e684c69a8b..52d5ed18e87 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -3,6 +3,7 @@ import math import os import pickle +import shutil import sys from collections.abc import Iterable from pathlib import Path @@ -209,15 +210,21 @@ def test_zipped_sentinel2_dataset(self) -> None: transforms = nn.Identity() cache = False - dir_not_zipped = 'tests/data/sentinel2/S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE' - dir_zipped = f'zip://{dir_not_zipped}.zip' - + dir_not_zipped = os.path.join( + 'tests', + 'data', + 'sentinel2', + 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', + ) files_not_zipped = Sentinel2( paths=dir_not_zipped, bands=bands, transforms=transforms, cache=cache ).files + + dir_zipped = shutil.make_archive(dir_not_zipped, 'zip', dir_not_zipped) files_zipped = Sentinel2( - paths=[dir_zipped], bands=bands, transforms=transforms, cache=cache + paths=f'zip://{dir_zipped}', bands=bands, transforms=transforms, cache=cache ).files + os.remove(dir_zipped) basenames_not_zipped = [Path(path).stem for path in files_not_zipped] basenames_zipped = [Path(path).stem for path in files_zipped] From dfc571e004ca67db27dc595bb26142f5677687bf Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 12 Aug 2024 17:31:20 +0200 Subject: [PATCH 23/58] Add docstring to listdir_vsi_recursive --- torchgeo/datasets/utils.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 21c1c89d77b..c6b14a6889c 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -777,6 +777,19 @@ def path_is_vsi(path: Path) -> bool: def listdir_vsi_recursive(root: Path) -> list[Path]: + """Lists all files in Virtual File Systems (VSI) recursively. + + Args: + root: directory to list. These must contain the prefix for the VSI + e.g. '/vsiaz/' or 'az://' for azure blob storage + '/vsizip/' or 'zip://' for zipped archives + + Returns: + A list of all file paths matching filename_glob in the root VSI directory or its + subdirectories. + + .. versionadded:: #TODO + """ dirs = [root] files = [] while dirs: @@ -801,9 +814,15 @@ def list_directory_recursive(root: Path, filename_glob: str) -> list[Path]: Also supports GDAL Virtual File Systems (VSI). Args: - root: directory to list. For vsi these will have prefix - e.g. /vsiaz or az:// for azure blob storage + root: directory to list. For VSI these will have prefix + e.g. /vsiaz/ or az:// for azure blob storage filename_glob: filename pattern to filter filenames + + Returns: + A list of all file paths matching filename_glob in the root directory or its + subdirectories. + + .. versionadded:: #TODO """ files: list[Path] if path_is_vsi(root): From aaea7299abafbf38c8403763e84acc2c823382ee Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 12 Aug 2024 17:39:20 +0200 Subject: [PATCH 24/58] Change list_directory_recursive return type --- torchgeo/datasets/utils.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index c6b14a6889c..077a3e4a47a 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -776,7 +776,7 @@ def path_is_vsi(path: Path) -> bool: return '://' in str(path) or str(path).startswith('/vsi') -def listdir_vsi_recursive(root: Path) -> list[Path]: +def listdir_vsi_recursive(root: Path) -> list[str]: """Lists all files in Virtual File Systems (VSI) recursively. Args: @@ -790,7 +790,7 @@ def listdir_vsi_recursive(root: Path) -> list[Path]: .. versionadded:: #TODO """ - dirs = [root] + dirs = [str(root)] files = [] while dirs: dir = dirs.pop() @@ -808,7 +808,7 @@ def listdir_vsi_recursive(root: Path) -> list[Path]: return files -def list_directory_recursive(root: Path, filename_glob: str) -> list[Path]: +def list_directory_recursive(root: Path, filename_glob: str) -> list[str]: """Lists files in directory recursively matching the given glob expression. Also supports GDAL Virtual File Systems (VSI). @@ -824,12 +824,12 @@ def list_directory_recursive(root: Path, filename_glob: str) -> list[Path]: .. versionadded:: #TODO """ - files: list[Path] + files: list[str] if path_is_vsi(root): # Change type to match expected input to filter files_as_str: list[str] = [str(file) for file in listdir_vsi_recursive(root)] # Prefix glob with wildcard to ignore directories - files = cast(list[Path], fnmatch.filter(files_as_str, '*' + filename_glob)) + files = fnmatch.filter(files_as_str, '*' + filename_glob) else: pathname = os.path.join(root, '**', filename_glob) files = list(glob.iglob(pathname, recursive=True)) From 740dcec74d8fe4d878f6bb43a6a948d827270dc6 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 12 Aug 2024 17:51:03 +0200 Subject: [PATCH 25/58] Bump fiona version in pyproject.toml --- pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 104eda29c84..e1990e177d9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,8 @@ dependencies = [ # einops 0.3+ required for einops.repeat "einops>=0.3", # fiona 1.8.21+ required for Python 3.10 wheels - "fiona>=1.8.21", + # fiona 1.9.0+ required for fiona.listdir + "fiona>=1.9.0", # kornia 0.7.3+ required for instance segmentation support in AugmentationSequential "kornia>=0.7.3", # lightly 1.4.5+ required for LARS optimizer From ba014af90274cf8b4c37e0f64d259e2222bcfcb3 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 12 Aug 2024 18:55:24 +0200 Subject: [PATCH 26/58] Introduce fixture temp_archive for reuse in tests --- tests/datasets/test_geo.py | 80 +++++++++++++++++++++++++++----------- 1 file changed, 58 insertions(+), 22 deletions(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index 52d5ed18e87..be8326b1855 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -5,7 +5,7 @@ import pickle import shutil import sys -from collections.abc import Iterable +from collections.abc import Generator, Iterable from pathlib import Path from typing import Any @@ -30,6 +30,7 @@ UnionDataset, VectorDataset, ) +from torchgeo.datasets.utils import list_directory_recursive class CustomGeoDataset(GeoDataset): @@ -84,6 +85,19 @@ def __len__(self) -> int: return 2 +@pytest.fixture(scope='module') +def temp_archive(request: SubRequest) -> Generator[tuple[str, str], None, None]: + # Runs before tests + dir_not_zipped = request.param + dir_zipped = f'{dir_not_zipped}.zip' + _ = shutil.make_archive(dir_not_zipped, 'zip', dir_not_zipped) + # make_archive returns absolute path, while input may be relative path. + # we opt to return the (relative) path as provided. + yield dir_not_zipped, dir_zipped + # Runs after tests + os.remove(dir_zipped) + + class TestGeoDataset: @pytest.fixture(scope='class') def dataset(self) -> GeoDataset: @@ -178,18 +192,6 @@ def test_files_property_for_non_existing_file_or_dir(self, tmp_path: Path) -> No with pytest.warns(UserWarning, match='Path was ignored.'): assert len(CustomGeoDataset(paths=paths).files) == 0 - def test_files_property_for_virtual_files(self) -> None: - # Tests only a subset of schemes and combinations. - paths = [ - 'file://directory/file.tif', - 'zip://archive.zip!folder/file.tif', - 'az://azure_bucket/prefix/file.tif', - '/vsiaz/azure_bucket/prefix/file.tif', - 'zip+az://azure_bucket/prefix/archive.zip!folder_in_archive/file.tif', - '/vsizip//vsiaz/azure_bucket/prefix/archive.zip/folder_in_archive/file.tif', - ] - assert len(CustomGeoDataset(paths=paths).files) == len(paths) - def test_files_property_ordered(self) -> None: """Ensure that the list of files is ordered.""" paths = ['file://file3.tif', 'file://file1.tif', 'file://file2.tif'] @@ -205,26 +207,60 @@ def test_files_property_deterministic(self) -> None: CustomGeoDataset(paths=paths1).files == CustomGeoDataset(paths=paths2).files ) - def test_zipped_sentinel2_dataset(self) -> None: + @pytest.mark.parametrize( + 'temp_archive', + [ + os.path.join( + 'tests', + 'data', + 'sentinel2', + 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', + ) + ], + indirect=True, + ) + def test_zipped_sentinel2_dataset_specific_file( + self, temp_archive: tuple[str, str] + ) -> None: + dir_not_zipped, dir_zipped = temp_archive + + specific_file_not_zipped = list_directory_recursive( + dir_not_zipped, '*B02_10m.jp2' + )[0] + filepath_within_root = specific_file_not_zipped.replace(dir_not_zipped, '') + + specific_file_zipped = os.path.join(dir_zipped, filepath_within_root) + + files_found = CustomGeoDataset(paths=f'zip://{specific_file_zipped}').files + assert len(files_found) == 1 + file = str(files_found[0]) + assert file.endswith(filepath_within_root) + + @pytest.mark.parametrize( + 'temp_archive', + [ + os.path.join( + 'tests', + 'data', + 'sentinel2', + 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', + ) + ], + indirect=True, + ) + def test_zipped_sentinel2_dataset_root(self, temp_archive: tuple[str, str]) -> None: + dir_not_zipped, dir_zipped = temp_archive bands = ['B04', 'B03', 'B02'] transforms = nn.Identity() cache = False - dir_not_zipped = os.path.join( - 'tests', - 'data', - 'sentinel2', - 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', - ) files_not_zipped = Sentinel2( paths=dir_not_zipped, bands=bands, transforms=transforms, cache=cache ).files - dir_zipped = shutil.make_archive(dir_not_zipped, 'zip', dir_not_zipped) files_zipped = Sentinel2( paths=f'zip://{dir_zipped}', bands=bands, transforms=transforms, cache=cache ).files - os.remove(dir_zipped) basenames_not_zipped = [Path(path).stem for path in files_not_zipped] basenames_zipped = [Path(path).stem for path in files_zipped] From e00b35604b161c2ceddcf66409143a06f3a8bddd Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 12 Aug 2024 19:24:03 +0200 Subject: [PATCH 27/58] Make GeoDataset.files warn if VSI does not exist --- tests/datasets/test_geo.py | 23 +++++++++++++++++++++++ torchgeo/datasets/geo.py | 16 +++++++++------- torchgeo/datasets/utils.py | 28 ++++++++++++++++++---------- 3 files changed, 50 insertions(+), 17 deletions(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index be8326b1855..78ca02c5a15 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -236,6 +236,29 @@ def test_zipped_sentinel2_dataset_specific_file( file = str(files_found[0]) assert file.endswith(filepath_within_root) + @pytest.mark.parametrize( + 'temp_archive', + [ + os.path.join( + 'tests', + 'data', + 'sentinel2', + 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', + ) + ], + indirect=True, + ) + def test_zipped_sentinel2_dataset_specific_file_not_exist( + self, temp_archive: tuple[str, str] + ) -> None: + dir_not_zipped, dir_zipped = temp_archive + file_zipped_not_existing = os.path.join(dir_zipped, 'non_existing_file.tif') + with pytest.warns(UserWarning, match='Path was ignored.'): + assert ( + len(CustomGeoDataset(paths=f'zip://{file_zipped_not_existing}').files) + == 0 + ) + @pytest.mark.parametrize( 'temp_archive', [ diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index bda3dd9753f..ec6eb3992d6 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -309,13 +309,15 @@ def files(self) -> list[Path]: if os.path.isfile(path): files.add(path) else: - files |= set(list_directory_recursive(path, self.filename_glob)) - if not files and not hasattr(self, 'download'): - warnings.warn( - f"Could not find any relevant files for provided path '{path}'. " - f'Path was ignored.', - UserWarning, - ) + files_found = set(list_directory_recursive(path, self.filename_glob)) + if not files_found and not hasattr(self, 'download'): + warnings.warn( + f"Could not find any relevant files for provided path '{path}'. " + f'Path was ignored.', + UserWarning, + ) + else: + files |= files_found # Sort the output to enforce deterministic behavior. return sorted(files) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 077a3e4a47a..da5d62488e3 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -797,14 +797,16 @@ def listdir_vsi_recursive(root: Path) -> list[str]: try: subdirs = fiona.listdir(dir) dirs.extend([os.path.join(dir, subdir) for subdir in subdirs]) - except FionaValueError: - # Assuming dir is a file as it is not a directory - # fiona.listdir can throw FionaValueError for only two reasons - # 1. 'is not a directory' - # 2. 'does not exist' - # We currently don't have tests for existing vsi, and will thus - # allow vsi to not exist. - files.append(dir) + except FionaValueError as e: + if 'is not a directory' in str(e): + # Assuming dir is a file as it is not a directory + # fiona.listdir can throw FionaValueError for only two reasons + files.append(dir) + else: + # fiona.listdir can throw FionaValueError for only two reasons + # 1. 'is not a directory' + # 2. 'does not exist' + raise return files @@ -827,9 +829,15 @@ def list_directory_recursive(root: Path, filename_glob: str) -> list[str]: files: list[str] if path_is_vsi(root): # Change type to match expected input to filter - files_as_str: list[str] = [str(file) for file in listdir_vsi_recursive(root)] + all_files: list[str] = [] + try: + all_files = listdir_vsi_recursive(root) + except FionaValueError: + # To match the behaviour of glob.iglob we silently return empty list + # for non-existing root. + pass # Prefix glob with wildcard to ignore directories - files = fnmatch.filter(files_as_str, '*' + filename_glob) + files = fnmatch.filter(all_files, '*' + filename_glob) else: pathname = os.path.join(root, '**', filename_glob) files = list(glob.iglob(pathname, recursive=True)) From 65ef978e1fa055d9867caf63c59de533be726620 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 12 Aug 2024 19:50:00 +0200 Subject: [PATCH 28/58] Replace failing test due to new behaviour of vsi --- tests/datasets/test_geo.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index 78ca02c5a15..bd9b01c21a9 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -192,17 +192,24 @@ def test_files_property_for_non_existing_file_or_dir(self, tmp_path: Path) -> No with pytest.warns(UserWarning, match='Path was ignored.'): assert len(CustomGeoDataset(paths=paths).files) == 0 - def test_files_property_ordered(self) -> None: + def test_files_property_ordered(self, tmp_path: Path) -> None: """Ensure that the list of files is ordered.""" - paths = ['file://file3.tif', 'file://file1.tif', 'file://file2.tif'] + + files = ['file3.tif', 'file1.tif', 'file2.tif'] + paths = [tmp_path / fake_file for fake_file in files] + for fake_file in paths: + fake_file.touch() assert CustomGeoDataset(paths=paths).files == sorted(paths) - def test_files_property_deterministic(self) -> None: + def test_files_property_deterministic(self, tmp_path: Path) -> None: """Ensure that the list of files is consistent regardless of their original order. """ - paths1 = ['file://file3.tif', 'file://file1.tif', 'file://file2.tif'] - paths2 = ['file://file2.tif', 'file://file3.tif', 'file://file1.tif'] + files = ['file3.tif', 'file1.tif', 'file2.tif'] + paths1 = [tmp_path / fake_file for fake_file in files] + paths2 = paths1[::-1] # reverse order + for fake_file in paths1: + fake_file.touch() assert ( CustomGeoDataset(paths=paths1).files == CustomGeoDataset(paths=paths2).files ) From 5192acd6727cbab89392387740537d6c511208d4 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 12 Aug 2024 20:09:50 +0200 Subject: [PATCH 29/58] Fix breaking test due to os.path.join not working on zip parent dir (vsi) --- tests/datasets/test_geo.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index bd9b01c21a9..c2bb12a2b43 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -231,12 +231,14 @@ def test_zipped_sentinel2_dataset_specific_file( ) -> None: dir_not_zipped, dir_zipped = temp_archive + filename_glob = Sentinel2.filename_glob.format('B02') specific_file_not_zipped = list_directory_recursive( - dir_not_zipped, '*B02_10m.jp2' + dir_not_zipped, filename_glob )[0] filepath_within_root = specific_file_not_zipped.replace(dir_not_zipped, '') - specific_file_zipped = os.path.join(dir_zipped, filepath_within_root) + # Cannot use os.path.join here, as dir_zipped has .zip extension. + specific_file_zipped = f'{dir_zipped}{filepath_within_root}' files_found = CustomGeoDataset(paths=f'zip://{specific_file_zipped}').files assert len(files_found) == 1 From 9f800f1ac7134bd26d299dadbd0c12b853596b1d Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 12 Aug 2024 20:47:37 +0200 Subject: [PATCH 30/58] Collect test on zip-archive in test class --- tests/datasets/test_geo.py | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index c2bb12a2b43..05800a791b0 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -214,6 +214,25 @@ def test_files_property_deterministic(self, tmp_path: Path) -> None: CustomGeoDataset(paths=paths1).files == CustomGeoDataset(paths=paths2).files ) + +class TestZippedDataset: + @pytest.mark.parametrize( + 'temp_archive', [os.path.join('tests', 'data', 'vector')], indirect=True + ) + def test_zipped_file(self, temp_archive: tuple[str, str]) -> None: + _, dir_zipped = temp_archive + filename = 'vector_2024.geojson' + + # Cannot use os.path.join here, as dir_zipped has .zip extension. + # Using '!' as separator between archive and file as per Apache Commons VFS + # https://rasterio.readthedocs.io/en/latest/topics/vsi.html + specific_file_zipped = f'{dir_zipped}!{filename}' + + files_found = CustomGeoDataset(paths=f'zip://{specific_file_zipped}').files + assert len(files_found) == 1 + file = str(files_found[0]) + assert file.endswith(filename) + @pytest.mark.parametrize( 'temp_archive', [ @@ -226,24 +245,24 @@ def test_files_property_deterministic(self, tmp_path: Path) -> None: ], indirect=True, ) - def test_zipped_sentinel2_dataset_specific_file( + def test_zipped_specific_file_nested_dir( self, temp_archive: tuple[str, str] ) -> None: dir_not_zipped, dir_zipped = temp_archive + # Listing, instead of hardcoding filepath filename_glob = Sentinel2.filename_glob.format('B02') specific_file_not_zipped = list_directory_recursive( dir_not_zipped, filename_glob )[0] - filepath_within_root = specific_file_not_zipped.replace(dir_not_zipped, '') + filepath_within_dir = specific_file_not_zipped.replace(dir_not_zipped, '') - # Cannot use os.path.join here, as dir_zipped has .zip extension. - specific_file_zipped = f'{dir_zipped}{filepath_within_root}' + specific_file_zipped = f'zip://{dir_zipped}!{filepath_within_dir}' - files_found = CustomGeoDataset(paths=f'zip://{specific_file_zipped}').files + files_found = CustomGeoDataset(paths=specific_file_zipped).files assert len(files_found) == 1 file = str(files_found[0]) - assert file.endswith(filepath_within_root) + assert file.endswith(filepath_within_dir) @pytest.mark.parametrize( 'temp_archive', From 93de375bf7de53e7d2d9e50e9ee74d11d703e2f8 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 12 Aug 2024 20:49:07 +0200 Subject: [PATCH 31/58] Update versionadded in dataset/utils.py --- torchgeo/datasets/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index da5d62488e3..6344b97b334 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -788,7 +788,7 @@ def listdir_vsi_recursive(root: Path) -> list[str]: A list of all file paths matching filename_glob in the root VSI directory or its subdirectories. - .. versionadded:: #TODO + .. versionadded:: #0.6 """ dirs = [str(root)] files = [] @@ -824,7 +824,7 @@ def list_directory_recursive(root: Path, filename_glob: str) -> list[str]: A list of all file paths matching filename_glob in the root directory or its subdirectories. - .. versionadded:: #TODO + .. versionadded:: #0.6 """ files: list[str] if path_is_vsi(root): From 37c4980f9674b8dcb76b3415b0651f6df9c0eea2 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 12 Aug 2024 20:50:14 +0200 Subject: [PATCH 32/58] Remove patch from fiona version Co-authored-by: Adam J. Stewart --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index e1990e177d9..c945a518d5f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,8 +39,8 @@ dependencies = [ # einops 0.3+ required for einops.repeat "einops>=0.3", # fiona 1.8.21+ required for Python 3.10 wheels - # fiona 1.9.0+ required for fiona.listdir - "fiona>=1.9.0", + # fiona 1.9+ required for fiona.listdir + "fiona>=1.9", # kornia 0.7.3+ required for instance segmentation support in AugmentationSequential "kornia>=0.7.3", # lightly 1.4.5+ required for LARS optimizer From 395b4bf42e6f62a29e260bbfe2362735904f20c8 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Tue, 13 Aug 2024 19:36:16 +0200 Subject: [PATCH 33/58] Add .DS_Store to gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 3a017d0ee6e..ddc8d74fd1f 100644 --- a/.gitignore +++ b/.gitignore @@ -149,3 +149,6 @@ dmypy.json # Pyre type checker .pyre/ + +# Mac +.DS_Store \ No newline at end of file From 6f041ee25a34a939d760c45bd3b59c47efd407d1 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Tue, 13 Aug 2024 21:26:19 +0200 Subject: [PATCH 34/58] Add test for https/curl files --- tests/datasets/test_geo.py | 229 ++++++++++++++++++++----------------- 1 file changed, 126 insertions(+), 103 deletions(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index 05800a791b0..6c3f73e676f 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -215,109 +215,6 @@ def test_files_property_deterministic(self, tmp_path: Path) -> None: ) -class TestZippedDataset: - @pytest.mark.parametrize( - 'temp_archive', [os.path.join('tests', 'data', 'vector')], indirect=True - ) - def test_zipped_file(self, temp_archive: tuple[str, str]) -> None: - _, dir_zipped = temp_archive - filename = 'vector_2024.geojson' - - # Cannot use os.path.join here, as dir_zipped has .zip extension. - # Using '!' as separator between archive and file as per Apache Commons VFS - # https://rasterio.readthedocs.io/en/latest/topics/vsi.html - specific_file_zipped = f'{dir_zipped}!{filename}' - - files_found = CustomGeoDataset(paths=f'zip://{specific_file_zipped}').files - assert len(files_found) == 1 - file = str(files_found[0]) - assert file.endswith(filename) - - @pytest.mark.parametrize( - 'temp_archive', - [ - os.path.join( - 'tests', - 'data', - 'sentinel2', - 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', - ) - ], - indirect=True, - ) - def test_zipped_specific_file_nested_dir( - self, temp_archive: tuple[str, str] - ) -> None: - dir_not_zipped, dir_zipped = temp_archive - - # Listing, instead of hardcoding filepath - filename_glob = Sentinel2.filename_glob.format('B02') - specific_file_not_zipped = list_directory_recursive( - dir_not_zipped, filename_glob - )[0] - filepath_within_dir = specific_file_not_zipped.replace(dir_not_zipped, '') - - specific_file_zipped = f'zip://{dir_zipped}!{filepath_within_dir}' - - files_found = CustomGeoDataset(paths=specific_file_zipped).files - assert len(files_found) == 1 - file = str(files_found[0]) - assert file.endswith(filepath_within_dir) - - @pytest.mark.parametrize( - 'temp_archive', - [ - os.path.join( - 'tests', - 'data', - 'sentinel2', - 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', - ) - ], - indirect=True, - ) - def test_zipped_sentinel2_dataset_specific_file_not_exist( - self, temp_archive: tuple[str, str] - ) -> None: - dir_not_zipped, dir_zipped = temp_archive - file_zipped_not_existing = os.path.join(dir_zipped, 'non_existing_file.tif') - with pytest.warns(UserWarning, match='Path was ignored.'): - assert ( - len(CustomGeoDataset(paths=f'zip://{file_zipped_not_existing}').files) - == 0 - ) - - @pytest.mark.parametrize( - 'temp_archive', - [ - os.path.join( - 'tests', - 'data', - 'sentinel2', - 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', - ) - ], - indirect=True, - ) - def test_zipped_sentinel2_dataset_root(self, temp_archive: tuple[str, str]) -> None: - dir_not_zipped, dir_zipped = temp_archive - bands = ['B04', 'B03', 'B02'] - transforms = nn.Identity() - cache = False - - files_not_zipped = Sentinel2( - paths=dir_not_zipped, bands=bands, transforms=transforms, cache=cache - ).files - - files_zipped = Sentinel2( - paths=f'zip://{dir_zipped}', bands=bands, transforms=transforms, cache=cache - ).files - - basenames_not_zipped = [Path(path).stem for path in files_not_zipped] - basenames_zipped = [Path(path).stem for path in files_zipped] - assert basenames_zipped == basenames_not_zipped - - class TestRasterDataset: @pytest.fixture(params=zip([['R', 'G', 'B'], None], [True, False])) def naip(self, request: SubRequest) -> NAIP: @@ -446,6 +343,132 @@ def test_no_all_bands(self) -> None: CustomSentinelDataset(root, bands=bands, transforms=transforms, cache=cache) +class TestVirtualFilesystems: + @pytest.mark.parametrize( + 'temp_archive', [os.path.join('tests', 'data', 'vector')], indirect=True + ) + def test_zipped_file(self, temp_archive: tuple[str, str]) -> None: + _, dir_zipped = temp_archive + filename = 'vector_2024.geojson' + + # Cannot use os.path.join here, as dir_zipped has .zip extension. + # Using '!' as separator between archive and file as per Apache Commons VFS + # https://rasterio.readthedocs.io/en/latest/topics/vsi.html + specific_file_zipped = f'{dir_zipped}!{filename}' + + files_found = CustomGeoDataset(paths=f'zip://{specific_file_zipped}').files + assert len(files_found) == 1 + file = str(files_found[0]) + assert file.endswith(filename) + + @pytest.mark.parametrize( + 'temp_archive', + [ + os.path.join( + 'tests', + 'data', + 'sentinel2', + 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', + ) + ], + indirect=True, + ) + def test_zipped_specific_file_dir(self, temp_archive: tuple[str, str]) -> None: + dir_not_zipped, dir_zipped = temp_archive + + # Listing, instead of hardcoding filepath + filename_glob = Sentinel2.filename_glob.format('B02') + specific_file_not_zipped = list_directory_recursive( + dir_not_zipped, filename_glob + )[0] + filepath_within_dir = specific_file_not_zipped.replace(dir_not_zipped, '') + + specific_file_zipped = f'zip://{dir_zipped}!{filepath_within_dir}' + + files_found = CustomGeoDataset(paths=specific_file_zipped).files + assert len(files_found) == 1 + file = str(files_found[0]) + assert file.endswith(filepath_within_dir) + + @pytest.mark.parametrize( + 'temp_archive', + [ + os.path.join( + 'tests', + 'data', + 'sentinel2', + 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', + ) + ], + indirect=True, + ) + def test_zipped_path_non_existing_file(self, temp_archive: tuple[str, str]) -> None: + dir_not_zipped, dir_zipped = temp_archive + file_zipped_not_existing = os.path.join(dir_zipped, 'non_existing_file.tif') + with pytest.warns(UserWarning, match='Path was ignored.'): + assert ( + len(CustomGeoDataset(paths=f'zip://{file_zipped_not_existing}').files) + == 0 + ) + + @pytest.mark.parametrize( + 'temp_archive', + [ + os.path.join( + 'tests', + 'data', + 'sentinel2', + 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', + ) + ], + indirect=True, + ) + def test_zipped_directory(self, temp_archive: tuple[str, str]) -> None: + dir_not_zipped, dir_zipped = temp_archive + bands = Sentinel2.rgb_bands + transforms = nn.Identity() + cache = False + + files_not_zipped = Sentinel2( + paths=dir_not_zipped, bands=bands, transforms=transforms, cache=cache + ).files + + files_zipped = Sentinel2( + paths=f'zip://{dir_zipped}', bands=bands, transforms=transforms, cache=cache + ).files + + basenames_not_zipped = [Path(path).stem for path in files_not_zipped] + basenames_zipped = [Path(path).stem for path in files_zipped] + assert basenames_zipped == basenames_not_zipped + + def test_http_files(self) -> None: + url = 'https://github.com/microsoft/torchgeo/raw/main' + dir = os.path.join( + 'tests', + 'data', + 'sentinel2', + 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', + 'GRANULE', + 'L2A_T26EMU_A035569_20220414T110747', + 'IMG_DATA', + 'R10m', + ) + files = [ + 'T26EMU_20220414T110751_B04_10m.jp2', + 'T26EMU_20190414T110751_B03_10m.jp2', + ] + paths = [os.path.join(url, dir, file) for file in files] + bands = Sentinel2.rgb_bands + transforms = nn.Identity() + cache = False + + files_found = Sentinel2( + paths=paths, bands=bands, transforms=transforms, cache=cache + ).files + + assert len(files_found) == 1 + + class TestVectorDataset: @pytest.fixture(scope='class') def dataset(self) -> CustomVectorDataset: From dc334d5b660e34f5a17fbd09dcb234272cd1ea23 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Tue, 13 Aug 2024 21:27:29 +0200 Subject: [PATCH 35/58] Check filname_glob before adding to files property --- torchgeo/datasets/geo.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index ec6eb3992d6..19ce714bdb4 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -4,6 +4,7 @@ """Base classes for all :mod:`torchgeo` datasets.""" import abc +import fnmatch import functools import os import pathlib @@ -307,17 +308,21 @@ def files(self) -> list[Path]: files: set[Path] = set() for path in paths: if os.path.isfile(path): - files.add(path) - else: - files_found = set(list_directory_recursive(path, self.filename_glob)) - if not files_found and not hasattr(self, 'download'): - warnings.warn( - f"Could not find any relevant files for provided path '{path}'. " - f'Path was ignored.', - UserWarning, - ) + if fnmatch.fnmatch(str(path), os.path.join('*', self.filename_glob)): + files.add(path) else: - files |= files_found + should_warn = True + elif files_found := set(list_directory_recursive(path, self.filename_glob)): + files |= files_found + else: + should_warn = True + + if 'should_warn' in locals(): + warnings.warn( + f"Could not find any relevant files for provided path '{path}'. " + f'Path was ignored.', + UserWarning, + ) # Sort the output to enforce deterministic behavior. return sorted(files) From dbbcec7edb21c9d7b34840d20e1e6f7966aa3bf0 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Tue, 13 Aug 2024 21:33:50 +0200 Subject: [PATCH 36/58] Define should_warn outside if --- torchgeo/datasets/geo.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index 19ce714bdb4..1f5f94258d9 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -307,17 +307,16 @@ def files(self) -> list[Path]: # Using set to remove any duplicates if directories are overlapping files: set[Path] = set() for path in paths: + file_not_found = True if os.path.isfile(path): if fnmatch.fnmatch(str(path), os.path.join('*', self.filename_glob)): files.add(path) - else: - should_warn = True + file_not_found = False elif files_found := set(list_directory_recursive(path, self.filename_glob)): files |= files_found - else: - should_warn = True + file_not_found = False - if 'should_warn' in locals(): + if file_not_found and not hasattr(self, 'download'): warnings.warn( f"Could not find any relevant files for provided path '{path}'. " f'Path was ignored.', From ccdbe9bdac1d690434115baaaf9c26bcd2d89300 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 26 Aug 2024 16:49:40 +0200 Subject: [PATCH 37/58] Try to support windows for vsi tests --- tests/datasets/test_geo.py | 17 ++++++++++++++--- torchgeo/datasets/utils.py | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index 8fed67b3e22..5c0fc8dd98f 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -385,12 +385,15 @@ def test_zipped_file(self, temp_archive: tuple[str, str]) -> None: _, dir_zipped = temp_archive filename = 'vector_2024.geojson' - # Cannot use os.path.join here, as dir_zipped has .zip extension. # Using '!' as separator between archive and file as per Apache Commons VFS # https://rasterio.readthedocs.io/en/latest/topics/vsi.html specific_file_zipped = f'{dir_zipped}!{filename}' - files_found = CustomGeoDataset(paths=f'zip://{specific_file_zipped}').files + vsi_path = f'zip://{specific_file_zipped}' + if sys.platform == 'win32': + vsi_path = os.path.join('zip://D:', specific_file_zipped) + + files_found = CustomGeoDataset(paths=vsi_path).files assert len(files_found) == 1 file = str(files_found[0]) assert file.endswith(filename) @@ -418,6 +421,10 @@ def test_zipped_specific_file_dir(self, temp_archive: tuple[str, str]) -> None: filepath_within_dir = specific_file_not_zipped.replace(dir_not_zipped, '') specific_file_zipped = f'zip://{dir_zipped}!{filepath_within_dir}' + if sys.platform == 'win32': + specific_file_zipped = os.path.join( + 'zip://D:', '{dir_zipped}!{filepath_within_dir}' + ) files_found = CustomGeoDataset(paths=specific_file_zipped).files assert len(files_found) == 1 @@ -467,8 +474,12 @@ def test_zipped_directory(self, temp_archive: tuple[str, str]) -> None: paths=dir_not_zipped, bands=bands, transforms=transforms, cache=cache ).files + vsi_path = f'zip://{dir_zipped}' + if sys.platform == 'win32': + vsi_path = os.path.join('zip://D:', dir_zipped) + files_zipped = Sentinel2( - paths=f'zip://{dir_zipped}', bands=bands, transforms=transforms, cache=cache + paths=vsi_path, bands=bands, transforms=transforms, cache=cache ).files basenames_not_zipped = [Path(path).stem for path in files_not_zipped] diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index bc8e06fec33..5231dc2aee0 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -696,7 +696,7 @@ def list_directory_recursive(root: Path, filename_glob: str) -> list[str]: # for non-existing root. pass # Prefix glob with wildcard to ignore directories - files = fnmatch.filter(all_files, '*' + filename_glob) + files = fnmatch.filter(all_files, os.path.join('*', filename_glob)) else: pathname = os.path.join(root, '**', filename_glob) files = list(glob.iglob(pathname, recursive=True)) From a2dd0d6d6358a6d84621c9b667675963977a745b Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Mon, 26 Aug 2024 17:35:21 +0200 Subject: [PATCH 38/58] Revert windows-specific path format --- tests/datasets/test_geo.py | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index 5c0fc8dd98f..d0123772bc4 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -389,11 +389,7 @@ def test_zipped_file(self, temp_archive: tuple[str, str]) -> None: # https://rasterio.readthedocs.io/en/latest/topics/vsi.html specific_file_zipped = f'{dir_zipped}!{filename}' - vsi_path = f'zip://{specific_file_zipped}' - if sys.platform == 'win32': - vsi_path = os.path.join('zip://D:', specific_file_zipped) - - files_found = CustomGeoDataset(paths=vsi_path).files + files_found = CustomGeoDataset(paths=f'zip://{specific_file_zipped}').files assert len(files_found) == 1 file = str(files_found[0]) assert file.endswith(filename) @@ -420,13 +416,9 @@ def test_zipped_specific_file_dir(self, temp_archive: tuple[str, str]) -> None: )[0] filepath_within_dir = specific_file_not_zipped.replace(dir_not_zipped, '') - specific_file_zipped = f'zip://{dir_zipped}!{filepath_within_dir}' - if sys.platform == 'win32': - specific_file_zipped = os.path.join( - 'zip://D:', '{dir_zipped}!{filepath_within_dir}' - ) - - files_found = CustomGeoDataset(paths=specific_file_zipped).files + files_found = CustomGeoDataset( + paths=f'zip://{dir_zipped}!{filepath_within_dir}' + ).files assert len(files_found) == 1 file = str(files_found[0]) assert file.endswith(filepath_within_dir) @@ -474,12 +466,8 @@ def test_zipped_directory(self, temp_archive: tuple[str, str]) -> None: paths=dir_not_zipped, bands=bands, transforms=transforms, cache=cache ).files - vsi_path = f'zip://{dir_zipped}' - if sys.platform == 'win32': - vsi_path = os.path.join('zip://D:', dir_zipped) - files_zipped = Sentinel2( - paths=vsi_path, bands=bands, transforms=transforms, cache=cache + paths=f'zip://{dir_zipped}', bands=bands, transforms=transforms, cache=cache ).files basenames_not_zipped = [Path(path).stem for path in files_not_zipped] From 08fde9898f4ce1c88c40b4f6fa3748c14f910a84 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Tue, 27 Aug 2024 15:24:27 +0200 Subject: [PATCH 39/58] Skip TestVirtualFilesystems if platform is windows --- tests/datasets/test_geo.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index d0123772bc4..f5a51cdf036 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -377,6 +377,11 @@ def test_no_all_bands(self) -> None: CustomSentinelDataset(root, bands=bands, transforms=transforms, cache=cache) +@pytest.mark.skipif( + sys.platform.startswith('win'), + reason='Have not been able to work this out on windows. ' + 'Try again when fiona version 1.10 arrives.', +) class TestVirtualFilesystems: @pytest.mark.parametrize( 'temp_archive', [os.path.join('tests', 'data', 'vector')], indirect=True From 3baa587841c90cf3ec4219de79f6670d9c13c902 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Tue, 27 Aug 2024 15:42:43 +0200 Subject: [PATCH 40/58] Remove user-specific ignore from gitignore --- .gitignore | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index ddc8d74fd1f..c1b1c3a415d 100644 --- a/.gitignore +++ b/.gitignore @@ -148,7 +148,4 @@ venv.bak/ dmypy.json # Pyre type checker -.pyre/ - -# Mac -.DS_Store \ No newline at end of file +.pyre/ \ No newline at end of file From be142aac5614a140e74a4d5c565f6f6409b85317 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Tue, 27 Aug 2024 15:43:47 +0200 Subject: [PATCH 41/58] Properly remove changes from .gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c1b1c3a415d..3a017d0ee6e 100644 --- a/.gitignore +++ b/.gitignore @@ -148,4 +148,4 @@ venv.bak/ dmypy.json # Pyre type checker -.pyre/ \ No newline at end of file +.pyre/ From c88111e0123c4cc80c1a916dd798381bd04a389e Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Wed, 28 Aug 2024 12:10:26 +0200 Subject: [PATCH 42/58] Rename VSI to VFS where appropriate --- torchgeo/datasets/utils.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index ad8d3450d58..40683a5a463 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -611,18 +611,22 @@ def percentile_normalization( return img_normalized -def path_is_vsi(path: Path) -> bool: - """Checks if the given path is pointing to a Virtual File System. +def path_is_gdal_vsi(path: Path) -> bool: + """Checks if the given path has a GDAL Virtual File System Interface (VSI) prefix. + + This is a path within an Apache Virtual File System (VFS) supported by GDAL and + related libraries (rasterio and fiona). .. note:: Does not check if the path exists, or if it is a dir or file. - VSI can for instance be Cloud Storage Blobs or zip-archives. + VFS can for instance be Cloud Storage Blobs or zip-archives. They will start with a prefix indicating this. For examples of these, see references for the two accepted syntaxes. * https://gdal.org/user/virtual_file_systems.html * https://rasterio.readthedocs.io/en/latest/topics/datasets.html + * https://commons.apache.org/proper/commons-vfs/filesystems.html Args: path: a directory or file @@ -635,16 +639,16 @@ def path_is_vsi(path: Path) -> bool: return '://' in str(path) or str(path).startswith('/vsi') -def listdir_vsi_recursive(root: Path) -> list[str]: - """Lists all files in Virtual File Systems (VSI) recursively. +def listdir_vfs_recursive(root: Path) -> list[str]: + """Lists all files in Virtual File Systems (VFS) recursively. Args: - root: directory to list. These must contain the prefix for the VSI + root: directory to list. These must contain the prefix for the VFS e.g. '/vsiaz/' or 'az://' for azure blob storage '/vsizip/' or 'zip://' for zipped archives Returns: - A list of all file paths matching filename_glob in the root VSI directory or its + A list of all file paths matching filename_glob in the root VFS directory or its subdirectories. .. versionadded:: #0.6 @@ -672,10 +676,10 @@ def listdir_vsi_recursive(root: Path) -> list[str]: def list_directory_recursive(root: Path, filename_glob: str) -> list[str]: """Lists files in directory recursively matching the given glob expression. - Also supports GDAL Virtual File Systems (VSI). + Also supports GDAL Virtual File Systems (VFS). Args: - root: directory to list. For VSI these will have prefix + root: directory to list. For VFS these will have prefix e.g. /vsiaz/ or az:// for azure blob storage filename_glob: filename pattern to filter filenames @@ -686,11 +690,11 @@ def list_directory_recursive(root: Path, filename_glob: str) -> list[str]: .. versionadded:: #0.6 """ files: list[str] - if path_is_vsi(root): + if path_is_gdal_vsi(root): # Change type to match expected input to filter all_files: list[str] = [] try: - all_files = listdir_vsi_recursive(root) + all_files = listdir_vfs_recursive(root) except FionaValueError: # To match the behaviour of glob.iglob we silently return empty list # for non-existing root. From cffd707d6964a29b34041bc49bd891d986c6a483 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Wed, 28 Aug 2024 12:12:15 +0200 Subject: [PATCH 43/58] Format docstring of listdir_vfs_recursive Co-authored-by: Adam J. Stewart --- torchgeo/datasets/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 40683a5a463..d938c1a9014 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -644,8 +644,8 @@ def listdir_vfs_recursive(root: Path) -> list[str]: Args: root: directory to list. These must contain the prefix for the VFS - e.g. '/vsiaz/' or 'az://' for azure blob storage - '/vsizip/' or 'zip://' for zipped archives + (e.g., '/vsiaz/' or 'az://' for azure blob storage, or + '/vsizip/' or 'zip://' for zipped archives). Returns: A list of all file paths matching filename_glob in the root VFS directory or its From 04740a27375a09f8bec944e0b926251a1ef87dbd Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Wed, 28 Aug 2024 12:12:42 +0200 Subject: [PATCH 44/58] Update torchgeo/datasets/utils.py Co-authored-by: Adam J. Stewart --- torchgeo/datasets/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index d938c1a9014..90616a1a5e9 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -651,7 +651,7 @@ def listdir_vfs_recursive(root: Path) -> list[str]: A list of all file paths matching filename_glob in the root VFS directory or its subdirectories. - .. versionadded:: #0.6 + .. versionadded:: 0.6 """ dirs = [str(root)] files = [] From 51a3d64f6f0339cb26707cea2579b952fd725605 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Wed, 28 Aug 2024 12:18:20 +0200 Subject: [PATCH 45/58] Update torchgeo/datasets/utils.py Co-authored-by: Adam J. Stewart --- torchgeo/datasets/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 90616a1a5e9..9baaaae4e78 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -687,7 +687,7 @@ def list_directory_recursive(root: Path, filename_glob: str) -> list[str]: A list of all file paths matching filename_glob in the root directory or its subdirectories. - .. versionadded:: #0.6 + .. versionadded:: 0.6 """ files: list[str] if path_is_gdal_vsi(root): From 7b335502312e3f03451512e91dbdff0ae681aad8 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Wed, 28 Aug 2024 12:25:16 +0200 Subject: [PATCH 46/58] Don't use os.path.join within VFS --- tests/datasets/test_geo.py | 5 ----- torchgeo/datasets/utils.py | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index f5a51cdf036..d0123772bc4 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -377,11 +377,6 @@ def test_no_all_bands(self) -> None: CustomSentinelDataset(root, bands=bands, transforms=transforms, cache=cache) -@pytest.mark.skipif( - sys.platform.startswith('win'), - reason='Have not been able to work this out on windows. ' - 'Try again when fiona version 1.10 arrives.', -) class TestVirtualFilesystems: @pytest.mark.parametrize( 'temp_archive', [os.path.join('tests', 'data', 'vector')], indirect=True diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 9baaaae4e78..14a4acc1a02 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -659,7 +659,7 @@ def listdir_vfs_recursive(root: Path) -> list[str]: dir = dirs.pop() try: subdirs = fiona.listdir(dir) - dirs.extend([os.path.join(dir, subdir) for subdir in subdirs]) + dirs.extend([f'{dir}/{subdir}' for subdir in subdirs]) except FionaValueError as e: if 'is not a directory' in str(e): # Assuming dir is a file as it is not a directory From b81591d5df6c350e3dd263a9a8ed44ea422c280d Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Wed, 28 Aug 2024 12:26:20 +0200 Subject: [PATCH 47/58] Update torchgeo/datasets/utils.py Co-authored-by: Adam J. Stewart --- torchgeo/datasets/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 14a4acc1a02..c38d9788fb3 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -703,7 +703,7 @@ def list_directory_recursive(root: Path, filename_glob: str) -> list[str]: files = fnmatch.filter(all_files, os.path.join('*', filename_glob)) else: pathname = os.path.join(root, '**', filename_glob) - files = list(glob.iglob(pathname, recursive=True)) + files = glob.glob(pathname, recursive=True) return files From c786a575da3a47b55c4d1bf98be325d1f3576df0 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Wed, 28 Aug 2024 13:08:59 +0200 Subject: [PATCH 48/58] String format wildcard instead of os.path.join --- torchgeo/datasets/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index c38d9788fb3..e93fe0684f5 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -700,7 +700,7 @@ def list_directory_recursive(root: Path, filename_glob: str) -> list[str]: # for non-existing root. pass # Prefix glob with wildcard to ignore directories - files = fnmatch.filter(all_files, os.path.join('*', filename_glob)) + files = fnmatch.filter(all_files, f'*{filename_glob}') else: pathname = os.path.join(root, '**', filename_glob) files = glob.glob(pathname, recursive=True) From bb3ad7850e8c4d00199c2005b4a6ce86d7d548e5 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Wed, 28 Aug 2024 14:33:33 +0200 Subject: [PATCH 49/58] Document raises --- torchgeo/datasets/utils.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index e93fe0684f5..d718278ee0d 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -651,6 +651,9 @@ def listdir_vfs_recursive(root: Path) -> list[str]: A list of all file paths matching filename_glob in the root VFS directory or its subdirectories. + Raises: + FileNotFoundError: If root does not exist. + .. versionadded:: 0.6 """ dirs = [str(root)] @@ -659,17 +662,14 @@ def listdir_vfs_recursive(root: Path) -> list[str]: dir = dirs.pop() try: subdirs = fiona.listdir(dir) + # Don't use os.path.join here because vsi uri's require forward-slash, + # even on windows. dirs.extend([f'{dir}/{subdir}' for subdir in subdirs]) except FionaValueError as e: if 'is not a directory' in str(e): - # Assuming dir is a file as it is not a directory - # fiona.listdir can throw FionaValueError for only two reasons files.append(dir) else: - # fiona.listdir can throw FionaValueError for only two reasons - # 1. 'is not a directory' - # 2. 'does not exist' - raise + raise FileNotFoundError(f'No such file or directory: {dir}') return files From 0824026195c3651189e459c0069941c86b38e4a8 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Wed, 28 Aug 2024 14:34:01 +0200 Subject: [PATCH 50/58] Dont use os.path.join for zip test --- tests/datasets/test_geo.py | 44 ++++++-------------------------------- 1 file changed, 7 insertions(+), 37 deletions(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index d0123772bc4..79b35b207b6 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -30,7 +30,6 @@ UnionDataset, VectorDataset, ) -from torchgeo.datasets.utils import list_directory_recursive class CustomGeoDataset(GeoDataset): @@ -409,15 +408,10 @@ def test_zipped_file(self, temp_archive: tuple[str, str]) -> None: def test_zipped_specific_file_dir(self, temp_archive: tuple[str, str]) -> None: dir_not_zipped, dir_zipped = temp_archive - # Listing, instead of hardcoding filepath - filename_glob = Sentinel2.filename_glob.format('B02') - specific_file_not_zipped = list_directory_recursive( - dir_not_zipped, filename_glob - )[0] - filepath_within_dir = specific_file_not_zipped.replace(dir_not_zipped, '') + filepath_within_dir = 'GRANULE/L2A_T26EMU_A035569_20220414T110747/IMG_DATA/R60m/T26EMU_20220414T110751_B02_60m.jp2' files_found = CustomGeoDataset( - paths=f'zip://{dir_zipped}!{filepath_within_dir}' + paths=f'zip://{dir_zipped}!/{filepath_within_dir}' ).files assert len(files_found) == 1 file = str(files_found[0]) @@ -437,10 +431,13 @@ def test_zipped_specific_file_dir(self, temp_archive: tuple[str, str]) -> None: ) def test_zipped_path_non_existing_file(self, temp_archive: tuple[str, str]) -> None: dir_not_zipped, dir_zipped = temp_archive - file_zipped_not_existing = os.path.join(dir_zipped, 'non_existing_file.tif') with pytest.warns(UserWarning, match='Path was ignored.'): assert ( - len(CustomGeoDataset(paths=f'zip://{file_zipped_not_existing}').files) + len( + CustomGeoDataset( + paths=f'zip://{dir_zipped}!/non_existing_file.tif' + ).files + ) == 0 ) @@ -474,33 +471,6 @@ def test_zipped_directory(self, temp_archive: tuple[str, str]) -> None: basenames_zipped = [Path(path).stem for path in files_zipped] assert basenames_zipped == basenames_not_zipped - def test_http_files(self) -> None: - url = 'https://github.com/microsoft/torchgeo/raw/main' - dir = os.path.join( - 'tests', - 'data', - 'sentinel2', - 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', - 'GRANULE', - 'L2A_T26EMU_A035569_20220414T110747', - 'IMG_DATA', - 'R10m', - ) - files = [ - 'T26EMU_20220414T110751_B04_10m.jp2', - 'T26EMU_20190414T110751_B03_10m.jp2', - ] - paths = [os.path.join(url, dir, file) for file in files] - bands = Sentinel2.rgb_bands - transforms = nn.Identity() - cache = False - - files_found = Sentinel2( - paths=paths, bands=bands, transforms=transforms, cache=cache - ).files - - assert len(files_found) == 1 - class TestVectorDataset: @pytest.fixture(scope='class') From 6a3d128cea778e9b60bc4d0f7a360eaec82ffd37 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Wed, 28 Aug 2024 14:47:21 +0200 Subject: [PATCH 51/58] Update type of error in try except --- tests/datasets/test_geo.py | 24 ------------------------ torchgeo/datasets/utils.py | 2 +- 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index 79b35b207b6..43508d7ccca 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -417,30 +417,6 @@ def test_zipped_specific_file_dir(self, temp_archive: tuple[str, str]) -> None: file = str(files_found[0]) assert file.endswith(filepath_within_dir) - @pytest.mark.parametrize( - 'temp_archive', - [ - os.path.join( - 'tests', - 'data', - 'sentinel2', - 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', - ) - ], - indirect=True, - ) - def test_zipped_path_non_existing_file(self, temp_archive: tuple[str, str]) -> None: - dir_not_zipped, dir_zipped = temp_archive - with pytest.warns(UserWarning, match='Path was ignored.'): - assert ( - len( - CustomGeoDataset( - paths=f'zip://{dir_zipped}!/non_existing_file.tif' - ).files - ) - == 0 - ) - @pytest.mark.parametrize( 'temp_archive', [ diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index d718278ee0d..921cc36e457 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -695,7 +695,7 @@ def list_directory_recursive(root: Path, filename_glob: str) -> list[str]: all_files: list[str] = [] try: all_files = listdir_vfs_recursive(root) - except FionaValueError: + except FileNotFoundError: # To match the behaviour of glob.iglob we silently return empty list # for non-existing root. pass From 0ad5db2b5a051b901fe8e222d085895b251deb02 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:14:25 +0200 Subject: [PATCH 52/58] Simplify tests --- tests/datasets/test_geo.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index 43508d7ccca..1f84189af6a 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -384,14 +384,22 @@ def test_zipped_file(self, temp_archive: tuple[str, str]) -> None: _, dir_zipped = temp_archive filename = 'vector_2024.geojson' - # Using '!' as separator between archive and file as per Apache Commons VFS - # https://rasterio.readthedocs.io/en/latest/topics/vsi.html specific_file_zipped = f'{dir_zipped}!{filename}' files_found = CustomGeoDataset(paths=f'zip://{specific_file_zipped}').files assert len(files_found) == 1 - file = str(files_found[0]) - assert file.endswith(filename) + assert str(files_found[0]).endswith(filename) + + @pytest.mark.parametrize( + 'temp_archive', [os.path.join('tests', 'data', 'vector')], indirect=True + ) + def test_zipped_file_non_existing(self, temp_archive: tuple[str, str]) -> None: + _, dir_zipped = temp_archive + with pytest.warns(UserWarning, match='Path was ignored.'): + files = CustomGeoDataset( + paths=f'zip://{dir_zipped}!/non_existing_file.tif' + ).files + assert len(files) == 0 @pytest.mark.parametrize( 'temp_archive', @@ -408,14 +416,16 @@ def test_zipped_file(self, temp_archive: tuple[str, str]) -> None: def test_zipped_specific_file_dir(self, temp_archive: tuple[str, str]) -> None: dir_not_zipped, dir_zipped = temp_archive - filepath_within_dir = 'GRANULE/L2A_T26EMU_A035569_20220414T110747/IMG_DATA/R60m/T26EMU_20220414T110751_B02_60m.jp2' + filepath_within_dir = ( + 'GRANULE/L2A_T26EMU_A035569_20220414T110747' + '/IMG_DATA/R60m/T26EMU_20220414T110751_B02_60m.jp2' + ) files_found = CustomGeoDataset( paths=f'zip://{dir_zipped}!/{filepath_within_dir}' ).files assert len(files_found) == 1 - file = str(files_found[0]) - assert file.endswith(filepath_within_dir) + assert str(files_found[0]).endswith(filepath_within_dir) @pytest.mark.parametrize( 'temp_archive', From 87ea80263e4274063f0771073582cae0218d4aac Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:22:17 +0200 Subject: [PATCH 53/58] Simplify files property --- torchgeo/datasets/geo.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index 5ec3dc32d4f..847610b6d31 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -308,15 +308,13 @@ def files(self) -> list[Path]: files: set[Path] = set() for path in paths: file_not_found = True - if os.path.isfile(path): - if fnmatch.fnmatch(str(path), os.path.join('*', self.filename_glob)): - files.add(path) - file_not_found = False + if os.path.isfile(path) and fnmatch.fnmatch( + str(path), os.path.join('*', self.filename_glob) + ): + files.add(path) elif files_found := set(list_directory_recursive(path, self.filename_glob)): files |= files_found - file_not_found = False - - if file_not_found and not hasattr(self, 'download'): + elif file_not_found and not hasattr(self, 'download'): warnings.warn( f"Could not find any relevant files for provided path '{path}'. " f'Path was ignored.', From 94c383521fc4b0a7ccd3fbe664e0bdcda4c527a0 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:24:42 +0200 Subject: [PATCH 54/58] Remove unnecessary check in if --- torchgeo/datasets/geo.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index 847610b6d31..e1efc45a37a 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -307,14 +307,13 @@ def files(self) -> list[Path]: # Using set to remove any duplicates if directories are overlapping files: set[Path] = set() for path in paths: - file_not_found = True if os.path.isfile(path) and fnmatch.fnmatch( str(path), os.path.join('*', self.filename_glob) ): files.add(path) elif files_found := set(list_directory_recursive(path, self.filename_glob)): files |= files_found - elif file_not_found and not hasattr(self, 'download'): + elif not hasattr(self, 'download'): warnings.warn( f"Could not find any relevant files for provided path '{path}'. " f'Path was ignored.', From 46e2375f7d7aefaaebb4501f55b30e981cbb0ecc Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Fri, 6 Sep 2024 10:55:42 +0200 Subject: [PATCH 55/58] Temp archive into tmp_path --- tests/datasets/test_geo.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index d5fac3a2b2e..191be2a367c 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -13,6 +13,7 @@ import torch import torch.nn as nn from _pytest.fixtures import SubRequest +from _pytest.tmpdir import TempPathFactory from rasterio.crs import CRS from rasterio.enums import Resampling from torch.utils.data import ConcatDataset @@ -85,13 +86,20 @@ def __len__(self) -> int: @pytest.fixture(scope='module') -def temp_archive(request: SubRequest) -> Generator[tuple[str, str], None, None]: +def module_tmp_path(tmp_path_factory: TempPathFactory) -> Path: + # The default fixture is scoped per funciton + return tmp_path_factory.mktemp('module_tmp') + + +@pytest.fixture(scope='module') +def temp_archive( + request: SubRequest, module_tmp_path: Path +) -> Generator[tuple[str, str], None, None]: # Runs before tests dir_not_zipped = request.param - dir_zipped = f'{dir_not_zipped}.zip' - _ = shutil.make_archive(dir_not_zipped, 'zip', dir_not_zipped) - # make_archive returns absolute path, while input may be relative path. - # we opt to return the (relative) path as provided. + dir_zipped = shutil.make_archive( + module_tmp_path / dir_not_zipped, 'zip', root_dir=dir_not_zipped + ) yield dir_not_zipped, dir_zipped # Runs after tests os.remove(dir_zipped) From 2d54680bbf45ff08707a99c160920c5c44b613d6 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Fri, 6 Sep 2024 10:56:41 +0200 Subject: [PATCH 56/58] Make utility funcitons non-public --- torchgeo/datasets/geo.py | 6 ++++-- torchgeo/datasets/utils.py | 14 +++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py index f2b9389580d..4929b286344 100644 --- a/torchgeo/datasets/geo.py +++ b/torchgeo/datasets/geo.py @@ -36,10 +36,10 @@ from .utils import ( BoundingBox, Path, + _list_directory_recursive, array_to_tensor, concat_samples, disambiguate_timestamp, - list_directory_recursive, merge_samples, ) @@ -311,7 +311,9 @@ def files(self) -> list[str]: str(path), os.path.join('*', self.filename_glob) ): files.add(str(path)) - elif files_found := set(list_directory_recursive(path, self.filename_glob)): + elif files_found := set( + _list_directory_recursive(path, self.filename_glob) + ): files |= files_found elif not hasattr(self, 'download'): warnings.warn( diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 921cc36e457..0f092919c2a 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -611,7 +611,7 @@ def percentile_normalization( return img_normalized -def path_is_gdal_vsi(path: Path) -> bool: +def _path_is_gdal_vsi(path: Path) -> bool: """Checks if the given path has a GDAL Virtual File System Interface (VSI) prefix. This is a path within an Apache Virtual File System (VFS) supported by GDAL and @@ -639,7 +639,7 @@ def path_is_gdal_vsi(path: Path) -> bool: return '://' in str(path) or str(path).startswith('/vsi') -def listdir_vfs_recursive(root: Path) -> list[str]: +def _listdir_vfs_recursive(root: Path) -> list[str]: """Lists all files in Virtual File Systems (VFS) recursively. Args: @@ -654,7 +654,7 @@ def listdir_vfs_recursive(root: Path) -> list[str]: Raises: FileNotFoundError: If root does not exist. - .. versionadded:: 0.6 + .. versionadded:: 0.7 """ dirs = [str(root)] files = [] @@ -673,7 +673,7 @@ def listdir_vfs_recursive(root: Path) -> list[str]: return files -def list_directory_recursive(root: Path, filename_glob: str) -> list[str]: +def _list_directory_recursive(root: Path, filename_glob: str) -> list[str]: """Lists files in directory recursively matching the given glob expression. Also supports GDAL Virtual File Systems (VFS). @@ -687,14 +687,14 @@ def list_directory_recursive(root: Path, filename_glob: str) -> list[str]: A list of all file paths matching filename_glob in the root directory or its subdirectories. - .. versionadded:: 0.6 + .. versionadded:: 0.7 """ files: list[str] - if path_is_gdal_vsi(root): + if _path_is_gdal_vsi(root): # Change type to match expected input to filter all_files: list[str] = [] try: - all_files = listdir_vfs_recursive(root) + all_files = _listdir_vfs_recursive(root) except FileNotFoundError: # To match the behaviour of glob.iglob we silently return empty list # for non-existing root. From d1d8a4a41d2d32008248b59d627028660c124e17 Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Fri, 6 Sep 2024 10:56:59 +0200 Subject: [PATCH 57/58] Fix typo in comment --- tests/datasets/test_geo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index 191be2a367c..68fad56866c 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -87,7 +87,7 @@ def __len__(self) -> int: @pytest.fixture(scope='module') def module_tmp_path(tmp_path_factory: TempPathFactory) -> Path: - # The default fixture is scoped per funciton + # The default fixture is scoped per function return tmp_path_factory.mktemp('module_tmp') From d22a5949c867bc2de7001373000dd9cf15ecd1db Mon Sep 17 00:00:00 2001 From: Adrian Tofting <11158599+adriantre@users.noreply.github.com> Date: Fri, 6 Sep 2024 10:59:48 +0200 Subject: [PATCH 58/58] Move VFS tests to TestGeoDataset --- tests/datasets/test_geo.py | 162 ++++++++++++++++++------------------- 1 file changed, 80 insertions(+), 82 deletions(-) diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py index 68fad56866c..5db62a53456 100644 --- a/tests/datasets/test_geo.py +++ b/tests/datasets/test_geo.py @@ -230,6 +230,86 @@ def test_files_property_mix_str_and_pathlib(self, tmp_path: Path) -> None: ds = CustomGeoDataset(paths=[str(foo), bar]) assert ds.files == [str(bar), str(foo)] + @pytest.mark.parametrize( + 'temp_archive', [os.path.join('tests', 'data', 'vector')], indirect=True + ) + def test_zipped_file(self, temp_archive: tuple[str, str]) -> None: + _, dir_zipped = temp_archive + filename = 'vector_2024.geojson' + + specific_file_zipped = f'{dir_zipped}!{filename}' + + files_found = CustomGeoDataset(paths=f'zip://{specific_file_zipped}').files + assert len(files_found) == 1 + assert str(files_found[0]).endswith(filename) + + @pytest.mark.parametrize( + 'temp_archive', [os.path.join('tests', 'data', 'vector')], indirect=True + ) + def test_zipped_file_non_existing(self, temp_archive: tuple[str, str]) -> None: + _, dir_zipped = temp_archive + with pytest.warns(UserWarning, match='Path was ignored.'): + files = CustomGeoDataset( + paths=f'zip://{dir_zipped}!/non_existing_file.tif' + ).files + assert len(files) == 0 + + @pytest.mark.parametrize( + 'temp_archive', + [ + os.path.join( + 'tests', + 'data', + 'sentinel2', + 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', + ) + ], + indirect=True, + ) + def test_zipped_specific_file_dir(self, temp_archive: tuple[str, str]) -> None: + dir_not_zipped, dir_zipped = temp_archive + + filepath_within_dir = ( + 'GRANULE/L2A_T26EMU_A035569_20220414T110747' + '/IMG_DATA/R60m/T26EMU_20220414T110751_B02_60m.jp2' + ) + + files_found = CustomGeoDataset( + paths=f'zip://{dir_zipped}!/{filepath_within_dir}' + ).files + assert len(files_found) == 1 + assert str(files_found[0]).endswith(filepath_within_dir) + + @pytest.mark.parametrize( + 'temp_archive', + [ + os.path.join( + 'tests', + 'data', + 'sentinel2', + 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', + ) + ], + indirect=True, + ) + def test_zipped_directory(self, temp_archive: tuple[str, str]) -> None: + dir_not_zipped, dir_zipped = temp_archive + bands = Sentinel2.rgb_bands + transforms = nn.Identity() + cache = False + + files_not_zipped = Sentinel2( + paths=dir_not_zipped, bands=bands, transforms=transforms, cache=cache + ).files + + files_zipped = Sentinel2( + paths=f'zip://{dir_zipped}', bands=bands, transforms=transforms, cache=cache + ).files + + basenames_not_zipped = [Path(path).stem for path in files_not_zipped] + basenames_zipped = [Path(path).stem for path in files_zipped] + assert basenames_zipped == basenames_not_zipped + class TestRasterDataset: naip_dir = os.path.join('tests', 'data', 'naip') @@ -393,88 +473,6 @@ def test_no_all_bands(self) -> None: CustomSentinelDataset(root, bands=bands, transforms=transforms, cache=cache) -class TestVirtualFilesystems: - @pytest.mark.parametrize( - 'temp_archive', [os.path.join('tests', 'data', 'vector')], indirect=True - ) - def test_zipped_file(self, temp_archive: tuple[str, str]) -> None: - _, dir_zipped = temp_archive - filename = 'vector_2024.geojson' - - specific_file_zipped = f'{dir_zipped}!{filename}' - - files_found = CustomGeoDataset(paths=f'zip://{specific_file_zipped}').files - assert len(files_found) == 1 - assert str(files_found[0]).endswith(filename) - - @pytest.mark.parametrize( - 'temp_archive', [os.path.join('tests', 'data', 'vector')], indirect=True - ) - def test_zipped_file_non_existing(self, temp_archive: tuple[str, str]) -> None: - _, dir_zipped = temp_archive - with pytest.warns(UserWarning, match='Path was ignored.'): - files = CustomGeoDataset( - paths=f'zip://{dir_zipped}!/non_existing_file.tif' - ).files - assert len(files) == 0 - - @pytest.mark.parametrize( - 'temp_archive', - [ - os.path.join( - 'tests', - 'data', - 'sentinel2', - 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', - ) - ], - indirect=True, - ) - def test_zipped_specific_file_dir(self, temp_archive: tuple[str, str]) -> None: - dir_not_zipped, dir_zipped = temp_archive - - filepath_within_dir = ( - 'GRANULE/L2A_T26EMU_A035569_20220414T110747' - '/IMG_DATA/R60m/T26EMU_20220414T110751_B02_60m.jp2' - ) - - files_found = CustomGeoDataset( - paths=f'zip://{dir_zipped}!/{filepath_within_dir}' - ).files - assert len(files_found) == 1 - assert str(files_found[0]).endswith(filepath_within_dir) - - @pytest.mark.parametrize( - 'temp_archive', - [ - os.path.join( - 'tests', - 'data', - 'sentinel2', - 'S2A_MSIL2A_20220414T110751_N0400_R108_T26EMU_20220414T165533.SAFE', - ) - ], - indirect=True, - ) - def test_zipped_directory(self, temp_archive: tuple[str, str]) -> None: - dir_not_zipped, dir_zipped = temp_archive - bands = Sentinel2.rgb_bands - transforms = nn.Identity() - cache = False - - files_not_zipped = Sentinel2( - paths=dir_not_zipped, bands=bands, transforms=transforms, cache=cache - ).files - - files_zipped = Sentinel2( - paths=f'zip://{dir_zipped}', bands=bands, transforms=transforms, cache=cache - ).files - - basenames_not_zipped = [Path(path).stem for path in files_not_zipped] - basenames_zipped = [Path(path).stem for path in files_zipped] - assert basenames_zipped == basenames_not_zipped - - class TestVectorDataset: @pytest.fixture(scope='class') def dataset(self) -> CustomVectorDataset:

jo6PpY%6#u($UGS_*T<)4wYJ{%g&!$Cp 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