openapi-generators / openapi-generators/openapi-python-client
Inline oneOf variants with properties/required fail: "Invalid property in union"
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 2k
- Fork
- 293
- Merge trung bình
- 34 phút
- Pull request đã merge (30 ngày)
- 1
Mô tả
Description
When a schema uses oneOf with inline object variants (each having properties and required but no $ref), the generator fails with:
Invalid property in union <property_name>
This happens regardless of whether anyOf or oneOf is used. The issue is that the generator cannot process inline discriminated union variants that define their own properties — it expects $ref pointers to named component schemas.
Minimal Reproduction
openapi: "3.0.3"
info:
title: Test
version: "1.0"
paths: {}
components:
schemas:
MyModel:
type: object
properties:
rules:
type: array
items:
type: object
oneOf:
- properties:
rule_type:
type: string
enum: ["type_a"]
value_a:
type: string
required: ["rule_type", "value_a"]
- properties:
rule_type:
type: string
enum: ["type_b"]
value_b:
type: integer
required: ["rule_type", "value_b"]
$ openapi-python-client generate --path spec.yaml
Unable to process schema /components/schemas/MyModel:
Invalid property in union rules_item
Workaround
Extracting each variant into a named component schema and using $ref works:
components:
schemas:
RuleTypeA:
type: object
properties:
rule_type:
type: string
enum: ["type_a"]
value_a:
type: string
required: ["rule_type", "value_a"]
RuleTypeB:
type: object
properties:
rule_type:
type: string
enum: ["type_b"]
value_b:
type: integer
required: ["rule_type", "value_b"]
MyModel:
type: object
properties:
rules:
type: array
items:
oneOf:
- $ref: "#/components/schemas/RuleTypeA"
- $ref: "#/components/schemas/RuleTypeB"
Related
- #868 — similar "Invalid property in union" error with
anyOf/allOfcombinations - Both inline
oneOfandanyOfvariants trigger the same failure
Version
- openapi-python-client: 0.28.2
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu bằng cách chạy openapi-python-client generate --path spec.yaml với trường hợp tái hiện tối thiểu và lần theo quá trình xử lý schema union báo cáo Invalid property in union. Issue không nêu tên file nguồn hoặc đường dẫn test, vì vậy trước tiên hãy xác định phần xử lý hiện có cho các biến thể oneOf/anyOf dựa trên $ref. Hoàn thành khi các biến thể inline có properties và required được generate thành công, đồng thời workaround $ref được tài liệu hóa vẫn hoạt động.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- python
- Lĩnh vực
- tooling
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 52/100