Skip to content

fix: cop_dem items download for wekeo_main#2201

Open
cauriol wants to merge 2 commits into
developfrom
cop_download
Open

fix: cop_dem items download for wekeo_main#2201
cauriol wants to merge 2 commits into
developfrom
cop_download

Conversation

@cauriol

@cauriol cauriol commented May 26, 2026

Copy link
Copy Markdown
Collaborator

This PR aims to fix the download issue for cop_dem items on the wekeo_main provider.
It uses the changes introduced in #2116 to fix downloads for wekeo_main, and adds some metadata_mapping entries for cop_dem items.

It also stops iterating through paginated search results once a unique matching product is found, avoiding unnecessary requests in eodag/api/core.py.

This PR depends on #2116 and should be merged after it.

@cauriol cauriol self-assigned this May 26, 2026
@github-actions

github-actions Bot commented May 26, 2026

Copy link
Copy Markdown
Contributor

Test Results

    4 files  ±0      4 suites  ±0   4m 20s ⏱️ -15s
  822 tests ±0    822 ✅ ±0  0 💤 ±0  0 ❌ ±0 
3 338 runs  ±0  3 336 ✅ ±0  2 💤 ±0  0 ❌ ±0 

Results for commit fd73e10. ± Comparison against base commit 2e6ac19.

♻️ This comment has been updated with latest results.

@eodag-bot

eodag-bot commented May 26, 2026

Copy link
Copy Markdown
Collaborator

badge

Code Coverage (Ubuntu)

