aboutsummaryrefslogtreecommitdiff
path: root/src/smp
diff options
context:
space:
mode:
authorQrius <[email protected]>2025-05-06 11:00:11 +0200
committerQrius <[email protected]>2025-05-06 11:00:14 +0200
commitb8dc70cf90a7d9cf44075ffdb63c5721e5077061 (patch)
tree4c82678e2c73690bbd0a1a5532ee278d2b9ce53f /src/smp
parent52cfd849eaecb180fdd565cb81e81d04068eb602 (diff)
downloadskaldpress-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')
-rw-r--r--src/smp/macro_processor.py14
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):