Skip to content

Commit 9f416f0

Browse files
feat: collapse anonymous enum into unions (#54)
1 parent ffd2b95 commit 9f416f0

File tree

12 files changed

+86
-135
lines changed

12 files changed

+86
-135
lines changed

lib/openai/models/all_models.rb

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,30 @@ module Models
55
module AllModels
66
extend OpenAI::Union
77

8+
# @!group
9+
10+
O1_PRO = :"o1-pro"
11+
O1_PRO_2025_03_19 = :"o1-pro-2025-03-19"
12+
COMPUTER_USE_PREVIEW = :"computer-use-preview"
13+
COMPUTER_USE_PREVIEW_2025_03_11 = :"computer-use-preview-2025-03-11"
14+
15+
# @!endgroup
16+
817
variant String
918

1019
variant enum: -> { OpenAI::Models::ChatModel }
1120

12-
variant enum: -> { OpenAI::Models::AllModels::UnionMember2 }
21+
variant const: OpenAI::Models::AllModels::O1_PRO
1322

14-
module UnionMember2
15-
extend OpenAI::Enum
23+
variant const: OpenAI::Models::AllModels::O1_PRO_2025_03_19
1624

17-
O1_PRO = :"o1-pro"
18-
O1_PRO_2025_03_19 = :"o1-pro-2025-03-19"
19-
COMPUTER_USE_PREVIEW = :"computer-use-preview"
20-
COMPUTER_USE_PREVIEW_2025_03_11 = :"computer-use-preview-2025-03-11"
25+
variant const: OpenAI::Models::AllModels::COMPUTER_USE_PREVIEW
2126

22-
finalize!
23-
end
27+
variant const: OpenAI::Models::AllModels::COMPUTER_USE_PREVIEW_2025_03_11
2428

2529
# @!parse
2630
# class << self
27-
# # @return [Array(String, Symbol, OpenAI::Models::ChatModel, Symbol, OpenAI::Models::AllModels::UnionMember2)]
31+
# # @return [Array(String, Symbol, OpenAI::Models::ChatModel, Symbol)]
2832
# def variants; end
2933
# end
3034
end

lib/openai/models/responses/response.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class Response < OpenAI::BaseModel
5757
# [model guide](https://platform.openai.com/docs/models) to browse and compare
5858
# available models.
5959
#
60-
# @return [String, Symbol, OpenAI::Models::ChatModel, OpenAI::Models::ResponsesModel::UnionMember2]
60+
# @return [String, Symbol, OpenAI::Models::ChatModel]
6161
required :model, union: -> { OpenAI::Models::ResponsesModel }
6262

6363
# @!attribute object
@@ -222,7 +222,7 @@ class Response < OpenAI::BaseModel
222222
# # @param incomplete_details [OpenAI::Models::Responses::Response::IncompleteDetails, nil]
223223
# # @param instructions [String, nil]
224224
# # @param metadata [Hash{Symbol=>String}, nil]
225-
# # @param model [String, Symbol, OpenAI::Models::ChatModel, OpenAI::Models::ResponsesModel::UnionMember2]
225+
# # @param model [String, Symbol, OpenAI::Models::ChatModel]
226226
# # @param output [Array<OpenAI::Models::Responses::ResponseOutputMessage, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseFunctionToolCall, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseReasoningItem>]
227227
# # @param parallel_tool_calls [Boolean]
228228
# # @param temperature [Float, nil]

lib/openai/models/responses/response_create_params.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class ResponseCreateParams < OpenAI::BaseModel
2929
# [model guide](https://platform.openai.com/docs/models) to browse and compare
3030
# available models.
3131
#
32-
# @return [String, Symbol, OpenAI::Models::ChatModel, OpenAI::Models::ResponsesModel::UnionMember2]
32+
# @return [String, Symbol, OpenAI::Models::ChatModel]
3333
required :model, union: -> { OpenAI::Models::ResponsesModel }
3434

3535
# @!attribute include
@@ -198,7 +198,7 @@ class ResponseCreateParams < OpenAI::BaseModel
198198

199199
# @!parse
200200
# # @param input [String, Array<OpenAI::Models::Responses::EasyInputMessage, OpenAI::Models::Responses::ResponseInputItem::Message, OpenAI::Models::Responses::ResponseOutputMessage, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseInputItem::ComputerCallOutput, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Responses::ResponseFunctionToolCall, OpenAI::Models::Responses::ResponseInputItem::FunctionCallOutput, OpenAI::Models::Responses::ResponseReasoningItem, OpenAI::Models::Responses::ResponseInputItem::ItemReference>]
201-
# # @param model [String, Symbol, OpenAI::Models::ChatModel, OpenAI::Models::ResponsesModel::UnionMember2]
201+
# # @param model [String, Symbol, OpenAI::Models::ChatModel]
202202
# # @param include [Array<Symbol, OpenAI::Models::Responses::ResponseIncludable>, nil]
203203
# # @param instructions [String, nil]
204204
# # @param max_output_tokens [Integer, nil]

lib/openai/models/responses_model.rb

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,30 @@ module Models
55
module ResponsesModel
66
extend OpenAI::Union
77

8+
# @!group
9+
10+
O1_PRO = :"o1-pro"
11+
O1_PRO_2025_03_19 = :"o1-pro-2025-03-19"
12+
COMPUTER_USE_PREVIEW = :"computer-use-preview"
13+
COMPUTER_USE_PREVIEW_2025_03_11 = :"computer-use-preview-2025-03-11"
14+
15+
# @!endgroup
16+
817
variant String
918

1019
variant enum: -> { OpenAI::Models::ChatModel }
1120

12-
variant enum: -> { OpenAI::Models::ResponsesModel::UnionMember2 }
21+
variant const: OpenAI::Models::ResponsesModel::O1_PRO
1322

14-
module UnionMember2
15-
extend OpenAI::Enum
23+
variant const: OpenAI::Models::ResponsesModel::O1_PRO_2025_03_19
1624

17-
O1_PRO = :"o1-pro"
18-
O1_PRO_2025_03_19 = :"o1-pro-2025-03-19"
19-
COMPUTER_USE_PREVIEW = :"computer-use-preview"
20-
COMPUTER_USE_PREVIEW_2025_03_11 = :"computer-use-preview-2025-03-11"
25+
variant const: OpenAI::Models::ResponsesModel::COMPUTER_USE_PREVIEW
2126

22-
finalize!
23-
end
27+
variant const: OpenAI::Models::ResponsesModel::COMPUTER_USE_PREVIEW_2025_03_11
2428

2529
# @!parse
2630
# class << self
27-
# # @return [Array(String, Symbol, OpenAI::Models::ChatModel, Symbol, OpenAI::Models::ResponsesModel::UnionMember2)]
31+
# # @return [Array(String, Symbol, OpenAI::Models::ChatModel, Symbol)]
2832
# def variants; end
2933
# end
3034
end

lib/openai/resources/responses.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class Responses
3030
# - [Conversation state](https://platform.openai.com/docs/guides/conversation-state)
3131
# - [Function calling](https://platform.openai.com/docs/guides/function-calling)
3232
#
33-
# @option params [String, Symbol, OpenAI::Models::ChatModel, OpenAI::Models::ResponsesModel::UnionMember2] :model Model ID used to generate the response, like `gpt-4o` or `o1`. OpenAI offers a
33+
# @option params [String, Symbol, OpenAI::Models::ChatModel] :model Model ID used to generate the response, like `gpt-4o` or `o1`. OpenAI offers a
3434
# wide range of models with different capabilities, performance characteristics,
3535
# and price points. Refer to the
3636
# [model guide](https://platform.openai.com/docs/models) to browse and compare
@@ -166,7 +166,7 @@ def create(params)
166166
# - [Conversation state](https://platform.openai.com/docs/guides/conversation-state)
167167
# - [Function calling](https://platform.openai.com/docs/guides/function-calling)
168168
#
169-
# @option params [String, Symbol, OpenAI::Models::ChatModel, OpenAI::Models::ResponsesModel::UnionMember2] :model Model ID used to generate the response, like `gpt-4o` or `o1`. OpenAI offers a
169+
# @option params [String, Symbol, OpenAI::Models::ChatModel] :model Model ID used to generate the response, like `gpt-4o` or `o1`. OpenAI offers a
170170
# wide range of models with different capabilities, performance characteristics,
171171
# and price points. Refer to the
172172
# [model guide](https://platform.openai.com/docs/models) to browse and compare

rbi/lib/openai/models/all_models.rbi

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,16 @@ module OpenAI
66
extend OpenAI::Union
77

88
Variants =
9-
type_template(:out) do
10-
{
11-
fixed: T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::AllModels::UnionMember2::OrSymbol)
12-
}
13-
end
9+
type_template(:out) { {fixed: T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::AllModels::OrSymbol)} }
1410