Details
Filename                                     Stmts    Miss  Cover    Missing
-----------------------------------------  -------  ------  -------  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__init__.py                                      8       0  100.00%
cli.py                                         252      17  93.25%   105-116, 378, 610-622, 645
config.py                                      306      24  92.16%   70-72, 75, 78, 81, 85, 89, 93-95, 587-589, 711-713, 732, 740, 770-775, 777
crunch.py                                        2       0  100.00%
api/__init__.py                                  0       0  100.00%
api/collection.py                              151       8  94.70%   177, 213, 216, 323, 362, 365, 383, 386
api/core.py                                    775      60  92.26%   263, 549, 597, 640, 680, 700, 741-746, 771, 855-874, 888, 955-962, 1047, 1052, 1151, 1190-1191, 1287-1288, 1314, 1345-1346, 1372, 1385, 1446-1447, 1478-1479, 1562, 1570-1573, 1685, 1910, 2067, 2169-2178, 2266-2267
api/provider.py                                382      40  89.53%   186, 190-191, 316-337, 405, 521, 525-526, 531-534, 545, 621-631, 821-822, 870, 877, 891, 914-917, 951-958, 962-963
api/search_result.py                           138      16  88.41%   111, 123, 133, 154, 208, 219, 266, 278, 407, 413, 463-471
api/product/__init__.py                          7       0  100.00%
api/product/_assets.py                          56       4  92.86%   101, 195, 206-210
api/product/_product.py                        311      27  91.32%   200, 355-356, 382-385, 422, 441-442, 551, 580, 587, 626, 738, 781-784, 793-796, 850, 916, 928, 963, 992, 995
api/product/metadata_mapping.py                867      61  92.96%   125-127, 222-227, 251, 310-311, 349-350, 391, 412, 475-476, 513, 534-537, 560, 572-573, 614, 637, 662-665, 667-672, 737-742, 751, 757, 773, 781, 1012, 1165, 1187, 1196-1200, 1217-1222, 1355, 1378, 1387, 1409, 1414, 1466, 1538, 1559, 1585, 1599, 1624, 1670, 1739, 1814, 1848
api/product/drivers/__init__.py                 11       0  100.00%
api/product/drivers/base.py                     32       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                                 25       2  92.00%   48, 55
plugins/manager.py                             173      15  91.33%   102-107, 179, 201, 219-220, 232, 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                           95       8  91.58%   163-165, 213-214, 240-242
plugins/apis/usgs.py                           175      25  85.71%   158, 246, 279, 321-323, 328, 356-357, 362, 392-399, 410-415, 437-443
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                 98       1  98.98%   170
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       235      28  88.09%   98-99, 107-125, 172, 178-206, 214, 353-356, 382, 423
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                141       9  93.62%   192, 229, 309-310, 358-362
plugins/authentication/token_exchange.py        36      16  55.56%   75, 91-121
plugins/crunch/__init__.py                       6       0  100.00%
plugins/crunch/base.py                          12       0  100.00%
plugins/crunch/filter_date.py                   47       0  100.00%
plugins/crunch/filter_latest_intersect.py       52       6  88.46%   87-88, 95-96, 98-102
plugins/crunch/filter_latest_tpl_name.py        35       0  100.00%
plugins/crunch/filter_overlap.py                66      10  84.85%   118-121, 137-163
plugins/crunch/filter_property.py               30       0  100.00%
plugins/download/__init__.py                     4       0  100.00%
plugins/download/aws.py                        402      76  81.09%   271, 305, 354-357, 387-388, 396-400, 480-483, 523-525, 529, 560-561, 567-571, 602, 667-675, 739-834, 846-851, 889, 915, 960-962, 1014
plugins/download/base.py                       290      26  91.03%   135, 165, 381-382, 426, 460, 537-541, 571, 606-607, 610-613, 632-641, 700, 721, 743, 751
plugins/download/http.py                       575      77  86.61%   235, 277-280, 342-345, 348, 355-360, 378-393, 410, 425, 486, 521, 535, 549, 559-563, 579-584, 595, 614, 651-654, 675, 685, 692, 748, 857, 889, 921-930, 966, 1011-1016, 1025, 1040-1042, 1046, 1049, 1064-1065, 1075, 1150, 1202, 1244-1245, 1257, 1267, 1323-1324, 1354, 1392, 1472-1473
plugins/search/__init__.py                      25       0  100.00%
plugins/search/base.py                         199      18  90.95%   110, 114, 138-144, 219-222, 297, 318, 444, 497, 534-537, 546
plugins/search/build_search_result.py          519      90  82.66%   138-139, 175, 179, 199, 258, 425-436, 446-448, 515-516, 565, 577-579, 603, 605, 670, 678-682, 702, 712, 738, 783, 808, 836, 854-869, 919, 944, 947, 951, 960, 966, 1004-1025, 1066, 1093-1094, 1103-1112, 1202, 1217, 1223, 1242-1251, 1264, 1372-1373, 1417, 1426-1428, 1485, 1533-1543
plugins/search/cop_ghsl.py                     407      85  79.12%   73-74, 109-110, 174, 176, 218, 249-252, 298, 314, 317, 353, 357-362, 377, 399, 420, 454, 470, 505, 520, 534-535, 549-551, 558, 562-564, 567-570, 588-648, 659-674
plugins/search/cop_marine.py                   297      65  78.11%   56, 64-66, 82, 104, 106, 109, 175-176, 194, 218, 224, 228, 250-251, 259, 294-297, 303, 313, 326, 334, 340-344, 350-353, 359-412, 428-431, 481, 493, 537-538
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/eumetsat_ds.py                   25       0  100.00%
plugins/search/geodes.py                        64       0  100.00%
plugins/search/qssearch.py                     869      98  88.72%   382, 427-428, 545-546, 569-570, 582-586, 817-823, 881, 947, 977, 984, 1055, 1076, 1079-1080, 1098, 1107-1108, 1135, 1207, 1216, 1221-1238, 1247, 1262, 1271, 1284, 1307, 1403, 1426, 1441, 1514-1515, 1517-1519, 1521-1522, 1609, 1616, 1724-1728, 1799, 1802, 1806-1807, 1828-1831, 1843, 1865-1877, 1885, 1920-1922, 1945-1951, 1958, 2012, 2035, 2040-2041, 2056, 2062, 2076, 2177, 2181, 2192, 2216, 2229, 2237-2247
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, 166-169, 182, 224
resources/__init__.py                            0       0  100.00%
resources/shp/__init__.py                        0       0  100.00%
types/__init__.py                              180      43  76.11%   58, 71-75, 86-98, 126-128, 135-140, 155, 165, 247, 285, 295-311, 316, 318, 340, 345, 353, 363
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                            113       0  100.00%
types/search_args.py                            70      18  74.29%   60-64, 71-88, 103
types/stac_extensions.py                       158       4  97.47%   455-461, 640
types/stac_metadata.py                         159      22  86.16%   98, 120, 153, 186-188, 202-216, 225-232, 259-262
utils/__init__.py                              636      48  92.45%   60, 199, 230-231, 240-266, 269, 284, 364-368, 443-447, 527, 567-568, 597, 975-978, 1029, 1048-1049, 1078, 1096-1097, 1254, 1256, 1264, 1268, 1274, 1276, 1278, 1284, 1286, 1384, 1548, 1613, 1788
utils/cache.py                                  22       0  100.00%
utils/dates.py                                 191       1  99.48%   182
utils/deserialize.py                            73      10  86.30%   53, 55, 103, 108-109, 145, 159, 181-182, 188
utils/env.py                                     3       0  100.00%
utils/exceptions.py                             58       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                                31       1  96.77%   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                                    254      12  95.28%   200-203, 245, 263, 489, 536-537, 605, 680, 706
utils/stac_reader.py                           113      44  61.06%   63-85, 95-97, 101, 138, 154-159, 206-216, 226-256
utils/streamresponse.py                         82       7  91.46%   24-26, 63, 124, 133, 145
TOTAL                                        11277    1384  87.73%

