Skip to content

feat: individual assets download cache - #2305

Draft
sbrunato wants to merge 9 commits into
v5.x.xfrom
individual-assets-download-cache
Draft

feat: individual assets download cache#2305
sbrunato wants to merge 9 commits into
v5.x.xfrom
individual-assets-download-cache

Conversation

@sbrunato

Copy link
Copy Markdown
Collaborator

Individual assets download cache handling.

@sbrunato
sbrunato changed the base branch from develop to v5_download_link_asset August 14, 2026 09:12
@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Benchmark comparison

Compared baseline: origin/v5.x.x
Compared candidate: b21845b


------------------------------- benchmark: 9 tests, 2 sources -------------------------------
Name (time in us)                                 baseline Median  candidate Median   ΔMedian
---------------------------------------------------------------------------------------------
test_benchmark_eoproduct_instantiation                    16.1140           16.6050     +3.0%
test_benchmark_eoproduct_assets_population               149.6750          150.0560     +0.3%
test_benchmark_stac_reader_fetch_recursive             2,795.7300        2,782.3850     -0.5%
test_benchmark_cli_version                            15,725.4150       15,393.8100     -2.1%
test_benchmark_cli_without_args_subprocess           109,209.9960      106,582.9455     -2.4%
test_benchmark_cli_list_collections                  147,891.1440      146,272.1320     -1.1%
test_benchmark_core_search_with_provider             176,405.7540      176,553.6990     +0.1%
test_benchmark_core_search_with_count                210,946.8790      209,872.4290     -0.5%
test_benchmark_eodag_instantiation_subprocess        875,383.2600      868,418.3815     -0.8%
---------------------------------------------------------------------------------------------

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

@sbrunato
sbrunato force-pushed the v5_download_link_asset branch from 8d87c1f to c9ebeb6 Compare August 14, 2026 09:14
@sbrunato
sbrunato force-pushed the individual-assets-download-cache branch from fdab111 to f4a7fb3 Compare August 14, 2026 09:15
@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Test Results

    4 files  ±0      4 suites  ±0   5m 50s ⏱️ +26s
  873 tests +1    873 ✅ +1  0 💤 ±0  0 ❌ ±0 
3 542 runs  +4  3 540 ✅ +4  2 💤 ±0  0 ❌ ±0 

