PropsBase nested serialization applies parent include/exclude filters to child fields
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 78/100
Piste de recherche
Commencez dans packages/reflex-base/src/reflex_base/components/props.py, en particulier dans _convert_to_camel_case() et ses appels récursifs à PropsBase.dict(). Vérifiez comment include et exclude sont appliqués aux niveaux du Parent et du Child, puis exécutez ou ajoutez des tests ciblés pour la reproduction imbriquée de Child et Parent. Le travail est terminé lorsque les filtres du Parent sélectionnent ou excluent la propriété imbriquée, tandis que les champs du Child restent intacts sauf si un filtre imbriqué est explicitement fourni.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- Python
- Étoiles
- 29k
- Forks
- 1.8k
- Merge moyen
- 2 j 22 h
- PR mergées (30 j)
- 143
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de reflex-dev/reflex
-
Operations on a list[T] | None var throw when the value is NonePeut-être pris @masenf l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
reflex-dev/reflex#7826 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
reflex-dev/reflex#7825 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
OTel: add trace_flags to JSON log records so unsampled trace ids are recognizablePeut-être pris @ShaanGS l’a pris il y a 7 jours. Ouverteenhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
reflex-dev/reflex#7729 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
0.9.12 changelog follow-ups: the #7132 "_get_was_touched" entry describes unreachable behaviour, #7115's hasattr/getattr change is undocumented, #7131's wordingPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
reflex-dev/reflex#7260 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
ClientStateVar: a component that mounts while the value is non-default never re-renders on the push back to the defaultPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
reflex-dev/reflex#6823 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de reflex-dev/reflex
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
UKGovernmentBEIS/inspect_ai#6512 ·
Les mainteneurs répondent en général sous 1 jour
-
area/c++ area/core kind/bug-report
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
tensorflow/quantum#1140 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 68/100
Kav-K/GPTDiscord#501 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
UKGovernmentBEIS/inspect_evals#2863 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour