eo-tides 0.6.2.dev7__tar.gz → 0.6.2.dev10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/PKG-INFO +1 -1
  2. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/changelog.md +10 -0
  3. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/eo_tides/model.py +55 -15
  4. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/pyproject.toml +1 -1
  5. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/tests/test_utils.py +10 -13
  6. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/tests/testing.ipynb +39 -4
  7. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/uv.lock +13 -13
  8. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/.editorconfig +0 -0
  9. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  10. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  11. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/.github/actions/setup-python-env/action.yml +0 -0
  12. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/.github/workflows/check-links.yml +0 -0
  13. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/.github/workflows/main.yml +0 -0
  14. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/.github/workflows/on-release-main.yml +0 -0
  15. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/.github/workflows/paper.yml +0 -0
  16. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/.gitignore +0 -0
  17. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/.pre-commit-config.yaml +0 -0
  18. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/CITATION.cff +0 -0
  19. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/CONTRIBUTING.md +0 -0
  20. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/Dockerfile +0 -0
  21. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/LICENSE +0 -0
  22. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/Makefile +0 -0
  23. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/README.md +0 -0
  24. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/codecov.yaml +0 -0
  25. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/api.md +0 -0
  26. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/assets/dtu23_download.jpg +0 -0
  27. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/assets/eo-tides-abstract.gif +0 -0
  28. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/assets/eo-tides-logo-128.png +0 -0
  29. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/assets/eo-tides-logo-256.png +0 -0
  30. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/assets/eo-tides-logo.gif +0 -0
  31. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/assets/eo-tides-logo.png +0 -0
  32. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/assets/eot20_download.jpg +0 -0
  33. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/assets/fes_ftp.jpg +0 -0
  34. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/assets/fes_myproducts.jpg +0 -0
  35. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/assets/fes_productselection.jpg +0 -0
  36. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/assets/fes_subscriptions.jpg +0 -0
  37. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/assets/got_download.jpg +0 -0
  38. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/assets/tide_models_clipped.jpg +0 -0
  39. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/assets/tpxo_download.jpg +0 -0
  40. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/credits.md +0 -0
  41. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/index.md +0 -0
  42. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/install.md +0 -0
  43. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/migration.md +0 -0
  44. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/notebooks/Case_study_intertidal.ipynb +0 -0
  45. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/notebooks/Model_tides.ipynb +0 -0
  46. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/notebooks/Satellite_data.ipynb +0 -0
  47. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/notebooks/Tide_statistics.ipynb +0 -0
  48. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/notebooks/Validating_tides.ipynb +0 -0
  49. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/setup.md +0 -0
  50. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/docs/stylesheets/extra.css +0 -0
  51. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/eo_tides/__init__.py +0 -0
  52. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/eo_tides/eo.py +0 -0
  53. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/eo_tides/stats.py +0 -0
  54. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/eo_tides/utils.py +0 -0
  55. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/eo_tides/validation.py +0 -0
  56. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/mkdocs.yml +0 -0
  57. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/paper/benchmarking.ipynb +0 -0
  58. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/paper/figures/joss_abstract.png +0 -0
  59. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/paper/figures/joss_fig_gesla.png +0 -0
  60. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/paper/figures/joss_fig_list.png +0 -0
  61. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/paper/figures/joss_fig_pixel.png +0 -0
  62. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/paper/figures/joss_fig_stats.png +0 -0
  63. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/paper/paper.bib +0 -0
  64. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/paper/paper.md +0 -0
  65. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/paper/paper.pdf +0 -0
  66. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/tests/conftest.py +0 -0
  67. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/tests/data/GESLA3_ALL 2.csv +0 -0
  68. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/tests/data/IDO71013_2020.csv +0 -0
  69. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/tests/data/broome-62650-aus-bom +0 -0
  70. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/tests/data/san_diego_ca-569a-usa-uhslc +0 -0
  71. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/tests/data/sydney_fort_denison-60370-aus-bom +0 -0
  72. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/tests/data/tide_models.tar.gz +0 -0
  73. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/tests/test_eo.py +0 -0
  74. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/tests/test_model.py +0 -0
  75. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/tests/test_stats.py +0 -0
  76. {eo_tides-0.6.2.dev7 → eo_tides-0.6.2.dev10}/tests/test_validation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eo-tides
