diff options
author | Qrius <[email protected]> | 2025-05-06 11:00:11 +0200 |
---|---|---|
committer | Qrius <[email protected]> | 2025-05-06 11:00:14 +0200 |
commit | b8dc70cf90a7d9cf44075ffdb63c5721e5077061 (patch) | |
tree | 4c82678e2c73690bbd0a1a5532ee278d2b9ce53f /src/smp/macro_processor.py | |
parent | 52cfd849eaecb180fdd565cb81e81d04068eb602 (diff) | |
download | skaldpress-b8dc70cf90a7d9cf44075ffdb63c5721e5077061.tar.gz skaldpress-b8dc70cf90a7d9cf44075ffdb63c5721e5077061.zip |
Remove py_global_env, so we get a more file-like environment for arbitrary code
Diffstat (limited to 'src/smp/macro_processor.py')
-rw-r--r-- | src/smp/macro_processor.py | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/smp/macro_processor.py b/src/smp/macro_processor.py index a595c36..f34f4f9 100644 --- a/src/smp/macro_processor.py +++ b/src/smp/macro_processor.py @@ -65,10 +65,7 @@ class MacroProcessor: macros: dict[str, Any] """ Macros which are @directives """ special_macros: dict[str, tuple[Any, Any]] - """ Global environment for python execution """ - py_global_env: dict """ Local environment for python execution """ - py_local_env_alt: dict py_local_env_current: dict """ All macro invocations that has happened """ macro_invocations: list[tuple[str, list[str]]] @@ -86,7 +83,6 @@ class MacroProcessor: self.macros = dict() self.macro_invocations = list() self.warnings = list() - self.py_global_env = dict() self.py_local_env_alt = dict() self.py_local_env_current = self.macros self.prefix = prefix @@ -510,7 +506,7 @@ class MacroProcessor: with redirect_stdout(f): exec( "".join(py_expr), - self.py_global_env, + self.py_local_env_current, self.py_local_env_current, ) s = f.getvalue() @@ -558,7 +554,7 @@ class MacroProcessor: target_filename = self._get_metadata("target_filename") - self.py_global_env["macro_processor_state"][self.source_file_path] = dict( + self._get_macro_builtin("macro_processor_state")[self.source_file_path] = dict( { # "content": "", "stored_data": { @@ -571,7 +567,7 @@ class MacroProcessor: **xargs, } ) - return self.py_global_env["macro_processor_state"][self.source_file_path] + return self._get_macro_builtin("macro_processor_state")[self.source_file_path] class MacroProcessorState: @@ -584,7 +580,9 @@ class MacroProcessorState: if macro_processor is None: macro_processor = MacroProcessor(prefix) - macro_processor.py_global_env["macro_processor_state"] = self.global_state + macro_processor._define_macro_builtin( + "macro_processor_state", self.global_state + ) return macro_processor def print_state(self): |