openapi-generators / openapi-generators/openapi-python-client
Model Composition with ‘allOf’ Is Missing Fields
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Python
- Estrelas
- 2k
- Forks
- 293
- Merge médio
- 34min
- PRs com merge (30d)
- 1
Descrição
Describe the bug
Using a composition model (https://spec.openapis.org/oas/v3.0.4.html#models-with-composition) does not generate the target type but only the underlying type. For a type A which consists of the fields of B and some additional fields, only B is generated. Furthermore, A is replaced by B.
The spec below generates the following function:
def sync_detailed(
*,
client: AuthenticatedClient | Client,
body: Base,
) -> Response[Any]: ...
I would expect that the model Network is generated and used instead of Base. The Network model should include the field of Base and the field non_base_field.
OpenAPI Spec File
openapi: 3.0.0
info:
title: Service
version: 0.0.0
paths:
/widgets:
get:
responses:
"200":
description: The request has succeeded.
content:
application/json:
schema:
nullable: true
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/Network"
components:
schemas:
Base:
type: object
required:
- base_field
properties:
base_field:
type: string
Network:
type: object
required:
- non_base_field
properties:
non_base_field:
type: string
allOf:
- $ref: "#/components/schemas/Base"
Desktop (please complete the following information):
- OS: Linux
- Python Version: 3.13.11
- openapi-python-client version: 0.28.1
Additional context
Add any other context about the problem here.
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece executando a especificação OpenAPI fornecida e compare os modelos Network e Base gerados, além da assinatura de sync_detailed. Rastreie como os schemas allOf são tratados durante a geração de modelos e endpoints. Considera-se concluído quando Network for gerado com ambos os campos, o endpoint usar Network em vez de Base e um teste de regressão cobrir essa composição.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- openapi, python
- Domínio
- api, tooling
- Tipo de issue
- Bug
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 42/100