3
- Version: 0.6.2.dev7
3
+ Version: 0.6.2.dev10
4
4
  Summary: Tide modelling tools for large-scale satellite earth observation analysis
5
5
  Project-URL: Homepage, https://GeoscienceAustralia.github.io/eo-tides/
6
6
  Project-URL: Repository, https://github.com/GeoscienceAustralia/eo-tides
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.6.2
4
+
5
+ ### New features
6
+
7
+ - Added `apply_node` parameteter to `model_tides` to apply `pyTMD`'s adjustments to harmonic constituents to allow for periodic modulations over the 18.6-year nodal period (lunar nodal tide). Default is False.
8
+
9
+ ### Bug fixes
10
+
11
+ - Further fixes for bug causing tide model clipping with `clip_tides` to fail for bounding boxes completely west of the prime meridian ([#50](https://github.com/GeoscienceAustralia/eo-tides/issues/50)); default value for `crop` param is now `"auto"` instead of `True`.
12
+
3
13
  ## v0.6.1
4
14
 
5
15
  ### Bug fixes
@@ -3,6 +3,7 @@ from __future__ import annotations
3
3
 
4
4
  import os
5
5
  import textwrap
6
+ import warnings
6
7
  from concurrent.futures import ProcessPoolExecutor
7
8
  from concurrent.futures.process import BrokenProcessPool
8
9
  from functools import partial
@@ -83,6 +84,7 @@ def _model_tides(
83
84
  cutoff,
84
85
  crop,
85
86
  crop_buffer,
87
+ append_node,
86
88
  ):
87
89
  """Worker function applied in parallel by `model_tides`. Handles the
88
90
  extraction of tide modelling constituents and tide modelling using
@@ -104,12 +106,12 @@ def _model_tides(
104
106
  lon,
105
107
  lat,
106
108
  type=pytmd_model.type,
107
- crop=crop,
109
+ crop=True if crop == "auto" else crop,
108
110
  buffer=crop_buffer,
109
111
  method=method,
110
112
  extrapolate=extrapolate,
111
113
  cutoff=cutoff,
112
- append_node=False,
114
+ append_node=append_node,
113
115
  )
114
116
 
115
117
  # TODO: Return constituents
@@ -117,16 +119,45 @@ def _model_tides(
117
119
  # print(amp.shape, ph.shape, c)
118
120
  # print(pd.DataFrame({"amplitude": amp}))
119
121
 
120
- # Raise error if constituent files no not cover analysis extent
122
+ except ValueError:
123
+ # If on-the-fly cropping is auto, try again with crop turned off
124
+ if crop == "auto":
125
+ warnings.warn(
126
+ "On-the-fly cropping is not compatible with the provided "
127
+ "clipped model files; running with `crop=False`."
128
+ )
129
+
130
+ # Read tidal constants and interpolate to grid points
131
+ amp, ph, c = pytmd_model.extract_constants(
132
+ lon,
133
+ lat,
134
+ type=pytmd_model.type,
135
+ crop=False,
136
+ buffer=crop_buffer,
137
+ method=method,
138
+ extrapolate=extrapolate,
139
+ cutoff=cutoff,
140
+ append_node=append_node,
141
+ )
142
+
143
+ # Otherwise, raise error if cropping if set to True
144
+ else:
145
+ error_msg = (
146
+ "On-the-fly cropping (e.g. `crop=True`) is not compatible with your "
147
+ "provided clipped model files. Please set `crop=False` or `crop='auto'`, "
148
+ "or run your analysis on unclipped global model files to avoid this error."
149
+ )
150
+ raise Exception(error_msg) from None
151
+
152
+ # Raise error if constituent files do not cover analysis extent
121
153
  except IndexError:
122
- error_msg = f"""
123
- The {model} tide model constituent files do not cover the analysis extent
124
- ({min(lon):.2f}, {max(lon):.2f}, {min(lat):.2f}, {max(lat):.2f}).
125
- This can occur if you are using clipped model files to improve run times.
126
- Consider using model files that cover your entire analysis area, or set `crop=False`
127
- to reduce the extent of tide model constituent files that is loaded.
128
- """
129
- raise Exception(textwrap.dedent(error_msg).strip()) from None
154
+ error_msg = (
155
+ f"The {model} tide model constituent files do not cover the analysis extent "
156
+ f"({min(lon):.2f}, {max(lon):.2f}, {min(lat):.2f}, {max(lat):.2f}). "
157
+ "This can occur if you are using clipped model files to improve run times. "
158
+ "Consider using model files that cover your entire analysis area."
159
+ )
160
+ raise Exception(error_msg) from None
130
161
 
131
162
  # Calculate complex phase in radians for Euler's
132
163
  cph = -1j * ph * np.pi / 180.0
@@ -397,8 +428,9 @@ def model_tides(
397
428
  method: str = "linear",
398
429
  extrapolate: bool = True,
399
430
  cutoff: float | None = None,
400
- crop: bool = True,
431
+ crop: bool | str = "auto",
401
432
  crop_buffer: float | None = 5,
433
+ append_node: bool = False,
402
434
  parallel: bool = True,
403
435
  parallel_splits: int | str = "auto",
404
436
  parallel_max: int | None = None,
@@ -503,15 +535,22 @@ def model_tides(
503
535
  Extrapolation cutoff in kilometers. The default is None, which
504
536
  will extrapolate for all points regardless of distance from the
505
537
  valid tide modelling domain.
506
- crop : bool, optional
538
+ crop : bool or str, optional
507
539
  Whether to crop tide model constituent files on-the-fly to
508
- improve performance. Defaults to True; use `crop_buffer`
509
- to customise the buffer distance used to crop the files.
540
+ improve performance. Defaults to "auto", which will attempt to
541
+ apply on-the-fly cropping where possible (some clipped model
542
+ files restricted entirely to the western hemisphere are not
543
+ suitable for on-the-fly cropping). Set `crop_buffer` to
544
+ customise the buffer distance used to crop the files.
510
545
  crop_buffer : int or float, optional
511
546
  The buffer distance in degrees used to crop tide model
512
547
  constituent files around the modelling area. Defaults to 5,
513
548
  which will crop constituents using a five degree buffer on
514
549
  either side of the analysis extent.
550
+ append_node: bool, optional
551
+ Apply adjustments to harmonic constituents to allow for periodic
552
+ modulations over the 18.6-year nodal period (lunar nodal tide).
553
+ Default is False.
515
554
  parallel : bool, optional
516
555
  Whether to parallelise tide modelling. If multiple tide models
517
556
  are requested, these will be run in parallel. If enough workers
@@ -600,6 +639,7 @@ def model_tides(
600
639
  cutoff=np.inf if cutoff is None else cutoff,
601
640
  crop=crop,
602
641
  crop_buffer=crop_buffer,
642
+ append_node=append_node,
603
643
  )
604
644
 
605
645
  # If automatic parallel splits, calculate optimal value
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "eo-tides"
3
- version = "0.6.2.dev7"
3
+ version = "0.6.2.dev10"
4
4
  description = "Tide modelling tools for large-scale satellite earth observation analysis"
5
5
  authors = [
6
6
  { name = "Robbi Bishop-Taylor" },
@@ -72,7 +72,7 @@ def test_clip_models():
72
72
 
73
73
  # Set modelling location
74
74
  x, y = 122.28, -18.06
75
- time = pd.date_range(start="2000-01", end="2001-03", freq="5h")
75
+ time = pd.date_range(start="2000-01", end="2001-02", freq="5h")
76
76
 
77
77
  # Model using unclipped vs clipped files
78
78
  df_unclipped = model_tides(
@@ -81,7 +81,7 @@ def test_clip_models():
81
81
  time=time,
82
82
  model="HAMTIDE11",
83
83
  directory=in_dir,
84
- crop=False,
84
+ # crop=False,
85
85
  )
86
86
  df_clipped = model_tides(
87
87
  x=x,
@@ -89,7 +89,6 @@ def test_clip_models():
89
89
  time=time,
90
90
  model="HAMTIDE11",
91
91
  directory=out_dir,
92
- crop=False,
93
92
  )
94
93
 
95
94
  # Verify both produce the same results
@@ -98,15 +97,15 @@ def test_clip_models():
98
97
 
99
98
  # Test clipping across multiple global locations using synthetic HAMTIDE11 data
100
99
  @pytest.mark.parametrize(
101
- "bbox, name",
100
+ "bbox, point, name",
102
101
  [
103
- ((-166, 14, -151, 29), "hawaii"), # entirely W of prime meridian
104
- ((-13, 49, 6, 60), "uk"), # crossing prime meridian
105
- ((105.292969, -47.872144, 160.312500, -5.266008), "aus"), # entirely E of prime meridian
106
- ((-256.640625, 7.013668, -119.794922, 63.391522), "pacific"), # crossing antimeridian
102
+ ((-166, 14, -151, 29), (19.60, -155.46), "hawaii"), # entirely W of prime meridian
103
+ ((-13, 49, 6, 60), (51.47, 0.84), "uk"), # crossing prime meridian
104
+ ((105, -48, 160, -5), (-25.59, 153.03), "aus"), # entirely E of prime meridian
105
+ ((-257, 7, -120, 63), (19.59, -155.45), "pacific"), # crossing antimeridian
107
106
  ],
108
107
  )
109
- def test_clip_models_bbox(bbox, name):
108
+ def test_clip_models_bbox(bbox, point, name):
110
109
  # Set input and output paths
111
110
  in_dir = "tests/data/tide_models_synthetic/"
112
111
  out_dir = f"tests/data/tide_models_synthetic_{name}/"
@@ -121,8 +120,8 @@ def test_clip_models_bbox(bbox, name):
121
120
  )
122
121
 
123
122
  # Set modelling location based on bbox centroid
124
- x, y = odc.geo.geom.BoundingBox(*bbox, crs="EPSG:4326").polygon.centroid.xy
125
- time = pd.date_range(start="2000-01", end="2001-03", freq="5h")
123
+ y, x = point
124
+ time = pd.date_range(start="2000-01", end="2001-02", freq="5h")
126
125
 
127
126
  # Model using unclipped vs clipped files
128
127
  df_unclipped = model_tides(
@@ -131,7 +130,6 @@ def test_clip_models_bbox(bbox, name):
131
130
  time=time,
132
131
  model="HAMTIDE11",
133
132
  directory=in_dir,
134
- crop=False,
135
133
  )
136
134
  df_clipped = model_tides(
137
135
  x=x,
@@ -139,7 +137,6 @@ def test_clip_models_bbox(bbox, name):
139
137
  time=time,
140
138
  model="HAMTIDE11",
141
139
  directory=out_dir,
142
- crop=False,
143
140
  )
144
141
 
145
142
  # Verify both produce the same results
@@ -175,7 +175,7 @@
175
175
  },
176
176
  {
177
177
  "cell_type": "code",
178
- "execution_count": 3,
178
+ "execution_count": 2,
179
179
  "metadata": {},
180
180
  "outputs": [
181
181
  {
@@ -235,11 +235,46 @@
235
235
  },
236
236
  {
237
237
  "cell_type": "code",
238
- "execution_count": null,
238
+ "execution_count": 3,
239
239
  "metadata": {},
240
- "outputs": [],
240
+ "outputs": [
241
+ {
242
+ "name": "stdout",
243
+ "output_type": "stream",
244
+ "text": [
245
+ "\u001b[1m============================= test session starts ==============================\u001b[0m\n",
246
+ "platform linux -- Python 3.10.15, pytest-8.3.3, pluggy-1.5.0 -- /env/bin/python3.10\n",
247
+ "cachedir: .pytest_cache\n",
248
+ "rootdir: /home/jovyan/Robbi/eo-tides\n",
249
+ "configfile: pyproject.toml\n",
250
+ "plugins: anyio-4.6.2.post1, nbval-0.11.0\n",
251
+ "collected 25 items / 20 deselected / 5 selected \u001b[0m\u001b[1m\n",
252
+ "\n",
253
+ "tests/test_utils.py::test_clip_models \u001b[32mPASSED\u001b[0m\u001b[33m [ 20%]\u001b[0m\n",
254
+ "tests/test_utils.py::test_clip_models_bbox[bbox0-point0-hawaii] \u001b[32mPASSED\u001b[0m\u001b[33m [ 40%]\u001b[0m\n",
255
+ "tests/test_utils.py::test_clip_models_bbox[bbox1-point1-uk] \u001b[32mPASSED\u001b[0m\u001b[33m [ 60%]\u001b[0m\n",
256
+ "tests/test_utils.py::test_clip_models_bbox[bbox2-point2-aus] \u001b[32mPASSED\u001b[0m\u001b[33m [ 80%]\u001b[0m\n",
257
+ "tests/test_utils.py::test_clip_models_bbox[bbox3-point3-pacific] \u001b[32mPASSED\u001b[0m\u001b[33m [100%]\u001b[0m\n",
258
+ "\n",
259
+ "\u001b[33m=============================== warnings summary ===============================\u001b[0m\n",
260
+ "<frozen importlib._bootstrap>:241\n",
261
+ " <frozen importlib._bootstrap>:241: RuntimeWarning: numpy.ndarray size changed, may indicate binary incompatibility. Expected 16 from C header, got 96 from PyObject\n",
262
+ "\n",
263
+ "tests/test_utils.py: 20 warnings\n",
264
+ " /env/lib/python3.10/site-packages/pyproj/transformer.py:817: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)\n",
265
+ " return self._transformer._transform_point(\n",
266
+ "\n",
267
+ "tests/test_utils.py::test_clip_models_bbox[bbox0-point0-hawaii]\n",
268
+ " /home/jovyan/Robbi/eo-tides/eo_tides/model.py:127: UserWarning: On-the-fly cropping is not compatible with the provided clipped model files; running with `crop=False`.\n",
269
+ " warnings.warn(\"On-the-fly cropping is not compatible with the provided \"\n",
270
+ "\n",
271
+ "-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n",
272
+ "\u001b[33m================ \u001b[32m5 passed\u001b[0m, \u001b[33m\u001b[1m20 deselected\u001b[0m, \u001b[33m\u001b[1m22 warnings\u001b[0m\u001b[33m in 16.32s\u001b[0m\u001b[33m ================\u001b[0m\n"
273
+ ]
274
+ }
275
+ ],
241
276
  "source": [
242
- "!export EO_TIDES_TIDE_MODELS=./tests/data/tide_models && pytest tests/test_utils.py --verbose -k test_clip_models_bbox"
277
+ "!export EO_TIDES_TIDE_MODELS=./tests/data/tide_models && pytest tests/test_utils.py --verbose -k test_clip_models"
243
278
  ]
244
279
  },
245
280
  {
@@ -574,11 +574,11 @@ wheels = [
574
574
 
575
575
  [[package]]
576
576
  name = "decorator"
577
- version = "5.2.0"
577
+ version = "5.2.1"
578
578
  source = { registry = "https://pypi.org/simple" }
579
- sdist = { url = "https://files.pythonhosted.org/packages/6e/e2/33c72e8409b39389b9a69e807e40d3466a63996ba4c65caaea1d31dfde16/decorator-5.2.0.tar.gz", hash = "sha256:1cf2ab68f8c1c7eae3895d82ab0daab41294cfbe6fbdebf50b44307299980762", size = 16973 }
579
+ sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 }
580
580
  wheels = [
581
- { url = "https://files.pythonhosted.org/packages/f6/0e/fc5d7660912606d43f32470cf952846a47512d3674fe9a3196f1a80a638b/decorator-5.2.0-py3-none-any.whl", hash = "sha256:f30a69c066f698c7c11fa1fa3425f684d3b4b01b494ee41e73c0a14f3de48427", size = 9149 },
581
+ { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 },
582
582
  ]
583
583
 
584
584
  [[package]]
@@ -657,7 +657,7 @@ wheels = [
657
657
 
658
658
  [[package]]
659
659
  name = "eo-tides"
660
- version = "0.6.1"
660
+ version = "0.6.2"
661
661
  source = { editable = "." }
662
662
  dependencies = [
663
663
  { name = "colorama" },
@@ -1521,16 +1521,16 @@ wheels = [
1521
1521
 
1522
1522
  [[package]]
1523
1523
  name = "mkdocs-autorefs"
1524
- version = "1.3.1"
1524
+ version = "1.4.0"
1525
1525
  source = { registry = "https://pypi.org/simple" }
1526
1526
  dependencies = [
1527
1527
  { name = "markdown" },
1528
1528
  { name = "markupsafe" },
1529
1529
  { name = "mkdocs" },
1530
1530
  ]
1531
- sdist = { url = "https://files.pythonhosted.org/packages/52/f4/77e3cf5e7ba54dca168bc718688127844721982ae88b08684669c5b5752d/mkdocs_autorefs-1.3.1.tar.gz", hash = "sha256:a6d30cbcccae336d622a66c2418a3c92a8196b69782774529ad441abb23c0902", size = 2056416 }
1531
+ sdist = { url = "https://files.pythonhosted.org/packages/83/79/e846eb3323d1546b25d2ae4c957f5edf1bdfb7e0b695d43feae034c61553/mkdocs_autorefs-1.4.0.tar.gz", hash = "sha256:a9c0aa9c90edbce302c09d050a3c4cb7c76f8b7b2c98f84a7a05f53d00392156", size = 3128903 }
1532
1532
  wheels = [
1533
- { url = "https://files.pythonhosted.org/packages/db/19/f20edc082c1de2987dbaf30fcc514ed7a908d465a15aba7cba595c3b245a/mkdocs_autorefs-1.3.1-py3-none-any.whl", hash = "sha256:18c504ae4d3ee7f344369bb26cb31d4105569ee252aab7d75ec2734c2c8b0474", size = 2837887 },
1533
+ { url = "https://files.pythonhosted.org/packages/33/0e/a6ff5d3b3ac428fa8c43a356df449f366ff0dbe242dac9f87fa9d20515ed/mkdocs_autorefs-1.4.0-py3-none-any.whl", hash = "sha256:bad19f69655878d20194acd0162e29a89c3f7e6365ffe54e72aa3fd1072f240d", size = 4368332 },
1534
1534
  ]
1535
1535
 
1536
1536
  [[package]]
@@ -1597,7 +1597,7 @@ wheels = [
1597
1597
 
1598
1598
  [[package]]
1599
1599
  name = "mkdocstrings"
1600
- version = "0.28.1"
1600
+ version = "0.28.2"
1601
1601
  source = { registry = "https://pypi.org/simple" }
1602
1602
  dependencies = [
1603
1603
  { name = "jinja2" },
@@ -1608,9 +1608,9 @@ dependencies = [
1608
1608
  { name = "mkdocs-get-deps" },
1609
1609
  { name = "pymdown-extensions" },
1610
1610
  ]
1611
- sdist = { url = "https://files.pythonhosted.org/packages/82/6a/3980e05d7522423dc4ca547771d16d399fc3f4266df652f624f4f4dd7890/mkdocstrings-0.28.1.tar.gz", hash = "sha256:fb64576906771b7701e8e962fd90073650ff689e95eb86e86751a66d65ab4489", size = 4551690 }
1611
+ sdist = { url = "https://files.pythonhosted.org/packages/e8/83/5eab81d31953c725942eb663b6a4cf36ad06d803633c8e1c6ddc708af62d/mkdocstrings-0.28.2.tar.gz", hash = "sha256:9b847266d7a588ea76a8385eaebe1538278b4361c0d1ce48ed005be59f053569", size = 5691916 }
1612
1612
  wheels = [
1613
- { url = "https://files.pythonhosted.org/packages/6f/5d/8580b426396d8cbbe98df364ef891487c4942e36356d56bb5a6dd91f51a9/mkdocstrings-0.28.1-py3-none-any.whl", hash = "sha256:a5878ae5cd1e26f491ff084c1f9ab995687d52d39a5c558e9b7023d0e4e0b740", size = 6426938 },
1613
+ { url = "https://files.pythonhosted.org/packages/32/60/15ef9759431cf8e60ffda7d5bba3914cc764f2bd8e7f62e1bd301ea292e0/mkdocstrings-0.28.2-py3-none-any.whl", hash = "sha256:57f79c557e2718d217d6f6a81bf75a0de097f10e922e7e5e00f085c3f0ff6895", size = 8056702 },
1614
1614
  ]
1615
1615
 
1616
1616
  [package.optional-dependencies]
@@ -1620,7 +1620,7 @@ python = [
1620
1620
 
1621
1621
  [[package]]
1622
1622
  name = "mkdocstrings-python"
1623
- version = "1.16.1"
1623
+ version = "1.16.2"
1624
1624
  source = { registry = "https://pypi.org/simple" }
1625
1625
  dependencies = [
1626
1626
  { name = "griffe" },
@@ -1628,9 +1628,9 @@ dependencies = [
1628
1628
  { name = "mkdocstrings" },
1629
1629
  { name = "typing-extensions", marker = "python_full_version < '3.11'" },
1630
1630
  ]
1631
- sdist = { url = "https://files.pythonhosted.org/packages/82/a4/3475fd03f3d566ca05872cec76a86d94ead23d99bbf6a89035b924a3e9b6/mkdocstrings_python-1.16.1.tar.gz", hash = "sha256:d7152d17da74d3616a0f17df5d2da771ecf7340518c158650e5a64a0a95973f4", size = 423399 }
1631
+ sdist = { url = "https://files.pythonhosted.org/packages/ed/a9/5990642e1bb2d90b049f655b92f46d0a77acb76ed59ef3233d5a6934312e/mkdocstrings_python-1.16.2.tar.gz", hash = "sha256:942ec1a2e0481d28f96f93be3d6e343cab92a21e5baf01c37dd2d7236c4d0bd7", size = 423492 }
1632
1632
  wheels = [
1633
- { url = "https://files.pythonhosted.org/packages/00/f7/433201c48d4b59208dcbae6e1481febdf732ae20ecb2aee84a4ea142f043/mkdocstrings_python-1.16.1-py3-none-any.whl", hash = "sha256:b88ff6fc6a293cee9cb42313f1cba37a2c5cdf37bcc60b241ec7ab66b5d41b58", size = 449139 },
1633
+ { url = "https://files.pythonhosted.org/packages/82/a2/60be7e17a2f2a9d4bfb7273cdb2071eeeb65bdca5c0d07ff16df63221ca2/mkdocstrings_python-1.16.2-py3-none-any.whl", hash = "sha256:ff7e719404e59ad1a72f1afbe854769984c889b8fa043c160f6c988e1ad9e966", size = 449141 },
1634
1634
  ]
1635
1635
 
1636
1636
  [[package]]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes