{"receipt_id":"base-1","seq":1,"branch_id":"base","kind":"command","cmd":"python -c 'import base64; from pathlib import Path; Path('\"'\"'/tmp/receipts-stac-utils__stac-fastapi-729-test.patch'\"'\"').write_bytes(base64.b64decode('\"'\"'ZGlmZiAtLWdpdCBhL3N0YWNfZmFzdGFwaS9hcGkvdGVzdHMvdGVzdF9hcHAucHkgYi9zdGFjX2Zhc3RhcGkvYXBpL3Rlc3RzL3Rlc3RfYXBwLnB5CmluZGV4IDlmYjJjNTIuLjBkZGNiMjQgMTAwNjQ0Ci0tLSBhL3N0YWNfZmFzdGFwaS9hcGkvdGVzdHMvdGVzdF9hcHAucHkKKysrIGIvc3RhY19mYXN0YXBpL2FwaS90ZXN0cy90ZXN0X2FwcC5weQpAQCAtMSwxMiArMSwxMyBAQAotZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIE9wdGlvbmFsLCBVbmlvbgogCitpbXBvcnQgYXR0cgogaW1wb3J0IHB5dGVzdAogZnJvbSBmYXN0YXBpIGltcG9ydCBQYXRoLCBRdWVyeQogZnJvbSBmYXN0YXBpLnRlc3RjbGllbnQgaW1wb3J0IFRlc3RDbGllbnQKIGZyb20gcHlkYW50aWMgaW1wb3J0IFZhbGlkYXRpb25FcnJvcgogZnJvbSBzdGFjX3B5ZGFudGljIGltcG9ydCBhcGkKK2Zyb20gdHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0IEFubm90YXRlZAogCiBmcm9tIHN0YWNfZmFzdGFwaS5hcGkgaW1wb3J0IGFwcAogZnJvbSBzdGFjX2Zhc3RhcGkuYXBpLm1vZGVscyBpbXBvcnQgKApAQCAtMzI4LDI1ICszMjksMjUgQEAgZGVmIHRlc3RfZmllbGRzX2V4dGVuc2lvbih2YWxpZGF0ZSwgVGVzdENvcmVDbGllbnQsIGl0ZW1fZGljdCk6CiBkZWYgdGVzdF9yZXF1ZXN0X21vZGVsKEFzeW5jVGVzdENvcmVDbGllbnQpOgogICAgICIiIlRlc3QgaWYgcmVxdWVzdCBtb2RlbHMgYXJlIHBhc3NlZCBjb3JyZWN0bHkuIiIiCiAKLSAgICBAZGF0YWNsYXNzCisgICAgQGF0dHIucwogICAgIGNsYXNzIENvbGxlY3Rpb25zUmVxdWVzdChBUElSZXF1ZXN0KToKLSAgICAgICAgdXNlcjogc3RyID0gUXVlcnkoLi4uKQorICAgICAgICB1c2VyOiBBbm5vdGF0ZWRbc3RyLCBRdWVyeSguLi4pXSA9IGF0dHIuaWIoKQogCi0gICAgQGRhdGFjbGFzcworICAgIEBhdHRyLnMKICAgICBjbGFzcyBDb2xsZWN0aW9uUmVxdWVzdChBUElSZXF1ZXN0KToKLSAgICAgICAgY29sbGVjdGlvbl9pZDogc3RyID0gUGF0aChkZXNjcmlwdGlvbj0iQ29sbGVjdGlvbiBJRCIpCi0gICAgICAgIHVzZXI6IHN0ciA9IFF1ZXJ5KC4uLikKKyAgICAgICAgY29sbGVjdGlvbl9pZDogQW5ub3RhdGVkW3N0ciwgUGF0aChkZXNjcmlwdGlvbj0iQ29sbGVjdGlvbiBJRCIpXSA9IGF0dHIuaWIoKQorICAgICAgICB1c2VyOiBBbm5vdGF0ZWRbc3RyLCBRdWVyeSguLi4pXSA9IGF0dHIuaWIoKQogCi0gICAgQGRhdGFjbGFzcworICAgIEBhdHRyLnMKICAgICBjbGFzcyBJdGVtc1JlcXVlc3QoQVBJUmVxdWVzdCk6Ci0gICAgICAgIGNvbGxlY3Rpb25faWQ6IHN0ciA9IFBhdGgoZGVzY3JpcHRpb249IkNvbGxlY3Rpb24gSUQiKQotICAgICAgICB1c2VyOiBzdHIgPSBRdWVyeSguLi4pCisgICAgICAgIGNvbGxlY3Rpb25faWQ6IEFubm90YXRlZFtzdHIsIFBhdGgoZGVzY3JpcHRpb249IkNvbGxlY3Rpb24gSUQiKV0gPSBhdHRyLmliKCkKKyAgICAgICAgdXNlcjogQW5ub3RhdGVkW3N0ciwgUXVlcnkoLi4uKV0gPSBhdHRyLmliKCkKIAotICAgIEBkYXRhY2xhc3MKKyAgICBAYXR0ci5zCiAgICAgY2xhc3MgSXRlbVJlcXVlc3QoQVBJUmVxdWVzdCk6Ci0gICAgICAgIGNvbGxlY3Rpb25faWQ6IHN0ciA9IFBhdGgoZGVzY3JpcHRpb249IkNvbGxlY3Rpb24gSUQiKQotICAgICAgICBpdGVtX2lkOiBzdHIgPSBQYXRoKGRlc2NyaXB0aW9uPSJJdGVtIElEIikKLSAgICAgICAgdXNlcjogc3RyID0gUXVlcnkoLi4uKQorICAgICAgICBjb2xsZWN0aW9uX2lkOiBBbm5vdGF0ZWRbc3RyLCBQYXRoKGRlc2NyaXB0aW9uPSJDb2xsZWN0aW9uIElEIildID0gYXR0ci5pYigpCisgICAgICAgIGl0ZW1faWQ6IEFubm90YXRlZFtzdHIsIFBhdGgoZGVzY3JpcHRpb249Ikl0ZW0gSUQiKV0gPSBhdHRyLmliKCkKKyAgICAgICAgdXNlcjogQW5ub3RhdGVkW3N0ciwgUXVlcnkoLi4uKV0gPSBhdHRyLmliKCkKIAogICAgIHRlc3RfYXBwID0gYXBwLlN0YWNBcGkoCiAgICAgICAgIHNldHRpbmdzPUFwaVNldHRpbmdzKCksCmRpZmYgLS1naXQgYS9zdGFjX2Zhc3RhcGkvYXBpL3Rlc3RzL3Rlc3RfbW9kZWxzLnB5IGIvc3RhY19mYXN0YXBpL2FwaS90ZXN0cy90ZXN0X21vZGVscy5weQppbmRleCAyNGVkNTlhLi5iMGMyYWQ5IDEwMDY0NAotLS0gYS9zdGFjX2Zhc3RhcGkvYXBpL3Rlc3RzL3Rlc3RfbW9kZWxzLnB5CisrKyBiL3N0YWNfZmFzdGFwaS9hcGkvdGVzdHMvdGVzdF9tb2RlbHMucHkKQEAgLTEsMTkgKzEsMjAgQEAKIGltcG9ydCBqc29uCiAKIGltcG9ydCBweXRlc3QKLWZyb20gZmFzdGFwaSBpbXBvcnQgRGVwZW5kcywgRmFzdEFQSQorZnJvbSBmYXN0YXBpIGltcG9ydCBEZXBlbmRzLCBGYXN0QVBJLCBIVFRQRXhjZXB0aW9uCiBmcm9tIGZhc3RhcGkudGVzdGNsaWVudCBpbXBvcnQgVGVzdENsaWVudAogZnJvbSBweWRhbnRpYyBpbXBvcnQgVmFsaWRhdGlvbkVycm9yCiAKIGZyb20gc3RhY19mYXN0YXBpLmFwaS5tb2RlbHMgaW1wb3J0IGNyZWF0ZV9nZXRfcmVxdWVzdF9tb2RlbCwgY3JlYXRlX3Bvc3RfcmVxdWVzdF9tb2RlbAotZnJvbSBzdGFjX2Zhc3RhcGkuZXh0ZW5zaW9ucy5jb3JlLmZpbHRlci5maWx0ZXIgaW1wb3J0IEZpbHRlckV4dGVuc2lvbgotZnJvbSBzdGFjX2Zhc3RhcGkuZXh0ZW5zaW9ucy5jb3JlLnNvcnQuc29ydCBpbXBvcnQgU29ydEV4dGVuc2lvbgorZnJvbSBzdGFjX2Zhc3RhcGkuZXh0ZW5zaW9ucy5jb3JlIGltcG9ydCBGaWVsZHNFeHRlbnNpb24sIEZpbHRlckV4dGVuc2lvbiwgU29ydEV4dGVuc2lvbgogZnJvbSBzdGFjX2Zhc3RhcGkudHlwZXMuc2VhcmNoIGltcG9ydCBCYXNlU2VhcmNoR2V0UmVxdWVzdCwgQmFzZVNlYXJjaFBvc3RSZXF1ZXN0CiAKIAogZGVmIHRlc3RfY3JlYXRlX2dldF9yZXF1ZXN0X21vZGVsKCk6Ci0gICAgZXh0ZW5zaW9ucyA9IFtGaWx0ZXJFeHRlbnNpb24oKV0KLSAgICByZXF1ZXN0X21vZGVsID0gY3JlYXRlX2dldF9yZXF1ZXN0X21vZGVsKGV4dGVuc2lvbnMsIEJhc2VTZWFyY2hHZXRSZXF1ZXN0KQorICAgIHJlcXVlc3RfbW9kZWwgPSBjcmVhdGVfZ2V0X3JlcXVlc3RfbW9kZWwoCisgICAgICAgIGV4dGVuc2lvbnM9W0ZpbHRlckV4dGVuc2lvbigpLCBGaWVsZHNFeHRlbnNpb24oKV0sCisgICAgICAgIGJhc2VfbW9kZWw9QmFzZVNlYXJjaEdldFJlcXVlc3QsCisgICAgKQogCiAgICAgbW9kZWwgPSByZXF1ZXN0X21vZGVsKAogICAgICAgICBjb2xsZWN0aW9ucz0idGVzdDEsdGVzdDIiLApAQCAtMzUsNiArMzYsOSBAQCBkZWYgdGVzdF9jcmVhdGVfZ2V0X3JlcXVlc3RfbW9kZWwoKToKICAgICBhc3NlcnQgbW9kZWwuY29sbGVjdGlvbnMgPT0gWyJ0ZXN0MSIsICJ0ZXN0MiJdCiAgICAgYXNzZXJ0IG1vZGVsLmZpbHRlcl9jcnMgPT0gImVwc2c6NDMyNiIKIAorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhIVFRQRXhjZXB0aW9uKToKKyAgICAgICAgcmVxdWVzdF9tb2RlbChkYXRldGltZT0ieW8iKQorCiAgICAgYXBwID0gRmFzdEFQSSgpCiAKICAgICBAYXBwLmdldCgiL3Rlc3QiKQpAQCAtNjIsOCArNjYsMTAgQEAgZGVmIHRlc3RfY3JlYXRlX2dldF9yZXF1ZXN0X21vZGVsKCk6CiAgICAgWyhOb25lLCBUcnVlKSwgKHsidGVzdCI6ICJ0ZXN0In0sIFRydWUpLCAoInRlc3Q9PXRlc3QiLCBGYWxzZSksIChbXSwgRmFsc2UpXSwKICkKIGRlZiB0ZXN0X2NyZWF0ZV9wb3N0X3JlcXVlc3RfbW9kZWwoZmlsdGVyLCBwYXNzZXMpOgotICAgIGV4dGVuc2lvbnMgPSBbRmlsdGVyRXh0ZW5zaW9uKCldCi0gICAgcmVxdWVzdF9tb2RlbCA9IGNyZWF0ZV9wb3N0X3JlcXVlc3RfbW9kZWwoZXh0ZW5zaW9ucywgQmFzZVNlYXJjaFBvc3RSZXF1ZXN0KQorICAgIHJlcXVlc3RfbW9kZWwgPSBjcmVhdGVfcG9zdF9yZXF1ZXN0X21vZGVsKAorICAgICAgICBleHRlbnNpb25zPVtGaWx0ZXJFeHRlbnNpb24oKSwgRmllbGRzRXh0ZW5zaW9uKCldLAorICAgICAgICBiYXNlX21vZGVsPUJhc2VTZWFyY2hQb3N0UmVxdWVzdCwKKyAgICApCiAKICAgICBpZiBub3QgcGFzc2VzOgogICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsaWRhdGlvbkVycm9yKToKQEAgLTEwMCw4ICsxMDYsMTAgQEAgZGVmIHRlc3RfY3JlYXRlX3Bvc3RfcmVxdWVzdF9tb2RlbChmaWx0ZXIsIHBhc3Nlcyk6CiAgICAgXSwKICkKIGRlZiB0ZXN0X2NyZWF0ZV9wb3N0X3JlcXVlc3RfbW9kZWxfbmVzdGVkX2ZpZWxkcyhzb3J0YnksIHBhc3Nlcyk6Ci0gICAgZXh0ZW5zaW9ucyA9IFtTb3J0RXh0ZW5zaW9uKCldCi0gICAgcmVxdWVzdF9tb2RlbCA9IGNyZWF0ZV9wb3N0X3JlcXVlc3RfbW9kZWwoZXh0ZW5zaW9ucywgQmFzZVNlYXJjaFBvc3RSZXF1ZXN0KQorICAgIHJlcXVlc3RfbW9kZWwgPSBjcmVhdGVfcG9zdF9yZXF1ZXN0X21vZGVsKAorICAgICAgICBleHRlbnNpb25zPVtTb3J0RXh0ZW5zaW9uKCldLAorICAgICAgICBiYXNlX21vZGVsPUJhc2VTZWFyY2hQb3N0UmVxdWVzdCwKKyAgICApCiAKICAgICBpZiBub3QgcGFzc2VzOgogICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsaWRhdGlvbkVycm9yKToK'\"'\"'))'","path":null,"exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","log_path":"~/dev/nebius-hackathon/pilot/v2-P/stac-utils__stac-fastapi-729/runs/pilot-stac-utils__stac-fastapi-729-07063ad25c/logs/base/base-1.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T16:37:01.857281Z","duration_s":0.024867,"timed_out":false,"image_before":"4056073a-4819-38ee-b935-f3f6eefee7d0","image_after":"9906df1d-8a5d-45cf-864f-f2d8253b3a07","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"base-2","seq":2,"branch_id":"base","kind":"command","cmd":"git apply /tmp/receipts-stac-utils__stac-fastapi-729-test.patch","path":null,"exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","log_path":"~/dev/nebius-hackathon/pilot/v2-P/stac-utils__stac-fastapi-729/runs/pilot-stac-utils__stac-fastapi-729-07063ad25c/logs/base/base-2.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T16:37:03.111941Z","duration_s":0.004219,"timed_out":false,"image_before":"9906df1d-8a5d-45cf-864f-f2d8253b3a07","image_after":"433f1d9c-b7cd-483c-8a98-47f2c40691f7","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"base-3","seq":3,"branch_id":"base","kind":"command","cmd":"/opt/receipts-0c2b710fad764ab28471ca535b3e2c81/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-0c2b710fad764ab28471ca535b3e2c81/receipts_pytest.py --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning stac_fastapi/api/tests/test_app.py stac_fastapi/api/tests/test_models.py -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/base-3.xml","path":null,"exit_code":1,"stdout_tail":"============================= test session starts ==============================\ncollected 18 items\n\nstac_fastapi/api/tests/test_app.py FFF.FFFFF                             [ 50%]\nstac_fastapi/api/tests/test_models.py F........                          [100%]\n\n=================================== FAILURES ===================================\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   assert 'test1,test2' == ['test1', 'test2']\n     +  where 'test1,test2' = SearchGetRequest(collections='test1,test2', ids='test1,test2', bbox='0,0,1,1', intersects='{\"type\": \"Polygon\", \"coordi...me='2020-01-01T00:00:00Z', limit=10, fields=None, filter='test==test', filter_crs='epsg:4326', filter_lang='cql2-text').collections\n/stac-fastapi/stac_fastapi/api/tests/test_models.py:36: assert 'test1,test2' == ['test1', 'test2']\n==================================== PASSES ====================================\n------------- generated xml file: /opt/receipts/reports/base-3.xml -------------\n=========================== short test summary info ============================\nPASSED stac_fastapi/api/tests/test_app.py::test_client_openapi\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model[None-True]\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model[filter1-True]\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model[test==test-False]\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model[filter3-False]\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[None-True]\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[sortby1-True]\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[sortby2-False]\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[test-False]\nFAILED stac_fastapi/api/tests/test_app.py::test_client_response_type - TypeEr...\nFAILED stac_fastapi/api/tests/test_app.py::test_client_invalid_response_type[True]\nFAILED stac_fastapi/api/tests/test_app.py::test_client_invalid_response_type[False]\nFAILED stac_fastapi/api/tests/test_app.py::test_filter_extension[True] - Type...\nFAILED stac_fastapi/api/tests/test_app.py::test_filter_extension[False] - Typ...\nFAILED stac_fastapi/api/tests/test_app.py::test_fields_extension[True] - Type...\nFAILED stac_fastapi/api/tests/test_app.py::test_fields_extension[False] - Typ...\nFAILED stac_fastapi/api/tests/test_app.py::test_request_model - TypeError: ca...\nFAILED stac_fastapi/api/tests/test_models.py::test_create_get_request_model\n========================= 9 failed, 9 passed in 0.75s ==========================\n","stderr_tail":"","stdout_sha256":"9d8c194ada08b225cb47d36730151596b27cd6d68963d92109c65dd1c766163a","log_path":"~/dev/nebius-hackathon/pilot/v2-P/stac-utils__stac-fastapi-729/runs/pilot-stac-utils__stac-fastapi-729-07063ad25c/logs/base/base-3.log","tree_digest":"19e84b279b115017868ee3f3c37bc768c839f6e799ab5cff35fd87910f9dd105","tree_download_s":2.243093374883756,"started_at":"2026-10-03T16:37:04.874658Z","duration_s":1.938231,"timed_out":false,"image_before":"433f1d9c-b7cd-483c-8a98-47f2c40691f7","image_after":"fd1b88d8-7401-4ae9-8320-63d86acd464f","junit":{"passed":["stac_fastapi/api/tests/test_app.py::test_client_openapi","stac_fastapi/api/tests/test_models.py::test_create_post_request_model[None-True]","stac_fastapi/api/tests/test_models.py::test_create_post_request_model[filter1-True]","stac_fastapi/api/tests/test_models.py::test_create_post_request_model[test==test-False]","stac_fastapi/api/tests/test_models.py::test_create_post_request_model[filter3-False]","stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[None-True]","stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[sortby1-True]","stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[sortby2-False]","stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[test-False]"],"failed":["stac_fastapi/api/tests/test_app.py::test_client_response_type","stac_fastapi/api/tests/test_app.py::test_client_invalid_response_type[True]","stac_fastapi/api/tests/test_app.py::test_client_invalid_response_type[False]","stac_fastapi/api/tests/test_app.py::test_filter_extension[True]","stac_fastapi/api/tests/test_app.py::test_filter_extension[False]","stac_fastapi/api/tests/test_app.py::test_fields_extension[True]","stac_fastapi/api/tests/test_app.py::test_fields_extension[False]","stac_fastapi/api/tests/test_app.py::test_request_model","stac_fastapi/api/tests/test_models.py::test_create_get_request_model"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"stac_fastapi/api/tests/test_app.py::test_client_response_type":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_app.py::test_client_invalid_response_type[True]":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_app.py::test_client_invalid_response_type[False]":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_app.py::test_filter_extension[True]":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_app.py::test_filter_extension[False]":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_app.py::test_fields_extension[True]":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_app.py::test_fields_extension[False]":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_app.py::test_request_model":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_models.py::test_create_get_request_model":"assert 'test1,test2' == ['test1', 'test2']\n +  where 'test1,test2' = SearchGetRequest(collections='test1,test2', ids='test1,test2', bbox='0,0,1,1', intersects='{\"type\": \"Polygon\", \"coordi...me='2020-01-01T00:00:00Z', limit=10, fields=None, filter='test==test', filter_crs='epsg:4326', filter_lang='cql2-text').collections\nE   assert 'test1,test2' == ['test1', 'test2']\n     +  where 'test1,test2' = SearchGetRequest(collections='test1,test2', ids='test1,test2', bbox='0,0,1,1', intersects='{\"type\": \"Polygon\", \"coordi...me='2020-01-01T00:00:00Z', limit=10, fields=None, filter='test==test', filter_crs='epsg:4326', filter_lang='cql2-text').collections"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"base-4","seq":4,"branch_id":"base","kind":"command","cmd":"/opt/receipts-064f1cb282a14ae2abb8c049254c6077/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-064f1cb282a14ae2abb8c049254c6077/receipts_pytest.py --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning stac_fastapi/api/tests/test_app.py stac_fastapi/api/tests/test_models.py -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/base-4.xml","path":null,"exit_code":1,"stdout_tail":"============================= test session starts ==============================\ncollected 18 items\n\nstac_fastapi/api/tests/test_app.py FFF.FFFFF                             [ 50%]\nstac_fastapi/api/tests/test_models.py F........                          [100%]\n\n=================================== FAILURES ===================================\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   TypeError: can only join an iterable\n/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py:45: TypeError: can only join an iterable\nE   assert 'test1,test2' == ['test1', 'test2']\n     +  where 'test1,test2' = SearchGetRequest(collections='test1,test2', ids='test1,test2', bbox='0,0,1,1', intersects='{\"type\": \"Polygon\", \"coordi...me='2020-01-01T00:00:00Z', limit=10, fields=None, filter='test==test', filter_crs='epsg:4326', filter_lang='cql2-text').collections\n/stac-fastapi/stac_fastapi/api/tests/test_models.py:36: assert 'test1,test2' == ['test1', 'test2']\n==================================== PASSES ====================================\n------------- generated xml file: /opt/receipts/reports/base-4.xml -------------\n=========================== short test summary info ============================\nPASSED stac_fastapi/api/tests/test_app.py::test_client_openapi\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model[None-True]\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model[filter1-True]\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model[test==test-False]\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model[filter3-False]\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[None-True]\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[sortby1-True]\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[sortby2-False]\nPASSED stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[test-False]\nFAILED stac_fastapi/api/tests/test_app.py::test_client_response_type - TypeEr...\nFAILED stac_fastapi/api/tests/test_app.py::test_client_invalid_response_type[True]\nFAILED stac_fastapi/api/tests/test_app.py::test_client_invalid_response_type[False]\nFAILED stac_fastapi/api/tests/test_app.py::test_filter_extension[True] - Type...\nFAILED stac_fastapi/api/tests/test_app.py::test_filter_extension[False] - Typ...\nFAILED stac_fastapi/api/tests/test_app.py::test_fields_extension[True] - Type...\nFAILED stac_fastapi/api/tests/test_app.py::test_fields_extension[False] - Typ...\nFAILED stac_fastapi/api/tests/test_app.py::test_request_model - TypeError: ca...\nFAILED stac_fastapi/api/tests/test_models.py::test_create_get_request_model\n========================= 9 failed, 9 passed in 0.76s ==========================\n","stderr_tail":"","stdout_sha256":"14870698c48c8779626f0ebe0896651f0d4e00b53a300c3aa71da2031ecf6f36","log_path":"~/dev/nebius-hackathon/pilot/v2-P/stac-utils__stac-fastapi-729/runs/pilot-stac-utils__stac-fastapi-729-07063ad25c/logs/base/base-4.log","tree_digest":"19e84b279b115017868ee3f3c37bc768c839f6e799ab5cff35fd87910f9dd105","tree_download_s":2.192177665885538,"started_at":"2026-10-03T16:37:12.141935Z","duration_s":1.887143,"timed_out":false,"image_before":"fd1b88d8-7401-4ae9-8320-63d86acd464f","image_after":"35004c19-820f-4e13-bb75-59d26543563a","junit":{"passed":["stac_fastapi/api/tests/test_app.py::test_client_openapi","stac_fastapi/api/tests/test_models.py::test_create_post_request_model[None-True]","stac_fastapi/api/tests/test_models.py::test_create_post_request_model[filter1-True]","stac_fastapi/api/tests/test_models.py::test_create_post_request_model[test==test-False]","stac_fastapi/api/tests/test_models.py::test_create_post_request_model[filter3-False]","stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[None-True]","stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[sortby1-True]","stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[sortby2-False]","stac_fastapi/api/tests/test_models.py::test_create_post_request_model_nested_fields[test-False]"],"failed":["stac_fastapi/api/tests/test_app.py::test_client_response_type","stac_fastapi/api/tests/test_app.py::test_client_invalid_response_type[True]","stac_fastapi/api/tests/test_app.py::test_client_invalid_response_type[False]","stac_fastapi/api/tests/test_app.py::test_filter_extension[True]","stac_fastapi/api/tests/test_app.py::test_filter_extension[False]","stac_fastapi/api/tests/test_app.py::test_fields_extension[True]","stac_fastapi/api/tests/test_app.py::test_fields_extension[False]","stac_fastapi/api/tests/test_app.py::test_request_model","stac_fastapi/api/tests/test_models.py::test_create_get_request_model"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"stac_fastapi/api/tests/test_app.py::test_client_response_type":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_app.py::test_client_invalid_response_type[True]":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_app.py::test_client_invalid_response_type[False]":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_app.py::test_filter_extension[True]":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_app.py::test_filter_extension[False]":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_app.py::test_fields_extension[True]":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_app.py::test_fields_extension[False]":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_app.py::test_request_model":"TypeError: can only join an iterable\nE   TypeError: can only join an iterable","stac_fastapi/api/tests/test_models.py::test_create_get_request_model":"assert 'test1,test2' == ['test1', 'test2']\n +  where 'test1,test2' = SearchGetRequest(collections='test1,test2', ids='test1,test2', bbox='0,0,1,1', intersects='{\"type\": \"Polygon\", \"coordi...me='2020-01-01T00:00:00Z', limit=10, fields=None, filter='test==test', filter_crs='epsg:4326', filter_lang='cql2-text').collections\nE   assert 'test1,test2' == ['test1', 'test2']\n     +  where 'test1,test2' = SearchGetRequest(collections='test1,test2', ids='test1,test2', bbox='0,0,1,1', intersects='{\"type\": \"Polygon\", \"coordi...me='2020-01-01T00:00:00Z', limit=10, fields=None, filter='test==test', filter_crs='epsg:4326', filter_lang='cql2-text').collections"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"base-5","seq":5,"branch_id":"base","kind":"command","cmd":"python -c 'import base64\nimport hashlib\nimport json\nimport os\nfrom pathlib import Path\n\npayload = json.loads(base64.b64decode('\"'\"'eyJ0ZXN0X2ZpbGVzIjpbInN0YWNfZmFzdGFwaS9hcGkvdGVzdHMvdGVzdF9tb2RlbHMucHkiXSwidGVzdF9yb290cyI6WyJzdGFjX2Zhc3RhcGkvYXBpL3Rlc3RzIl0sImNvbmZpZ19uYW1lcyI6WyIucHl0ZXN0LnRvbWwiLCJjb25mdGVzdC5weSIsInB5cHJvamVjdC50b21sIiwicHl0ZXN0LmluaSIsInB5dGVzdC50b21sIiwic2V0dXAuY2ZnIiwidG94LmluaSJdfQ=='\"'\"'))\nexcluded = {'\"'\"'.git'\"'\"', '\"'\"'.venv'\"'\"', '\"'\"'__pycache__'\"'\"', '\"'\"'site-packages'\"'\"'}\n\ndef digest(path):\n    return hashlib.sha256(path.read_bytes()).hexdigest()\n\ntests = {}\nfor item in payload['\"'\"'test_files'\"'\"']:\n    path = Path(item)\n    if path.is_file():\n        tests[path.as_posix()] = digest(path)\nfor item in payload['\"'\"'test_roots'\"'\"']:\n    root = Path(item)\n    if not root.is_dir():\n        continue\n    for directory, names, filenames in os.walk(root, followlinks=False):\n        names[:] = sorted(name for name in names if name not in excluded)\n        for filename in sorted(filenames):\n            path = Path(directory, filename)\n            if path.is_file():\n                tests[path.as_posix()] = digest(path)\n\nconfigs = {}\nfor directory, names, filenames in os.walk('\"'\"'.'\"'\"', followlinks=False):\n    names[:] = sorted(name for name in names if name not in excluded)\n    for filename in sorted(filenames):\n        if filename not in payload['\"'\"'config_names'\"'\"']:\n            continue\n        path = Path(directory, filename)\n        rendered = path.as_posix()\n        rendered = rendered[2:] if rendered.startswith('\"'\"'./'\"'\"') else rendered\n        configs[rendered] = digest(path)\n\nprint(json.dumps({'\"'\"'test_digests'\"'\"': tests, '\"'\"'pytest_config_digests'\"'\"': configs}, sort_keys=True))\n'","path":null,"exit_code":0,"stdout_tail":"{\"pytest_config_digests\": {\"pyproject.toml\": \"06b18e430d0bd6b180dfdce288b11c3bd6cd2a03351c036ce7a6923353062e5c\", \"stac_fastapi/api/setup.cfg\": \"ad367368789e099cb6cea98d30d01e9a989de686f1225a6a1ee127f3255924fd\", \"stac_fastapi/api/tests/conftest.py\": \"27ea56e2b2922d093a58e68659d8b7c0499718291cd765eeaaa98043b6147e69\", \"stac_fastapi/extensions/setup.cfg\": \"265eeb7858b490c9fb07e0e118de0114ef86711b2f7d5e0a1784a376185d910a\", \"stac_fastapi/types/setup.cfg\": \"86b7d4819108a03f87e17a0226e9c9a772f38d3a4f3fa6f5c5ab59791b2a0df0\"}, \"test_digests\": {\"stac_fastapi/api/tests/benchmarks.py\": \"87a6d287af450c191b9a28a15b3597f003d79ee7347cb09d2bce3123d1e33e42\", \"stac_fastapi/api/tests/conftest.py\": \"27ea56e2b2922d093a58e68659d8b7c0499718291cd765eeaaa98043b6147e69\", \"stac_fastapi/api/tests/test_api.py\": \"97542d77ef2fdd834623dad06a93040fa1852c184308e63e011993b3921942d1\", \"stac_fastapi/api/tests/test_app.py\": \"1fdfcb3e553eede70f5e512d69f2651260706e045c64b8a1adae0343806072df\", \"stac_fastapi/api/tests/test_app_prefix.py\": \"eece09883b99a2bd8a483aa19e1e729f235114960675b4c5febbcb39f1f99cb7\", \"stac_fastapi/api/tests/test_middleware.py\": \"0c0beb7b1d1b8e7f2678778b6815ee9d7de6b47088ba35b04eb28f13812fa9bf\", \"stac_fastapi/api/tests/test_models.py\": \"447f3f8fc1b198b0a63a5afb9b2134a6354033cd25af77edd88642aadc2aa6e9\"}}\n","stderr_tail":"","stdout_sha256":"2fd4e4ee89ecd64a325513dc90f552fbf0a1617f137b907d11fc521f80bf1aba","log_path":"~/dev/nebius-hackathon/pilot/v2-P/stac-utils__stac-fastapi-729/runs/pilot-stac-utils__stac-fastapi-729-07063ad25c/logs/base/base-5.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T16:37:19.476753Z","duration_s":0.032385,"timed_out":false,"image_before":"35004c19-820f-4e13-bb75-59d26543563a","image_after":"1642e466-c9fb-4f90-8324-92f0a5c15896","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"base-6","seq":6,"branch_id":"base","kind":"command","cmd":"python -c '# Runs inside the task sandbox, so it must work on Python 3.7.\npackages = set()\ntry:\n    import importlib.metadata as metadata\nexcept ImportError:\n    import pkg_resources\n\n    for dist in pkg_resources.working_set:\n        packages.add(dist.project_name + \"==\" + dist.version)\nelse:\n    for distribution in metadata.distributions():\n        name = distribution.metadata.get(\"Name\")\n        if name:\n            packages.add(name + \"==\" + distribution.version)\nprint(\"\\n\".join(sorted(packages, key=str.casefold)))\n'","path":null,"exit_code":0,"stdout_tail":"annotated-doc==0.0.4\nannotated-types==0.7.0\nanyio==4.12.1\nattrs==25.4.0\nbackports.asyncio.runner==1.2.0\nbrotli-asgi==1.6.0\nbrotli==1.2.0\ncertifi==2026.1.4\ncfgv==3.5.0\ncharset-normalizer==3.4.4\nclick==8.3.1\ncoverage==7.13.4\ndistlib==0.4.0\nexceptiongroup==1.3.1\nfastapi-slim==0.129.1\nfastapi==0.129.2\nfilelock==3.24.3\ngeojson-pydantic==2.1.0\nh11==0.16.0\nhttpcore==1.0.9\nhttpx==0.28.1\nidentify==2.6.16\nidna==3.11\niniconfig==2.3.0\niso8601==2.1.0\nnodeenv==1.10.0\npackaging==25.0\npip==25.3\nplatformdirs==4.9.2\npluggy==1.6.0\npre_commit==4.5.1\npydantic-settings==2.13.1\npydantic==2.12.5\npydantic_core==2.41.5\nPygments==2.19.2\npytest-asyncio==1.3.0\npytest-cov==7.0.0\npytest==9.0.2\npython-dotenv==1.2.1\nPyYAML==6.0.3\nrequests==2.32.5\nsetuptools==80.9.0\nstac-fastapi.api==3.0.0b1\nstac-fastapi.extensions==3.0.0b1\nstac-fastapi.types==3.0.0b1\nstac-pydantic==3.5.0\nstarlette==0.52.1\ntomli==2.3.0\ntyping-inspection==0.4.2\ntyping_extensions==4.15.0\nurllib3==2.6.3\nvirtualenv==20.38.0\nwheel==0.45.1\n","stderr_tail":"","stdout_sha256":"55c9fce03a4366f02dd86339d5ddcb2b23575d8f7cbc93450293b16cc937bcb7","log_path":"~/dev/nebius-hackathon/pilot/v2-P/stac-utils__stac-fastapi-729/runs/pilot-stac-utils__stac-fastapi-729-07063ad25c/logs/base/base-6.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T16:37:20.730148Z","duration_s":0.071624,"timed_out":false,"image_before":"1642e466-c9fb-4f90-8324-92f0a5c15896","image_after":"0acd1019-4eba-4793-b027-7bdbf8a1ef14","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"base-7","seq":7,"branch_id":"base","kind":"command","cmd":"git add -A && git -c user.name=receipts -c user.email=receipts@localhost commit -q --allow-empty -m \"receipts snapshot\" && git rev-parse HEAD","path":null,"exit_code":0,"stdout_tail":"75902de1e8fde07976e60bf29003cef272dfc942\n","stderr_tail":"","stdout_sha256":"8e07fec1a681ddeb237b2ff3d87ac2e861a2832d5637d9a554ac99bd6716f449","log_path":"~/dev/nebius-hackathon/pilot/v2-P/stac-utils__stac-fastapi-729/runs/pilot-stac-utils__stac-fastapi-729-07063ad25c/logs/base/base-7.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T16:37:21.988370Z","duration_s":0.01807,"timed_out":false,"image_before":"0acd1019-4eba-4793-b027-7bdbf8a1ef14","image_after":"bbfe6aca-1e77-4d40-8d85-9a3792a365a6","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":"75902de1e8fde07976e60bf29003cef272dfc942"}
{"receipt_id":"base-8","seq":8,"branch_id":"base","kind":"command","cmd":"git -c core.quotePath=false ls-tree -z --name-only 75902de1e8fde07976e60bf29003cef272dfc942","path":null,"exit_code":0,"stdout_tail":".dockerignore\u0000.github\u0000.gitignore\u0000.pre-commit-config.yaml\u0000CHANGES.md\u0000CONTRIBUTING.md\u0000Dockerfile\u0000Dockerfile.docs\u0000LICENSE\u0000Makefile\u0000README.md\u0000RELEASING.md\u0000VERSION\u0000docker-compose.docs.yml\u0000docs\u0000pyproject.toml\u0000scripts\u0000stac_fastapi\u0000","stderr_tail":"","stdout_sha256":"c438ceda4e9b9d1cce00d4be285ff063fd4c5589fd931bc32233501c5d8ace10","log_path":"~/dev/nebius-hackathon/pilot/v2-P/stac-utils__stac-fastapi-729/runs/pilot-stac-utils__stac-fastapi-729-07063ad25c/logs/base/base-8.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T16:37:23.762003Z","duration_s":0.004043,"timed_out":false,"image_before":"bbfe6aca-1e77-4d40-8d85-9a3792a365a6","image_after":"c9a4ac64-9641-452b-ac8b-d3982d266e3f","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"base-9","seq":9,"branch_id":"base","kind":"command","cmd":"git -c core.quotePath=false ls-tree -z --name-only 75902de1e8fde07976e60bf29003cef272dfc942:src","path":null,"exit_code":128,"stdout_tail":"","stderr_tail":"fatal: Not a valid object name 75902de1e8fde07976e60bf29003cef272dfc942:src\n","stdout_sha256":"63900936dedc74e09c5abc0ea4261d2ba5068fe4138f6cdcc4f11fc5eddbea84","log_path":"~/dev/nebius-hackathon/pilot/v2-P/stac-utils__stac-fastapi-729/runs/pilot-stac-utils__stac-fastapi-729-07063ad25c/logs/base/base-9.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T16:37:24.915117Z","duration_s":0.004025,"timed_out":false,"image_before":"c9a4ac64-9641-452b-ac8b-d3982d266e3f","image_after":"bc305b6b-c48f-4ee2-9380-020699859f19","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
