eotdl 2023.11.2.post5__py3-none-any.whl → 2023.11.3.post2__py3-none-any.whl

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 (58) hide show
  1. eotdl/__init__.py +1 -1
  2. eotdl/access/__init__.py +6 -3
  3. eotdl/access/airbus/__init__.py +5 -1
  4. eotdl/access/airbus/client.py +356 -338
  5. eotdl/access/airbus/parameters.py +19 -4
  6. eotdl/access/airbus/utils.py +26 -21
  7. eotdl/access/download.py +30 -14
  8. eotdl/access/search.py +17 -6
  9. eotdl/access/sentinelhub/__init__.py +5 -1
  10. eotdl/access/sentinelhub/client.py +57 -54
  11. eotdl/access/sentinelhub/evalscripts.py +38 -39
  12. eotdl/access/sentinelhub/parameters.py +43 -23
  13. eotdl/access/sentinelhub/utils.py +38 -28
  14. eotdl/auth/errors.py +2 -1
  15. eotdl/commands/auth.py +3 -3
  16. eotdl/curation/__init__.py +5 -1
  17. eotdl/curation/stac/__init__.py +5 -1
  18. eotdl/curation/stac/assets.py +55 -32
  19. eotdl/curation/stac/dataframe.py +20 -14
  20. eotdl/curation/stac/dataframe_bck.py +2 -2
  21. eotdl/curation/stac/dataframe_labeling.py +15 -12
  22. eotdl/curation/stac/extensions/__init__.py +6 -2
  23. eotdl/curation/stac/extensions/base.py +8 -4
  24. eotdl/curation/stac/extensions/dem.py +6 -3
  25. eotdl/curation/stac/extensions/eo.py +10 -6
  26. eotdl/curation/stac/extensions/label/__init__.py +5 -1
  27. eotdl/curation/stac/extensions/label/base.py +40 -26
  28. eotdl/curation/stac/extensions/label/image_name_labeler.py +64 -43
  29. eotdl/curation/stac/extensions/label/scaneo.py +59 -56
  30. eotdl/curation/stac/extensions/ml_dataset.py +154 -56
  31. eotdl/curation/stac/extensions/projection.py +11 -9
  32. eotdl/curation/stac/extensions/raster.py +22 -14
  33. eotdl/curation/stac/extensions/sar.py +12 -7
  34. eotdl/curation/stac/extent.py +67 -40
  35. eotdl/curation/stac/parsers.py +18 -10
  36. eotdl/curation/stac/stac.py +81 -62
  37. eotdl/datasets/__init__.py +1 -1
  38. eotdl/datasets/download.py +42 -55
  39. eotdl/datasets/ingest.py +68 -11
  40. eotdl/files/__init__.py +1 -1
  41. eotdl/files/ingest.py +3 -1
  42. eotdl/models/download.py +1 -1
  43. eotdl/repos/AuthAPIRepo.py +0 -1
  44. eotdl/repos/DatasetsAPIRepo.py +22 -146
  45. eotdl/repos/FilesAPIRepo.py +7 -92
  46. eotdl/repos/ModelsAPIRepo.py +0 -1
  47. eotdl/tools/__init__.py +5 -1
  48. eotdl/tools/geo_utils.py +78 -48
  49. eotdl/tools/metadata.py +13 -11
  50. eotdl/tools/paths.py +14 -14
  51. eotdl/tools/stac.py +36 -31
  52. eotdl/tools/time_utils.py +53 -26
  53. eotdl/tools/tools.py +84 -50
  54. {eotdl-2023.11.2.post5.dist-info → eotdl-2023.11.3.post2.dist-info}/METADATA +5 -3
  55. eotdl-2023.11.3.post2.dist-info/RECORD +84 -0
  56. eotdl-2023.11.2.post5.dist-info/RECORD +0 -84
  57. {eotdl-2023.11.2.post5.dist-info → eotdl-2023.11.3.post2.dist-info}/WHEEL +0 -0
  58. {eotdl-2023.11.2.post5.dist-info → eotdl-2023.11.3.post2.dist-info}/entry_points.txt +0 -0
eotdl/tools/tools.py CHANGED
@@ -2,22 +2,22 @@
2
2
  Module for data engineeringt
3
3
  """
4
4
 
5
- import geopandas as gpd
6
- import pandas as pd
7
- import tarfile
8
5
  import re
6
+ import tarfile
9
7
  import datetime
10
8
  import json
11
-
12
- from .geo_utils import get_image_bbox
13
- from shapely.geometry import box
14
9
  from os.path import exists
15
10
  from typing import Union, Optional
11
+ import geopandas as gpd
12
+ import pandas as pd
13
+
14
+ from shapely.geometry import box
15
+ from .geo_utils import get_image_bbox
16
16
 
17
17
 
18
18
  def get_images_by_location(gdf: gpd.GeoDataFrame) -> pd.DataFrame:
19
19
  """
20
- Generate a GeoDataFrame with the available images for each location in the dataset.
20
+ Generate a GeoDataFrame with the available images for each location in the dataset.
21
21
 
22
22
  :param gdf: GeoDataFrame generated from the ItemCollection of a sen12floods collection
23
23
  :return gdf_dates_per_aoi: GeoDataFrame with the available images for each location in
@@ -27,7 +27,7 @@ def get_images_by_location(gdf: gpd.GeoDataFrame) -> pd.DataFrame:
27
27
  - images_count: the count of available images of each location.
28
28
  - images_dates: list with the dates of the available images of each location.