15-
module UnionMember2
16-
extend OpenAI::Enum
11+
TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Models::AllModels) }
12+
OrSymbol = T.type_alias { T.any(Symbol, OpenAI::Models::AllModels::TaggedSymbol) }
1713

18-
TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Models::AllModels::UnionMember2) }
19-
OrSymbol = T.type_alias { T.any(Symbol, OpenAI::Models::AllModels::UnionMember2::TaggedSymbol) }
20-
21-
O1_PRO = T.let(:"o1-pro", OpenAI::Models::AllModels::UnionMember2::OrSymbol)
22-
O1_PRO_2025_03_19 = T.let(:"o1-pro-2025-03-19", OpenAI::Models::AllModels::UnionMember2::OrSymbol)
23-
COMPUTER_USE_PREVIEW = T.let(:"computer-use-preview", OpenAI::Models::AllModels::UnionMember2::OrSymbol)
24-
COMPUTER_USE_PREVIEW_2025_03_11 =
25-
T.let(:"computer-use-preview-2025-03-11", OpenAI::Models::AllModels::UnionMember2::OrSymbol)
26-
end
14+
O1_PRO = T.let(:"o1-pro", OpenAI::Models::AllModels::OrSymbol)
15+
O1_PRO_2025_03_19 = T.let(:"o1-pro-2025-03-19", OpenAI::Models::AllModels::OrSymbol)
16+
COMPUTER_USE_PREVIEW = T.let(:"computer-use-preview", OpenAI::Models::AllModels::OrSymbol)
17+
COMPUTER_USE_PREVIEW_2025_03_11 =
18+
T.let(:"computer-use-preview-2025-03-11", OpenAI::Models::AllModels::OrSymbol)
2719
end
2820
end
2921
end