Results for commit 5ab3c79. ± Comparison against base commit 7a0236a.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 14, 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                                         263      11  95.82%   107-118, 384, 689
config.py                                      336      27  91.96%   71-73, 76, 79, 82, 86, 90, 94-96, 590-592, 746-748, 772-776, 795, 803, 833-838, 840
crunch.py                                        2       0  100.00%
api/__init__.py                                  0       0  100.00%
api/collection.py                              278      11  96.04%   195, 200, 312, 409, 427, 562, 565, 657, 660, 678, 681
api/core.py                                    783      58  92.59%   262, 548, 596, 639, 679, 699, 740-745, 770, 891-910, 924, 930, 1083, 1088, 1187, 1226-1227, 1323-1324, 1350, 1381-1382, 1408, 1421, 1482-1483, 1514-1515, 1596-1601, 1606-1609, 1721, 1946, 2103, 2107, 2220, 2308-2309
api/provider.py                                389      42  89.20%   128-132, 199, 203-204, 341-362, 430, 546, 550-551, 556-559, 570, 646-656, 841-842, 890, 897, 911, 934-937, 971-978, 982-983
api/search_result.py                           138      12  91.30%   111, 123, 133, 154, 208, 266, 278, 406, 461-464
api/product/__init__.py                         26       4  84.62%   51-54
api/product/_assets.py                         142       6  95.77%   75, 226, 360-361, 373-377
api/product/_product.py                        351      26  92.59%   226, 382, 408-411, 448, 467-468, 577, 606, 613, 642, 692, 698, 838, 882-885, 893-896, 954, 1020, 1032, 1099
api/product/metadata_mapping.py                911      73  91.99%   137-139, 262-267, 291, 350-351, 431, 451-452, 457, 520-521, 558, 579-582, 605, 617-618, 659, 682, 707-710, 712-717, 796, 802, 818, 826, 857, 862-875, 1079, 1232, 1254, 1263-1267, 1285-1290, 1423, 1446, 1455, 1477, 1482, 1549, 1646, 1663, 1675, 1701, 1715, 1813, 1908, 2004, 2070, 2115
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                                 38       3  92.11%   50, 84-85
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                             8       0  100.00%
plugins/apis/ecmwf.py                           95      10  89.47%   163-165, 213-214, 240-242, 273-274
plugins/apis/usgs.py                           179      27  84.92%   138-139, 160, 248, 281, 324-326, 331, 359-360, 365, 395-402, 413-418, 440-446
plugins/authentication/__init__.py               6       1  83.33%   32
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                  26       4  84.62%   58, 71, 94, 108
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       243      21  91.36%   101-102, 110-128, 175, 183, 197, 217, 363-366, 392, 433, 623-626
plugins/authentication/qsauth.py                34       1  97.06%   91
plugins/authentication/sas_auth.py              58       3  94.83%   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                       387      51  86.82%   163, 193, 204, 212, 216-219, 283-292, 313, 331-342, 350-358, 590-591, 635, 669, 746-750, 780, 815-816, 841-850, 909, 930, 952, 960
plugins/download/http.py                       589      74  87.44%   242, 284-287, 349-352, 355, 362-367, 399-400, 417, 432, 493, 528, 542, 556, 569-573, 589-594, 605, 624, 660-663, 684, 694, 701, 757, 865, 897, 929-938, 974, 1019-1024, 1033, 1048-1050, 1054, 1057, 1072-1073, 1083, 1158, 1210, 1253-1254, 1266, 1287, 1353-1354, 1384, 1418, 1438, 1518-1519
plugins/search/__init__.py                      25       0  100.00%
plugins/search/base.py                         273      18  93.41%   120, 124, 148-154, 163, 225-228, 265, 283, 378, 410, 431, 564
plugins/search/build_search_result.py          558      83  85.13%   137-138, 174, 178, 198, 257, 424-438, 517-518, 567, 579-581, 605, 607, 673, 681-685, 705, 715, 741, 790, 815, 877-882, 943, 970, 973, 1028-1049, 1090, 1117-1118, 1127-1137, 1230, 1245, 1248, 1253, 1272-1281, 1332, 1335, 1338, 1340, 1447-1448, 1492, 1501-1503, 1563, 1611-1621
plugins/search/cop_ghsl.py                     421      88  79.10%   73-74, 109-110, 174, 176, 218, 249-252, 299, 301-302, 319, 365, 369-374, 385-389, 406, 430-433, 451, 492, 508, 547, 562, 574-575, 589-591, 598, 602-604, 607-610, 628-691, 702-717
plugins/search/cop_marine.py                   294      65  77.89%   55, 63-65, 81, 103, 105, 108, 174-175, 193, 226, 232, 236, 258-259, 272, 304-307, 313, 323, 336, 344, 350-354, 360-363, 369-422, 438-441, 491, 503, 547-548
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                   21       0  100.00%
plugins/search/geodes.py                        75       0  100.00%
plugins/search/oar.py                           82      13  84.15%   50, 57-60, 172-180, 186-188, 195
plugins/search/qssearch.py                     875     108  87.66%   381, 540-541, 564-565, 577-581, 810-816, 874, 940, 974, 981, 1052, 1073, 1076-1077, 1095, 1104-1105, 1123, 1194, 1203, 1208-1225, 1234, 1249, 1258, 1271, 1293, 1316, 1389, 1412, 1427, 1500-1501, 1503-1505, 1507-1508, 1595, 1602, 1710-1714, 1780, 1783, 1787-1788, 1807-1810, 1822, 1842-1861, 1869-1875, 1910-1912, 1933-1939, 1946, 1984, 2000, 2023, 2028-2029, 2044, 2050, 2064, 2170, 2174, 2185, 2209, 2222, 2230-2240, 2266
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, 280, 290-306, 311, 313, 335, 340, 348, 358
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                            71      18  74.65%   67-71, 78-95, 110
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                              659      61  90.74%   57, 186-241, 254-256, 274, 313-318, 329-330, 351, 431-435, 510-514, 594, 634-635, 664, 1046-1049, 1100, 1119-1120, 1152, 1170-1171, 1335, 1337, 1345, 1349, 1355, 1357, 1359, 1365, 1367, 1467, 1601, 1841
utils/cache.py                                  22       0  100.00%
utils/dates.py                                 191       1  99.48%   182
utils/deserialize.py                            74      10  86.49%   53, 55, 103, 108-109, 148, 162, 184-185, 191
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                                42       3  92.86%   42-43, 61
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                                    269      11  95.91%   204-205, 246, 262, 284, 506, 557-558, 626, 701, 727
utils/stac_reader.py                           113      44  61.06%   63-85, 95-97, 101, 138, 154-159, 206-216, 226-256
utils/streamresponse.py                         91       4  95.60%   106, 166, 175, 187
utils/yaml.py                                   42       7  83.33%   49, 65, 70-74
TOTAL                                        12150    1455  88.02%

