Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

BasicTypeMetaDataMixin.deserialize calls _init_meta on None.

Abierto Apto para principiantes
#51 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
backend

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:
  1. Define a Rune type with an optional basic-type field such as DateWithMeta
    (cardinality 0..1).
  2. Construct an instance via init without providing the optional field —
    pydantic calls the field's WrapValidator with obj=None.
  3. 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

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de finos/rune-python-runtime

Todos los issues de finos/rune-python-runtime

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.