diff --git a/lib/openai.rb b/lib/openai.rb index 2c73d487..77ad926a 100644 --- a/lib/openai.rb +++ b/lib/openai.rb @@ -7,6 +7,7 @@ require "etc" require "json" require "net/http" +require "pathname" require "rbconfig" require "securerandom" require "set" diff --git a/lib/openai/base_page.rb b/lib/openai/base_page.rb index 762b38d7..9f315c7b 100644 --- a/lib/openai/base_page.rb +++ b/lib/openai/base_page.rb @@ -47,14 +47,17 @@ def to_enum = super(:auto_paging_each) alias_method :enum_for, :to_enum - # @!parse - # # @private - # # - # # @param client [OpenAI::BaseClient] - # # @param req [Hash{Symbol=>Object}] - # # @param headers [Hash{String=>String}, Net::HTTPHeader] - # # @param page_data [Object] - # # - # def initialize(client:, req:, headers:, page_data:); end + # @private + # + # @param client [OpenAI::BaseClient] + # @param req [Hash{Symbol=>Object}] + # @param headers [Hash{String=>String}, Net::HTTPHeader] + # @param page_data [Object] + # + def initialize(client:, req:, headers:, page_data:) + @client = client + @req = req + super() + end end end diff --git a/lib/openai/base_stream.rb b/lib/openai/base_stream.rb index 51e8dee6..082d045d 100644 --- a/lib/openai/base_stream.rb +++ b/lib/openai/base_stream.rb @@ -17,22 +17,9 @@ module OpenAI # messages => Array # ``` class BaseStream - # @private - # - # @param model [Class, OpenAI::Converter] - # @param url [URI::Generic] - # @param status [Integer] - # @param response [Net::HTTPResponse] - # @param messages [Enumerable] + # @return [void] # - def initialize(model:, url:, status:, response:, messages:) - @model = model - @url = url - @status = status - @response = response - @messages = messages - @iterator = iterator - end + def close = OpenAI::Util.close_fused!(@iterator) # @private # @@ -40,10 +27,6 @@ def initialize(model:, url:, status:, response:, messages:) # private def iterator = (raise NotImplementedError) - # @return [void] - # - def close = OpenAI::Util.close_fused!(@iterator) - # @param blk [Proc] # # @return [void] @@ -60,5 +43,22 @@ def for_each(&) def to_enum = @iterator alias_method :enum_for, :to_enum + + # @private + # + # @param model [Class, OpenAI::Converter] + # @param url [URI::Generic] + # @param status [Integer] + # @param response [Net::HTTPResponse] + # @param messages [Enumerable] + # + def initialize(model:, url:, status:, response:, messages:) + @model = model + @url = url + @status = status + @response = response + @messages = messages + @iterator = iterator + end end end diff --git a/lib/openai/cursor_page.rb b/lib/openai/cursor_page.rb index f9f84dcd..0e74ea9e 100644 --- a/lib/openai/cursor_page.rb +++ b/lib/openai/cursor_page.rb @@ -30,7 +30,6 @@ class CursorPage # @return [Boolean] attr_accessor :has_more - # rubocop:disable Lint/UnusedMethodArgument # @private # # @param client [OpenAI::BaseClient] @@ -39,8 +38,7 @@ class CursorPage # @param page_data [Hash{Symbol=>Object}] # def initialize(client:, req:, headers:, page_data:) - @client = client - @req = req + super model = req.fetch(:model) case page_data @@ -55,10 +53,8 @@ def initialize(client:, req:, headers:, page_data:) else end end - # rubocop:enable Lint/UnusedMethodArgument # @return [Boolean] - # def next_page? has_more end diff --git a/lib/openai/page.rb b/lib/openai/page.rb index 54fc4d39..fa3bd198 100644 --- a/lib/openai/page.rb +++ b/lib/openai/page.rb @@ -30,7 +30,6 @@ class Page # @return [String] attr_accessor :object - # rubocop:disable Lint/UnusedMethodArgument # @private # # @param client [OpenAI::BaseClient] @@ -39,8 +38,7 @@ class Page # @param page_data [Array] # def initialize(client:, req:, headers:, page_data:) - @client = client - @req = req + super model = req.fetch(:model) case page_data @@ -55,10 +53,8 @@ def initialize(client:, req:, headers:, page_data:) else end end - # rubocop:enable Lint/UnusedMethodArgument # @return [Boolean] - # def next_page? false end diff --git a/manifest.yaml b/manifest.yaml index e2306edd..fa9c3e5e 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -5,6 +5,7 @@ dependencies: - etc - json - net/http + - pathname - rbconfig - securerandom - set diff --git a/rbi/lib/openai/base_stream.rbi b/rbi/lib/openai/base_stream.rbi index edd7627b..f527b849 100644 --- a/rbi/lib/openai/base_stream.rbi +++ b/rbi/lib/openai/base_stream.rbi @@ -4,27 +4,14 @@ module OpenAI class BaseStream Elem = type_member(:out) - sig do - params( - model: T.any(T::Class[T.anything], OpenAI::Converter), - url: URI::Generic, - status: Integer, - response: Net::HTTPResponse, - messages: T::Enumerable[OpenAI::Util::SSEMessage] - ) - .returns(T.attached_class) - end - def self.new(model:, url:, status:, response:, messages:) + sig { void } + def close end sig { overridable.returns(T::Enumerable[Elem]) } private def iterator end - sig { void } - def close - end - sig { params(blk: T.proc.params(arg0: Elem).void).void } def for_each(&blk) end @@ -34,5 +21,18 @@ module OpenAI end alias_method :enum_for, :to_enum + + sig do + params( + model: T.any(T::Class[T.anything], OpenAI::Converter), + url: URI::Generic, + status: Integer, + response: Net::HTTPResponse, + messages: T::Enumerable[OpenAI::Util::SSEMessage] + ) + .returns(T.attached_class) + end + def self.new(model:, url:, status:, response:, messages:) + end end end diff --git a/sig/openai/base_stream.rbs b/sig/openai/base_stream.rbs index e80fcba0..397d46e5 100644 --- a/sig/openai/base_stream.rbs +++ b/sig/openai/base_stream.rbs @@ -1,21 +1,21 @@ module OpenAI class BaseStream[Elem] - def initialize: ( - model: Class | OpenAI::Converter, - url: URI::Generic, - status: Integer, - response: top, - messages: Enumerable[OpenAI::Util::sse_message] - ) -> void + def close: -> void private def iterator: -> Enumerable[Elem] - def close: -> void - def for_each: { (Elem arg0) -> void } -> void def to_enum: -> Enumerable[Elem] alias enum_for to_enum + + def initialize: ( + model: Class | OpenAI::Converter, + url: URI::Generic, + status: Integer, + response: top, + messages: Enumerable[OpenAI::Util::sse_message] + ) -> void end end