Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

ComplexTypeMetaDataMixin.deserialize has no None guard.

Offen Anfängerfreundlich
#47 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
1/5
Geschätzter Aufwand
Unter einer Stunde
Anfängerfreundlichkeit
84/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
python
Bereich
backend

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:
  1. Define a Rune type with an optional complex-type field (cardinality 0..1).
  2. 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.
  3. 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

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus finos/rune-python-runtime

Alle Issues in finos/rune-python-runtime

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.