Skip to content

fix: add datetime to queryables#2247

Draft
cauriol wants to merge 1 commit into
developfrom
datetime_queryables
Draft

fix: add datetime to queryables#2247
cauriol wants to merge 1 commit into
developfrom
datetime_queryables

Conversation

@cauriol

@cauriol cauriol commented Jun 22, 2026

Copy link
Copy Markdown
Collaborator

there was a bug :
datetime is listed as queryables:

GET /collections/DT_CLIMATE_G2_BASELINE_CONT_ICON_R1/queryables?provider=dedt_lumi

If passed in the querystring

GET /collections/DT_CLIMATE_G2_BASELINE_CONT_ICON_R1/queryables?provider=dedt_lumi&datetime=2020-01-01T10:00:00Z

The following error is returned: 'datetime' is not a queryable parameter for dedt_lumi

Adding datetime to ALLOWED_KEYWORDS for ecwmf search to fix the issue.

@cauriol cauriol self-assigned this Jun 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Benchmark comparison

Compared baseline: origin/develop
Compared candidate: f40be94


------------------------------- benchmark: 7 tests, 2 sources -------------------------------
Name (time in ms)                                 baseline Median  candidate Median   ΔMedian
---------------------------------------------------------------------------------------------
test_benchmark_stac_reader_fetch_recursive                 3.2365            3.2245     -0.4%
test_benchmark_cli_version                                16.3332           16.4276     +0.6%
test_benchmark_cli_without_args_subprocess               109.2290          107.8513     -1.3%
test_benchmark_core_search_with_provider                 124.7307          122.5481     -1.7%
test_benchmark_core_search_with_count                    167.2133          162.0605     -3.1%
test_benchmark_cli_list_collections                      220.4274          222.1363     +0.8%
test_benchmark_eodag_instantiation_subprocess          1,455.6239        1,434.5490     -1.4%
---------------------------------------------------------------------------------------------

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

@github-actions

Copy link
Copy Markdown
Contributor

Test Results

    4 files  ±0      4 suites  ±0   4m 30s ⏱️ +17s
  818 tests ±0    818 ✅ ±0  0 💤 ±0  0 ❌ ±0 
3 322 runs  ±0  3 320 ✅ ±0  2 💤 ±0  0 ❌ ±0 

Results for commit bd2c61a. ± Comparison against base commit e0d1058.

@github-actions

Copy link
Copy Markdown
Contributor

badge

Code Coverage (Ubuntu)

Details
Filename                                     Stmts    Miss  Cover    Missing
-----------------------------------------  -------  ------  -------  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__init__.py                                     16       1  93.75%   63
cli.py                                         259      11  95.75%   99-110, 376, 658
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                                    776      58  92.53%   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, 1552-1557, 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                             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                           95       8  91.58%   163-165, 213-214, 240-242
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, 671, 679-683, 704, 714, 740, 785, 810, 838, 856-871, 921, 946, 949, 953, 962, 968, 1006-1027, 1068, 1095-1096, 1105-1114, 1204, 1219, 1222, 1227, 1246-1255, 1376-1377, 1421, 1430-1432, 1489, 1537-1547
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      13  94.88%   200-203, 245, 258, 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                                        11380    1375  87.92%

Diff against develop

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

Results for commit: bd2c61a

Minimum allowed coverage is 70%

♻️ This comment has been updated with latest results

@github-actions

Copy link
Copy Markdown
Contributor

badge

Code Coverage (Windows)

Details
Filename                                     Stmts    Miss  Cover    Missing
-----------------------------------------  -------  ------  -------  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__init__.py                                     16       1  93.75%   63
cli.py                                         259      11  95.75%   99-110, 376, 658
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                                    776      58  92.53%   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, 1552-1557, 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                             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                           95       8  91.58%   163-165, 213-214, 240-242
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, 671, 679-683, 704, 714, 740, 785, 810, 838, 856-871, 921, 946, 949, 953, 962, 968, 1006-1027, 1068, 1095-1096, 1105-1114, 1204, 1219, 1222, 1227, 1246-1255, 1376-1377, 1421, 1430-1432, 1489, 1537-1547
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                                        11380    1376  87.91%

Diff against develop

Filename      Stmts    Miss  Cover
----------  -------  ------  --------
TOTAL             0       0  +100.00%

Results for commit: bd2c61a

Minimum allowed coverage is 70%

♻️ This comment has been updated with latest results

@cauriol cauriol marked this pull request as ready for review June 22, 2026 09:08
@cauriol cauriol requested a review from jlahovnik June 22, 2026 09:20
@cauriol cauriol marked this pull request as draft June 22, 2026 09:20
@cauriol cauriol removed the request for review from jlahovnik June 22, 2026 09:20
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