Gabor Hosszu
09/16/2025, 10:45 AMawait step.state.result()stepTraceback (most recent call last):
  File "/home/gabor/workspace/sweap/lead-companion-backend/.venv/lib/python3.12/site-packages/prefect/_result_records.py", line 199, in deserialize
    instance = cls.model_validate_json(data)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gabor/workspace/sweap/lead-companion-backend/.venv/lib/python3.12/site-packages/pydantic/main.py", line 746, in model_validate_json
    return cls.__pydantic_validator__.validate_json(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pydantic_core._pydantic_core.ValidationError: 1 validation error for ResultRecord
  Invalid JSON: expected value at line 1 column 1 [type=json_invalid, input_value=b'gAWV6QAAAAAAAAB9lIwHY29...yaXZhdGVfX5ROdWJzLg==\n', input_type=bytes]
    For further information visit <https://errors.pydantic.dev/2.11/v/json_invalid>
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/gabor/workspace/sweap/lead-companion-backend/.venv/lib/python3.12/site-packages/prefect/client/schemas/objects.py", line 241, in aresult
    return await get_state_result(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gabor/workspace/sweap/lead-companion-backend/.venv/lib/python3.12/site-packages/prefect/states.py", line 85, in get_state_result
    return await _get_state_result(
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gabor/workspace/sweap/lead-companion-backend/.venv/lib/python3.12/site-packages/prefect/states.py", line 160, in _get_state_result
    result = await _get_state_result_data_with_retries(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gabor/workspace/sweap/lead-companion-backend/.venv/lib/python3.12/site-packages/prefect/states.py", line 117, in _get_state_result_data_with_retries
    record = await ResultStore._from_metadata(state.data)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gabor/workspace/sweap/lead-companion-backend/.venv/lib/python3.12/site-packages/prefect/results.py", line 392, in _from_metadata
    result = await store.aread(metadata.storage_key)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gabor/workspace/sweap/lead-companion-backend/.venv/lib/python3.12/site-packages/prefect/results.py", line 676, in aread
    return await self._read(key=key, holder=holder, _sync=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gabor/workspace/sweap/lead-companion-backend/.venv/lib/python3.12/site-packages/prefect/results.py", line 633, in _read
    result_record: ResultRecord[Any] = ResultRecord.deserialize(
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gabor/workspace/sweap/lead-companion-backend/.venv/lib/python3.12/site-packages/prefect/_result_records.py", line 204, in deserialize
    result = backup_serializer.loads(data)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gabor/workspace/sweap/lead-companion-backend/.venv/lib/python3.12/site-packages/prefect/serializers.py", line 149, in loads
    return pickler.loads(base64.decodebytes(blob))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'src'Marvin
09/16/2025, 10:45 AMMarvin
09/16/2025, 10:50 AMsrcsrc.my_module.MyClassawait step.state.result()srcPYTHONPATH.result()PYTHONPATHsrcpip install -e .srcsrcsrcpip install -e .src...export PYTHONPATH=$PWD
     # or if your code is under ./src, export PYTHONPATH=$PWD/srcimport sys, os
     sys.path.append(os.path.abspath("src"))  # or repo root depending on your layoutfrom prefect import flow
     from prefect.serializers import JSONSerializer
     @flow(result_serializer=JSONSerializer())
     def my_flow():
         return {"ok": True}export PREFECT_RESULTS_DEFAULT_SERIALIZER=jsonPYTHONPATH=srcawait step.state.result()src.*PYTHONPATH=srcMarvin
09/16/2025, 10:50 AMGabor Hosszu
09/16/2025, 11:48 AMMarvin
09/16/2025, 11:50 AMMarvin
09/16/2025, 11:51 AMfrom prefect import flow
  from prefect.serializers import JSONSerializer
  @flow(result_serializer=JSONSerializer())
  def my_flow():
      model = MyModel(...)
      return model.model_dump()  # Pydantic v2
      # or: return model.dict()  # Pydantic v1export PREFECT_RESULTS_DEFAULT_SERIALIZER=json# my_project/serialization.py
     from pydantic import BaseModel
     from prefect.serializers import prefect_json_object_encoder
     def pydantic_first_encoder(obj):
         if isinstance(obj, BaseModel):
             dump = getattr(obj, "model_dump", None)  # v2
             return dump() if dump else obj.dict()    # v1 fallback
         return prefect_json_object_encoder(obj)from prefect import flow
     from prefect.serializers import JSONSerializer
     @flow(result_serializer=JSONSerializer(
         object_encoder="my_project.serialization.pydantic_first_encoder"
     ))
     def my_flow():
         return MyModel(...)await state.result()src.*src