Module: DSPy::Module::ForwardOverrideHooks
- Defined in:
- lib/dspy/module.rb
Overview
Hook to wrap forward methods with instrumentation. Uses a Set-based guard (not boolean) to prevent re-wrapping when other hooks (like Callbacks) also use define_method.
Instance Method Summary collapse
Instance Method Details
#method_added(method_name) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/dspy/module.rb', line 32 def method_added(method_name) super return unless method_name == :forward return if self == DSPy::Module # Use Set-based guard - persists across hook invocations @_forward_instrumented ||= Set.new return if @_forward_instrumented.include?(object_id) @_forward_instrumented << object_id 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 end |