Skip to content

Commit

Permalink
test: add glob and rglob tests (#243)
Browse files Browse the repository at this point in the history
  • Loading branch information
12rambau authored Mar 11, 2024
2 parents 8efbdf1 + 3744833 commit e1ddfd8
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 0 deletions.
2 changes: 2 additions & 0 deletions docs/usage/layout.rst
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,8 @@ Operation
- :py:meth:`ee.Asset.unlink <geetools.Asset.Asset.unlink>`: :docstring:`geetools.Asset.unlink`
- :py:meth:`ee.Asset.delete <geetools.Asset.Asset.delete>`: :docstring:`geetools.Asset.delete`
- :py:meth:`ee.Asset.copy <geetools.Asset.Asset.copy>`: :docstring:`geetools.Asset.copy`
- :py:meth:`ee.Asset.glob <geetools.Asset.Asset.glob>`: :docstring:`geetools.Asset.glob`
- :py:meth:`ee.Asset.rglob <geetools.Asset.Asset.rglob>`: :docstring:`geetools.Asset.rglob`

Property
########
Expand Down
28 changes: 28 additions & 0 deletions geetools/Asset/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -682,3 +682,31 @@ def copy(self, new_asset: Asset, overwrite: bool = False) -> Asset:
ee.data.copyAsset(self.as_posix(), new_asset.as_posix(), allowOverwrite=True)

return new_asset

def glob(self, pattern: str) -> list:
"""Return a list of assets matching the pattern.
Args:
pattern: The pattern to match with the asset name.
Examples:
.. code-block:: python
asset = ee.Asset("projects/ee-geetools/assets/folder")
asset.glob("image_*")
"""
return [a for a in self.iterdir(recursive=False) if a.match(pattern)]

def rglob(self, pattern: str) -> list:
"""Return a list of assets matching the pattern recursively.
Args:
pattern: The pattern to match with the asset name.
Examples:
.. code-block:: python
asset = ee.Asset("projects/ee-geetools/assets/folder")
asset.rglob("image_*")
"""
return [a for a in self.iterdir(recursive=True) if a.match(pattern)]
16 changes: 16 additions & 0 deletions tests/test_Asset.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,22 @@ def test_iterdir_nodir(self, gee_test_folder):
with pytest.raises(ValueError):
(ee.Asset(gee_test_folder) / "folder" / "image").iterdir()

def test_glob(self, gee_test_folder, gee_hash, data_regression):
folder = ee.Asset(gee_test_folder) / "folder"
assets = [
str(a).replace(EARTHENGINE_PROJECT, "ee-project").replace(gee_hash, "hash")
for a in folder.glob("*/image")
]
data_regression.check(assets)

def test_rglob(self, gee_test_folder, gee_hash, data_regression):
folder = ee.Asset(gee_test_folder) / "folder"
assets = [
str(a).replace(EARTHENGINE_PROJECT, "ee-project").replace(gee_hash, "hash")
for a in folder.rglob("*/image")
]
data_regression.check(assets)

def test_mkdir(self, gee_test_folder):
gee_test_folder = ee.Asset(gee_test_folder)
asset = (gee_test_folder / "new_mkdir_folder").mkdir()
Expand Down
1 change: 1 addition & 0 deletions tests/test_Asset/test_glob.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- projects/ee-project/assets/hash/folder/image
2 changes: 2 additions & 0 deletions tests/test_Asset/test_rglob.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- projects/ee-project/assets/hash/folder/image
- projects/ee-project/assets/hash/folder/subfolder/image

0 comments on commit e1ddfd8

Please sign in to comment.