Diff against develop

Filename                                 Stmts    Miss  Cover
-------------------------------------  -------  ------  --------
cli.py                                      +4       0  +0.07%
config.py                                    0      -1  +0.29%
api/collection.py                         +127      +3  +1.34%
api/core.py                                 +6       0  +0.05%
api/product/_assets.py                     +64      +1  +2.18%
api/product/metadata_mapping.py            +24     +16  -1.58%
plugins/apis/usgs.py                        +4      +2  -0.79%
plugins/download/base.py                   +90     +27  -5.10%
plugins/download/http.py                    +8       0  +0.18%
plugins/search/base.py                     +53      -2  +2.50%
plugins/search/build_search_result.py       +3      +1  -0.10%
plugins/search/cop_ghsl.py                 +11      +4  -0.41%
plugins/search/cop_marine.py                -3       0  -0.22%
plugins/search/eumetsat_ds.py               -3       0  +100.00%
plugins/search/geodes.py                    +9       0  +100.00%
plugins/search/qssearch.py                 -14       0  -0.19%
utils/__init__.py                           +1      -1  +0.16%
utils/s3.py                                 +3       0  +0.05%
TOTAL                                     +387     +50  -0.04%

Results for commit: 5ab3c79

Minimum allowed coverage is 70%

♻️ This comment has been updated with latest results

@github-actions

