Module: DSPy::Module::ForwardOverrideHooks

Defined in:
lib/dspy/module.rb

Instance Method Summary collapse

Instance Method Details

#method_added(method_name) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/dspy/module.rb', line 28

def method_added(method_name)
  super

  return unless method_name == :forward
  return if self == DSPy::Module
  return if @_wrapping_forward

  @_wrapping_forward = true

  original = instance_method(:forward)
  define_method(:forward) do |*args, **kwargs, &block|
    instrument_forward_call(args, kwargs) do
      original.bind(self).call(*args, **kwargs, &block)
    end
  end
ensure
  @_wrapping_forward = false
end