Skip to content

feat(providers): add eocat provider#1811

Open
timothey-cs wants to merge 15 commits intodevelopfrom
feat-add-esa-heritage-provider
Open

feat(providers): add eocat provider#1811
timothey-cs wants to merge 15 commits intodevelopfrom
feat-add-esa-heritage-provider

Conversation

@timothey-cs
Copy link
Collaborator

@timothey-cs timothey-cs commented Sep 3, 2025

Fixes #1724
Fixes #1725
Add a new provider that implements ESA Heritage and Third Party Missions data

@timothey-cs timothey-cs self-assigned this Sep 3, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Sep 3, 2025

Test Results

    4 files  ±0      4 suites  ±0   3m 18s ⏱️ ±0s
  685 tests +1    684 ✅ +1  1 💤 ±0  0 ❌ ±0 
2 782 runs  +4  2 776 ✅ +4  6 💤 ±0  0 ❌ ±0 

Results for commit 9bf9eba. ± Comparison against base commit 8af8318.

♻️ This comment has been updated with latest results.

@eodag-bot
Copy link
Collaborator

eodag-bot commented Sep 3, 2025

badge

Code Coverage (Ubuntu)

Details
Filename                                     Stmts    Miss  Cover    Missing
-----------------------------------------  -------  ------  -------  --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__init__.py                                      8       0  100.00%
cli.py                                         244      10  95.90%   103-114, 620
config.py                                      302      24  92.05%   69-71, 74, 77, 80, 84, 88, 92-94, 582-584, 689-691, 710, 718, 748-753, 755
crunch.py                                        5       5  0.00%    20-24
api/__init__.py                                  0       0  100.00%
api/collection.py                              124       7  94.35%   168, 204, 207, 297, 300, 318, 321
api/core.py                                    743      50  93.27%   261, 544, 592, 635, 675, 695, 736-741, 766, 850-869, 883, 889, 1042, 1047, 1142, 1279, 1322, 1335, 1402, 1416-1417, 1493-1498, 1510-1513, 1846, 2086, 2149-2150, 2179-2180
api/provider.py                                380      35  90.79%   186, 190-191, 316-337, 405, 520, 524-525, 530-533, 544, 620-630, 820-821, 869, 876, 907-910, 946-947, 955-956
api/search_result.py                           181      19  89.50%   104, 113, 120, 134, 178, 195, 292, 347-350, 420, 425-426, 460, 474, 497-498, 504
api/product/__init__.py                         18       2  88.89%   60, 62
api/product/_assets.py                          52       5  90.38%   97, 183, 191, 194-198
api/product/_product.py                        212      17  91.98%   174, 243-244, 262-263, 369, 396, 496, 516, 539-542, 551-554, 600
api/product/metadata_mapping.py                787      53  93.27%   125-127, 220-225, 246, 304-305, 393, 414, 466-467, 504, 525-528, 551, 563-564, 605, 628, 658-663, 728-733, 745, 753, 985, 1160, 1169-1173, 1190-1195, 1328, 1351, 1360, 1382, 1387, 1439, 1511, 1532, 1558, 1572, 1597, 1643, 1712, 1784
api/product/drivers/__init__.py                 11       0  100.00%
api/product/drivers/base.py                     23       0  100.00%
api/product/drivers/generic.py                   7       0  100.00%
api/product/drivers/sentinel1.py                15       0  100.00%
api/product/drivers/sentinel2.py                15       0  100.00%
plugins/__init__.py                              0       0  100.00%
plugins/base.py                                 22       4  81.82%   48, 55, 68-69
plugins/manager.py                             173      16  90.75%   102-107, 179, 201, 219-220, 232, 271-272, 372-375, 387-388
plugins/apis/__init__.py                         0       0  100.00%
plugins/apis/base.py                             4       0  100.00%
plugins/apis/ecmwf.py                          103      10  90.29%   177-179, 226-227, 253-255, 309-310
plugins/apis/usgs.py                           184      26  85.87%   160, 266, 300, 341-343, 348, 376-377, 382, 412-419, 430-435, 457-463, 494
plugins/authentication/__init__.py               6       1  83.33%   31
plugins/authentication/aws_auth.py             124      35  71.77%   52-54, 69-70, 142-149, 177-203, 226, 258-262, 279, 303, 319-320
plugins/authentication/base.py                  22       4  81.82%   45, 58, 81, 95
plugins/authentication/eoiamauth.py             21      11  47.62%   13, 17-20, 26-27, 34, 37-39
plugins/authentication/generic.py               16       3  81.25%   50, 55, 65
plugins/authentication/header.py                19       0  100.00%
plugins/authentication/keycloak.py              46       7  84.78%   153-156, 177-182
plugins/authentication/openid_connect.py       232      28  87.93%   91-92, 104-122, 169, 175-203, 211, 350-353, 379, 420
plugins/authentication/qsauth.py                34       1  97.06%   91
plugins/authentication/sas_auth.py              57       3  94.74%   68, 89, 135
plugins/authentication/token.py                128       9  92.97%   180, 217, 288-289, 339-343
plugins/authentication/token_exchange.py        36      14  61.11%   75, 93-121
plugins/crunch/__init__.py                       0       0  100.00%
plugins/crunch/base.py                          10       1  90.00%   43
plugins/crunch/filter_date.py                   59      14  76.27%   52-57, 69, 78, 87, 90, 100-102, 109-111, 118
plugins/crunch/filter_latest_intersect.py       47      33  29.79%   49-54, 67-113
plugins/crunch/filter_latest_tpl_name.py        31      20  35.48%   46-54, 64-95
plugins/crunch/filter_overlap.py                63      25  60.32%   62-65, 72-75, 81, 85, 89, 100-116, 131-157
plugins/crunch/filter_property.py               30       5  83.33%   55-60, 63-64
plugins/download/__init__.py                     0       0  100.00%
plugins/download/aws.py                        381      71  81.36%   267, 301, 339-342, 362-366, 461-463, 467, 498-499, 505-509, 540, 605-613, 677-770, 781-786, 824, 850, 895-897, 949, 1129
plugins/download/base.py                       260      35  86.54%   129, 158, 305-306, 364-365, 407, 411-422, 436, 504-508, 538-539, 564-572, 574-578, 628, 649, 671, 679
plugins/download/http.py                       545      77  85.87%   237, 279-282, 344-347, 350, 357-362, 393-395, 412, 427, 485, 520, 534, 548, 556-560, 576-581, 592, 610, 646-649, 670, 680, 687, 707, 842, 874, 904-913, 949, 974-975, 994-999, 1008, 1023-1025, 1029, 1032, 1047-1048, 1124-1125, 1129, 1181, 1227-1228, 1234, 1244, 1270, 1305, 1325, 1362-1364
plugins/search/__init__.py                      25       0  100.00%
plugins/search/base.py                         188      18  90.43%   107, 111, 135-141, 198-201, 294, 315, 439, 486, 508-511, 520
plugins/search/build_search_result.py          522      81  84.48%   249-250, 286, 289, 327, 330, 361-363, 606-617, 747, 771, 773, 840, 848-852, 873, 885, 911, 956, 972, 1006-1021, 1069, 1094, 1097, 1101, 1141-1161, 1202, 1229-1230, 1239-1248, 1312, 1327, 1333, 1352-1361, 1482-1483, 1527, 1536-1538, 1595, 1643-1653
plugins/search/cop_marine.py                   267      56  79.03%   57, 65-67, 77-78, 83, 88-89, 105, 107, 110, 176-177, 220, 236, 242, 246, 250, 261, 272-273, 281, 318-321, 327, 348, 352, 356, 360, 364-368, 374-377, 380-397, 414-417, 470-474, 479, 491
plugins/search/creodias_s3.py                   29       1  96.55%   59
plugins/search/csw.py                          112      87  22.32%   99-100, 104-105, 113-170, 176-189, 197-229, 247-288
plugins/search/qssearch.py                     820      94  88.54%   415-416, 533-534, 557-558, 570-574, 789-795, 853, 949, 956, 1027, 1048, 1051-1052, 1070, 1079-1080, 1107, 1181, 1190, 1195-1212, 1221, 1236, 1245-1248, 1258, 1286, 1369, 1392, 1465-1466, 1472, 1562, 1669-1673, 1739, 1742, 1746-1747, 1768-1771, 1783, 1805-1817, 1824, 1859-1861, 1884-1890, 1897, 1951, 1974, 1979-1980, 1995, 2001, 2011, 2095, 2099, 2110, 2134, 2147, 2155-2165, 2202-2206
plugins/search/stac_list_assets.py              25      10  60.00%   44-51, 75-85
plugins/search/static_stac_search.py            84      18  78.57%   99-127, 171-174, 187, 229
types/__init__.py                              161      44  72.67%   67, 71, 80-84, 95-107, 135-137, 144-149, 194, 213, 216, 254, 264-280, 285, 287, 309, 314, 322, 332
types/bbox.py                                   43      19  55.81%   46-61, 72-74, 85-87, 99-101, 113-115, 123
types/download_args.py                           9       0  100.00%
types/queryables.py                             84       0  100.00%
types/search_args.py                            70      18  74.29%   60-64, 71-88, 103
utils/__init__.py                              596      45  92.45%   71, 168, 201-202, 211-237, 240, 255, 335-339, 414-418, 498, 538-539, 568, 943-946, 954-955, 997, 1016-1017, 1046, 1064-1065, 1177, 1244, 1408, 1497, 1512, 1521, 1533, 1708
utils/cache.py                                  22       0  100.00%
utils/dates.py                                  57       4  92.98%   63-65, 138
utils/env.py                                     3       0  100.00%
utils/exceptions.py                             47       0  100.00%
utils/free_text_search.py                       65       2  96.92%   83, 91
utils/import_system.py                          28      19  32.14%   64-78, 89-99
utils/logging.py                                28       1  96.43%   41
utils/notebook.py                               44      23  47.73%   25-29, 36-41, 58-62, 72-78, 83-87
utils/repr.py                                   38       0  100.00%
utils/requests.py                               55      29  47.27%   51-52, 64, 85-96, 107-124, 128
utils/s3.py                                    240      12  95.00%   200-203, 245, 263, 489, 537-538, 585, 660, 686
utils/stac_reader.py                           113      44  61.06%   63-85, 95-97, 101, 138, 154-159, 206-216, 226-256
TOTAL                                         9555    1305  86.34%