29
29
  """
30
- uniques_location_id = gdf['scene_id'].unique() # List of unique location ids
30
+ uniques_location_id = gdf["scene_id"].unique() # List of unique location ids
31
31
  uniques_location_id.sort()
32
32
 
33
33
  images_count_list, images_dates_list = [], []
@@ -35,83 +35,105 @@ def get_images_by_location(gdf: gpd.GeoDataFrame) -> pd.DataFrame:
35
35
  # Iterate the unique location ids, count the number of images per location and generate
36
36
  # a list with the dates of every image in a location
37
37
  for location_id in uniques_location_id:
38
- dates = gdf[gdf['scene_id'] == location_id]['datetime']
38
+ dates = gdf[gdf["scene_id"] == location_id]["datetime"]
39
39
  images_count_list.append(dates.count())
40
40
  images_dates_list.append(dates.tolist())
41
41
 
42
- images_dates_list.sort() # Sort the list of dates
43
- data = {'scene_id': uniques_location_id, 'dates_count': images_count_list, 'dates_list': images_dates_list}
42
+ images_dates_list.sort() # Sort the list of dates
43
+ data = {
44
+ "scene_id": uniques_location_id,
45
+ "dates_count": images_count_list,
46
+ "dates_list": images_dates_list,
47
+ }
44
48
  df_dates_per_aoi = pd.DataFrame.from_dict(data)
45
49
 
46
50
  return df_dates_per_aoi
47
51
 
48
52
 
49
- def generate_location_payload(gdf: Union[gpd.GeoDataFrame, pd.DataFrame], path: str) -> dict:
53
+ def generate_location_payload(
54
+ gdf: Union[gpd.GeoDataFrame, pd.DataFrame], path: str
55
+ ) -> dict:
50
56
  """
51
- Generate a dictionary with the location payload of the locations in the GeoDataFrame,
57
+ Generate a dictionary with the location payload of the locations in the GeoDataFrame,
52
58
  such as the bounding box and the time interval to search for available data.
53
59
  """
54
60
  payload_cache = f"{path}/location_payload.json"
55
61
  if exists(payload_cache):
56
62
  # Read as dict
57
- with open(payload_cache, 'r') as f:
63
+ with open(payload_cache, "r", encoding="utf-8") as f:
58
64
  payload = json.load(f)
59
65
  return payload
60
-
61
- bbox_date_by_location = dict()
62
- for i, row in gdf.iterrows():
66
+
67
+ bbox_date_by_location = {}
68
+ for _, row in gdf.iterrows():
63
69
  # Get list from dates_list column
64
- dates_list = list(row['dates_list'])
70
+ dates_list = list(row["dates_list"])
65
71
  for date in dates_list:
66
- location_id = row['location_id']
67
- date_formatted = datetime.datetime.strptime(date, '%Y-%m-%dT%H:%M:%S.%fZ').strftime('%Y-%m-%d')
68
- location_id_formatted = f'{location_id}_{date_formatted}'
72
+ location_id = row["location_id"]
73
+ date_formatted = datetime.datetime.strptime(
74
+ date, "%Y-%m-%dT%H:%M:%S.%fZ"
75
+ ).strftime("%Y-%m-%d")
76
+ location_id_formatted = f"{location_id}_{date_formatted}"
69
77
  bbox_date_by_location[location_id_formatted] = {
70
- 'bounding_box': row['geometry'].bounds,
78
+ "bounding_box": row["geometry"].bounds,
71
79
  # Convert str to datetime
72
- 'time_interval': (date, date)
80
+ "time_interval": (date, date),
73
81
  }
74
82
 
75
83
  # Save to json
76
- with open(payload_cache, 'w') as f:
84
+ with open(payload_cache, "w", encoding="utf-8") as f:
77
85
  json.dump(bbox_date_by_location, f)
78
86
 
79
87
  return bbox_date_by_location
80
88
 
81
89
 
82
- def get_tarfile_image_info(tar: str, path: Optional[str] = None, pattern: Optional[str] = r"\d{8}T\d{6}", level: Optional[int] = 2):
90
+ def get_tarfile_image_info(
91
+ tar: str,
92
+ path: Optional[str] = None,
93
+ pattern: Optional[str] = r"\d{8}T\d{6}",
94
+ level: Optional[int] = 2,
95
+ ):
83
96
  """