github-actions Bot commented Aug 14, 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                                         263      11  95.82%   107-118, 384, 689
config.py                                      336      27  91.96%   71-73, 76, 79, 82, 86, 90, 94-96, 590-592, 746-748, 772-776, 795, 803, 833-838, 840
crunch.py                                        2       0  100.00%
api/__init__.py                                  0       0  100.00%
api/collection.py                              278      11  96.04%   195, 200, 312, 409, 427, 562, 565, 657, 660, 678, 681
api/core.py                                    783      58  92.59%   262, 548, 596, 639, 679, 699, 740-745, 770, 891-910, 924, 930, 1083, 1088, 1187, 1226-1227, 1323-1324, 1350, 1381-1382, 1408, 1421, 1482-1483, 1514-1515, 1596-1601, 1606-1609, 1721, 1946, 2103, 2107, 2220, 2308-2309
api/provider.py                                389      42  89.20%   128-132, 199, 203-204, 341-362, 430, 546, 550-551, 556-559, 570, 646-656, 841-842, 890, 897, 911, 934-937, 971-978, 982-983
api/search_result.py                           138      12  91.30%   111, 123, 133, 154, 208, 266, 278, 406, 461-464
api/product/__init__.py                         26       4  84.62%   51-54
api/product/_assets.py                         142       6  95.77%   75, 226, 360-361, 373-377
api/product/_product.py                        351      26  92.59%   226, 382, 408-411, 448, 467-468, 577, 606, 613, 642, 692, 698, 838, 882-885, 893-896, 954, 1020, 1032, 1099
api/product/metadata_mapping.py                911      73  91.99%   137-139, 262-267, 291, 350-351, 431, 451-452, 457, 520-521, 558, 579-582, 605, 617-618, 659, 682, 707-710, 712-717, 796, 802, 818, 826, 857, 862-875, 1079, 1232, 1254, 1263-1267, 1285-1290, 1423, 1446, 1455, 1477, 1482, 1549, 1646, 1663, 1675, 1701, 1715, 1813, 1908, 2004, 2070, 2115
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                                 38       3  92.11%   50, 84-85
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                             8       0  100.00%
plugins/apis/ecmwf.py                           95      10  89.47%   163-165, 213-214, 240-242, 273-274
plugins/apis/usgs.py                           179      27  84.92%   138-139, 160, 248, 281, 324-326, 331, 359-360, 365, 395-402, 413-418, 440-446
plugins/authentication/__init__.py               6       1  83.33%   32
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                  26       4  84.62%   58, 71, 94, 108
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       243      21  91.36%   101-102, 110-128, 175, 183, 197, 217, 363-366, 392, 433, 623-626
plugins/authentication/qsauth.py                34       1  97.06%   91
plugins/authentication/sas_auth.py              58       3  94.83%   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                       387      53  86.30%   163, 193, 204, 212, 216-219, 283-292, 313, 331-342, 350-358, 449-451, 590-591, 635, 669, 746-750, 780, 815-816, 841-850, 909, 930, 952, 960
plugins/download/http.py                       589      74  87.44%   242, 284-287, 349-352, 355, 362-367, 399-400, 417, 432, 493, 528, 542, 556, 569-573, 589-594, 605, 624, 660-663, 684, 694, 701, 757, 865, 897, 929-938, 974, 1019-1024, 1033, 1048-1050, 1054, 1057, 1072-1073, 1083, 1158, 1210, 1253-1254, 1266, 1287, 1353-1354, 1384, 1418, 1438, 1518-1519
plugins/search/__init__.py                      25       0  100.00%
plugins/search/base.py                         273      18  93.41%   120, 124, 148-154, 163, 225-228, 265, 283, 378, 410, 431, 564
plugins/search/build_search_result.py          558      83  85.13%   137-138, 174, 178, 198, 257, 424-438, 517-518, 567, 579-581, 605, 607, 673, 681-685, 705, 715, 741, 790, 815, 877-882, 943, 970, 973, 1028-1049, 1090, 1117-1118, 1127-1137, 1230, 1245, 1248, 1253, 1272-1281, 1332, 1335, 1338, 1340, 1447-1448, 1492, 1501-1503, 1563, 1611-1621
plugins/search/cop_ghsl.py                     421      88  79.10%   73-74, 109-110, 174, 176, 218, 249-252, 299, 301-302, 319, 365, 369-374, 385-389, 406, 430-433, 451, 492, 508, 547, 562, 574-575, 589-591, 598, 602-604, 607-610, 628-691, 702-717
plugins/search/cop_marine.py                   294      65  77.89%   55, 63-65, 81, 103, 105, 108, 174-175, 193, 226, 232, 236, 258-259, 272, 304-307, 313, 323, 336, 344, 350-354, 360-363, 369-422, 438-441, 491, 503, 547-548
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                   21       0  100.00%
plugins/search/geodes.py                        75       0  100.00%
plugins/search/oar.py                           82      13  84.15%   50, 57-60, 172-180, 186-188, 195
plugins/search/qssearch.py                     875     108  87.66%   381, 540-541, 564-565, 577-581, 810-816, 874, 940, 974, 981, 1052, 1073, 1076-1077, 1095, 1104-1105, 1123, 1194, 1203, 1208-1225, 1234, 1249, 1258, 1271, 1293, 1316, 1389, 1412, 1427, 1500-1501, 1503-1505, 1507-1508, 1595, 1602, 1710-1714, 1780, 1783, 1787-1788, 1807-1810, 1822, 1842-1861, 1869-1875, 1910-1912, 1933-1939, 1946, 1984, 2000, 2023, 2028-2029, 2044, 2050, 2064, 2170, 2174, 2185, 2209, 2222, 2230-2240, 2266
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, 280, 290-306, 311, 313, 335, 340, 348, 358
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                            71      18  74.65%   67-71, 78-95, 110
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                              659      61  90.74%   57, 186-241, 254-256, 274, 313-318, 329-330, 351, 431-435, 510-514, 594, 634-635, 664, 1046-1049, 1100, 1119-1120, 1152, 1170-1171, 1335, 1337, 1345, 1349, 1355, 1357, 1359, 1365, 1367, 1467, 1601, 1841
utils/cache.py                                  22       0  100.00%
utils/dates.py                                 191       1  99.48%   182
utils/deserialize.py                            74      10  86.49%   53, 55, 103, 108-109, 148, 162, 184-185, 191
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                                42       3  92.86%   42-43, 61
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                                    269      11  95.91%   204-205, 246, 262, 284, 506, 557-558, 626, 701, 727
utils/stac_reader.py                           113      44  61.06%   63-85, 95-97, 101, 138, 154-159, 206-216, 226-256
utils/streamresponse.py                         91       4  95.60%   106, 166, 175, 187
utils/yaml.py                                   42       7  83.33%   49, 65, 70-74
TOTAL                                        12150    1457  88.01%

