Class: DSPy::Storage::ProgramStorage::SavedProgram

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dspy/storage/program_storage.rb

Overview

Represents a saved program with metadata

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(program:, optimization_result:, metadata: {}, program_id: nil, saved_at: nil) ⇒ SavedProgram

Returns a new instance of SavedProgram.



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/dspy/storage/program_storage.rb', line 43

def initialize(program:, optimization_result:, metadata: {}, program_id: nil, saved_at: nil)
  @program = program
  @optimization_result = optimization_result
  dspy_version = begin
    DSPy::VERSION
  rescue
    "unknown"
  end
  
  @metadata = .merge({
    dspy_version: dspy_version,
    ruby_version: RUBY_VERSION,
    saved_with: "DSPy::Storage::ProgramStorage"
  })
  @program_id = program_id || generate_program_id
  @saved_at = saved_at || Time.now
end

Instance Attribute Details

#metadataObject (readonly)

Returns the value of attribute metadata.



26
27
28
# File 'lib/dspy/storage/program_storage.rb', line 26

def 
  @metadata
end

#optimization_resultObject (readonly)

Returns the value of attribute optimization_result.



23
24
25
# File 'lib/dspy/storage/program_storage.rb', line 23

def optimization_result
  @optimization_result
end

#programObject (readonly)

Returns the value of attribute program.



20
21
22
# File 'lib/dspy/storage/program_storage.rb', line 20

def program
  @program
end

#program_idObject (readonly)

Returns the value of attribute program_id.



29
30
31
# File 'lib/dspy/storage/program_storage.rb', line 29

def program_id
  @program_id
end

#saved_atObject (readonly)

Returns the value of attribute saved_at.



32
33
34
# File 'lib/dspy/storage/program_storage.rb', line 32

def saved_at
  @saved_at
end

Class Method Details

.from_h(data) ⇒ Object



73
74
75
76
77
78
79
80
81
# File 'lib/dspy/storage/program_storage.rb', line 73

def self.from_h(data)
  new(
    program: deserialize_program(data[:program_data]),
    optimization_result: data[:optimization_result],
    metadata: data[:metadata] || {},
    program_id: data[:program_id],
    saved_at: Time.parse(data[:saved_at])
  )
end

Instance Method Details

#to_hObject



62
63
64
65
66
67
68
69
70
# File 'lib/dspy/storage/program_storage.rb', line 62

def to_h
  {
    program_id: @program_id,
    saved_at: @saved_at.iso8601,
    program_data: serialize_program(@program),
    optimization_result: @optimization_result,
    metadata: @metadata
  }
end