Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

ComplexTypeMetaDataMixin.deserialize has no None guard.

Aberta Para iniciantes
#47 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
1/5
Tempo estimado
Menos de uma hora
Facilidade para iniciantes
84/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
python
Domínio
backend

Direção de pesquisa

Leia metadata.py e localize ComplexTypeMetaDataMixin.deserialize, onde a issue aponta a falta da verificação de None. Comece executando ou adaptando o exemplo de pytest fornecido para BaseDataClass.deserialize(None, set()). A tarefa estará concluída quando a desserialização retornar None para essa entrada e o teste de regressão passar.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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())
Linguagem predominante
Python
Estrelas
0
Forks
4
Merge médio
1d 11h
PRs com merge (30d)
3

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de finos/rune-python-runtime

Todas as issues de finos/rune-python-runtime

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.