Skip to content

Commit df59e3c

Browse files
Fixes for CompiledRunner with functions
1 parent 3a134c1 commit df59e3c

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

src/celpy/evaluation.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3059,6 +3059,8 @@ def __init__(
30593059
self.base_activation = activation
30603060
self.activation = self.base_activation
30613061

3062+
self.fn_packages = self._resolve_fn_packages()
3063+
30623064
self.logger.debug("Transpiler activation: %r", self.activation)
30633065
# self.logger.debug("functions: %r", self.functions) # Refactor ``self.functions`` into an Activation
30643066

@@ -3090,7 +3092,7 @@ def evaluate(self, context: Context) -> celpy.celtypes.Value:
30903092

30913093
# Global for the top-level ``CEL = result(base_activation, ...)`` statement.
30923094
evaluation_globals = (
3093-
celpy.evaluation.result.__globals__
3095+
celpy.evaluation.result.__globals__ | self.fn_packages
30943096
) # the ``evaluation`` moodule
30953097
evaluation_globals["base_activation"] = self.activation
30963098
try:
@@ -3104,6 +3106,17 @@ def evaluate(self, context: Context) -> celpy.celtypes.Value:
31043106
self.logger.error("Internal error: %r", ex)
31053107
raise CELEvalError("evaluation error", type(ex), ex.args)
31063108

3109+
def _resolve_fn_packages(self):
3110+
result = {}
3111+
for _, f in self.base_activation.functions.items():
3112+
package = f.__module__.split('.', 1)[0]
3113+
if package in result:
3114+
continue
3115+
3116+
result[package] = sys.modules[package]
3117+
3118+
return result
3119+
31073120

31083121
class Phase1Transpiler(lark.visitors.Visitor_Recursive):
31093122
"""

0 commit comments

Comments
 (0)