@@ -251,24 +251,31 @@ def build_environment(self, **kwargs: t.Any) -> Environment:
251251 env .filters .update (self ._environment .filters )
252252 return env
253253
254- def trim (self , dependencies : t .Iterable [MacroReference ]) -> JinjaMacroRegistry :
254+ def trim (
255+ self , dependencies : t .Iterable [MacroReference ], package : t .Optional [str ] = None
256+ ) -> JinjaMacroRegistry :
255257 """Trims the registry by keeping only macros with given references and their transitive dependencies.
256258
257259 Args:
258260 dependencies: References to macros that should be kept.
261+ package: The name of the package in the context of which the trimming should be performed.
259262
260263 Returns:
261264 A new trimmed registry.
262265 """
263266 dependencies_by_package : t .Dict [t .Optional [str ], t .Set [str ]] = defaultdict (set )
264267 for dep in dependencies :
265- dependencies_by_package [dep .package ].add (dep .name )
268+ dependencies_by_package [dep .package or package ].add (dep .name )
269+
270+ top_level_packages = self .top_level_packages .copy ()
271+ if package is not None :
272+ top_level_packages .append (package )
266273
267274 result = JinjaMacroRegistry (
268275 global_objs = self .global_objs .copy (),
269276 create_builtins_module = self .create_builtins_module ,
270277 root_package_name = self .root_package_name ,
271- top_level_packages = self . top_level_packages . copy () ,
278+ top_level_packages = top_level_packages ,
272279 )
273280 for package , names in dependencies_by_package .items ():
274281 result = result .merge (self ._trim_macros (names , package ))
0 commit comments