BasicTypeMetaDataMixin.deserialize calls _init_meta on None.
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
Línea de trabajo
Lee metadata.py e inspecciona BasicTypeMetaDataMixin.deserialize, especialmente cómo maneja obj antes de llamar a _init_meta. Empieza por reproducir el fallo con el ejemplo proporcionado DateWithMeta.deserialize(None, ...). Se considera terminado cuando None se pasa al controlador y el campo opcional puede quedar ausente sin que se produzca AttributeError; añade o ejecuta una prueba de regresión para ese caso.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Bug Report
Steps to Reproduce:
- Define a Rune type with an optional basic-type field such as DateWithMeta
(cardinality 0..1). - Construct an instance via init without providing the optional field —
pydantic calls the field's WrapValidator with obj=None. - Observe the exception.
Expected Result:
None is returned via handler(None), allowing the optional field to remain
absent.
Actual Result:
AttributeError is raised:
"'NoneType' object has no attribute '_init_meta'"
Environment:
rune-python-runtime 2.2.2, pydantic 2.14.1, Python 3.11
Additional Context:
Observed when constructing NonNegativeQuantitySchedule via init; bypassed
in tests using model_construct() to skip validation.
metadata.py BasicTypeMetaDataMixin.deserialize leaves model=obj (None) when
obj is neither a base type nor a dict, then unconditionally calls
model._init_meta(allowed_meta) if meta checks are enabled.
Fix: add if obj is None: return handler(None) as the first check.
import datetime
import pytest
from rune.runtime.metadata import DateWithMeta
def test_r5_basic_type_deserialize_none_raises_attribute_error():
'''Calling DateWithMeta.deserialize(None, ...) raises AttributeError
because model is left as None before _init_meta is called.'''
with pytest.raises(AttributeError, match='_init_meta'):
DateWithMeta.deserialize(
None,
lambda x: x,
(datetime.date, str),
set(),
)
- Lenguaje dominante
- Python
- Estrellas
- 0
- Forks
- 4
- Merge medio
- 1 d 11 h
- PR fusionados (30 d)
- 3
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de finos/rune-python-runtime
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
finos/rune-python-runtime#52 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
finos/rune-python-runtime#50 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
finos/rune-python-runtime#48 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 84/100
finos/rune-python-runtime#47 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
finos/rune-python-runtime#43 ·
Todos los issues de finos/rune-python-runtime
Issues similares
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
sergey-miryanov/gcmon#230 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Azure-Samples/azure-search-openai-demo#3249 ·
Los mantenedores suelen responder en 1 día
-
[BUG] Failed archive extraction deletes the dataset cachePosiblemente ocupada @dajiaohuang la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
alibaba/GraphScope#4674 ·