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

Bug Report: Incorrect Model Reference in Generated Paginated Envelope

Aberta
#1,390 0 comentários 2 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
45/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
python
Domínio
tooling

Direção de pesquisa

Comece com o schema.yaml fornecido e reproduza o comando de geração usando as duas definições de envelopes paginados. Inspecione o PaginatedTransactionEnvelope gerado e compare seu tipo de dados e suas importações de desserialização com o schema e com o envelope de customer gerado corretamente. Está concluído quando os dados da transação forem resolvidos para TransactionEntity sem o erro de status de CustomerEntity.

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

Descrição

Bug Report: Incorrect Model Reference in Generated Paginated Envelope

Summary

openapi-python-client incorrectly generates PaginatedTransactionEnvelope with CustomerEntity instead of TransactionEntity, despite the OpenAPI schema correctly specifying TransactionEntity.

Environment

  • openapi-python-client version: 0.28.1
  • Python version: 3.13
  • Generation command:
    openapi-python-client generate \
        --path schema.yaml \
        --output-path ./generated \
        --meta none
    

Expected Behavior

The generated PaginatedTransactionEnvelope should use TransactionEntity based on this schema definition:

PaginatedTransactionEnvelope:
  allOf:
  - $ref: '#/components/schemas/PaginatedSuccessEnvelope'
  - type: object
    properties:
      data:
        type: array
        items:
          $ref: '#/components/schemas/TransactionEntity'

Expected generated code:

if TYPE_CHECKING:
    from ..models.transaction_entity import TransactionEntity
    from ..models.links import Links

@_attrs_define
class PaginatedTransactionEnvelope:
    timestamp: datetime.datetime
    path: str
    data: list[TransactionEntity]  # ✓ Correct
    links: Links

Actual Behavior

The generator produces code using CustomerEntity instead:

if TYPE_CHECKING:
    from ..models.customer_entity import CustomerEntity  # ✗ Wrong!
    from ..models.links import Links

@_attrs_define
class PaginatedTransactionEnvelope:
    timestamp: datetime.datetime
    path: str
    data: list[CustomerEntity]  # ✗ Wrong!
    links: Links
    
@classmethod
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
    from ..models.customer_entity import CustomerEntity  # ✗ Wrong!
    from ..models.links import Links
    
    # ...
    for data_item_data in _data:
        data_item = CustomerEntity.from_dict(data_item_data)  # ✗ Wrong!
        data.append(data_item)

Impact

This causes runtime errors when parsing API responses:

ValueError: 'failed' is not a valid CustomerEntityStatus

The parser attempts to deserialize transaction data as customer data, failing when transaction-specific status values don't exist in the CustomerEntityStatus enum.

Additional Context

The schema also defines PaginatedCustomerEnvelope (which correctly uses CustomerEntity). The generator may be incorrectly reusing or caching the entity type across similar paginated envelope structures.

Related schema definitions:

PaginatedCustomerEnvelope:
  allOf:
  - $ref: '#/components/schemas/PaginatedSuccessEnvelope'
  - type: object
    properties:
      data:
        type: array
        items:
          $ref: '#/components/schemas/CustomerEntity'

PaginatedTransactionEnvelope:
  allOf:
  - $ref: '#/components/schemas/PaginatedSuccessEnvelope'
  - type: object
    properties:
      data:
        type: array
        items:
          $ref: '#/components/schemas/TransactionEntity'

Workaround

We've added a post-generation fix script:

sed -i '' 's/from ..models.customer_entity import CustomerEntity/from ..models.transaction_entity import TransactionEntity/g' "$FILE"
sed -i '' 's/list\[CustomerEntity\]/list[TransactionEntity]/g' "$FILE"
sed -i '' 's/CustomerEntity\.from_dict/TransactionEntity.from_dict/g' "$FILE"

Reproduction

The issue appears when:

  1. Multiple paginated envelopes are defined using allOf with shared base schemas
  2. Each envelope should use different entity types in the data array
  3. The generator confuses the entity types between envelopes
Linguagem predominante
Python
Estrelas
2k
Forks
293
Merge médio
34min
PRs com merge (30d)
1

Guia de contribuição

Abrir o guia de contribuição

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 openapi-generators/openapi-python-client

Todas as issues de openapi-generators/openapi-python-client

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.