Diff against develop

Filename                                 Stmts    Miss  Cover
-------------------------------------  -------  ------  --------
cli.py                                      +4       0  +0.07%
config.py                                    0      -1  +0.29%
api/collection.py                         +127      +3  +1.34%
api/core.py                                 +6       0  +0.05%
api/product/_assets.py                     +64      +1  +2.18%
api/product/metadata_mapping.py            +24     +16  -1.58%
plugins/apis/usgs.py                        +4      +2  -0.79%
plugins/download/base.py                   +90     +27  -4.95%
plugins/download/http.py                    +8       0  +0.18%
plugins/search/base.py                     +53      -2  +2.50%
plugins/search/build_search_result.py       +3      +1  -0.10%
plugins/search/cop_ghsl.py                 +11      +4  -0.41%
plugins/search/cop_marine.py                -3       0  -0.22%
plugins/search/eumetsat_ds.py               -3       0  +100.00%
plugins/search/geodes.py                    +9       0  +100.00%
plugins/search/qssearch.py                 -14       0  -0.19%
utils/__init__.py                           +1      -1  +0.16%
utils/s3.py                                 +3       0  +0.05%
TOTAL                                     +387     +50  -0.03%

Results for commit: 5ab3c79

Minimum allowed coverage is 70%

♻️ This comment has been updated with latest results

@sbrunato
sbrunato force-pushed the v5_download_link_asset branch from c9ebeb6 to 78e102c Compare August 14, 2026 10:55
@sbrunato
sbrunato force-pushed the individual-assets-download-cache branch 2 times, most recently from f5cd28b to d95a096 Compare August 17, 2026 14:46
@sbrunato
sbrunato force-pushed the v5_download_link_asset branch from c090865 to bf9d775 Compare August 20, 2026 12:31
@sbrunato
sbrunato force-pushed the individual-assets-download-cache branch from d95a096 to 23b8048 Compare August 20, 2026 12:32
@sbrunato
sbrunato force-pushed the v5_download_link_asset branch 2 times, most recently from fd714a3 to 7f25973 Compare August 20, 2026 13:38
@sbrunato
sbrunato force-pushed the individual-assets-download-cache branch from 23b8048 to 3c2e49e Compare August 21, 2026 06:51
@sbrunato sbrunato added this to the 5.0.0.dev milestone Aug 21, 2026
@sbrunato
sbrunato force-pushed the individual-assets-download-cache branch from 3c2e49e to 95a0b71 Compare August 21, 2026 08:30
@sbrunato
sbrunato changed the base branch from v5_download_link_asset to v5.x.x August 21, 2026 08:31
@sbrunato
sbrunato force-pushed the individual-assets-download-cache branch from 95a0b71 to fdb4f41 Compare August 21, 2026 09:52
@sbrunato
sbrunato force-pushed the individual-assets-download-cache branch from fdb4f41 to 5ab3c79 Compare August 24, 2026 09:24
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.

1 participant