decorator

import ampform.dynamics.decorator

Tools for defining lineshapes with sympy.

class UnevaluatedExpression(*args)[source]

Bases: sympy.core.expr.Expr

Base class for classes that expressions with an evaluate() method.

Derive from this class when decorating a class with implement_expr() or implement_doit_method(). It is important to derive from UnevaluatedExpression, because an evaluate() method has to be implemented.

implement_doit_method()Callable[[Type[UnevaluatedExpression]], Type[UnevaluatedExpression]][source]

Implement doit() method for an UnevaluatedExpression class.

Implement a doit method for a class that derives from Expr (via UnevaluatedExpression).

implement_expr(n_args: int)Callable[[Type[UnevaluatedExpression]], Type[UnevaluatedExpression]][source]

Decorator for classes that derive from UnevaluatedExpression.

Implement a __new__ and doit method for a class that derives from Expr (via UnevaluatedExpression).

implement_new_method(n_args: int)Callable[[Type[UnevaluatedExpression]], Type[UnevaluatedExpression]][source]

Implement __new__() method for an UnevaluatedExpression class.

Implement a __new__ method for a class that derives from Expr (via UnevaluatedExpression).

verify_signature(builder: Callable, protocol: Type[Callable])None[source]

Check signature of a builder function dynamically.

Dynamically check whether a builder has the same signature as that of the given Protocol (a Callable). This function is needed because typing.runtime_checkable() only checks members and methods, not the signature of those methods.