rbi/lib/openai/models/responses/response.rbi

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -81,30 +81,18 @@ module OpenAI
8181
# available models.
8282
sig do
8383
returns(
84-
T.any(
85-
String,
86-
OpenAI::Models::ChatModel::TaggedSymbol,
87-
OpenAI::Models::ResponsesModel::UnionMember2::TaggedSymbol
88-
)
84+
T.any(String, OpenAI::Models::ChatModel::TaggedSymbol, OpenAI::Models::ResponsesModel::TaggedSymbol)
8985
)
9086
end
9187
def model
9288
end
9389

9490
sig do
9591
params(
96-
_: T.any(
97-
String,
98-
OpenAI::Models::ChatModel::TaggedSymbol,
99-
OpenAI::Models::ResponsesModel::UnionMember2::TaggedSymbol
100-
)
92+
_: T.any(String, OpenAI::Models::ChatModel::TaggedSymbol, OpenAI::Models::ResponsesModel::TaggedSymbol)
10193
)
10294
.returns(
103-
T.any(
104-
String,
105-
OpenAI::Models::ChatModel::TaggedSymbol,
106-
OpenAI::Models::ResponsesModel::UnionMember2::TaggedSymbol
107-
)
95+
T.any(String, OpenAI::Models::ChatModel::TaggedSymbol, OpenAI::Models::ResponsesModel::TaggedSymbol)
10896
)
10997
end
11098
def model=(_)
@@ -410,11 +398,7 @@ module OpenAI
410398
incomplete_details: T.nilable(OpenAI::Models::Responses::Response::IncompleteDetails),
411399
instructions: T.nilable(String),
412400
metadata: T.nilable(T::Hash[Symbol, String]),
413-
model: T.any(
414-
String,
415-
OpenAI::Models::ChatModel::TaggedSymbol,
416-
OpenAI::Models::ResponsesModel::UnionMember2::TaggedSymbol
417-
),
401+
model: T.any(String, OpenAI::Models::ChatModel::TaggedSymbol, OpenAI::Models::ResponsesModel::TaggedSymbol),
418402
output: T::Array[
419403
T.any(
420404
OpenAI::Models::Responses::ResponseOutputMessage,
@@ -489,11 +473,7 @@ module OpenAI
489473
incomplete_details: T.nilable(OpenAI::Models::Responses::Response::IncompleteDetails),
490474
instructions: T.nilable(String),
491475
metadata: T.nilable(T::Hash[Symbol, String]),
492-
model: T.any(
493-
String,
494-
OpenAI::Models::ChatModel::TaggedSymbol,
495-
OpenAI::Models::ResponsesModel::UnionMember2::TaggedSymbol
496-
),
476+
model: T.any(String, OpenAI::Models::ChatModel::TaggedSymbol, OpenAI::Models::ResponsesModel::TaggedSymbol),
497477
object: Symbol,
498478
output: T::Array[
499479
T.any(

rbi/lib/openai/models/responses/response_create_params.rbi

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -91,21 +91,13 @@ module OpenAI
9191
# and price points. Refer to the
9292
# [model guide](https://platform.openai.com/docs/models) to browse and compare
9393
# available models.
94-
sig do
95-
returns(
96-
T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::UnionMember2::OrSymbol)
97-
)
98-
end
94+
sig { returns(T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::OrSymbol)) }
9995
def model
10096
end
10197

10298
sig do
103-
params(
104-
_: T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::UnionMember2::OrSymbol)
105-
)
106-
.returns(
107-
T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::UnionMember2::OrSymbol)
108-
)
99+
params(_: T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::OrSymbol))
100+
.returns(T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::OrSymbol))
109101
end
110102
def model=(_)
111103
end
@@ -394,7 +386,7 @@ module OpenAI
394386
)
395387
]
396388
),
397-
model: T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::UnionMember2::OrSymbol),
389+
model: T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::OrSymbol),
398390
include: T.nilable(T::Array[OpenAI::Models::Responses::ResponseIncludable::OrSymbol]),
399391
instructions: T.nilable(String),
400392
max_output_tokens: T.nilable(Integer),
@@ -469,7 +461,7 @@ module OpenAI
469461
)
470462
]
471463
),
472-
model: T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::UnionMember2::OrSymbol),
464+
model: T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::OrSymbol),
473465
include: T.nilable(T::Array[OpenAI::Models::Responses::ResponseIncludable::OrSymbol]),
474466
instructions: T.nilable(String),
475467
max_output_tokens: T.nilable(Integer),

