Skip to content

Commit f78281e

Browse files
alexfiklinducer
authored andcommitted
feat: add custom __repr__ for Kernel
1 parent 2cd2f4f commit f78281e

1 file changed

Lines changed: 21 additions & 7 deletions

File tree

‎sumpy/kernel.py‎

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,20 @@ class Kernel(ABC):
219219
def is_complex_valued(self) -> bool:
220220
"""A boolean flag indicating whether this kernel is complex valued."""
221221

222+
@override
223+
def __repr__(self) -> str:
224+
from dataclasses import fields
225+
226+
args: list[str] = []
227+
for f in fields(self):
228+
value = getattr(self, f.name)
229+
if isinstance(value, prim.ExpressionNode):
230+
args.append(f"{f.name}={value}")
231+
else:
232+
args.append(f"{f.name}={value!r}")
233+
234+
return f"{type(self).__name__}({', '.join(args)})"
235+
222236
def get_base_kernel(self) -> Kernel:
223237
"""
224238
:returns: the kernel being wrapped by this one, or else *self*.
@@ -381,7 +395,7 @@ def get_source_args(self) -> Sequence[KernelArgument]:
381395
# }}}
382396

383397

384-
@dataclass(frozen=True)
398+
@dataclass(frozen=True, repr=False)
385399
class ExpressionKernel(Kernel, ABC):
386400
r"""
387401
.. autoattribute:: expression
@@ -561,7 +575,7 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
561575
return laplacian(laplacian(w))
562576

563577

564-
@dataclass(frozen=True)
578+
@dataclass(frozen=True, repr=False)
565579
class HelmholtzKernel(ExpressionKernel):
566580
"""
567581
.. autoattribute:: helmholtz_k_name
@@ -642,7 +656,7 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
642656
return laplacian(w) + k**2 * w
643657

644658

645-
@dataclass(frozen=True)
659+
@dataclass(frozen=True, repr=False)
646660
class YukawaKernel(ExpressionKernel):
647661
"""
648662
.. autoattribute:: yukawa_lambda_name
@@ -729,7 +743,7 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
729743
return laplacian(w) - lam**2 * w
730744

731745

732-
@dataclass(frozen=True)
746+
@dataclass(frozen=True, repr=False)
733747
class ElasticityKernel(ExpressionKernel):
734748
"""
735749
.. autoattribute:: icomp
@@ -858,7 +872,7 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
858872
return laplacian(laplacian(w))
859873

860874

861-
@dataclass(frozen=True)
875+
@dataclass(frozen=True, repr=False)
862876
class StokesletKernel(ElasticityKernel):
863877
"""
864878
.. autoattribute:: icomp
@@ -898,7 +912,7 @@ def __str__(self) -> str:
898912
f"({self.viscosity_mu}, {self.poisson_ratio})")
899913

900914

901-
@dataclass(frozen=True)
915+
@dataclass(frozen=True, repr=False)
902916
class StressletKernel(ExpressionKernel):
903917
"""
904918
.. autoattribute:: icomp
@@ -981,7 +995,7 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator:
981995
return laplacian(laplacian(w))
982996

983997

984-
@dataclass(frozen=True)
998+
@dataclass(frozen=True, repr=False)
985999
class LineOfCompressionKernel(ExpressionKernel):
9861000
"""A kernel for the line of compression or dilatation of constant strength
9871001
along the axis "axis" from zero to negative infinity.

0 commit comments

Comments
 (0)