PropsBase nested serialization applies parent include/exclude filters to child fields

Offen Anfängerfreundlich
#7,787 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

@harsh21234i arbeitet bereits daran.

Seit 10.11.2026.

  • #7788 von @harsh21234i — offen

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
78/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
python
Bereich
backend

Rechercherichtung

Beginne in packages/reflex-base/src/reflex_base/components/props.py, insbesondere bei _convert_to_camel_case() und den rekursiven Aufrufen von PropsBase.dict(). Prüfe, wie include und exclude auf der Parent- und Child-Ebene angewendet werden, und führe anschließend gezielte Tests für die verschachtelte Reproduktion mit Child und Parent aus oder ergänze sie. Fertig ist es, wenn Parent-Filter die verschachtelte Eigenschaft auswählen oder ausschließen, während die Felder des Child intakt bleiben, sofern nicht ausdrücklich ein verschachtelter Filter angegeben wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Description

PropsBase.dict(include=...) and PropsBase.dict(exclude=...) apply the parent object's field filters unchanged when recursively serializing nested PropsBase values. As a result, selecting or excluding a parent field can incorrectly remove every field from the nested object.

Reproduction

from reflex_base.components.component import field
from reflex_base.components.props import PropsBase


class Child(PropsBase):
    first_name: str = field()
    age: int = field()


class Parent(PropsBase):
    child: Child = field()


value = Parent(child=Child(first_name=A, age=1))
print(value.dict(include={child}))

Actual behavior

{child: {}}

The parent-level include={child} is passed into Child.dict(), where child is not a field, so all child fields are filtered out.

Expected behavior

{child: {firstName: A, age: 1}}

The parent filter should select the child property while nested serialization should retain the child's fields unless a nested filter is explicitly provided.

Relevant code

packages/reflex-base/src/reflex_base/components/props.py passes the same include and exclude sets into nested PropsBase.dict() calls in _convert_to_camel_case().

This also affects exclude, and can affect any component or integration that uses nested PropsBase values with selective serialization.

Vorherrschende Sprache
Python
Sterne
29k
Forks
1.8k
Ø Merge
2 T. 22 Std.
Gemergte PRs (30 T.)
143

Entwicklungsumgebung

In Codespaces öffnen

Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.

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 reflex-dev/reflex

Alle Issues in reflex-dev/reflex

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

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