Diff against develop

Filename                               Stmts    Miss  Cover
-----------------------------------  -------  ------  -------
plugins/authentication/eoiamauth.py      +21     +11  +47.62%
utils/s3.py                                0      -1  +0.42%
TOTAL                                    +21     +10  -0.08%

Results for commit: 18c02ea

Minimum allowed coverage is 70%

♻️ This comment has been updated with latest results

@timothey-cs timothey-cs force-pushed the feat-add-esa-heritage-provider branch from 74f250b to 7e3ec22 Compare September 3, 2025 13:18
@eodag-bot
Copy link
Collaborator

eodag-bot commented Sep 3, 2025

badge

Code Coverage (Windows)

Details
Filename                                     Stmts    Miss  Cover    Missing
-----------------------------------------  -------  ------  -------  --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__init__.py                                      8       0  100.00%
cli.py                                         244      10  95.90%   103-114, 620
config.py                                      302      24  92.05%   69-71, 74, 77, 80, 84, 88, 92-94, 582-584, 689-691, 710, 718, 748-753, 755
crunch.py                                        5       5  0.00%    20-24
api/__init__.py                                  0       0  100.00%
api/collection.py                              124       7  94.35%   168, 204, 207, 297, 300, 318, 321
api/core.py                                    743      50  93.27%   261, 544, 592, 635, 675, 695, 736-741, 766, 850-869, 883, 889, 1042, 1047, 1142, 1279, 1322, 1335, 1402, 1416-1417, 1493-1498, 1510-1513, 1846, 2086, 2149-2150, 2179-2180
api/provider.py                                380      35  90.79%   186, 190-191, 316-337, 405, 520, 524-525, 530-533, 544, 620-630, 820-821, 869, 876, 907-910, 946-947, 955-956
api/search_result.py                           181      19  89.50%   104, 113, 120, 134, 178, 195, 292, 347-350, 420, 425-426, 460, 474, 497-498, 504
api/product/__init__.py                         18       2  88.89%   60, 62
api/product/_assets.py                          52       5  90.38%   97, 183, 191, 194-198
api/product/_product.py                        212      17  91.98%   174, 243-244, 262-263, 369, 396, 496, 516, 539-542, 551-554, 600
api/product/metadata_mapping.py                787      53  93.27%   125-127, 220-225, 246, 304-305, 393, 414, 466-467, 504, 525-528, 551, 563-564, 605, 628, 658-663, 728-733, 745, 753, 985, 1160, 1169-1173, 1190-1195, 1328, 1351, 1360, 1382, 1387, 1439, 1511, 1532, 1558, 1572, 1597, 1643, 1712, 1784
api/product/drivers/__init__.py                 11       0  100.00%
api/product/drivers/base.py                     23       0  100.00%
api/product/drivers/generic.py                   7       0  100.00%
api/product/drivers/sentinel1.py                15       0  100.00%
api/product/drivers/sentinel2.py                15       0  100.00%
plugins/__init__.py                              0       0  100.00%
plugins/base.py                                 22       4  81.82%   48, 55, 68-69
plugins/manager.py                             173      16  90.75%   102-107, 179, 201, 219-220, 232, 271-272, 372-375, 387-388
plugins/apis/__init__.py                         0       0  100.00%
plugins/apis/base.py                             4       0  100.00%
plugins/apis/ecmwf.py                          103      10  90.29%   177-179, 226-227, 253-255, 309-310
plugins/apis/usgs.py                           184      26  85.87%   160, 266, 300, 341-343, 348, 376-377, 382, 412-419, 430-435, 457-463, 494
plugins/authentication/__init__.py               6       1  83.33%   31
plugins/authentication/aws_auth.py             124      35  71.77%   52-54, 69-70, 142-149, 177-203, 226, 258-262, 279, 303, 319-320
plugins/authentication/base.py                  22       4  81.82%   45, 58, 81, 95
plugins/authentication/eoiamauth.py             21      11  47.62%   13, 17-20, 26-27, 34, 37-39
plugins/authentication/generic.py               16       3  81.25%   50, 55, 65
plugins/authentication/header.py                19       0  100.00%
plugins/authentication/keycloak.py              46       7  84.78%   153-156, 177-182
plugins/authentication/openid_connect.py       232      28  87.93%   91-92, 104-122, 169, 175-203, 211, 350-353, 379, 420
plugins/authentication/qsauth.py                34       1  97.06%   91
plugins/authentication/sas_auth.py              57       3  94.74%   68, 89, 135
plugins/authentication/token.py                128       9  92.97%   180, 217, 288-289, 339-343
plugins/authentication/token_exchange.py        36      14  61.11%   75, 93-121
plugins/crunch/__init__.py                       0       0  100.00%
plugins/crunch/base.py                          10       1  90.00%   43
plugins/crunch/filter_date.py                   59      14  76.27%   52-57, 69, 78, 87, 90, 100-102, 109-111, 118
plugins/crunch/filter_latest_intersect.py       47      33  29.79%   49-54, 67-113
plugins/crunch/filter_latest_tpl_name.py        31      20  35.48%   46-54, 64-95
plugins/crunch/filter_overlap.py                63      25  60.32%   62-65, 72-75, 81, 85, 89, 100-116, 131-157
plugins/crunch/filter_property.py               30       5  83.33%   55-60, 63-64
plugins/download/__init__.py                     0       0  100.00%
plugins/download/aws.py                        381      71  81.36%   267, 301, 339-342, 362-366, 461-463, 467, 498-499, 505-509, 540, 605-613, 677-770, 781-786, 824, 850, 895-897, 949, 1129
plugins/download/base.py                       260      37  85.77%   129, 158, 225-227, 305-306, 364-365, 407, 411-422, 436, 504-508, 538-539, 564-572, 574-578, 628, 649, 671, 679
plugins/download/http.py                       545      77  85.87%   237, 279-282, 344-347, 350, 357-362, 393-395, 412, 427, 485, 520, 534, 548, 556-560, 576-581, 592, 610, 646-649, 670, 680, 687, 707, 842, 874, 904-913, 949, 974-975, 994-999, 1008, 1023-1025, 1029, 1032, 1047-1048, 1124-1125, 1129, 1181, 1227-1228, 1234, 1244, 1270, 1305, 1325, 1362-1364
plugins/search/__init__.py                      25       0  100.00%
plugins/search/base.py                         188      18  90.43%   107, 111, 135-141, 198-201, 294, 315, 439, 486, 508-511, 520
plugins/search/build_search_result.py          522      81  84.48%   249-250, 286, 289, 327, 330, 361-363, 606-617, 747, 771, 773, 840, 848-852, 873, 885, 911, 956, 972, 1006-1021, 1069, 1094, 1097, 1101, 1141-1161, 1202, 1229-1230, 1239-1248, 1312, 1327, 1333, 1352-1361, 1482-1483, 1527, 1536-1538, 1595, 1643-1653
plugins/search/cop_marine.py                   267      56  79.03%   57, 65-67, 77-78, 83, 88-89, 105, 107, 110, 176-177, 220, 236, 242, 246, 250, 261, 272-273, 281, 318-321, 327, 348, 352, 356, 360, 364-368, 374-377, 380-397, 414-417, 470-474, 479, 491
plugins/search/creodias_s3.py                   29       1  96.55%   59
plugins/search/csw.py                          112      87  22.32%   99-100, 104-105, 113-170, 176-189, 197-229, 247-288
plugins/search/qssearch.py                     820      94  88.54%   415-416, 533-534, 557-558, 570-574, 789-795, 853, 949, 956, 1027, 1048, 1051-1052, 1070, 1079-1080, 1107, 1181, 1190, 1195-1212, 1221, 1236, 1245-1248, 1258, 1286, 1369, 1392, 1465-1466, 1472, 1562, 1669-1673, 1739, 1742, 1746-1747, 1768-1771, 1783, 1805-1817, 1824, 1859-1861, 1884-1890, 1897, 1951, 1974, 1979-1980, 1995, 2001, 2011, 2095, 2099, 2110, 2134, 2147, 2155-2165, 2202-2206
plugins/search/stac_list_assets.py              25      10  60.00%   44-51, 75-85
plugins/search/static_stac_search.py            84      18  78.57%   99-127, 171-174, 187, 229
types/__init__.py                              161      44  72.67%   67, 71, 80-84, 95-107, 135-137, 144-149, 194, 213, 216, 254, 264-280, 285, 287, 309, 314, 322, 332
types/bbox.py                                   43      19  55.81%   46-61, 72-74, 85-87, 99-101, 113-115, 123
types/download_args.py                           9       0  100.00%
types/queryables.py                             84       0  100.00%
types/search_args.py                            70      18  74.29%   60-64, 71-88, 103
utils/__init__.py                              596      45  92.45%   71, 168, 201-202, 211-237, 240, 255, 335-339, 414-418, 498, 538-539, 568, 943-946, 954-955, 997, 1016-1017, 1046, 1064-1065, 1177, 1244, 1408, 1497, 1512, 1521, 1533, 1708
utils/cache.py                                  22       0  100.00%
utils/dates.py                                  57       4  92.98%   63-65, 138
utils/env.py                                     3       0  100.00%
utils/exceptions.py                             47       0  100.00%
utils/free_text_search.py                       65       2  96.92%   83, 91
utils/import_system.py                          28      19  32.14%   64-78, 89-99
utils/logging.py                                28       1  96.43%   41
utils/notebook.py                               44      23  47.73%   25-29, 36-41, 58-62, 72-78, 83-87
utils/repr.py                                   38       0  100.00%
utils/requests.py                               55      29  47.27%   51-52, 64, 85-96, 107-124, 128
utils/s3.py                                    240      13  94.58%   200-203, 245, 258, 263, 489, 537-538, 585, 660, 686
utils/stac_reader.py                           113      44  61.06%   63-85, 95-97, 101, 138, 154-159, 206-216, 226-256
TOTAL                                         9555    1308  86.31%

