Skip to content

Commit d3741c0

Browse files
committed
refactor: rename public secure jinja mode
- rename the public RunConfig enum option from ginja to secure so the interface reads as native versus secure - update docs and tests to use the new public enum member and keep the hardened renderer wired through the same engine seam Signed-off-by: Eric W. Tramel <eric.tramel@gmail.com>
1 parent 1a2b6d2 commit d3741c0

8 files changed

Lines changed: 17 additions & 17 deletions

File tree

docs/code_reference/run_config.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ data_designer = DataDesigner()
1414
data_designer.set_run_config(dd.RunConfig(
1515
buffer_size=500,
1616
max_conversation_restarts=3,
17-
jinja_rendering_engine=dd.JinjaRenderingEngine.GINJA,
17+
jinja_rendering_engine=dd.JinjaRenderingEngine.SECURE,
1818
))
1919
```
2020

packages/data-designer-config/src/data_designer/config/run_config.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class JinjaRenderingEngine(StrEnum):
1616
"""Template renderer used by the engine for user-supplied Jinja templates."""
1717

1818
NATIVE = "native"
19-
GINJA = "ginja"
19+
SECURE = "secure"
2020

2121

2222
class ThrottleConfig(ConfigBase):
@@ -109,7 +109,7 @@ class RunConfig(ConfigBase):
109109
consolidated log block. Must be > 0. Default is 5.0.
110110
jinja_rendering_engine: Template renderer used for engine-side Jinja evaluation.
111111
``native`` uses Jinja2's built-in sandbox with the standard filter set and
112-
fewer Data Designer-specific restrictions. ``ginja`` uses Data Designer's
112+
fewer Data Designer-specific restrictions. ``secure`` uses Data Designer's
113113
hardened sandbox with additional AST, filter, and output guards.
114114
Default is ``native``.
115115
throttle: AIMD throttle tuning parameters. See ``ThrottleConfig`` for details.
@@ -129,7 +129,7 @@ class RunConfig(ConfigBase):
129129
default=JinjaRenderingEngine.NATIVE,
130130
description=(
131131
"Template renderer used for engine-side Jinja evaluation. "
132-
"`native` uses Jinja2's built-in sandbox; `ginja` uses Data Designer's hardened sandbox."
132+
"`native` uses Jinja2's built-in sandbox; `secure` uses Data Designer's hardened sandbox."
133133
),
134134
)
135135
throttle: ThrottleConfig = Field(default_factory=ThrottleConfig)

packages/data-designer-config/tests/config/test_run_config.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ def test_run_config_defaults_to_native_jinja_renderer() -> None:
1010
assert JinjaRenderingEngine(RunConfig().jinja_rendering_engine) == JinjaRenderingEngine.NATIVE
1111

1212

13-
def test_run_config_accepts_ginja_renderer() -> None:
14-
run_config = RunConfig(jinja_rendering_engine=JinjaRenderingEngine.GINJA)
15-
assert JinjaRenderingEngine(run_config.jinja_rendering_engine) == JinjaRenderingEngine.GINJA
13+
def test_run_config_accepts_secure_renderer() -> None:
14+
run_config = RunConfig(jinja_rendering_engine=JinjaRenderingEngine.SECURE)
15+
assert JinjaRenderingEngine(run_config.jinja_rendering_engine) == JinjaRenderingEngine.SECURE

packages/data-designer-engine/src/data_designer/engine/processing/ginja/environment.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ def _create_render_environment(
509509
if record_str_fn is not None:
510510
env_kwargs["finalize"] = record_str_fn
511511
env_kwargs["prefer_dict_key_access"] = True
512-
if self._get_jinja_rendering_engine() == JinjaRenderingEngine.GINJA:
512+
if self._get_jinja_rendering_engine() == JinjaRenderingEngine.SECURE:
513513
return UserTemplateSandboxEnvironment(allowed_references=dataset_variables, **env_kwargs)
514514
return NativeJinjaSandboxEnvironment(allowed_references=dataset_variables, **env_kwargs)
515515

packages/data-designer-engine/tests/engine/column_generators/generators/test_expression.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -176,12 +176,12 @@ def test_generate_respects_run_config_jinja_rendering_engine() -> None:
176176
native_result = native_generator.generate(df)
177177
assert native_result["joined"].tolist() == ["a-b"]
178178

179-
ginja_provider = Mock(spec=ResourceProvider)
180-
ginja_provider.run_config = RunConfig(jinja_rendering_engine=JinjaRenderingEngine.GINJA)
181-
ginja_generator = _create_test_generator(
179+
secure_provider = Mock(spec=ResourceProvider)
180+
secure_provider.run_config = RunConfig(jinja_rendering_engine=JinjaRenderingEngine.SECURE)
181+
secure_generator = _create_test_generator(
182182
_create_test_config("joined", "{{ col1 | join('-') }}", "str"),
183-
ginja_provider,
183+
secure_provider,
184184
)
185185

186186
with pytest.raises(UserTemplateUnsupportedFiltersError):
187-
ginja_generator.generate(df)
187+
secure_generator.generate(df)

packages/data-designer-engine/tests/engine/column_generators/utils/test_prompt_renderer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,12 +143,12 @@ def test_prompt_renderer_uses_native_jinja_by_default() -> None:
143143
assert result == "Joined: Hello-World"
144144

145145

146-
def test_prompt_renderer_can_opt_into_ginja() -> None:
146+
def test_prompt_renderer_can_opt_into_secure_mode() -> None:
147147
config = LLMTextColumnConfig(name="test_column", prompt="Test prompt", model_alias="test_model")
148148
recipe = create_response_recipe(config)
149149
renderer = RecordBasedPromptRenderer(
150150
response_recipe=recipe,
151-
jinja_rendering_engine=JinjaRenderingEngine.GINJA,
151+
jinja_rendering_engine=JinjaRenderingEngine.SECURE,
152152
)
153153

154154
with pytest.raises(PromptTemplateRenderError, match=r"\| join"):

packages/data-designer-engine/tests/engine/processing/ginja/test_environment.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ def test_with_jinja2_user_template_rendering_mixin(test_case, template_1, templa
181181

182182
class Foo(WithJinja2UserTemplateRendering):
183183
def __init__(self, template_1: str, template_2: str = None):
184-
self._jinja_rendering_engine = JinjaRenderingEngine.GINJA
184+
self._jinja_rendering_engine = JinjaRenderingEngine.SECURE
185185
if template_2 is None:
186186
# Single template
187187
self.prepare_jinja2_template_renderer(template_1, dataset_variables=["safe"])

packages/data-designer-engine/tests/engine/sampling_gen/test_jinja_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,5 +129,5 @@ def test_jinja_dataframe_can_switch_rendering_engines() -> None:
129129
with pytest.raises(UserTemplateUnsupportedFiltersError):
130130
JinjaDataFrame(
131131
"items | join('-')",
132-
jinja_rendering_engine=JinjaRenderingEngine.GINJA,
132+
jinja_rendering_engine=JinjaRenderingEngine.SECURE,
133133
).to_column(df)

0 commit comments

Comments
 (0)