Class: Anthropic::Internal::Type::FileInput Abstract Private

Inherits:
Object
  • Object
show all
Extended by:
Converter
Defined in:
lib/anthropic/internal/type/file_input.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

This class is abstract.

Either Pathname or StringIO, or IO, or Anthropic::Internal::Type::FileInput.

Note: when IO is used, all retries are disabled, since many IO` streams are not rewindable.

API:

  • private

Class Method Summary collapse

Methods included from Converter

coerce, dump, inspect, inspect, meta_info, new_coerce_state, type_info

Methods included from Util::SorbetRuntimeSupport

#const_missing, #define_sorbet_constant!, #sorbet_constant_defined?, #to_sorbet_type

Class Method Details

.==(other) ⇒ Boolean

Parameters:

Returns:

API:

  • public



39
# File 'lib/anthropic/internal/type/file_input.rb', line 39

def self.==(other) = other.is_a?(Class) && other <= Anthropic::Internal::Type::FileInput

.===(other) ⇒ Boolean

Parameters:

Returns:

API:

  • public



25
26
27
28
29
30
31
32
# File 'lib/anthropic/internal/type/file_input.rb', line 25

def self.===(other)
  case other
  in Pathname | StringIO | IO | String | Anthropic::FilePart
    true
  else
    false
  end
end

.coerce(value, state:) ⇒ StringIO, Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • .

    @option state [Boolean] :translate_names

    @option state [Boolean] :strictness

    @option state [HashSymbol=>Object] :exactness

    @option state [Class] :error

    @option state [Integer] :branched

Returns:

API:

  • private



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/anthropic/internal/type/file_input.rb', line 59

def coerce(value, state:)
  exactness = state.fetch(:exactness)
  case value
  in String
    exactness[:yes] += 1
    StringIO.new(value)
  in StringIO
    exactness[:yes] += 1
    value
  else
    state[:error] = TypeError.new("#{value.class} can't be coerced into #{StringIO}")
    exactness[:no] += 1
    value
  end
end

.dump(value, state:) ⇒ Pathname, ...

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • .

    @option state [Boolean] :can_retry

Returns:

API:

  • private



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/anthropic/internal/type/file_input.rb', line 84

def dump(value, state:)
  case value
  in StringIO | String
    # https://datatracker.ietf.org/doc/html/rfc7578#section-4.2
    # while not required, a filename is recommended, and in practice many servers do expect this
    Anthropic::FilePart.new(value, filename: "upload")
  in IO
    state[:can_retry] = false
    value.to_path.nil? ? Anthropic::FilePart.new(value, filename: "upload") : value
  in Anthropic::FilePart if value.content.is_a?(IO)
    state[:can_retry] = false
    value
  else
    value
  end
end

.to_sorbet_typeObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

API:

  • private



104
105
106
# File 'lib/anthropic/internal/type/file_input.rb', line 104

def to_sorbet_type
  T.any(Pathname, StringIO, IO, String, Anthropic::FilePart)
end