Skip to content

Commit a0f750f

Browse files
committed
Merge remote-tracking branch 'upstream/main' into heat-kernel
2 parents 7e3ca38 + de2c536 commit a0f750f

2 files changed

Lines changed: 10 additions & 6 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@ doc/_build
2020

2121
sumpy/_git_rev.py
2222
.asv
23+
.venv
2324

2425
*.vts

sumpy/symbolic.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -284,13 +284,16 @@ class SpatialConstant(prim.Variable):
284284
"""Prefix used in code generation for variables of this type."""
285285

286286
def as_sympy(self) -> Symbol:
287-
"""Convert variable to a :mod:`sympy` expression."""
287+
"""Convert this variable to a :mod:`sympy` expression."""
288288
return Symbol(f"{self.prefix}{self.name}")
289289

290290
@classmethod
291291
def from_sympy(cls, expr: Symbol) -> SpatialConstant:
292-
"""Convert :mod:`sympy` expression to a constant."""
293-
return cls(expr.name[len(cls.prefix):])
292+
"""Convert a :mod:`sympy` expression to a constant."""
293+
if isinstance(expr, Symbol) and expr.name.startswith(cls.prefix):
294+
return cls(expr.name[len(cls.prefix):])
295+
296+
raise ValueError(f"expression is not a spatial constant: {expr!r}")
294297

295298

296299
class PymbolicToSympyMapper(PymbolicToSympyMapperBase):
@@ -301,10 +304,10 @@ def map_spatial_constant(self, expr: SpatialConstant) -> Basic:
301304
class SympyToPymbolicMapper(SympyToPymbolicMapperBase):
302305
@override
303306
def map_Symbol(self, expr: Symbol) -> Expression:
304-
if expr.name.startswith(SpatialConstant.prefix):
307+
try:
305308
return SpatialConstant.from_sympy(expr)
306-
307-
return SympyToPymbolicMapperBase.map_Symbol(self, expr)
309+
except ValueError:
310+
return SympyToPymbolicMapperBase.map_Symbol(self, expr)
308311

309312
@override
310313
def map_Pow(self, expr: Pow) -> Expression:

0 commit comments

Comments
 (0)