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 | |
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')
-rw-r--r-- | src/skaldpress/macros.py | 10 | ||||
-rw-r--r-- | src/smp/macro_processor.py | 14 |
2 files changed, 11 insertions, 13 deletions
diff --git a/src/skaldpress/macros.py b/src/skaldpress/macros.py index c341695..885f803 100644 --- a/src/skaldpress/macros.py +++ b/src/skaldpress/macros.py @@ -15,7 +15,7 @@ def sp_all_tagged_by( """ tagged_files = [ k - for k, v in macro_processor.py_global_env["macro_processor_state"].items() + for k, v in macro_processor._get_macro_builtin("macro_processor_state").items() if f"{macro_processor._get_macro_builtin('metadata_prefix')}tags" in v["stored_data"] and ( @@ -32,9 +32,9 @@ def sp_all_tagged_by( if field is not None: tagged_files.sort( - key=lambda fname: macro_processor.py_global_env["macro_processor_state"][ - fname - ]["stored_data"][ + key=lambda fname: macro_processor._get_macro_builtin( + "macro_processor_state" + )[fname]["stored_data"][ f"{macro_processor._get_macro_builtin('metadata_prefix')}{field}" ], reverse=(reversed != ""), @@ -42,7 +42,7 @@ def sp_all_tagged_by( out = "" for filename in tagged_files: - file = macro_processor.py_global_env["macro_processor_state"][filename] + file = macro_processor._get_macro_builtin("macro_processor_state")[filename] smp_local = deepcopy(macro_processor) from smp.builtins import smp_builtin_undefine 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): |