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()
orimplement_doit_method()
. It is important to derive fromUnevaluatedExpression
, because anevaluate()
method has to be implemented.
-
implement_doit_method
() → Callable[[Type[UnevaluatedExpression]], Type[UnevaluatedExpression]][source]¶ Implement
doit()
method for anUnevaluatedExpression
class.Implement a
doit
method for a class that derives fromExpr
(viaUnevaluatedExpression
).
-
implement_expr
(n_args: int) → Callable[[Type[UnevaluatedExpression]], Type[UnevaluatedExpression]][source]¶ Decorator for classes that derive from
UnevaluatedExpression
.Implement a
__new__
anddoit
method for a class that derives fromExpr
(viaUnevaluatedExpression
).
-
implement_new_method
(n_args: int) → Callable[[Type[UnevaluatedExpression]], Type[UnevaluatedExpression]][source]¶ Implement
__new__()
method for anUnevaluatedExpression
class.Implement a
__new__
method for a class that derives fromExpr
(viaUnevaluatedExpression
).
-
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
(aCallable
). This function is needed becausetyping.runtime_checkable()
only checks members and methods, not the signature of those methods.