Diff against develop

Filename                               Stmts    Miss  Cover
-----------------------------------  -------  ------  -------
plugins/authentication/eoiamauth.py      +21     +11  +47.62%
utils/s3.py                                0      +1  -0.42%
TOTAL                                    +21     +12  -0.10%

Results for commit: 18c02ea

Minimum allowed coverage is 70%

♻️ This comment has been updated with latest results

@timothey-cs timothey-cs marked this pull request as ready for review September 3, 2025 13:56
@timothey-cs timothey-cs requested a review from sbrunato September 3, 2025 13:56
@sbrunato sbrunato marked this pull request as draft September 5, 2025 13:10
@sbrunato sbrunato changed the title feat(#1725): add esa_heritage_missions provider feat(providers): add esa_heritage_missions provider Sep 8, 2025
@timothey-cs timothey-cs force-pushed the feat-add-esa-heritage-provider branch 2 times, most recently from ba862ad to 4388d18 Compare December 2, 2025 14:48
@timothey-cs timothey-cs force-pushed the feat-add-esa-heritage-provider branch 2 times, most recently from b8c4a0a to 26d0a4a Compare February 16, 2026 13:42
@eodag-bot
Copy link
Collaborator

eodag-bot commented Feb 16, 2026

badge

Code Coverage (Ubuntu)

Details
Filename                                     Stmts    Miss  Cover    Missing
-----------------------------------------  -------  ------  -------  --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__init__.py                                      8       0  100.00%
cli.py                                         247      10  95.95%   104-115, 629
config.py                                      305      24  92.13%   70-72, 75, 78, 81, 85, 89, 93-95, 583-585, 707-709, 728, 736, 766-771, 773
crunch.py                                        5       5  0.00%    20-24
api/__init__.py                                  0       0  100.00%
api/collection.py                              150       8  94.67%   176, 212, 215, 322, 361, 364, 382, 385
api/core.py                                    757      48  93.66%   265, 551, 599, 642, 682, 702, 743-748, 773, 857-876, 890, 896, 1049, 1054, 1149, 1286, 1329, 1342, 1409, 1423-1424, 1500-1505, 1517-1520, 2008, 2130, 2218-2219
api/provider.py                                381      35  90.81%   186, 190-191, 316-337, 405, 521, 525-526, 531-534, 545, 621-631, 821-822, 870, 877, 908-911, 947-948, 956-957
api/search_result.py                           181      19  89.50%   111, 123, 133, 154, 203, 220, 320, 375-378, 448, 453-454, 488, 502, 525-526, 532
api/product/__init__.py                         18       2  88.89%   57, 59
api/product/_assets.py                          52       4  92.31%   97, 191, 194-198
api/product/_product.py                        248      20  91.94%   189, 305-306, 324-325, 434, 463, 470, 577, 597, 620-623, 632-635, 689, 755, 767
api/product/metadata_mapping.py                804      55  93.16%   125-127, 220-225, 249, 307-308, 396, 417, 469-470, 507, 528-531, 554, 566-567, 608, 631, 661-666, 731-736, 745, 751, 767, 775, 1007, 1182, 1191-1195, 1212-1217, 1350, 1373, 1382, 1404, 1409, 1461, 1533, 1554, 1580, 1594, 1619, 1665, 1734, 1809
api/product/drivers/__init__.py                 11       0  100.00%
api/product/drivers/base.py                     29       0  100.00%
api/product/drivers/generic.py                  11       0  100.00%
api/product/drivers/sentinel1.py                33       0  100.00%
api/product/drivers/sentinel2.py                33       0  100.00%
plugins/__init__.py                              0       0  100.00%
plugins/base.py                                 22       4  81.82%   48, 55, 68-69
plugins/manager.py                             173      16  90.75%   102-107, 179, 201, 219-220, 232, 271-272, 372-375, 387-388
plugins/apis/__init__.py                         0       0  100.00%
plugins/apis/base.py                             4       0  100.00%
plugins/apis/ecmwf.py                          101       8  92.08%   178-180, 228-229, 255-257
plugins/apis/usgs.py                           182      25  86.26%   161, 267, 301, 343-345, 350, 378-379, 384, 414-421, 432-437, 459-465
plugins/authentication/__init__.py               6       1  83.33%   31
plugins/authentication/aws_auth.py             124      35  71.77%   52-54, 69-70, 142-149, 177-203, 226, 258-262, 279, 303, 319-320
plugins/authentication/base.py                  22       4  81.82%   45, 58, 81, 95
plugins/authentication/eoiam.py                 82      65  20.73%   19-21, 25-28, 34-35, 39-45, 49-52, 56-59, 63-133, 141, 148-160
plugins/authentication/generic.py               16       3  81.25%   50, 55, 65
plugins/authentication/header.py                19       0  100.00%
plugins/authentication/keycloak.py              46       7  84.78%   153-156, 177-182
plugins/authentication/openid_connect.py       232      28  87.93%   91-92, 104-122, 169, 175-203, 211, 350-353, 379, 420
plugins/authentication/qsauth.py                34       1  97.06%   91
plugins/authentication/sas_auth.py              57       3  94.74%   68, 89, 135
plugins/authentication/token.py                128       9  92.97%   180, 217, 288-289, 339-343
plugins/authentication/token_exchange.py        36      14  61.11%   75, 93-121
plugins/crunch/__init__.py                       0       0  100.00%
plugins/crunch/base.py                          10       1  90.00%   43
plugins/crunch/filter_date.py                   59      14  76.27%   52-57, 69, 78, 87, 90, 100-102, 109-111, 118
plugins/crunch/filter_latest_intersect.py       54      39  27.78%   50-55, 68-115
plugins/crunch/filter_latest_tpl_name.py        31      20  35.48%   46-54, 64-95
plugins/crunch/filter_overlap.py                63      25  60.32%   62-65, 72-75, 81, 85, 89, 100-116, 131-157
plugins/crunch/filter_property.py               30       5  83.33%   56-61, 64-65
plugins/download/__init__.py                     0       0  100.00%
plugins/download/aws.py                        401      76  81.05%   270, 304, 353-356, 386-387, 395-399, 479-482, 522-524, 528, 559-560, 566-570, 601, 666-674, 738-833, 845-850, 888, 914, 959-961, 1013
plugins/download/base.py                       280      35  87.50%   133, 162, 309-310, 368-369, 411, 415-426, 440, 517-521, 551, 586-587, 612-621, 680, 701, 723, 731, 765
plugins/download/http.py                       565      79  86.02%   233, 275-278, 340-343, 346, 353-358, 389-391, 408, 423, 483, 518, 532, 546, 556-560, 576-581, 592, 611, 648-651, 672, 682, 689, 709, 849, 881, 911-920, 956, 981-982, 1001-1006, 1015, 1030-1032, 1036, 1039, 1054-1055, 1137, 1189, 1231-1232, 1244, 1254, 1304-1305, 1335, 1355, 1383, 1407-1409, 1463-1464
plugins/search/__init__.py                      25       0  100.00%
plugins/search/base.py                         191      18  90.58%   108, 112, 136-142, 199-202, 295, 316, 441, 491, 513-516, 525
plugins/search/build_search_result.py          504      83  83.53%   259-260, 296, 300, 320, 550-561, 576-578, 701, 725, 727, 794, 802-806, 827, 837, 863, 908, 932, 960, 978-993, 1043, 1068, 1071, 1075, 1084, 1090, 1128-1149, 1190, 1217-1218, 1227-1236, 1300, 1315, 1321, 1340-1349, 1470-1471, 1515, 1524-1526, 1583, 1631-1641
plugins/search/cop_marine.py                   268      56  79.10%   57, 65-67, 77-78, 83, 88-89, 105, 107, 110, 176-177, 220, 236, 242, 246, 250, 261, 272-273, 281, 318-321, 327, 348, 352, 356, 360, 364-368, 374-377, 380-397, 414-417, 470-474, 479, 491
plugins/search/creodias_s3.py                   29       1  96.55%   59
plugins/search/csw.py                          112      87  22.32%   99-100, 104-105, 113-170, 176-189, 197-229, 247-288
plugins/search/qssearch.py                     823      94  88.58%   415-416, 533-534, 557-558, 570-574, 789-795, 853, 949, 956, 1027, 1048, 1051-1052, 1070, 1079-1080, 1107, 1181, 1190, 1195-1212, 1221, 1236, 1245-1248, 1258, 1281, 1370, 1393, 1466-1467, 1473, 1563, 1670-1674, 1740, 1743, 1747-1748, 1769-1772, 1784, 1806-1818, 1826, 1861-1863, 1886-1892, 1899, 1953, 1976, 1981-1982, 1997, 2003, 2013, 2103, 2107, 2118, 2142, 2155, 2163-2173, 2211-2215
plugins/search/stac_list_assets.py              25      10  60.00%   44-51, 75-85
plugins/search/static_stac_search.py            84      18  78.57%   99-127, 171-174, 187, 229
resources/__init__.py                            0       0  100.00%
resources/shp/__init__.py                        0       0  100.00%
types/__init__.py                              167      43  74.25%   58, 62, 71-75, 86-98, 126-128, 135-140, 216, 219, 257, 267-283, 288, 290, 312, 317, 325, 335
types/bbox.py                                   39      19  51.28%   46-61, 72-74, 85-87, 99-101, 113-115, 123
types/download_args.py                          10       0  100.00%
types/queryables.py                             88       0  100.00%
types/search_args.py                            70      18  74.29%   60-64, 71-88, 103
types/stac_extensions.py                       114       1  99.12%   282
types/stac_metadata.py                         116      16  86.21%   92, 113-114, 147, 177-191, 200-207
utils/__init__.py                              608      43  92.93%   71, 206, 237-238, 247-273, 276, 291, 371-375, 450-454, 534, 574-575, 604, 982-985, 1036, 1055-1056, 1085, 1103-1104, 1216, 1304, 1468, 1557, 1572, 1581, 1593, 1783
utils/cache.py                                  22       0  100.00%
utils/dates.py                                 113       4  96.46%   171, 329-331
utils/env.py                                     3       0  100.00%
utils/exceptions.py                             47       0  100.00%
utils/free_text_search.py                       65       2  96.92%   83, 91
utils/import_system.py                          28      19  32.14%   64-78, 89-99
utils/logging.py                                28       1  96.43%   41
utils/notebook.py                               44      23  47.73%   25-29, 36-41, 58-62, 72-78, 83-87
utils/repr.py                                   38       0  100.00%
utils/requests.py                               55      29  47.27%   51-52, 64, 85-96, 107-124, 128
utils/s3.py                                    240      13  94.58%   200-203, 245, 258, 263, 489, 537-538, 585, 660, 686
utils/stac_reader.py                           113      44  61.06%   63-85, 95-97, 101, 138, 154-159, 206-216, 226-256
TOTAL                                        10119    1389  86.27%

Diff against develop

Filename                           Stmts    Miss  Cover
-------------------------------  -------  ------  -------
api/product/metadata_mapping.py      +13      +2  -0.14%
plugins/authentication/eoiam.py      +82     +65  +20.73%
plugins/download/http.py              +3      +1  -0.10%
utils/s3.py                            0      +1  -0.42%
TOTAL                                +98     +69  -0.56%

Results for commit: 9bf9eba

Minimum allowed coverage is 70%

♻️ This comment has been updated with latest results

@eodag-bot
Copy link
Collaborator

eodag-bot commented Feb 16, 2026

badge

Code Coverage (Windows)

Details
Filename                                     Stmts    Miss  Cover    Missing
-----------------------------------------  -------  ------  -------  --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__init__.py                                      8       0  100.00%
cli.py                                         247      10  95.95%   104-115, 629
config.py                                      305      24  92.13%   70-72, 75, 78, 81, 85, 89, 93-95, 583-585, 707-709, 728, 736, 766-771, 773
crunch.py                                        5       5  0.00%    20-24
api/__init__.py                                  0       0  100.00%
api/collection.py                              150       8  94.67%   176, 212, 215, 322, 361, 364, 382, 385
api/core.py                                    757      48  93.66%   265, 551, 599, 642, 682, 702, 743-748, 773, 857-876, 890, 896, 1049, 1054, 1149, 1286, 1329, 1342, 1409, 1423-1424, 1500-1505, 1517-1520, 2008, 2130, 2218-2219
api/provider.py                                381      35  90.81%   186, 190-191, 316-337, 405, 521, 525-526, 531-534, 545, 621-631, 821-822, 870, 877, 908-911, 947-948, 956-957
api/search_result.py                           181      19  89.50%   111, 123, 133, 154, 203, 220, 320, 375-378, 448, 453-454, 488, 502, 525-526, 532
api/product/__init__.py                         18       2  88.89%   57, 59
api/product/_assets.py                          52       4  92.31%   97, 191, 194-198
api/product/_product.py                        248      20  91.94%   189, 305-306, 324-325, 434, 463, 470, 577, 597, 620-623, 632-635, 689, 755, 767
api/product/metadata_mapping.py                804      55  93.16%   125-127, 220-225, 249, 307-308, 396, 417, 469-470, 507, 528-531, 554, 566-567, 608, 631, 661-666, 731-736, 745, 751, 767, 775, 1007, 1182, 1191-1195, 1212-1217, 1350, 1373, 1382, 1404, 1409, 1461, 1533, 1554, 1580, 1594, 1619, 1665, 1734, 1809
api/product/drivers/__init__.py                 11       0  100.00%
api/product/drivers/base.py                     29       0  100.00%
api/product/drivers/generic.py                  11       0  100.00%
api/product/drivers/sentinel1.py                33       0  100.00%
api/product/drivers/sentinel2.py                33       0  100.00%
plugins/__init__.py                              0       0  100.00%
plugins/base.py                                 22       4  81.82%   48, 55, 68-69
plugins/manager.py                             173      16  90.75%   102-107, 179, 201, 219-220, 232, 271-272, 372-375, 387-388
plugins/apis/__init__.py                         0       0  100.00%
plugins/apis/base.py                             4       0  100.00%
plugins/apis/ecmwf.py                          101       8  92.08%   178-180, 228-229, 255-257
plugins/apis/usgs.py                           182      25  86.26%   161, 267, 301, 343-345, 350, 378-379, 384, 414-421, 432-437, 459-465
plugins/authentication/__init__.py               6       1  83.33%   31
plugins/authentication/aws_auth.py             124      35  71.77%   52-54, 69-70, 142-149, 177-203, 226, 258-262, 279, 303, 319-320
plugins/authentication/base.py                  22       4  81.82%   45, 58, 81, 95
plugins/authentication/eoiam.py                 82      65  20.73%   19-21, 25-28, 34-35, 39-45, 49-52, 56-59, 63-133, 141, 148-160
plugins/authentication/generic.py               16       3  81.25%   50, 55, 65
plugins/authentication/header.py                19       0  100.00%
plugins/authentication/keycloak.py              46       7  84.78%   153-156, 177-182
plugins/authentication/openid_connect.py       232      28  87.93%   91-92, 104-122, 169, 175-203, 211, 350-353, 379, 420
plugins/authentication/qsauth.py                34       1  97.06%   91
plugins/authentication/sas_auth.py              57       3  94.74%   68, 89, 135
plugins/authentication/token.py                128       9  92.97%   180, 217, 288-289, 339-343
plugins/authentication/token_exchange.py        36      14  61.11%   75, 93-121
plugins/crunch/__init__.py                       0       0  100.00%
plugins/crunch/base.py                          10       1  90.00%   43
plugins/crunch/filter_date.py                   59      14  76.27%   52-57, 69, 78, 87, 90, 100-102, 109-111, 118
plugins/crunch/filter_latest_intersect.py       54      39  27.78%   50-55, 68-115
plugins/crunch/filter_latest_tpl_name.py        31      20  35.48%   46-54, 64-95
plugins/crunch/filter_overlap.py                63      25  60.32%   62-65, 72-75, 81, 85, 89, 100-116, 131-157
plugins/crunch/filter_property.py               30       5  83.33%   56-61, 64-65
plugins/download/__init__.py                     0       0  100.00%
plugins/download/aws.py                        401      76  81.05%   270, 304, 353-356, 386-387, 395-399, 479-482, 522-524, 528, 559-560, 566-570, 601, 666-674, 738-833, 845-850, 888, 914, 959-961, 1013
plugins/download/base.py                       280      37  86.79%   133, 162, 229-231, 309-310, 368-369, 411, 415-426, 440, 517-521, 551, 586-587, 612-621, 680, 701, 723, 731, 765
plugins/download/http.py                       565      79  86.02%   233, 275-278, 340-343, 346, 353-358, 389-391, 408, 423, 483, 518, 532, 546, 556-560, 576-581, 592, 611, 648-651, 672, 682, 689, 709, 849, 881, 911-920, 956, 981-982, 1001-1006, 1015, 1030-1032, 1036, 1039, 1054-1055, 1137, 1189, 1231-1232, 1244, 1254, 1304-1305, 1335, 1355, 1383, 1407-1409, 1463-1464
plugins/search/__init__.py                      25       0  100.00%
plugins/search/base.py                         191      18  90.58%   108, 112, 136-142, 199-202, 295, 316, 441, 491, 513-516, 525
plugins/search/build_search_result.py          504      83  83.53%   259-260, 296, 300, 320, 550-561, 576-578, 701, 725, 727, 794, 802-806, 827, 837, 863, 908, 932, 960, 978-993, 1043, 1068, 1071, 1075, 1084, 1090, 1128-1149, 1190, 1217-1218, 1227-1236, 1300, 1315, 1321, 1340-1349, 1470-1471, 1515, 1524-1526, 1583, 1631-1641
plugins/search/cop_marine.py                   268      56  79.10%   57, 65-67, 77-78, 83, 88-89, 105, 107, 110, 176-177, 220, 236, 242, 246, 250, 261, 272-273, 281, 318-321, 327, 348, 352, 356, 360, 364-368, 374-377, 380-397, 414-417, 470-474, 479, 491
plugins/search/creodias_s3.py                   29       1  96.55%   59
plugins/search/csw.py                          112      87  22.32%   99-100, 104-105, 113-170, 176-189, 197-229, 247-288
plugins/search/qssearch.py                     823      94  88.58%   415-416, 533-534, 557-558, 570-574, 789-795, 853, 949, 956, 1027, 1048, 1051-1052, 1070, 1079-1080, 1107, 1181, 1190, 1195-1212, 1221, 1236, 1245-1248, 1258, 1281, 1370, 1393, 1466-1467, 1473, 1563, 1670-1674, 1740, 1743, 1747-1748, 1769-1772, 1784, 1806-1818, 1826, 1861-1863, 1886-1892, 1899, 1953, 1976, 1981-1982, 1997, 2003, 2013, 2103, 2107, 2118, 2142, 2155, 2163-2173, 2211-2215
plugins/search/stac_list_assets.py              25      10  60.00%   44-51, 75-85
plugins/search/static_stac_search.py            84      18  78.57%   99-127, 171-174, 187, 229
resources/__init__.py                            0       0  100.00%
resources/shp/__init__.py                        0       0  100.00%
types/__init__.py                              167      43  74.25%   58, 62, 71-75, 86-98, 126-128, 135-140, 216, 219, 257, 267-283, 288, 290, 312, 317, 325, 335
types/bbox.py                                   39      19  51.28%   46-61, 72-74, 85-87, 99-101, 113-115, 123
types/download_args.py                          10       0  100.00%
types/queryables.py                             88       0  100.00%
types/search_args.py                            70      18  74.29%   60-64, 71-88, 103
types/stac_extensions.py                       114       1  99.12%   282
types/stac_metadata.py                         116      16  86.21%   92, 113-114, 147, 177-191, 200-207
utils/__init__.py                              608      43  92.93%   71, 206, 237-238, 247-273, 276, 291, 371-375, 450-454, 534, 574-575, 604, 982-985, 1036, 1055-1056, 1085, 1103-1104, 1216, 1304, 1468, 1557, 1572, 1581, 1593, 1783
utils/cache.py                                  22       0  100.00%
utils/dates.py                                 113       4  96.46%   171, 329-331
utils/env.py                                     3       0  100.00%
utils/exceptions.py                             47       0  100.00%
utils/free_text_search.py                       65       2  96.92%   83, 91
utils/import_system.py                          28      19  32.14%   64-78, 89-99
utils/logging.py                                28       1  96.43%   41
utils/notebook.py                               44      23  47.73%   25-29, 36-41, 58-62, 72-78, 83-87
utils/repr.py                                   38       0  100.00%
utils/requests.py                               55      29  47.27%   51-52, 64, 85-96, 107-124, 128
utils/s3.py                                    240      12  95.00%   200-203, 245, 263, 489, 537-538, 585, 660, 686
utils/stac_reader.py                           113      44  61.06%   63-85, 95-97, 101, 138, 154-159, 206-216, 226-256
TOTAL                                        10119    1390  86.26%

Diff against develop

Filename                           Stmts    Miss  Cover
-------------------------------  -------  ------  -------
api/product/metadata_mapping.py      +13      +2  -0.14%
plugins/authentication/eoiam.py      +82     +65  +20.73%
plugins/download/http.py              +3      +1  -0.10%
TOTAL                                +98     +68  -0.55%

Results for commit: 9bf9eba

Minimum allowed coverage is 70%

♻️ This comment has been updated with latest results

@timothey-cs timothey-cs force-pushed the feat-add-esa-heritage-provider branch 2 times, most recently from 541351d to d721efa Compare February 18, 2026 09:44
@timothey-cs timothey-cs marked this pull request as ready for review February 19, 2026 13:38
@timothey-cs timothey-cs requested a review from sbrunato February 19, 2026 13:38
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please add an entry for the provider in Featured providers

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please rename file to eoiam.py

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

provider was renamed, please update cell output

None,
]

eocat_SEARCH_ARGS = [
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
eocat_SEARCH_ARGS = [
EOCAT_SEARCH_ARGS = [

self.execute_download(product, expected_filename)

def test_end_to_end_search_download_eocat(self):
self.eodag.discover_product_types(provider="eocat")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
self.eodag.discover_product_types(provider="eocat")
self.eodag.discover_collections(provider="eocat")

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please update mechanism: make _get_asset_sizes get values file:size if available

eocat:
priority: # Lower value means lower priority (Default: 0)
auth:
output_dir:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
output_dir:

@sbrunato sbrunato marked this pull request as draft March 2, 2026 10:59
@timothey-cs timothey-cs force-pushed the feat-add-esa-heritage-provider branch from 7397415 to adfa0dd Compare March 2, 2026 16:30
@sbrunato sbrunato changed the title feat(providers): add esa_heritage_missions provider feat(providers): add eocat provider Mar 3, 2026
@timothey-cs timothey-cs marked this pull request as ready for review March 3, 2026 12:46
@timothey-cs timothey-cs requested a review from sbrunato March 3, 2026 12:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ESA Heritage Missions ESA Third Party Missions

3 participants