diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ea6c3b9..4b76c5a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,13 @@ ### Features -- Add optional environment variables QUANTUM_SERVICE_URL and AUDIENCE_URL for a multi-client public API +- job name and summary + [#145](https://github.com/qilimanjaro-tech/qiboconnection/pull/145) + +- Job cancellation + [#142](https://github.com/qilimanjaro-tech/qiboconnection/pull/142) + +- Add environment variables QUANTUM_SERVICE_URL and AUDIENCE_URL for a multi-client public API [#136](https://github.com/qilimanjaro-tech/qiboconnection/pull/136/files) ## 0.15.3 @@ -11,6 +17,13 @@ - Introduction of QProgram [#139](https://github.com/qilimanjaro-tech/qiboconnection/pull/139) +## 0.16.0 + +### Features + +- Job cancellation + [#142](https://github.com/qilimanjaro-tech/qiboconnection/pull/142) + ## 0.15.1 ### Improvements diff --git a/src/qiboconnection/__init__.py b/src/qiboconnection/__init__.py index cf5dfef7..02379797 100644 --- a/src/qiboconnection/__init__.py +++ b/src/qiboconnection/__init__.py @@ -23,7 +23,7 @@ """ -__version__ = "0.16.0" +__version__ = "0.16.5" from .about import about diff --git a/src/qiboconnection/util.py b/src/qiboconnection/util.py index fed5bc71..96b3f77e 100644 --- a/src/qiboconnection/util.py +++ b/src/qiboconnection/util.py @@ -86,14 +86,16 @@ def decode_results_from_circuit(http_response: str) -> CircuitResult | dict: def decode_results_from_qprogram(http_response: str) -> dict: - """Decode the results from the Qililab experiment execution + """Decode the results from QProgram execution. Args: http_response (str): the execution results as an Http Response Returns: - dict: object containing a serialized representation of a qililab Results object + dict: qprogram results + """ + return decode_jsonified_dict(http_response) diff --git a/tests/unit/test_job_result.py b/tests/unit/test_job_result.py index c4c8602a..52bcf369 100644 --- a/tests/unit/test_job_result.py +++ b/tests/unit/test_job_result.py @@ -23,14 +23,14 @@ def test_job_result_creation(): def test_job_result_qprogram_works(): - """Test we are rising exceptions to inform correctly that PROGRAMS are not currently supported.""" + """Test QProgrom results are returned as dicts""" job_result = JobResult( job_id=0, - http_response="W3sicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNTEsICIxIjogMC40OX19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjY0OSwgIjEiOiAwLjM1MX19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjU3MiwgIjEiOiAwLjQyOH19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjYzNywgIjEiOiAwLjM2M319LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjY5MSwgIjEiOiAwLjMwOX19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjcwOCwgIjEiOiAwLjI5Mn19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjY4MSwgIjEiOiAwLjMxOX19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjY4NiwgIjEiOiAwLjMxNH19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjY2NSwgIjEiOiAwLjMzNX19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjcwNCwgIjEiOiAwLjI5Nn19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjYzOCwgIjEiOiAwLjM2Mn19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjYzLCAiMSI6IDAuMzd9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC43LCAiMSI6IDAuM319LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjY5MywgIjEiOiAwLjMwN319LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjcwNSwgIjEiOiAwLjI5NX19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjY5MywgIjEiOiAwLjMwN319LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjcwNCwgIjEiOiAwLjI5Nn19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjY4OSwgIjEiOiAwLjMxMX19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjczMiwgIjEiOiAwLjI2OH19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjcxLCAiMSI6IDAuMjl9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42MTcsICIxIjogMC4zODN9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NDUsICIxIjogMC4zNTV9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42OTcsICIxIjogMC4zMDN9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42MzYsICIxIjogMC4zNjR9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NTEsICIxIjogMC4zNDl9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NjYsICIxIjogMC4zMzR9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42MzcsICIxIjogMC4zNjN9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42MTksICIxIjogMC4zODF9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC40NjIsICIxIjogMC41Mzh9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42OTksICIxIjogMC4zMDF9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42ODYsICIxIjogMC4zMTR9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NjEsICIxIjogMC4zMzl9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42OTksICIxIjogMC4zMDF9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NzgsICIxIjogMC4zMjJ9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42MzksICIxIjogMC4zNjF9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NzMsICIxIjogMC4zMjd9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NDEsICIxIjogMC4zNTl9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42ODQsICIxIjogMC4zMTZ9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NzMsICIxIjogMC4zMjd9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42ODUsICIxIjogMC4zMTV9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NTUsICIxIjogMC4zNDV9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC41ODQsICIxIjogMC40MTZ9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NjksICIxIjogMC4zMzF9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42MSwgIjEiOiAwLjM5fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjM1LCAiMSI6IDAuMzY1fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjQ2LCAiMSI6IDAuMzU0fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjU1LCAiMSI6IDAuMzQ1fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjA0LCAiMSI6IDAuMzk2fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjM3LCAiMSI6IDAuMzYzfX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjQ1LCAiMSI6IDAuMzU1fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjY4LCAiMSI6IDAuMzMyfX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNywgIjEiOiAwLjN9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NTcsICIxIjogMC4zNDN9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC41OTQsICIxIjogMC40MDZ9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42MjMsICIxIjogMC4zNzd9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NjMsICIxIjogMC4zMzd9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42ODEsICIxIjogMC4zMTl9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42OCwgIjEiOiAwLjMyfX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjc1LCAiMSI6IDAuMzI1fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjM1LCAiMSI6IDAuMzY1fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjQyLCAiMSI6IDAuMzU4fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNTksICIxIjogMC40MX19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjYzLCAiMSI6IDAuMzd9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42MzgsICIxIjogMC4zNjJ9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NzIsICIxIjogMC4zMjh9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NTQsICIxIjogMC4zNDZ9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42MzgsICIxIjogMC4zNjJ9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42MjEsICIxIjogMC4zNzl9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NDUsICIxIjogMC4zNTV9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NzEsICIxIjogMC4zMjl9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC41MTEsICIxIjogMC40ODl9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42MDEsICIxIjogMC4zOTl9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42MjgsICIxIjogMC4zNzJ9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42MjgsICIxIjogMC4zNzJ9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42MjEsICIxIjogMC4zNzl9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NjksICIxIjogMC4zMzF9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NDksICIxIjogMC4zNTF9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NjksICIxIjogMC4zMzF9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC42NDcsICIxIjogMC4zNTN9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC40MjUsICIxIjogMC41NzV9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC41ODEsICIxIjogMC40MTl9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC41NywgIjEiOiAwLjQzfX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjIyLCAiMSI6IDAuMzc4fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjI0LCAiMSI6IDAuMzc2fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNTk0LCAiMSI6IDAuNDA2fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjE2LCAiMSI6IDAuMzg0fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjYxLCAiMSI6IDAuMzM5fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjU2LCAiMSI6IDAuMzQ0fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNTY0LCAiMSI6IDAuNDM2fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNTgyLCAiMSI6IDAuNDE4fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjMyLCAiMSI6IDAuMzY4fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjU3LCAiMSI6IDAuMzQzfX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjM2LCAiMSI6IDAuMzY0fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNTU2LCAiMSI6IDAuNDQ0fX0sIHsicHJvYmFiaWxpdGllcyI6IHsiMCI6IDAuNjYsICIxIjogMC4zNH19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjYzOCwgIjEiOiAwLjM2Mn19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjU1MSwgIjEiOiAwLjQ0OX19LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjYxMywgIjEiOiAwLjM4N319LCB7InByb2JhYmlsaXRpZXMiOiB7IjAiOiAwLjU0LCAiMSI6IDAuNDZ9fSwgeyJwcm9iYWJpbGl0aWVzIjogeyIwIjogMC41NjgsICIxIjogMC40MzJ9fV0=", + http_response="eyJ0eXBlIjogIlFQcm9ncmFtIiwgImF0dHJpYnV0ZXMiOiB7Il9ib2R5IjogeyJ0eXBlIjogIkJsb2NrIiwgImF0dHJpYnV0ZXMiOiB7Il91dWlkIjogeyJ0eXBlIjogIlVVSUQiLCAidXVpZCI6ICI2YmNlYjQ1MS0wZWUxLTQ1N2MtYTE1Ny1iMmYyZDUzOGZmYjUifSwgImVsZW1lbnRzIjogeyJ0eXBlIjogImxpc3QiLCAiZWxlbWVudHMiOiBbeyJ0eXBlIjogIkF2ZXJhZ2UiLCAiYXR0cmlidXRlcyI6IHsiX3V1aWQiOiB7InR5cGUiOiAiVVVJRCIsICJ1dWlkIjogIjIwM2MzY2U2LTVjNzktNGQwZS1iMzYzLTgyZDQ4NDgwYWI5OCJ9LCAiZWxlbWVudHMiOiB7InR5cGUiOiAibGlzdCIsICJlbGVtZW50cyI6IFt7InR5cGUiOiAiRm9yTG9vcCIsICJhdHRyaWJ1dGVzIjogeyJfdXVpZCI6IHsidHlwZSI6ICJVVUlEIiwgInV1aWQiOiAiYzhkNjYzMzgtYzU0OS00MjcwLWI0NjAtNjA4NmE0OTE0ODMzIn0sICJlbGVtZW50cyI6IHsidHlwZSI6ICJsaXN0IiwgImVsZW1lbnRzIjogW3sidHlwZSI6ICJTZXRHYWluIiwgImF0dHJpYnV0ZXMiOiB7Il91dWlkIjogeyJ0eXBlIjogIlVVSUQiLCAidXVpZCI6ICJmZGFkMjAwOC1iODViLTRiYjYtYjIwYi1jZjQ2NmQxZGFlNTgifSwgImJ1cyI6ICJkcml2ZV9xMF9idXMiLCAiZ2FpbiI6IHsidHlwZSI6ICJGbG9hdFZhcmlhYmxlIiwgImF0dHJpYnV0ZXMiOiB7Il91dWlkIjogeyJ0eXBlIjogIlVVSUQiLCAidXVpZCI6ICI2MzVkZjdjYS1jZTM4LTRkNjItOWZlZC03ZjFjYmFmNzFlNzkifSwgIl9zb3VyY2UiOiB7InR5cGUiOiAiVmFsdWVTb3VyY2UiLCAiYXR0cmlidXRlcyI6IHsidmFsdWUiOiAiRnJlZSJ9fSwgIl92YWx1ZSI6IG51bGwsICJfZG9tYWluIjogeyJ0eXBlIjogIkRvbWFpbiIsICJhdHRyaWJ1dGVzIjogeyJ2YWx1ZSI6ICJWb2x0YWdlIn19fX19fSwgeyJ0eXBlIjogIlBsYXkiLCAiYXR0cmlidXRlcyI6IHsiX3V1aWQiOiB7InR5cGUiOiAiVVVJRCIsICJ1dWlkIjogImFiY2FjZDExLWU0YWEtNDI5Yi1iNjNjLTNhMjUwOWJjYTE3ZiJ9LCAiYnVzIjogImRyaXZlX3EwX2J1cyIsICJ3YXZlZm9ybSI6IHsidHlwZSI6ICJJUVBhaXIiLCAiYXR0cmlidXRlcyI6IHsiSSI6IHsidHlwZSI6ICJHYXVzc2lhbiIsICJhdHRyaWJ1dGVzIjogeyJhbXBsaXR1ZGUiOiAxLjAsICJkdXJhdGlvbiI6IDQwLCAibnVtX3NpZ21hcyI6IDQuNX19LCAiUSI6IHsidHlwZSI6ICJEcmFnQ29ycmVjdGlvbiIsICJhdHRyaWJ1dGVzIjogeyJkcmFnX2NvZWZmaWNpZW50IjogLTIuMCwgIndhdmVmb3JtIjogeyJ0eXBlIjogIkdhdXNzaWFuIiwgImF0dHJpYnV0ZXMiOiB7ImFtcGxpdHVkZSI6IDEuMCwgImR1cmF0aW9uIjogNDAsICJudW1fc2lnbWFzIjogNC41fX19fX19LCAid2FpdF90aW1lIjogbnVsbH19LCB7InR5cGUiOiAiU3luYyIsICJhdHRyaWJ1dGVzIjogeyJfdXVpZCI6IHsidHlwZSI6ICJVVUlEIiwgInV1aWQiOiAiOWRhZDJhYzYtYzk1OC00Y2Q5LTg1MzItMmMyMzJhNTJkMzg3In0sICJidXNlcyI6IG51bGx9fSwgeyJ0eXBlIjogIlBsYXkiLCAiYXR0cmlidXRlcyI6IHsiX3V1aWQiOiB7InR5cGUiOiAiVVVJRCIsICJ1dWlkIjogIjRlMmEzYTc1LWJkYzEtNDEzZi04ZDg1LTY3MDM5NThkMzg3NSJ9LCAiYnVzIjogInJlYWRvdXRfcTBfYnVzIiwgIndhdmVmb3JtIjogeyJ0eXBlIjogIklRUGFpciIsICJhdHRyaWJ1dGVzIjogeyJJIjogeyJ0eXBlIjogIlNxdWFyZSIsICJhdHRyaWJ1dGVzIjogeyJhbXBsaXR1ZGUiOiAxLjAsICJkdXJhdGlvbiI6IDIwMDB9fSwgIlEiOiB7InR5cGUiOiAiU3F1YXJlIiwgImF0dHJpYnV0ZXMiOiB7ImFtcGxpdHVkZSI6IDAuMCwgImR1cmF0aW9uIjogMjAwMH19fX0sICJ3YWl0X3RpbWUiOiA0MH19LCB7InR5cGUiOiAiQWNxdWlyZSIsICJhdHRyaWJ1dGVzIjogeyJfdXVpZCI6IHsidHlwZSI6ICJVVUlEIiwgInV1aWQiOiAiM2Y2YmNhYjctOTJlOS00M2I4LTg5YjAtOTNiNDcxMDNjNDlhIn0sICJidXMiOiAicmVhZG91dF9xMF9idXMiLCAid2VpZ2h0cyI6IHsidHlwZSI6ICJJUVBhaXIiLCAiYXR0cmlidXRlcyI6IHsiSSI6IHsidHlwZSI6ICJTcXVhcmUiLCAiYXR0cmlidXRlcyI6IHsiYW1wbGl0dWRlIjogMS4wLCAiZHVyYXRpb24iOiAyMDAwfX0sICJRIjogeyJ0eXBlIjogIlNxdWFyZSIsICJhdHRyaWJ1dGVzIjogeyJhbXBsaXR1ZGUiOiAxLjAsICJkdXJhdGlvbiI6IDIwMDB9fX19LCAibmFtZSI6IG51bGx9fSwgeyJ0eXBlIjogIldhaXQiLCAiYXR0cmlidXRlcyI6IHsiX3V1aWQiOiB7InR5cGUiOiAiVVVJRCIsICJ1dWlkIjogIjMzNTQzMDdlLWU0OTUtNDNhMy1hODI1LTE5ZGEzZTcxMTA0ZSJ9LCAiYnVzIjogInJlYWRvdXRfcTBfYnVzIiwgImR1cmF0aW9uIjogMTAwMDB9fV19LCAidmFyaWFibGUiOiB7InR5cGUiOiAiRmxvYXRWYXJpYWJsZSIsICJhdHRyaWJ1dGVzIjogeyJfdXVpZCI6IHsidHlwZSI6ICJVVUlEIiwgInV1aWQiOiAiNjM1ZGY3Y2EtY2UzOC00ZDYyLTlmZWQtN2YxY2JhZjcxZTc5In0sICJfc291cmNlIjogeyJ0eXBlIjogIlZhbHVlU291cmNlIiwgImF0dHJpYnV0ZXMiOiB7InZhbHVlIjogIkZyZWUifX0sICJfdmFsdWUiOiBudWxsLCAiX2RvbWFpbiI6IHsidHlwZSI6ICJEb21haW4iLCAiYXR0cmlidXRlcyI6IHsidmFsdWUiOiAiVm9sdGFnZSJ9fX19LCAic3RhcnQiOiAwLjAsICJzdG9wIjogMS4wLCAic3RlcCI6IDAuMX19XX0sICJzaG90cyI6IDEwMDB9fV19fX0sICJfYnVzZXMiOiB7InR5cGUiOiAic2V0IiwgImVsZW1lbnRzIjogWyJyZWFkb3V0X3EwX2J1cyIsICJkcml2ZV9xMF9idXMiXX0sICJfdmFyaWFibGVzIjogeyJ0eXBlIjogImxpc3QiLCAiZWxlbWVudHMiOiBbeyJ0eXBlIjogIkZsb2F0VmFyaWFibGUiLCAiYXR0cmlidXRlcyI6IHsiX3V1aWQiOiB7InR5cGUiOiAiVVVJRCIsICJ1dWlkIjogIjYzNWRmN2NhLWNlMzgtNGQ2Mi05ZmVkLTdmMWNiYWY3MWU3OSJ9LCAiX3NvdXJjZSI6IHsidHlwZSI6ICJWYWx1ZVNvdXJjZSIsICJhdHRyaWJ1dGVzIjogeyJ2YWx1ZSI6ICJGcmVlIn19LCAiX3ZhbHVlIjogbnVsbCwgIl9kb21haW4iOiB7InR5cGUiOiAiRG9tYWluIiwgImF0dHJpYnV0ZXMiOiB7InZhbHVlIjogIlZvbHRhZ2UifX19fV19LCAiX2Jsb2NrX3N0YWNrIjogeyJ0eXBlIjogImRlcXVlIiwgImVsZW1lbnRzIjogW3sidHlwZSI6ICJCbG9jayIsICJhdHRyaWJ1dGVzIjogeyJfdXVpZCI6IHsidHlwZSI6ICJVVUlEIiwgInV1aWQiOiAiNmJjZWI0NTEtMGVlMS00NTdjLWExNTctYjJmMmQ1MzhmZmI1In0sICJlbGVtZW50cyI6IHsidHlwZSI6ICJsaXN0IiwgImVsZW1lbnRzIjogW3sidHlwZSI6ICJBdmVyYWdlIiwgImF0dHJpYnV0ZXMiOiB7Il91dWlkIjogeyJ0eXBlIjogIlVVSUQiLCAidXVpZCI6ICIyMDNjM2NlNi01Yzc5LTRkMGUtYjM2My04MmQ0ODQ4MGFiOTgifSwgImVsZW1lbnRzIjogeyJ0eXBlIjogImxpc3QiLCAiZWxlbWVudHMiOiBbeyJ0eXBlIjogIkZvckxvb3AiLCAiYXR0cmlidXRlcyI6IHsiX3V1aWQiOiB7InR5cGUiOiAiVVVJRCIsICJ1dWlkIjogImM4ZDY2MzM4LWM1NDktNDI3MC1iNDYwLTYwODZhNDkxNDgzMyJ9LCAiZWxlbWVudHMiOiB7InR5cGUiOiAibGlzdCIsICJlbGVtZW50cyI6IFt7InR5cGUiOiAiU2V0R2FpbiIsICJhdHRyaWJ1dGVzIjogeyJfdXVpZCI6IHsidHlwZSI6ICJVVUlEIiwgInV1aWQiOiAiZmRhZDIwMDgtYjg1Yi00YmI2LWIyMGItY2Y0NjZkMWRhZTU4In0sICJidXMiOiAiZHJpdmVfcTBfYnVzIiwgImdhaW4iOiB7InR5cGUiOiAiRmxvYXRWYXJpYWJsZSIsICJhdHRyaWJ1dGVzIjogeyJfdXVpZCI6IHsidHlwZSI6ICJVVUlEIiwgInV1aWQiOiAiNjM1ZGY3Y2EtY2UzOC00ZDYyLTlmZWQtN2YxY2JhZjcxZTc5In0sICJfc291cmNlIjogeyJ0eXBlIjogIlZhbHVlU291cmNlIiwgImF0dHJpYnV0ZXMiOiB7InZhbHVlIjogIkZyZWUifX0sICJfdmFsdWUiOiBudWxsLCAiX2RvbWFpbiI6IHsidHlwZSI6ICJEb21haW4iLCAiYXR0cmlidXRlcyI6IHsidmFsdWUiOiAiVm9sdGFnZSJ9fX19fX0sIHsidHlwZSI6ICJQbGF5IiwgImF0dHJpYnV0ZXMiOiB7Il91dWlkIjogeyJ0eXBlIjogIlVVSUQiLCAidXVpZCI6ICJhYmNhY2QxMS1lNGFhLTQyOWItYjYzYy0zYTI1MDliY2ExN2YifSwgImJ1cyI6ICJkcml2ZV9xMF9idXMiLCAid2F2ZWZvcm0iOiB7InR5cGUiOiAiSVFQYWlyIiwgImF0dHJpYnV0ZXMiOiB7IkkiOiB7InR5cGUiOiAiR2F1c3NpYW4iLCAiYXR0cmlidXRlcyI6IHsiYW1wbGl0dWRlIjogMS4wLCAiZHVyYXRpb24iOiA0MCwgIm51bV9zaWdtYXMiOiA0LjV9fSwgIlEiOiB7InR5cGUiOiAiRHJhZ0NvcnJlY3Rpb24iLCAiYXR0cmlidXRlcyI6IHsiZHJhZ19jb2VmZmljaWVudCI6IC0yLjAsICJ3YXZlZm9ybSI6IHsidHlwZSI6ICJHYXVzc2lhbiIsICJhdHRyaWJ1dGVzIjogeyJhbXBsaXR1ZGUiOiAxLjAsICJkdXJhdGlvbiI6IDQwLCAibnVtX3NpZ21hcyI6IDQuNX19fX19fSwgIndhaXRfdGltZSI6IG51bGx9fSwgeyJ0eXBlIjogIlN5bmMiLCAiYXR0cmlidXRlcyI6IHsiX3V1aWQiOiB7InR5cGUiOiAiVVVJRCIsICJ1dWlkIjogIjlkYWQyYWM2LWM5NTgtNGNkOS04NTMyLTJjMjMyYTUyZDM4NyJ9LCAiYnVzZXMiOiBudWxsfX0sIHsidHlwZSI6ICJQbGF5IiwgImF0dHJpYnV0ZXMiOiB7Il91dWlkIjogeyJ0eXBlIjogIlVVSUQiLCAidXVpZCI6ICI0ZTJhM2E3NS1iZGMxLTQxM2YtOGQ4NS02NzAzOTU4ZDM4NzUifSwgImJ1cyI6ICJyZWFkb3V0X3EwX2J1cyIsICJ3YXZlZm9ybSI6IHsidHlwZSI6ICJJUVBhaXIiLCAiYXR0cmlidXRlcyI6IHsiSSI6IHsidHlwZSI6ICJTcXVhcmUiLCAiYXR0cmlidXRlcyI6IHsiYW1wbGl0dWRlIjogMS4wLCAiZHVyYXRpb24iOiAyMDAwfX0sICJRIjogeyJ0eXBlIjogIlNxdWFyZSIsICJhdHRyaWJ1dGVzIjogeyJhbXBsaXR1ZGUiOiAwLjAsICJkdXJhdGlvbiI6IDIwMDB9fX19LCAid2FpdF90aW1lIjogNDB9fSwgeyJ0eXBlIjogIkFjcXVpcmUiLCAiYXR0cmlidXRlcyI6IHsiX3V1aWQiOiB7InR5cGUiOiAiVVVJRCIsICJ1dWlkIjogIjNmNmJjYWI3LTkyZTktNDNiOC04OWIwLTkzYjQ3MTAzYzQ5YSJ9LCAiYnVzIjogInJlYWRvdXRfcTBfYnVzIiwgIndlaWdodHMiOiB7InR5cGUiOiAiSVFQYWlyIiwgImF0dHJpYnV0ZXMiOiB7IkkiOiB7InR5cGUiOiAiU3F1YXJlIiwgImF0dHJpYnV0ZXMiOiB7ImFtcGxpdHVkZSI6IDEuMCwgImR1cmF0aW9uIjogMjAwMH19LCAiUSI6IHsidHlwZSI6ICJTcXVhcmUiLCAiYXR0cmlidXRlcyI6IHsiYW1wbGl0dWRlIjogMS4wLCAiZHVyYXRpb24iOiAyMDAwfX19fSwgIm5hbWUiOiBudWxsfX0sIHsidHlwZSI6ICJXYWl0IiwgImF0dHJpYnV0ZXMiOiB7Il91dWlkIjogeyJ0eXBlIjogIlVVSUQiLCAidXVpZCI6ICIzMzU0MzA3ZS1lNDk1LTQzYTMtYTgyNS0xOWRhM2U3MTEwNGUifSwgImJ1cyI6ICJyZWFkb3V0X3EwX2J1cyIsICJkdXJhdGlvbiI6IDEwMDAwfX1dfSwgInZhcmlhYmxlIjogeyJ0eXBlIjogIkZsb2F0VmFyaWFibGUiLCAiYXR0cmlidXRlcyI6IHsiX3V1aWQiOiB7InR5cGUiOiAiVVVJRCIsICJ1dWlkIjogIjYzNWRmN2NhLWNlMzgtNGQ2Mi05ZmVkLTdmMWNiYWY3MWU3OSJ9LCAiX3NvdXJjZSI6IHsidHlwZSI6ICJWYWx1ZVNvdXJjZSIsICJhdHRyaWJ1dGVzIjogeyJ2YWx1ZSI6ICJGcmVlIn19LCAiX3ZhbHVlIjogbnVsbCwgIl9kb21haW4iOiB7InR5cGUiOiAiRG9tYWluIiwgImF0dHJpYnV0ZXMiOiB7InZhbHVlIjogIlZvbHRhZ2UifX19fSwgInN0YXJ0IjogMC4wLCAic3RvcCI6IDEuMCwgInN0ZXAiOiAwLjF9fV19LCAic2hvdHMiOiAxMDAwfX1dfX19XX19fQ==", job_type="qprogram", ) - assert isinstance(job_result.data, (dict | list)) + assert isinstance(job_result.data, dict) def test_job_result_program_raises_error():