Diff against develop

Filename       Stmts    Miss  Cover
-----------  -------  ------  --------
api/core.py       +1       0  +0.01%
TOTAL             +1       0  +100.00%

Results for commit: 51e0dc0

Minimum allowed coverage is 70%

♻️ This comment has been updated with latest results

@cauriol
cauriol force-pushed the cop_download branch 2 times, most recently from 51e0dc0 to 9a7cea6 Compare May 28, 2026 08:39
@github-actions

github-actions Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

badge

Code Coverage (Ubuntu)

Details
Filename                                     Stmts    Miss  Cover    Missing
-----------------------------------------  -------  ------  -------  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__init__.py                                     19       2  89.47%   60, 69
cli.py                                         259      11  95.75%   99-110, 376, 658
config.py                                      317      24  92.43%   72-74, 77, 80, 83, 87, 91, 95-97, 589-591, 732-734, 753, 761, 791-796, 798
crunch.py                                        2       0  100.00%
api/__init__.py                                  0       0  100.00%
api/collection.py                              151       8  94.70%   177, 213, 216, 323, 362, 365, 383, 386
api/core.py                                    777      58  92.54%   262, 548, 596, 639, 679, 699, 740-745, 770, 854-873, 887, 893, 1046, 1051, 1150, 1189-1190, 1286-1287, 1313, 1344-1345, 1371, 1384, 1445-1446, 1477-1478, 1559-1564, 1569-1572, 1684, 1909, 2066, 2070, 2179, 2267-2268
api/provider.py                                385      40  89.61%   193, 197-198, 323-344, 412, 528, 532-533, 538-541, 552, 628-638, 828-829, 877, 884, 898, 921-924, 958-965, 969-970
api/search_result.py                           138      12  91.30%   111, 123, 133, 154, 208, 266, 278, 413, 468-471
api/product/__init__.py                         26       4  84.62%   51-54
api/product/_assets.py                          58       5  91.38%   101, 195-196, 208-212
api/product/_product.py                        315      24  92.38%   217, 373, 399-402, 439, 458-459, 568, 597, 604, 644, 756, 799-802, 811-814, 868, 934, 946, 1013
api/product/metadata_mapping.py                883      61  93.09%   136-138, 247-252, 276, 335-336, 374-375, 416, 437, 500-501, 538, 559-562, 585, 597-598, 639, 662, 687-690, 692-697, 762-767, 776, 782, 798, 806, 1037, 1190, 1212, 1221-1225, 1242-1247, 1380, 1403, 1412, 1434, 1439, 1506, 1603, 1624, 1650, 1664, 1762, 1857, 1955, 2021, 2065
api/product/drivers/__init__.py                 11       0  100.00%
api/product/drivers/base.py                     32       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                                 25       2  92.00%   48, 55
plugins/manager.py                             192      17  91.15%   103-108, 138, 220, 242, 260-261, 273, 312-313, 413-416, 428-429
plugins/apis/__init__.py                         0       0  100.00%
plugins/apis/base.py                             4       0  100.00%
plugins/apis/ecmwf.py                           95      10  89.47%   163-165, 213-214, 240-242, 273-274
plugins/apis/usgs.py                           175      25  85.71%   158, 246, 279, 322-324, 329, 357-358, 363, 393-400, 411-416, 438-444
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                 98       1  98.98%   170
plugins/authentication/generic.py               16       3  81.25%   50, 55, 65
plugins/authentication/header.py                19       0  100.00%
plugins/authentication/keycloak.py              46       4  91.30%   154, 177-182
plugins/authentication/openid_connect.py       235      19  91.91%   98-99, 107-125, 172, 180, 194, 214, 353-356, 382, 423
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                141       9  93.62%   192, 229, 309-310, 358-362
plugins/authentication/token_exchange.py        36      14  61.11%   75, 93-121
plugins/crunch/__init__.py                       6       0  100.00%
plugins/crunch/base.py                          12       0  100.00%
plugins/crunch/filter_date.py                   47       0  100.00%
plugins/crunch/filter_latest_intersect.py       52       6  88.46%   87-88, 95-96, 98-102
plugins/crunch/filter_latest_tpl_name.py        35       0  100.00%
plugins/crunch/filter_overlap.py                66      10  84.85%   118-121, 137-163
plugins/crunch/filter_property.py               30       2  93.33%   81-84
plugins/download/__init__.py                     4       0  100.00%
plugins/download/aws.py                        403      77  80.89%   271, 305, 354-357, 387-388, 396-400, 480-483, 523-525, 529, 560-561, 567-571, 602, 667-675, 739-833, 845-850, 888, 914, 959-961, 1013
plugins/download/base.py                       290      24  91.72%   135, 165, 381-382, 426, 460, 537-541, 571, 606-607, 632-641, 700, 721, 743, 751
plugins/download/http.py                       578      74  87.20%   242, 284-287, 349-352, 355, 362-367, 398-400, 417, 432, 493, 528, 542, 556, 566-570, 586-591, 602, 621, 657-660, 681, 691, 698, 754, 862, 894, 926-935, 971, 1016-1021, 1030, 1045-1047, 1051, 1054, 1069-1070, 1080, 1155, 1207, 1249-1250, 1262, 1272, 1328-1329, 1359, 1397, 1477-1478
plugins/search/__init__.py                      25       0  100.00%
plugins/search/base.py                         197      18  90.86%   109, 113, 137-143, 152, 218-221, 296, 317, 443, 528-531, 540
plugins/search/build_search_result.py          521      90  82.73%   138-139, 175, 179, 199, 258, 425-436, 446-448, 515-516, 565, 577-579, 603, 605, 670, 678-682, 702, 712, 738, 783, 808, 836, 854-869, 919, 944, 947, 951, 960, 966, 1004-1025, 1066, 1093-1094, 1103-1112, 1202, 1217, 1220, 1225, 1244-1253, 1374-1375, 1419, 1428-1430, 1487, 1535-1545
plugins/search/cop_ghsl.py                     410      84  79.51%   73-74, 109-110, 174, 176, 218, 249-252, 298, 314, 360, 364-369, 384, 406, 427, 461, 477, 512, 527, 541-542, 556-558, 565, 569-571, 574-577, 595-655, 666-681
plugins/search/cop_marine.py                   297      65  78.11%   56, 64-66, 82, 104, 106, 109, 175-176, 194, 218, 224, 228, 250-251, 259, 294-297, 303, 313, 326, 334, 340-344, 350-353, 359-412, 428-431, 481, 493, 537-538
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, 246-287
plugins/search/eumetsat_ds.py                   25       0  100.00%
plugins/search/geodes.py                        66       0  100.00%
plugins/search/qssearch.py                     880     107  87.84%   382, 426-427, 544-545, 568-569, 581-585, 816-822, 880, 946, 976, 983, 1054, 1075, 1078-1079, 1097, 1106-1107, 1134, 1205, 1214, 1219-1236, 1245, 1260, 1269, 1282, 1305, 1401, 1424, 1439, 1512-1513, 1515-1517, 1519-1520, 1607, 1614, 1722-1726, 1797, 1800, 1804-1805, 1826-1829, 1841, 1863-1880, 1888-1894, 1929-1931, 1954-1960, 1967, 2005, 2021, 2044, 2049-2050, 2065, 2071, 2085, 2186, 2190, 2201, 2225, 2238, 2246-2256, 2282
plugins/search/stac_list_assets.py              25      10  60.00%   44-51, 75-85
plugins/search/static_stac_search.py            84      17  79.76%   99-127, 166-169, 182
resources/__init__.py                            0       0  100.00%
resources/shp/__init__.py                        0       0  100.00%
types/__init__.py                              180      43  76.11%   58, 71-75, 86-98, 126-128, 135-140, 155, 165, 247, 285, 295-311, 316, 318, 340, 345, 353, 363
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                            113       0  100.00%
types/search_args.py                            70      18  74.29%   60-64, 71-88, 103
types/stac_extensions.py                       162       4  97.53%   455-461, 640
types/stac_metadata.py                         159      22  86.16%   98, 120, 153, 186-188, 202-216, 225-232, 259-262
utils/__init__.py                              651      58  91.09%   58, 185-240, 253-255, 273, 306, 386-390, 465-469, 549, 589-590, 619, 1001-1004, 1055, 1074-1075, 1107, 1125-1126, 1290, 1292, 1300, 1304, 1310, 1312, 1314, 1320, 1322, 1422, 1592, 1657, 1832
utils/cache.py                                  22       0  100.00%
utils/dates.py                                 191       1  99.48%   182
utils/deserialize.py                            73      10  86.30%   53, 55, 103, 108-109, 145, 159, 181-182, 188
utils/env.py                                     3       0  100.00%
utils/exceptions.py                             58       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                                31       1  96.77%   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                                    254      12  95.28%   200-203, 245, 263, 489, 536-537, 605, 680, 706
utils/stac_reader.py                           113      44  61.06%   63-85, 95-97, 101, 138, 154-159, 206-216, 226-256
utils/streamresponse.py                         86       4  95.35%   77, 135, 144, 156
TOTAL                                        11414    1378  87.93%

