From e96b3ccf5f3779a76eeb8bb11fda9ddc8f60c89f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 4 Apr 2025 21:01:26 +0000 Subject: [PATCH] chore: simplify internal utils --- lib/openai/internal/util.rb | 43 +++++++------------------ rbi/lib/openai/internal/cursor_page.rbi | 4 +-- rbi/lib/openai/internal/page.rbi | 4 +-- rbi/lib/openai/internal/util.rbi | 12 ++++--- sig/openai/internal/util.rbs | 10 +++--- 5 files changed, 28 insertions(+), 45 deletions(-) diff --git a/lib/openai/internal/util.rb b/lib/openai/internal/util.rb index ef6e02a3..91e225b8 100644 --- a/lib/openai/internal/util.rb +++ b/lib/openai/internal/util.rb @@ -70,13 +70,11 @@ def primitive?(input) # @api private # - # @param input [Object] + # @param input [String, Boolean] # # @return [Boolean, Object] def coerce_boolean(input) case input.is_a?(String) ? input.downcase : input - in Numeric - input.nonzero? in "true" true in "false" @@ -88,7 +86,7 @@ def coerce_boolean(input) # @api private # - # @param input [Object] + # @param input [String, Boolean] # # @raise [ArgumentError] # @return [Boolean, nil] @@ -103,34 +101,20 @@ def coerce_boolean!(input) # @api private # - # @param input [Object] + # @param input [String, Integer] # # @return [Integer, Object] def coerce_integer(input) - case input - in true - 1 - in false - 0 - else - Integer(input, exception: false) || input - end + Integer(input, exception: false) || input end # @api private # - # @param input [Object] + # @param input [String, Integer, Float] # # @return [Float, Object] def coerce_float(input) - case input - in true - 1.0 - in false - 0.0 - else - Float(input, exception: false) || input - end + Float(input, exception: false) || input end # @api private @@ -159,12 +143,7 @@ class << self private def deep_merge_lr(lhs, rhs, concat: false) case [lhs, rhs, concat] in [Hash, Hash, _] - rhs_cleaned = rhs.reject { _2 == OpenAI::Internal::OMIT } - lhs - .reject { |key, _| rhs[key] == OpenAI::Internal::OMIT } - .merge(rhs_cleaned) do |_, old_val, new_val| - deep_merge_lr(old_val, new_val, concat: concat) - end + lhs.merge(rhs) { deep_merge_lr(_2, _3, concat: concat) } in [Array, Array, true] lhs.concat(rhs) else @@ -362,7 +341,7 @@ def normalized_headers(*headers) value = case val in Array - val.map { _1.to_s.strip }.join(", ") + val.filter_map { _1&.to_s&.strip }.join(", ") else val&.to_s&.strip end @@ -469,7 +448,7 @@ class << self case val in IO y << "Content-Type: application/octet-stream\r\n\r\n" - IO.copy_stream(val, y) + IO.copy_stream(val.tap(&:rewind), y) in StringIO y << "Content-Type: application/octet-stream\r\n\r\n" y << val.string @@ -533,6 +512,8 @@ def encode_content(headers, body) boundary, strio = encode_multipart_streaming(body) headers = {**headers, "content-type" => "#{content_type}; boundary=#{boundary}"} [headers, strio] + in [_, IO] + [headers, body.tap(&:rewind)] in [_, StringIO] [headers, body.string] else @@ -673,7 +654,7 @@ def decode_lines(enum) # # @param lines [Enumerable] # - # @return [Hash{Symbol=>Object}] + # @return [EnumerableObject}>] def decode_sse(lines) # rubocop:disable Metrics/BlockLength chain_fused(lines) do |y| diff --git a/rbi/lib/openai/internal/cursor_page.rbi b/rbi/lib/openai/internal/cursor_page.rbi index 5e926938..7d728a09 100644 --- a/rbi/lib/openai/internal/cursor_page.rbi +++ b/rbi/lib/openai/internal/cursor_page.rbi @@ -3,10 +3,10 @@ module OpenAI module Internal class CursorPage - Elem = type_member - include OpenAI::Internal::Type::BasePage + Elem = type_member + sig { returns(T.nilable(T::Array[Elem])) } attr_accessor :data diff --git a/rbi/lib/openai/internal/page.rbi b/rbi/lib/openai/internal/page.rbi index bb3ac0c1..bb47228b 100644 --- a/rbi/lib/openai/internal/page.rbi +++ b/rbi/lib/openai/internal/page.rbi @@ -3,10 +3,10 @@ module OpenAI module Internal class Page - Elem = type_member - include OpenAI::Internal::Type::BasePage + Elem = type_member + sig { returns(T.nilable(T::Array[Elem])) } attr_accessor :data diff --git a/rbi/lib/openai/internal/util.rbi b/rbi/lib/openai/internal/util.rbi index 7abcdc1a..b943b0fd 100644 --- a/rbi/lib/openai/internal/util.rbi +++ b/rbi/lib/openai/internal/util.rbi @@ -28,22 +28,22 @@ module OpenAI end # @api private - sig { params(input: T.anything).returns(T.any(T::Boolean, T.anything)) } + sig { params(input: T.any(String, T::Boolean)).returns(T.any(T::Boolean, T.anything)) } def coerce_boolean(input) end # @api private - sig { params(input: T.anything).returns(T.nilable(T::Boolean)) } + sig { params(input: T.any(String, T::Boolean)).returns(T.nilable(T::Boolean)) } def coerce_boolean!(input) end # @api private - sig { params(input: T.anything).returns(T.any(Integer, T.anything)) } + sig { params(input: T.any(String, Integer)).returns(T.any(Integer, T.anything)) } def coerce_integer(input) end # @api private - sig { params(input: T.anything).returns(T.any(Float, T.anything)) } + sig { params(input: T.any(String, Integer, Float)).returns(T.any(Float, T.anything)) } def coerce_float(input) end @@ -271,7 +271,9 @@ module OpenAI # @api private # # https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream - sig { params(lines: T::Enumerable[String]).returns(OpenAI::Internal::Util::ServerSentEvent) } + sig do + params(lines: T::Enumerable[String]).returns(T::Enumerable[OpenAI::Internal::Util::ServerSentEvent]) + end def decode_sse(lines) end end diff --git a/sig/openai/internal/util.rbs b/sig/openai/internal/util.rbs index 07e02294..1c93f8d7 100644 --- a/sig/openai/internal/util.rbs +++ b/sig/openai/internal/util.rbs @@ -9,13 +9,13 @@ module OpenAI def self?.primitive?: (top input) -> bool - def self?.coerce_boolean: (top input) -> (bool | top) + def self?.coerce_boolean: (String | bool input) -> (bool | top) - def self?.coerce_boolean!: (top input) -> bool? + def self?.coerce_boolean!: (String | bool input) -> bool? - def self?.coerce_integer: (top input) -> (Integer | top) + def self?.coerce_integer: (String | Integer input) -> (Integer | top) - def self?.coerce_float: (top input) -> (Float | top) + def self?.coerce_float: (String | Integer | Float input) -> (Float | top) def self?.coerce_hash: (top input) -> (::Hash[top, top] | top) @@ -133,7 +133,7 @@ module OpenAI def self?.decode_sse: ( Enumerable[String] lines - ) -> OpenAI::Internal::Util::server_sent_event + ) -> Enumerable[OpenAI::Internal::Util::server_sent_event] end end end