ComplexTypeMetaDataMixin.deserialize has no None guard.
還沒有人認領這個 Issue。
評估
研究方向
閱讀 metadata.py,找到 issue 指出缺少 None 檢查的 ComplexTypeMetaDataMixin.deserialize。首先執行或調整提供的 BaseDataClass.deserialize(None, set()) pytest 範例。當反序列化對此輸入傳回 None,且迴歸測試通過時,即表示完成。
由索引模型根據 Issue 內容生成。
描述
Steps to Reproduce:
- Define a Rune type with an optional complex-type field (cardinality 0..1).
- Construct an instance from a dict that omits the field, or pass None for it
explicitly — pydantic calls the field's PlainValidator with obj=None. - Observe the exception.
Expected Result:
None is returned, allowing the optional field to remain absent.
Actual Result:
PydanticCustomError is raised:
"Expected either or dict but got <class 'NoneType'>."
Environment:
rune-python-runtime 2.2.2, pydantic 2.14.1, Python 3.11
Additional Context:
metadata.py ComplexTypeMetaDataMixin.deserialize performs no None check before
the isinstance dispatch chain. None is not a list, not an instance of cls,
not a Reference, and not a dict, so it falls through to the error branch.
Fix: add if obj is None: return None as the first check in deserialize.
import pytest
from pydantic_core import PydanticCustomError
from rune.runtime.base_data_class import BaseDataClass
def test_r1_complex_type_deserialize_none_raises():
'''Passing None to ComplexTypeMetaDataMixin.deserialize raises PydanticCustomError instead of returning None.'''
with pytest.raises(PydanticCustomError):
BaseDataClass.deserialize(None, set())
- 主要語言
- Python
- 星號
- 0
- 分支
- 4
- 平均合併
- 1 天 11 小時
- 30 天內合併 PR
- 3
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 沒有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
finos/rune-python-runtime 的其他 Issue
-
難度 2/5 1-3 小時 新手友好度 78/100
finos/rune-python-runtime#52 ·
-
難度 2/5 1-3 小時 新手友好度 78/100
finos/rune-python-runtime#51 ·
-
難度 2/5 1-3 小時 新手友好度 76/100
finos/rune-python-runtime#50 ·
-
難度 2/5 1-3 小時 新手友好度 76/100
finos/rune-python-runtime#48 ·
-
難度 2/5 1-3 小時 新手友好度 84/100
finos/rune-python-runtime#43 ·
查看 finos/rune-python-runtime 的全部 Issue
相似的 Issue
-
bug
難度 2/5 1-3 小時 新手友好度 78/100
conda-forge/conda-forge-bot#7025 ·
維護者通常 1 天內回覆
-
area:ci
難度 1/5 1 小時以內 新手友好度 74/100
catincloud-labs/dagster-dex#149 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 84/100
home-assistant/core#188424 ·
維護者通常 1 天內回覆
-
Review backlog (docs-currency): README 'CI run' link lands on a run whose overall badge is cancelled未關閉agent/reviewer needs-kind needs-triage
難度 2/5 1-3 小時 新手友好度 63/100
projectbluefin/utah#880 · 2 則留言 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 76/100
redis/memtier_benchmark#850 ·
維護者通常 1 天內回覆