Diff against develop

Filename       Stmts    Miss  Cover
-----------  -------  ------  -------
api/core.py       +1       0  +0.01%
utils/s3.py        0      -1  +0.40%
TOTAL             +1      -1  +0.01%

Results for commit: fd73e10

Minimum allowed coverage is 70%

♻️ This comment has been updated with latest results

@github-actions

github-actions Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

badge

Code Coverage (Windows)

Details
Filename                                     Stmts    Miss  Cover    Missing
-----------------------------------------  -------  ------  -------  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__init__.py                                     19       2  89.47%   60, 69
cli.py                                         259      11  95.75%   99-110, 376, 658
config.py                                      317      24  92.43%   72-74, 77, 80, 83, 87, 91, 95-97, 589-591, 732-734, 753, 761, 791-796, 798
crunch.py                                        2       0  100.00%
api/__init__.py                                  0       0  100.00%
api/collection.py                              151       8  94.70%   177, 213, 216, 323, 362, 365, 383, 386
api/core.py                                    777      58  92.54%   262, 548, 596, 639, 679, 699, 740-745, 770, 854-873, 887, 893, 1046, 1051, 1150, 1189-1190, 1286-1287, 1313, 1344-1345, 1371, 1384, 1445-1446, 1477-1478, 1559-1564, 1569-1572, 1684, 1909, 2066, 2070, 2179, 2267-2268
api/provider.py                                385      40  89.61%   193, 197-198, 323-344, 412, 528, 532-533, 538-541, 552, 628-638, 828-829, 877, 884, 898, 921-924, 958-965, 969-970
api/search_result.py                           138      12  91.30%   111, 123, 133, 154, 208, 266, 278, 413, 468-471
api/product/__init__.py                         26       4  84.62%   51-54
api/product/_assets.py                          58       5  91.38%   101, 195-196, 208-212
api/product/_product.py                        315      24  92.38%   217, 373, 399-402, 439, 458-459, 568, 597, 604, 644, 756, 799-802, 811-814, 868, 934, 946, 1013
api/product/metadata_mapping.py                883      61  93.09%   136-138, 247-252, 276, 335-336, 374-375, 416, 437, 500-501, 538, 559-562, 585, 597-598, 639, 662, 687-690, 692-697, 762-767, 776, 782, 798, 806, 1037, 1190, 1212, 1221-1225, 1242-1247, 1380, 1403, 1412, 1434, 1439, 1506, 1603, 1624, 1650, 1664, 1762, 1857, 1955, 2021, 2065
api/product/drivers/__init__.py                 11       0  100.00%
api/product/drivers/base.py                     32       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                                 25       2  92.00%   48, 55
plugins/manager.py                             192      17  91.15%   103-108, 138, 220, 242, 260-261, 273, 312-313, 413-416, 428-429
plugins/apis/__init__.py                         0       0  100.00%
plugins/apis/base.py                             4       0  100.00%
plugins/apis/ecmwf.py                           95      10  89.47%   163-165, 213-214, 240-242, 273-274
plugins/apis/usgs.py                           175      25  85.71%   158, 246, 279, 322-324, 329, 357-358, 363, 393-400, 411-416, 438-444
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                 98       1  98.98%   170
plugins/authentication/generic.py               16       3  81.25%   50, 55, 65
plugins/authentication/header.py                19       0  100.00%
plugins/authentication/keycloak.py              46       4  91.30%   154, 177-182
plugins/authentication/openid_connect.py       235      19  91.91%   98-99, 107-125, 172, 180, 194, 214, 353-356, 382, 423
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                141       9  93.62%   192, 229, 309-310, 358-362
plugins/authentication/token_exchange.py        36      14  61.11%   75, 93-121
plugins/crunch/__init__.py                       6       0  100.00%
plugins/crunch/base.py                          12       0  100.00%
plugins/crunch/filter_date.py                   47       0  100.00%
plugins/crunch/filter_latest_intersect.py       52       6  88.46%   87-88, 95-96, 98-102
plugins/crunch/filter_latest_tpl_name.py        35       0  100.00%
plugins/crunch/filter_overlap.py                66      10  84.85%   118-121, 137-163
plugins/crunch/filter_property.py               30       2  93.33%   81-84
plugins/download/__init__.py                     4       0  100.00%
plugins/download/aws.py                        403      77  80.89%   271, 305, 354-357, 387-388, 396-400, 480-483, 523-525, 529, 560-561, 567-571, 602, 667-675, 739-833, 845-850, 888, 914, 959-961, 1013
plugins/download/base.py                       290      26  91.03%   135, 165, 240-242, 381-382, 426, 460, 537-541, 571, 606-607, 632-641, 700, 721, 743, 751
plugins/download/http.py                       578      74  87.20%   242, 284-287, 349-352, 355, 362-367, 398-400, 417, 432, 493, 528, 542, 556, 566-570, 586-591, 602, 621, 657-660, 681, 691, 698, 754, 862, 894, 926-935, 971, 1016-1021, 1030, 1045-1047, 1051, 1054, 1069-1070, 1080, 1155, 1207, 1249-1250, 1262, 1272, 1328-1329, 1359, 1397, 1477-1478
plugins/search/__init__.py                      25       0  100.00%
plugins/search/base.py                         197      18  90.86%   109, 113, 137-143, 152, 218-221, 296, 317, 443, 528-531, 540
plugins/search/build_search_result.py          521      90  82.73%   138-139, 175, 179, 199, 258, 425-436, 446-448, 515-516, 565, 577-579, 603, 605, 670, 678-682, 702, 712, 738, 783, 808, 836, 854-869, 919, 944, 947, 951, 960, 966, 1004-1025, 1066, 1093-1094, 1103-1112, 1202, 1217, 1220, 1225, 1244-1253, 1374-1375, 1419, 1428-1430, 1487, 1535-1545
plugins/search/cop_ghsl.py                     410      84  79.51%   73-74, 109-110, 174, 176, 218, 249-252, 298, 314, 360, 364-369, 384, 406, 427, 461, 477, 512, 527, 541-542, 556-558, 565, 569-571, 574-577, 595-655, 666-681
plugins/search/cop_marine.py                   297      65  78.11%   56, 64-66, 82, 104, 106, 109, 175-176, 194, 218, 224, 228, 250-251, 259, 294-297, 303, 313, 326, 334, 340-344, 350-353, 359-412, 428-431, 481, 493, 537-538
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, 246-287
plugins/search/eumetsat_ds.py                   25       0  100.00%
plugins/search/geodes.py                        66       0  100.00%
plugins/search/qssearch.py                     880     107  87.84%   382, 426-427, 544-545, 568-569, 581-585, 816-822, 880, 946, 976, 983, 1054, 1075, 1078-1079, 1097, 1106-1107, 1134, 1205, 1214, 1219-1236, 1245, 1260, 1269, 1282, 1305, 1401, 1424, 1439, 1512-1513, 1515-1517, 1519-1520, 1607, 1614, 1722-1726, 1797, 1800, 1804-1805, 1826-1829, 1841, 1863-1880, 1888-1894, 1929-1931, 1954-1960, 1967, 2005, 2021, 2044, 2049-2050, 2065, 2071, 2085, 2186, 2190, 2201, 2225, 2238, 2246-2256, 2282
plugins/search/stac_list_assets.py              25      10  60.00%   44-51, 75-85
plugins/search/static_stac_search.py            84      17  79.76%   99-127, 166-169, 182
resources/__init__.py                            0       0  100.00%
resources/shp/__init__.py                        0       0  100.00%
types/__init__.py                              180      43  76.11%   58, 71-75, 86-98, 126-128, 135-140, 155, 165, 247, 285, 295-311, 316, 318, 340, 345, 353, 363
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                            113       0  100.00%
types/search_args.py                            70      18  74.29%   60-64, 71-88, 103
types/stac_extensions.py                       162       4  97.53%   455-461, 640
types/stac_metadata.py                         159      22  86.16%   98, 120, 153, 186-188, 202-216, 225-232, 259-262
utils/__init__.py                              651      58  91.09%   58, 185-240, 253-255, 273, 306, 386-390, 465-469, 549, 589-590, 619, 1001-1004, 1055, 1074-1075, 1107, 1125-1126, 1290, 1292, 1300, 1304, 1310, 1312, 1314, 1320, 1322, 1422, 1592, 1657, 1832
utils/cache.py                                  22       0  100.00%
utils/dates.py                                 191       1  99.48%   182
utils/deserialize.py                            73      10  86.30%   53, 55, 103, 108-109, 145, 159, 181-182, 188
utils/env.py                                     3       0  100.00%
utils/exceptions.py                             58       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                                31       1  96.77%   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                                    254      12  95.28%   200-203, 245, 263, 489, 536-537, 605, 680, 706
utils/stac_reader.py                           113      44  61.06%   63-85, 95-97, 101, 138, 154-159, 206-216, 226-256
utils/streamresponse.py                         86       4  95.35%   77, 135, 144, 156
TOTAL                                        11414    1380  87.91%

