@@ -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
31083121class Phase1Transpiler (lark .visitors .Visitor_Recursive ):
31093122 """
0 commit comments