rbi/lib/openai/models/responses_model.rbi

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,16 @@ module OpenAI
66
extend OpenAI::Union
77

88
Variants =
9-
type_template(:out) do
10-
{
11-
fixed: T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::UnionMember2::OrSymbol)
12-
}
13-
end
9+
type_template(:out) { {fixed: T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::OrSymbol)} }
1410

15-
module UnionMember2
16-
extend OpenAI::Enum
11+
TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Models::ResponsesModel) }
12+
OrSymbol = T.type_alias { T.any(Symbol, OpenAI::Models::ResponsesModel::TaggedSymbol) }
1713

18-
TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Models::ResponsesModel::UnionMember2) }
19-
OrSymbol = T.type_alias { T.any(Symbol, OpenAI::Models::ResponsesModel::UnionMember2::TaggedSymbol) }
20-
21-
O1_PRO = T.let(:"o1-pro", OpenAI::Models::ResponsesModel::UnionMember2::OrSymbol)
22-
O1_PRO_2025_03_19 = T.let(:"o1-pro-2025-03-19", OpenAI::Models::ResponsesModel::UnionMember2::OrSymbol)
23-
COMPUTER_USE_PREVIEW =
24-
T.let(:"computer-use-preview", OpenAI::Models::ResponsesModel::UnionMember2::OrSymbol)
25-
COMPUTER_USE_PREVIEW_2025_03_11 =
26-
T.let(:"computer-use-preview-2025-03-11", OpenAI::Models::ResponsesModel::UnionMember2::OrSymbol)
27-
end
14+
O1_PRO = T.let(:"o1-pro", OpenAI::Models::ResponsesModel::OrSymbol)
15+
O1_PRO_2025_03_19 = T.let(:"o1-pro-2025-03-19", OpenAI::Models::ResponsesModel::OrSymbol)
16+
COMPUTER_USE_PREVIEW = T.let(:"computer-use-preview", OpenAI::Models::ResponsesModel::OrSymbol)
17+
COMPUTER_USE_PREVIEW_2025_03_11 =
18+
T.let(:"computer-use-preview-2025-03-11", OpenAI::Models::ResponsesModel::OrSymbol)
2819
end
2920
end
3021
end

rbi/lib/openai/resources/responses.rbi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ module OpenAI
3838
)
3939
]
4040
),
41-
model: T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::UnionMember2::OrSymbol),
41+
model: T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::OrSymbol),
4242
include: T.nilable(T::Array[OpenAI::Models::Responses::ResponseIncludable::OrSymbol]),
4343
instructions: T.nilable(String),
4444
max_output_tokens: T.nilable(Integer),
@@ -213,7 +213,7 @@ module OpenAI
213213
)
214214
]
215215
),
216-
model: T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::UnionMember2::OrSymbol),
216+
model: T.any(String, OpenAI::Models::ChatModel::OrSymbol, OpenAI::Models::ResponsesModel::OrSymbol),
217217
include: T.nilable(T::Array[OpenAI::Models::Responses::ResponseIncludable::OrSymbol]),
218218
instructions: T.nilable(String),
219219
max_output_tokens: T.nilable(Integer),

0 commit comments

Comments
 (0)