97
+ Generate a GeoDataFrame with the available images for each location in the dataset.
84
98
  """
85
99
  if path:
86
100
  gdf_cache = f"{path}/tarfile_images_info.csv"
87
101
  if exists(gdf_cache):
88
- images_gdf = gpd.read_file(gdf_cache,
89
- GEOM_POSSIBLE_NAMES="geometry",
90
- KEEP_GEOM_COLUMNS="NO")
102
+ images_gdf = gpd.read_file(
103
+ gdf_cache, GEOM_POSSIBLE_NAMES="geometry", KEEP_GEOM_COLUMNS="NO"
104
+ )
91
105
  images_gdf.set_crs(epsg=4326, inplace=True)
92
-
106
+
93
107
  return images_gdf
94
-
108
+
95
109
  images_df = pd.DataFrame()
96
- with tarfile.open(tar, 'r:gz') as tar:
97
- rasters = [i for i in tar.getnames() if i.endswith(".tif") or i.endswith(".tiff")]
110
+ with tarfile.open(tar, "r:gz") as tarf:
111
+ rasters = [
112
+ i for i in tarf.getnames() if i.endswith(".tif") or i.endswith(".tiff")
113
+ ]
98
114
  for raster in rasters:
99
- r = tar.extractfile(raster)
115
+ r = tarf.extractfile(raster)
100
116
  bbox = get_image_bbox(r)
101
117
  date = extract_image_date_in_folder(raster, pattern)
102
- date_formatted = datetime.datetime.strptime(date, '%Y-%m-%dT%H:%M:%S.%fZ').strftime('%Y-%m-%d')
103
- id = extract_image_id_in_folder(raster, level)
118
+ image_id = extract_image_id_in_folder(raster, level)
104
119
  # Use pd.concat to append to dataframe
105
- images_df = pd.concat([images_df, pd.DataFrame({"location_id": [id],
106
- "datetime": [date],
107
- "bbox": [bbox]})])
120
+ images_df = pd.concat(
121
+ [
122
+ images_df,
123
+ pd.DataFrame(
124
+ {"location_id": [image_id], "datetime": [date], "bbox": [bbox]}
125
+ ),
126
+ ]
127
+ )
108
128
 
109
129
  # Clean duplicates
110
130
  images_df = images_df.drop_duplicates(subset=["location_id", "datetime"])
111
131
  # Convert to geodataframe
112
- images_gdf = gpd.GeoDataFrame(images_df,
113
- crs='EPSG:4326',
114
- geometry=images_df["bbox"].apply(lambda x: box(x[0], x[1], x[2], x[3])))
132
+ images_gdf = gpd.GeoDataFrame(
133
+ images_df,
134
+ crs="EPSG:4326",
135
+ geometry=images_df["bbox"].apply(lambda x: box(x[0], x[1], x[2], x[3])),
136
+ )
115
137
  # Drop bbox column
116
138
  images_gdf = images_gdf.drop(columns=["bbox"])
117
139
  # Set crs
@@ -126,32 +148,44 @@ def get_tarfile_image_info(tar: str, path: Optional[str] = None, pattern: Option
126
148
 
127
149
 
128
150
  def extract_image_date_in_folder(raster_path: str, pattern: str):
151
+ """
152
+ Extract the date from the folder name of the image.
153
+ """
129
154
  case = re.findall(pattern, raster_path)
130
155
 
131
156
  if case:
132
157
  date = case[0]
133
158
  # Convert date to format YYYY-MM-DDT00:00:00.000Z as datetime object
134
- formatted_date = datetime.datetime.strptime(date, '%Y%m%dT%H%M%S').strftime('%Y-%m-%dT%H:%M:%S.%fZ')
159
+ formatted_date = datetime.datetime.strptime(date, "%Y%m%dT%H%M%S").strftime(
160
+ "%Y-%m-%dT%H:%M:%S.%fZ"
161
+ )
135
162
  return formatted_date
136
-
163
+
137
164
  return None
138
165
 
139
166
 
140
167
  def extract_image_id_in_folder(raster_path: str, level: int):
168
+ """
169
+ Extract the location id from the folder name of the image, given the level of the folder.
170
+ """
141
171
  return raster_path.split("/")[level]
142
172
 
143
173
 
144
- def format_product_location_payload(location_payload: dict,
145
- images_response: dict,
146
- all_info: bool = False
147
- ) -> dict:
174
+ def format_product_location_payload(
175
+ location_payload: dict, images_response: dict, all_info: bool = False
176
+ ) -> dict:
148
177
  """
