Skip to main content
In Weave, when you use an Op, you can call the functions directly as you would any function:
@weave.op
def my_op():
    ...

my_op()
However, you can instead get access to the Call object directly by invoking the op.call method, which returns both the result and the Call object.
@weave.op
def my_op():
...

output, call = my_op.call()
From here, the call object contains all the information about the Call, including the inputs, outputs, and other metadata. You can use call to set, update, fetch additional properties, or add feedback.If your Op is a method on a class, you need to pass the instance of the class as the first argument to call. The following example shows getting a handle to a Call object that is a method on a class:
import weave

# Initialize Weave Tracing
weave.init("intro-example")

class MyClass:
    # Decorate your method
    @weave.op
    def my_method(self, name: str):
        return f"Hello, {name}!"

instance = MyClass()

# Pass `instance` as the first argument to `call`.
result, call = instance.my_method.call(instance, "World")