ComplexTypeMetaDataMixin.deserialize has no None guard.
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 1/5
- Geschätzter Aufwand
- Unter einer Stunde
- Anfängerfreundlichkeit
- 84/100
Rechercherichtung
Lies metadata.py und finde ComplexTypeMetaDataMixin.deserialize, bei dem laut Issue die None-Prüfung fehlt. Führe zunächst das bereitgestellte pytest-Beispiel für BaseDataClass.deserialize(None, set()) aus oder passe es an. Die Aufgabe ist erledigt, wenn die Deserialisierung für diese Eingabe None zurückgibt und der Regressionstest besteht.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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())
- Vorherrschende Sprache
- Python
- Sterne
- 0
- Forks
- 4
- Ø Merge
- 1 T. 11 Std.
- Gemergte PRs (30 T.)
- 3
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus finos/rune-python-runtime
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
finos/rune-python-runtime#52 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
finos/rune-python-runtime#51 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
finos/rune-python-runtime#50 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
finos/rune-python-runtime#48 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
finos/rune-python-runtime#43 ·
Alle Issues in finos/rune-python-runtime
Ähnliche Issues
-
Project submission:Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 72/100
slavakurilyak/awesome-ai-agents#845 ·
Maintainer antworten meist innerhalb von 1 Tag
-
tests: pin that the atomic writers in utils/paths.py stage the temporary file in the target's directoryEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offendifficulty:2 enhancement good first issue
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 92/100
MakazhanAlpamys/Soup#2178 ·
Maintainer antworten meist innerhalb von 1 Tag
-
[BUG] dcg.waggr permutation p-values are folded twice, so near-zero scores get the smallest p-valuesOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
scverse/rapids-singlecell#854 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Slang input: int8_t4_packed and uint8_t4_packed are copied into CrossGLEvtl. vergeben @ninglinLiu hat das heute übernommen. Offenarea:frontend backend:slang bug direction:input
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
Maintainer antworten meist innerhalb von 13 Tagen