178
+ Format the location payload with the images response.
149
179
  """
150
- for id, info in location_payload.items():
180
+ for _, _ in location_payload.items():
151
181
  # Add new key to the dictionary
152
182
  if all_info:
153
- location_payload[id]['image'] = images_response[id] if id in images_response else None
183
+ location_payload[id]["image"] = (
184
+ images_response[id] if id in images_response else None
185
+ )
154
186
  else:
155
- location_payload[id]['image'] = images_response[id]['properties']['id'] if images_response[id] else None
187
+ location_payload[id]["image"] = (
188
+ images_response[id]["properties"]["id"] if images_response[id] else None
189
+ )
156
190
 
157
191
  return location_payload
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: eotdl
3
- Version: 2023.11.2.post5
3
+ Version: 2023.11.3.post2
4
4
  Summary: Earth Observation Training Data Lab
5
5
  License: MIT
6
6
  Author: EarthPulse
@@ -12,11 +12,13 @@ Classifier: Programming Language :: Python :: 3.8
12
12
  Classifier: Programming Language :: Python :: 3.9
13
13
  Classifier: Programming Language :: Python :: 3.10
14
14
  Classifier: Programming Language :: Python :: 3.11
15
+ Requires-Dist: black (>=23.10.1,<24.0.0)
15
16
  Requires-Dist: geomet (>=1.0.0,<2.0.0)
16
17
  Requires-Dist: geopandas (>=0.13.2,<0.14.0)
18
+ Requires-Dist: mypy (>=1.6.1,<2.0.0)
17
19
  Requires-Dist: pydantic (>=1.10.6,<2.0.0)
18
20
  Requires-Dist: pyjwt (>=2.6.0,<3.0.0)
19
- Requires-Dist: pystac (>=1.8.2,<2.0.0)
21
+ Requires-Dist: pystac[validation] (==1.8.2)
20
22
  Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
21
23
  Requires-Dist: rasterio (>=1.3.9,<2.0.0)
22
24
  Requires-Dist: requests (>=2.28.2,<3.0.0)
@@ -27,7 +29,7 @@ Description-Content-Type: text/markdown
27
29
 
28
30
  <p align="center">
29
31
  <a href="https://www.eotdl.com/">
30
- <img src="eotdl.png" width="350px" alt="EOTDL" />
32
+ <img src="eotdl.png" alt="EOTDL" />
31
33
  </a>
32
34
  </p>
33
35
 
@@ -0,0 +1,84 @@
1
+ eotdl/__init__.py,sha256=JyoWMS0RH1JISCfn7O3JUM4EY_4a2Vbcc8a4JgM8SC8,29
2
+ eotdl/access/__init__.py,sha256=jbyjD7BRGJURlTNmtcbBBhw3Xk4EiZvkqmEykM-bJ1k,231
3
+ eotdl/access/airbus/__init__.py,sha256=G_kkRS9eFjXbQ-aehmTLXeAxh7zpAxz_rgB7J_w0NRg,107
4
+ eotdl/access/airbus/client.py,sha256=zjfgB_NTsCCIszoQesYkyLJgheKg-eTh28vbleXYxfw,12018
5
+ eotdl/access/airbus/parameters.py,sha256=Z8XIrxG5wAOuOoH-fkdKfdNMEMLFp6PaxJN7v4MefMI,1009
6
+ eotdl/access/airbus/utils.py,sha256=oh_N1Rn4fhcvUgNPpH2QzVvpe4bA0gqRgNguzRVqUps,652
7
+ eotdl/access/download.py,sha256=3LxfGbiZoPO2ReefKtscwnF5cMQdyLBfOnBDQA5xnlw,1568
8
+ eotdl/access/search.py,sha256=sO2hml6JLK30DncNUqTWq16zy9LvRiWC6wtt5bNRzrI,633
9
+ eotdl/access/sentinelhub/__init__.py,sha256=YpvaUBTRXM26WrXipo51ZUBCDv9WjRIdT8l1Pklpt_M,238
10
+ eotdl/access/sentinelhub/client.py,sha256=GW4Mr7CpKLWGiL64Fi-ktpB80aJDNFIZTHKNrscVViM,4098
11
+ eotdl/access/sentinelhub/evalscripts.py,sha256=uuLC6Km7IPssvM1xiIlLkx--TA1Ash159M4jov_I1Y4,4315
12
+ eotdl/access/sentinelhub/parameters.py,sha256=kZSVdq85UiZjIRDe81TJ8IpOSCeVIOlbDWA5u8Ylg8Q,2050
13
+ eotdl/access/sentinelhub/utils.py,sha256=XSDJD6Etg4Cg5D9dsXPbZnC09L4kWrQxTspGqY8LHs8,3305
14
+ eotdl/auth/__init__.py,sha256=OuGNfJQ-8Kymn4zIywlHQfImEO8DJMJIwOwTQm-u_dc,99
15
+ eotdl/auth/auth.py,sha256=voxwxTERghLQdqrBSyjZrgvKrcF01aWUTc0-vxLFFgY,1601
16
+ eotdl/auth/errors.py,sha256=E1lv3Igk--J-SOgNH18i8Xx9bXrrMyBSHKt_CAUmGPo,308
17
+ eotdl/auth/is_logged.py,sha256=QREuhkoDnarZoUZwCxVCNoESGb_Yukh0lJo1pXvrV9Q,115
18
+ eotdl/auth/logout.py,sha256=P_Sp6WmVvnG3R9V1L9541KNyHFko9DtQPqAKD2vaguw,161
19
+ eotdl/cli.py,sha256=QzqlUs2q_2fk-e0ZzXJSjgUPN68899z8VvwxpReYppI,448
20
+ eotdl/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ eotdl/commands/auth.py,sha256=WzA0aFGRoscy7fPKQTxiphBc0LJztJxBBl7rjDBRVfI,1544
22
+ eotdl/commands/datasets.py,sha256=XeDq-tJec-EmliocIXHPkg_1wBwCR2DJqxBxRbwjSGg,4473
23
+ eotdl/commands/models.py,sha256=7JPzjgxrnLLuj2c_D6RS2pc-m54MhmYIpGcob8pRJ_Q,4362
24
+ eotdl/curation/__init__.py,sha256=Qdp1cRR_wUYjnpyzGfyRFnL3X7aKtmgZQS8NNzPCc1s,269
25
+ eotdl/curation/stac/__init__.py,sha256=BGBDvW-IqcxhrxvLap2Ocj0nINYaqjgjzFuAipRcoa4,220
26
+ eotdl/curation/stac/assets.py,sha256=SuoUxbDkI-lqv89XpaE7YiyUkgC1ZWKRxi5r7dEGmGI,4510
27
+ eotdl/curation/stac/dataframe.py,sha256=sks5CcJAYaOUsnJYI30mbnXfkCvxmiLtsQPCnsUpDBI,5371
28
+ eotdl/curation/stac/dataframe_bck.py,sha256=PwAwol7kll0xYtlkhLeQ_Sc5TBQ85cVd6eyzdfTMJnE,8493
29
+ eotdl/curation/stac/dataframe_labeling.py,sha256=F22-4gpF9zFuCLqRva2XAyArOmGdrgGxXbgo9d54BFE,1520
30
+ eotdl/curation/stac/extensions/__init__.py,sha256=NSzKe14Iyr8Pm2AVg8RHxddtBD2so45--BRJmJd8bTs,629
31
+ eotdl/curation/stac/extensions/base.py,sha256=HDisHg43aC3tJjqKdJVyQMfXc0jLHZEVYrTve9lmZak,671
32
+ eotdl/curation/stac/extensions/dem.py,sha256=ecCLfg_izIjfWBvoKNl_WLNVuNqNiQWLaWxshNucTyY,370
33
+ eotdl/curation/stac/extensions/eo.py,sha256=cT4RrbyoimIuuOxNRLkamhZgHpDbj4z_Ziat2G2gTuA,4004
34
+ eotdl/curation/stac/extensions/label/__init__.py,sha256=R6xLkgJaZHoMh5BhpmueupWdM9NWKvmaRurum-ryU_s,159
35
+ eotdl/curation/stac/extensions/label/base.py,sha256=5xbniQWjzXkrQxxXp8v9QQxFQdRYnaFPBd5_in1QXUw,4069
36
+ eotdl/curation/stac/extensions/label/image_name_labeler.py,sha256=bivZN-qEtIXE6ehqwPKRsJO9RVckZ1lK2BG8ifUbaA8,8074
37
+ eotdl/curation/stac/extensions/label/scaneo.py,sha256=LPrebS3TUsKjy8tnV7yG_T3xI4iKlv5lg5YOfjpu3CQ,8721
38
+ eotdl/curation/stac/extensions/ml_dataset.py,sha256=SjOX_EvVRhwIUc4iQLw6YX_bG3VTqlRd9SpmpNCnRak,21429
39
+ eotdl/curation/stac/extensions/projection.py,sha256=ussVIwr_wOOhn07OmpAWY4qqbeAmYUxKjbE8onrAy7o,1236
40
+ eotdl/curation/stac/extensions/raster.py,sha256=o5U_1ow8BsgwZXpSQYwQIvMJldhyn7xoGoJmUANTJTE,1540
41
+ eotdl/curation/stac/extensions/sar.py,sha256=Akw3_5brY_x2yU094nSLbv0E6M9jnAeUC0Vo5fJDRME,1633
42
+ eotdl/curation/stac/extent.py,sha256=Jb3K4v59eu_h5t429r0762o0zG_LA50iEE-abWNL0e0,5108
43
+ eotdl/curation/stac/parsers.py,sha256=H5IukLA61mpLojeuhWNQdiZk2eiYHAfpJBFxmjdGDso,1529
44
+ eotdl/curation/stac/stac.py,sha256=9GdiB1mV8iyREvXZoJmNJKQGawWyK3h9Eu0hJX5u6O4,13180
45
+ eotdl/datasets/__init__.py,sha256=oFSUD0OLvUS4_iwu_V1iAQ_VAML-8RWDbxgtuFdU5ZA,170
46
+ eotdl/datasets/download.py,sha256=tgWCGhRfy8EtH_6Q6Hn8CHaKvIkPZ03iCW5_Aotrkok,3812
47
+ eotdl/datasets/ingest.py,sha256=Z-PFfSp1tO3z7cusADPrniOdbNpYqIPYpP74vpWrqJ8,4020
48
+ eotdl/datasets/metadata.py,sha256=L23_EziGVSDJ-WZbYUYNN22GrgbCdMGxwJhgK9uzW0U,390
49
+ eotdl/datasets/retrieve.py,sha256=DJz5K1bCLizg9YNwBnhHMFzcxMXar2socYkFONdSL4c,1041
50
+ eotdl/datasets/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
+ eotdl/datasets/usecases/datasets/DownloadFile.py,sha256=PoP0Dl2LBshKzbgArgxwxIVs-KT2IsfZKi0qSyiBsoI,936
52
+ eotdl/datasets/usecases/datasets/DownloadFileURL.py,sha256=6OcNuCys45MXu9-7GtES0zg2QmY02EAkj_P3cVKVUvo,603
53
+ eotdl/datasets/usecases/datasets/IngestDataset.py,sha256=d2H5nPXsEj-LhZpWGwNDSPs9uYNXRO2V07xsTFygQDc,953
54
+ eotdl/datasets/usecases/datasets/IngestLargeDataset.py,sha256=yRl4eqDCNPcmbU0rrtooWDq1OPpi88rSFSl8C4RE7oM,1424
55
+ eotdl/datasets/usecases/datasets/IngestLargeDatasetParallel.py,sha256=G6uVmpZLkn6lqUVQkjw0ne1xlBcJKHoJik4xLnlqd6o,1612
56
+ eotdl/datasets/usecases/datasets/IngestSTAC.py,sha256=QAMLSkMFlc-ic0JWaIdAf0SXPkYcawy-RJqfvDqTD7A,3075
57
+ eotdl/datasets/usecases/datasets/__init__.py,sha256=Tx4ISHtcjbu4KUVgjTac_pjpT0vsN-QpkIwtyx8xUYg,383
58
+ eotdl/files/__init__.py,sha256=wStggK9L_Ni3vdZkKtKmKVdAaZRVuiMbsjYBCrJ8rxs,53
59
+ eotdl/files/ingest.py,sha256=dlUuijXThWqbtDpJiF92diMdjkfu5SykwltyP_nd98M,6057
60
+ eotdl/models/__init__.py,sha256=fe1VfnlOxlfviphkkzaY4q8mkm0QxcdJxB3peScBZYk,108
61
+ eotdl/models/download.py,sha256=NaKpi2nB4tpVnLWaHanprnaD1JDhAj6hA9-SkN1kiJA,4339
62
+ eotdl/models/ingest.py,sha256=Zxv9oL5VOqPXgJgaOROt7v2twRPqzajllpP5ZgyNf3Q,1519
63
+ eotdl/models/metadata.py,sha256=L23_EziGVSDJ-WZbYUYNN22GrgbCdMGxwJhgK9uzW0U,390
64
+ eotdl/models/retrieve.py,sha256=-Ij7dT4J1p7MW4n13OlPB9OW4tBaBXPwk9dW8IuCZPc,664
65
+ eotdl/repos/APIRepo.py,sha256=tjvtr96d1fhnKEdGDmc90NrwBW7YVCtdsKLLtV82SBE,402
66
+ eotdl/repos/AuthAPIRepo.py,sha256=0ovz92NMOvQsOZOJ_shetO8wsS_80mBf-tDKVfwttH0,760
67
+ eotdl/repos/AuthRepo.py,sha256=6AWOdWgXKAVYJ2pB3Fj6X2KABoH2u-tpUyhEkNMWxX0,1001
68
+ eotdl/repos/DatasetsAPIRepo.py,sha256=2YYOIG_9Yx4D8H7L-HIGdMiIYA6QscCQ0yaJ5jKRLGg,4667
69
+ eotdl/repos/FilesAPIRepo.py,sha256=luln1RI8YviPLxkI-ZKlXn0y_eAYGKZdPVwOyz4vlV4,7626
70
+ eotdl/repos/ModelsAPIRepo.py,sha256=nYBaAmGlD4H7XMpeHMwx7GYacmIoWqfhH9PZ4sRfp90,1201
71
+ eotdl/repos/__init__.py,sha256=WvX5TP49k7yYb5dWWNjv5kzbdluO3dJ4LqjQxRIOUVc,222
72
+ eotdl/shared/__init__.py,sha256=mF7doJC8Z5eTPmB01UQvPivThZac32DRY33T6qshXfg,41
73
+ eotdl/shared/checksum.py,sha256=4IB6N9jRO0chMDNJzpdnFDhC9wcFF9bO5oHq2HodcHw,479
74
+ eotdl/tools/__init__.py,sha256=_p3n2dw3ulwyr1OlVw5d_jMV64cNYfajQMUbzFfvIpU,178
75
+ eotdl/tools/geo_utils.py,sha256=yZA100UH0pbH8T6wb9Kfv_VRDKYYtQDPTud3Ddkdsok,7320
76
+ eotdl/tools/metadata.py,sha256=RvNmoMdfEKoo-DzhEAqL-f9ZCjIe_bsdHQwACMk6w1E,1664
77
+ eotdl/tools/paths.py,sha256=yWhOtVxX4NxrDrrBX2fuye5N1mAqrxXFy_eA7dffd84,1152
78
+ eotdl/tools/stac.py,sha256=ovXdrPm4Sn9AAJmrP88WnxDmq2Ut-xPoscjphxz3Iyo,5763
79
+ eotdl/tools/time_utils.py,sha256=qJ3-rk1I7ne722SLfAP6-59kahQ0vLQqIf9VpOi0Kpg,4691
80
+ eotdl/tools/tools.py,sha256=ESmvh-gCyWHmXsOdqtB70EmdRK_Vzap6kVOuYmlp5gw,6353
81
+ eotdl-2023.11.3.post2.dist-info/METADATA,sha256=fcl9zAZLMuQ6l_I7uJn_fq0Mt_qMPlKpPl8sIivLyTc,3998
82
+ eotdl-2023.11.3.post2.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
83
+ eotdl-2023.11.3.post2.dist-info/entry_points.txt,sha256=s6sfxUfRrSX2IP2UbrzTFTvRCtLgw3_OKcHlOKf_5F8,39
84
+ eotdl-2023.11.3.post2.dist-info/RECORD,,
@@ -1,84 +0,0 @@
1
- eotdl/__init__.py,sha256=9DvpaznPuqeogwAsdPVevf8C8syVQvDkm_9Lwu4OJ_I,29
2
- eotdl/access/__init__.py,sha256=OFdCDemao6Ez1w18-ydQ8G_CqeQ8h43hFcdsJcq2UKI,208
3
- eotdl/access/airbus/__init__.py,sha256=KdVilLghjjs_EEMGlbZntveRR7yA6pg_CdV04ulZWiQ,75
4
- eotdl/access/airbus/client.py,sha256=thVIfCscsrOp6l2uizY6Fai4Jk4e_r-2luyr15YAxn0,11017
5
- eotdl/access/airbus/parameters.py,sha256=vwv8Nga-LS_kyXzFhSYsQkbtCPL2Z6ym_aHV9cEoBxI,851
6
- eotdl/access/airbus/utils.py,sha256=plDycaeGTK0U89A4e-zMJmQRl2sbqBKQeryJgn9vNrU,564
7
- eotdl/access/download.py,sha256=2bPKuFrcvc9Ch6ps93178c-9tCc_uVbHtIhNTvFaIRg,1654
8
- eotdl/access/search.py,sha256=RCTQfwkaZLFK9CXheAEtq0E91cKjH_VJzBUESEixaME,621
9
- eotdl/access/sentinelhub/__init__.py,sha256=N0tYM8M5aNtCYwM5CqQJmvpH19SKGQDAursK6TambNc,195
10
- eotdl/access/sentinelhub/client.py,sha256=B6ABWtu_0NQ_8oaTPS4RtxGNWMVEtpm9QqSwQz6_kjk,4329
11
- eotdl/access/sentinelhub/evalscripts.py,sha256=1nkadlHDjdsoqfRC0K4aY_Xax1X9oQ8Zqjnv-KZmL2Y,4362
12
- eotdl/access/sentinelhub/parameters.py,sha256=ZB4WLVVUStmVk9QR2F1FK5BMkS7GTbSYNlJfFfC_DI0,1878
13
- eotdl/access/sentinelhub/utils.py,sha256=CqApkUxXKDLJOqGMbyrBaHMgy0A6YVm2SBHP6MLdoIM,3279
14
- eotdl/auth/__init__.py,sha256=OuGNfJQ-8Kymn4zIywlHQfImEO8DJMJIwOwTQm-u_dc,99
15
- eotdl/auth/auth.py,sha256=voxwxTERghLQdqrBSyjZrgvKrcF01aWUTc0-vxLFFgY,1601
16
- eotdl/auth/errors.py,sha256=PpnFU2DvnRo8xrM77wgskKi0tfEJ1Rhle4xv2RD1qpk,306
17
- eotdl/auth/is_logged.py,sha256=QREuhkoDnarZoUZwCxVCNoESGb_Yukh0lJo1pXvrV9Q,115
18
- eotdl/auth/logout.py,sha256=P_Sp6WmVvnG3R9V1L9541KNyHFko9DtQPqAKD2vaguw,161
19
- eotdl/cli.py,sha256=QzqlUs2q_2fk-e0ZzXJSjgUPN68899z8VvwxpReYppI,448
20
- eotdl/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- eotdl/commands/auth.py,sha256=rcHObEkDfdGzcWtDnBV3-V9PudXxWpUdv0fRyDc70W0,1547
22
- eotdl/commands/datasets.py,sha256=XeDq-tJec-EmliocIXHPkg_1wBwCR2DJqxBxRbwjSGg,4473
23
- eotdl/commands/models.py,sha256=7JPzjgxrnLLuj2c_D6RS2pc-m54MhmYIpGcob8pRJ_Q,4362
24
- eotdl/curation/__init__.py,sha256=n_zpB3byU4Dg5R33eyIMmMUBAyze_meopR-FjGbNM-Q,243
25
- eotdl/curation/stac/__init__.py,sha256=MYeO3zfiLrou6oxSHBujyJtfDefYt6xDHU7Y6-ujMjA,198
26
- eotdl/curation/stac/assets.py,sha256=Ejdm_vjrcyo7KplaPrxHLZDApirshFGdze6cdq9V7fE,4284
27
- eotdl/curation/stac/dataframe.py,sha256=OUHEaZBvQGMzovHBJ44aFTeU-v3YQLaSLWzdJ8OQT68,5307
28
- eotdl/curation/stac/dataframe_bck.py,sha256=0sMc00gnYNp58ShEGvXWbBh_5QOSpvKKYA0bKC5fFL4,8495
29
- eotdl/curation/stac/dataframe_labeling.py,sha256=ZXl5edYHyKAjJDxsQyNXprJcnrPZyz9yzU0zHTgk99o,1414
30
- eotdl/curation/stac/extensions/__init__.py,sha256=I3IspniNTkgeyLHdR9a_-kuXZm6TpH92b4dpWafh1Rk,596
31
- eotdl/curation/stac/extensions/base.py,sha256=W9fPMmHtxMQ15QHIfv36O_mVmdOrPo67ljsKH_dzjv0,605
32
- eotdl/curation/stac/extensions/dem.py,sha256=GtDPNuOc_-Qxw1kJJgirGGRzZqk7hJTWHWVc7tKRV-I,323
33
- eotdl/curation/stac/extensions/eo.py,sha256=aiN5YTNPvyC4kid0gQYzJK5MYAeUe40YmGcU9PfxHQ4,3965
34
- eotdl/curation/stac/extensions/label/__init__.py,sha256=1MDoAAm9Va4eRkFALwzFTQ5CcWbIN25KSnjL6k75nSQ,121
35
- eotdl/curation/stac/extensions/label/base.py,sha256=n914NVhtH7FTMmmhPIFbJh0n1wJasVgxTrvgSUMxP3c,4063
36
- eotdl/curation/stac/extensions/label/image_name_labeler.py,sha256=ZhUG5njBSCeo17SC0_LCdNnYxVPvqSNuFGTrWd_XtUI,7922
37
- eotdl/curation/stac/extensions/label/scaneo.py,sha256=C_3azPqN3QzMWNGJcrxt0wKO_14YFKL5D6bg83pSPqs,8757
38
- eotdl/curation/stac/extensions/ml_dataset.py,sha256=HKtszM6nl-rI5PQHgdgYdho9v3w2SIPJHb-VCe2pMe4,19222
39
- eotdl/curation/stac/extensions/projection.py,sha256=NZndrCnqa_0PWtfcTAFbXjkpO83Szj2fldaUAMWM7Jc,1200
40
- eotdl/curation/stac/extensions/raster.py,sha256=UD6cTtb4HTILw5iie1xvl7b0SmypxzyRyamFlf1YZXo,1399
41
- eotdl/curation/stac/extensions/sar.py,sha256=_1a9MWA7YElem6u1z9ynjdfLWaeI6J8qwF8yDRqr3XI,1582
42
- eotdl/curation/stac/extent.py,sha256=6RMaiZ9d_iDHrewldmRZ_g6h4hh_smEawvS_9QslDYI,4941
43
- eotdl/curation/stac/parsers.py,sha256=KumL2ieBt0ATGgKoGyc-AJ99zSMeLD4-tI5MF9ruYPw,1380
44
- eotdl/curation/stac/stac.py,sha256=Rm5ogUxj3xLqZon4ub2VmXJfyjfim7ul-PMQe6rRTOo,13353
45
- eotdl/datasets/__init__.py,sha256=GIfgqrFq1LblG8qT1zNthm28drw1faLAenGbKjX0rdw,174
46
- eotdl/datasets/download.py,sha256=SBUsYqnKahw4MMOSzT2pxX5bDD1f1wAu31ovtuQu4Fo,4381
47
- eotdl/datasets/ingest.py,sha256=oQ3KycGXRC8qBiV4VFfdyDfQn2HP86RAx78ZiM2MKf8,1792
48
- eotdl/datasets/metadata.py,sha256=L23_EziGVSDJ-WZbYUYNN22GrgbCdMGxwJhgK9uzW0U,390
49
- eotdl/datasets/retrieve.py,sha256=DJz5K1bCLizg9YNwBnhHMFzcxMXar2socYkFONdSL4c,1041
50
- eotdl/datasets/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- eotdl/datasets/usecases/datasets/DownloadFile.py,sha256=PoP0Dl2LBshKzbgArgxwxIVs-KT2IsfZKi0qSyiBsoI,936
52
- eotdl/datasets/usecases/datasets/DownloadFileURL.py,sha256=6OcNuCys45MXu9-7GtES0zg2QmY02EAkj_P3cVKVUvo,603
53
- eotdl/datasets/usecases/datasets/IngestDataset.py,sha256=d2H5nPXsEj-LhZpWGwNDSPs9uYNXRO2V07xsTFygQDc,953
54
- eotdl/datasets/usecases/datasets/IngestLargeDataset.py,sha256=yRl4eqDCNPcmbU0rrtooWDq1OPpi88rSFSl8C4RE7oM,1424
55
- eotdl/datasets/usecases/datasets/IngestLargeDatasetParallel.py,sha256=G6uVmpZLkn6lqUVQkjw0ne1xlBcJKHoJik4xLnlqd6o,1612
56
- eotdl/datasets/usecases/datasets/IngestSTAC.py,sha256=QAMLSkMFlc-ic0JWaIdAf0SXPkYcawy-RJqfvDqTD7A,3075
57
- eotdl/datasets/usecases/datasets/__init__.py,sha256=Tx4ISHtcjbu4KUVgjTac_pjpT0vsN-QpkIwtyx8xUYg,383
58
- eotdl/files/__init__.py,sha256=71KfzCidZzFV82Zmc2GRxXzpB9sZKGI95lBxySRxbPY,33
59
- eotdl/files/ingest.py,sha256=52wI8CQm4LVCH3j9FnIZtjHzFY5zofxxSsZlWv4MPaU,6000
60
- eotdl/models/__init__.py,sha256=fe1VfnlOxlfviphkkzaY4q8mkm0QxcdJxB3peScBZYk,108
61
- eotdl/models/download.py,sha256=hWFEuJUZsjYnSDixMkHgmYDwxNMJEQ13-AJQPnyZOiY,4340
62
- eotdl/models/ingest.py,sha256=Zxv9oL5VOqPXgJgaOROt7v2twRPqzajllpP5ZgyNf3Q,1519
63
- eotdl/models/metadata.py,sha256=L23_EziGVSDJ-WZbYUYNN22GrgbCdMGxwJhgK9uzW0U,390
64
- eotdl/models/retrieve.py,sha256=-Ij7dT4J1p7MW4n13OlPB9OW4tBaBXPwk9dW8IuCZPc,664
65
- eotdl/repos/APIRepo.py,sha256=tjvtr96d1fhnKEdGDmc90NrwBW7YVCtdsKLLtV82SBE,402
66
- eotdl/repos/AuthAPIRepo.py,sha256=T-TPDjZa1u-JnUsKoKp-T9x__L0aUfLUUdP7xZFV_hI,770
67
- eotdl/repos/AuthRepo.py,sha256=6AWOdWgXKAVYJ2pB3Fj6X2KABoH2u-tpUyhEkNMWxX0,1001
68
- eotdl/repos/DatasetsAPIRepo.py,sha256=HQh4PCS9zP6zPK86lsfUX08jhKIlOKUOswZaROVMkYY,9979
69
- eotdl/repos/FilesAPIRepo.py,sha256=WgGTyYljlSFxD8-0BePEwdks6voVy5rPjqdTruc31MQ,10924
70
- eotdl/repos/ModelsAPIRepo.py,sha256=6PDn1eHb0g3dVyQyB5aEGnIlWi9Ez8Vlnj4A_QL3Ea8,1211
71
- eotdl/repos/__init__.py,sha256=WvX5TP49k7yYb5dWWNjv5kzbdluO3dJ4LqjQxRIOUVc,222
72
- eotdl/shared/__init__.py,sha256=mF7doJC8Z5eTPmB01UQvPivThZac32DRY33T6qshXfg,41
73
- eotdl/shared/checksum.py,sha256=4IB6N9jRO0chMDNJzpdnFDhC9wcFF9bO5oHq2HodcHw,479
74
- eotdl/tools/__init__.py,sha256=keLICmgtaXy3rc6oOHNDli8H9YHFhElTg2GtF8Vb-eM,136
75
- eotdl/tools/geo_utils.py,sha256=vrTOq456Ck-qZiFT1mYM2cnlacm-4Q8D_dPadsqr_NY,7153
76
- eotdl/tools/metadata.py,sha256=YzXyOHfF3j6c_Az6RRgIHEI9n69vOI2DvYaMmLNatSU,1658
77
- eotdl/tools/paths.py,sha256=IEzfpjadd3KnwOQ6F_1vBRyxnm12QcD1TboPRd-I15w,1166
78
- eotdl/tools/stac.py,sha256=cqv9Dc2uUnonMKF6MP9C5h9fHs-oENjgmcnRJNRWNgA,5937
79
- eotdl/tools/time_utils.py,sha256=pb8h4bCQTTarNHq38UfjNotefm5l4qGjpYBENzzcqHY,4212
80
- eotdl/tools/tools.py,sha256=x2UFa5wHunX4qn3lqZYP0BtPHZB-w3dMwK1fac8LUhI,6100
81
- eotdl-2023.11.2.post5.dist-info/METADATA,sha256=JN-7QqoIw6AI3pn8DJrUYvaD-EiG_zeZwerKbQTXFJU,3929
82
- eotdl-2023.11.2.post5.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
83
- eotdl-2023.11.2.post5.dist-info/entry_points.txt,sha256=s6sfxUfRrSX2IP2UbrzTFTvRCtLgw3_OKcHlOKf_5F8,39
84
- eotdl-2023.11.2.post5.dist-info/RECORD,,