Diff against develop

Filename       Stmts    Miss  Cover
-----------  -------  ------  --------
api/core.py       +1       0  +0.01%
TOTAL             +1       0  +100.00%

Results for commit: fd73e10

Minimum allowed coverage is 70%

♻️ This comment has been updated with latest results

@github-actions

github-actions Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Benchmark comparison

Compared baseline: origin/develop
Compared candidate: 605887d


------------------------------- benchmark: 7 tests, 2 sources -------------------------------
Name (time in ms)                                 baseline Median  candidate Median   ΔMedian
---------------------------------------------------------------------------------------------
test_benchmark_stac_reader_fetch_recursive                 3.9899            3.9767     -0.3%
test_benchmark_cli_version                                20.9366           20.8534     -0.4%
test_benchmark_cli_without_args_subprocess               116.7604          117.4705     +0.6%
test_benchmark_core_search_with_provider                 164.7983          160.5047     -2.6%
test_benchmark_core_search_with_count                    215.2239          208.4491     -3.1%
test_benchmark_cli_list_collections                      255.8451          255.3209     -0.2%
test_benchmark_eodag_instantiation_subprocess          1,711.3132        1,718.0036     +0.4%
---------------------------------------------------------------------------------------------

Legend:
  Cyan: reference source for comparison. Green: improvement, Red: regression.
  Δ: percentage change from reference source.

@cauriol
cauriol marked this pull request as ready for review June 18, 2026 12:50
@jlahovnik
jlahovnik requested a review from sbrunato June 18, 2026 15:07
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.

3 participants