@@ -119,7 +119,7 @@ class CompiledModule:
119119 python : Optional [str ]
120120 refs : List [Any ]
121121 dependencies : Set [str ]
122- prelude_imports : List [AstPrelude ]
122+ prelude_imports : Tuple [AstPrelude , ... ]
123123 macros : MacroLibrary
124124 lexical_scope : LexicalScope
125125 output : Optional [str ]
@@ -138,7 +138,7 @@ class CodegenResult:
138138 output : Optional [str ] = None
139139 refs : List [Any ] = field (default_factory = list )
140140 dependencies : Set [str ] = field (default_factory = set )
141- prelude_imports : List [AstPrelude ] = field ( default_factory = list )
141+ prelude_imports : Tuple [AstPrelude , ... ] = ( )
142142 macros : MacroLibrary = field (default_factory = dict )
143143
144144
@@ -177,6 +177,9 @@ class ModuleManager(Mapping[TextFileBase[Any], CompiledModule]):
177177 prelude : Dict [str , Dict [Optional [Union [ResourcePack , DataPack ]], AstPrelude ]] = (
178178 extra_field (default_factory = dict )
179179 )
180+ prelude_cache : Dict [TextFileBase [Any ], Tuple [AstPrelude , ...]] = extra_field (
181+ default_factory = dict
182+ )
180183
181184 execution_count : int = 0
182185
@@ -418,8 +421,12 @@ def export_prelude(self, module: CompiledModule) -> Optional[AstPrelude]:
418421
419422 return AstPrelude (arguments = AstChildren (arguments ))
420423
421- def load_prelude (self ) -> List [AstPrelude ]:
422- """Load the prelude imports."""
424+ def load_prelude (self ) -> Tuple [AstPrelude , ...]:
425+ """Load the prelude imports for the current file."""
426+ cached = self .prelude_cache .get (self .database .current )
427+ if cached is not None :
428+ return cached
429+
423430 current_pack = self .database [self .database .current ].pack
424431 current_prelude = self .prelude
425432
@@ -444,7 +451,9 @@ def load_prelude(self) -> List[AstPrelude]:
444451 pack_prelude [current_pack ] = prelude
445452 prelude_imports .append (prelude )
446453
447- return prelude_imports
454+ result = tuple (prelude_imports )
455+ self .prelude_cache [self .database .current ] = result
456+ return result
448457
449458
450459@dataclass
0 commit comments