Skip to content

Commit d46d16c

Browse files
committed
[components] Resolver -> Renderer
1 parent 174254c commit d46d16c

File tree

10 files changed

+44
-44
lines changed

10 files changed

+44
-44
lines changed

python_modules/libraries/dagster-components/dagster_components/core/component.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
from pydantic import TypeAdapter
3232
from typing_extensions import Self
3333

34-
from dagster_components.core.component_rendering import TemplatedValueResolver
34+
from dagster_components.core.component_rendering import TemplatedValueRenderer
3535

3636

3737
class ComponentDeclNode: ...
@@ -212,7 +212,7 @@ class ComponentLoadContext:
212212
resources: Mapping[str, object]
213213
registry: ComponentTypeRegistry
214214
decl_node: Optional[ComponentDeclNode]
215-
templated_value_resolver: TemplatedValueResolver
215+
templated_value_renderer: TemplatedValueRenderer
216216

217217
@staticmethod
218218
def for_test(
@@ -225,7 +225,7 @@ def for_test(
225225
resources=resources or {},
226226
registry=registry or ComponentTypeRegistry.empty(),
227227
decl_node=decl_node,
228-
templated_value_resolver=TemplatedValueResolver.default(),
228+
templated_value_renderer=TemplatedValueRenderer.default(),
229229
)
230230

231231
@property
@@ -240,7 +240,7 @@ def path(self) -> Path:
240240
def with_rendering_scope(self, rendering_scope: Mapping[str, Any]) -> "ComponentLoadContext":
241241
return dataclasses.replace(
242242
self,
243-
templated_value_resolver=self.templated_value_resolver.with_context(**rendering_scope),
243+
templated_value_renderer=self.templated_value_renderer.with_context(**rendering_scope),
244244
)
245245

246246
def for_decl_node(self, decl_node: ComponentDeclNode) -> "ComponentLoadContext":
@@ -255,7 +255,7 @@ def _raw_params(self) -> Optional[Mapping[str, Any]]:
255255

256256
def load_params(self, params_schema: Type[T]) -> T:
257257
with pushd(str(self.path)):
258-
preprocessed_params = self.templated_value_resolver.render_params(
258+
preprocessed_params = self.templated_value_renderer.render_params(
259259
self._raw_params(), params_schema
260260
)
261261
return TypeAdapter(params_schema).validate_python(preprocessed_params)

python_modules/libraries/dagster-components/dagster_components/core/component_defs_builder.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
Component,
1212
ComponentLoadContext,
1313
ComponentTypeRegistry,
14-
TemplatedValueResolver,
14+
TemplatedValueRenderer,
1515
get_component_type_name,
1616
is_registered_component_type,
1717
)
@@ -103,7 +103,7 @@ def build_defs_from_component_path(
103103
resources=resources,
104104
registry=registry,
105105
decl_node=decl_node,
106-
templated_value_resolver=TemplatedValueResolver.default(),
106+
templated_value_renderer=TemplatedValueRenderer.default(),
107107
)
108108
components = load_components_from_context(context)
109109
return defs_from_components(resources=resources, context=context, components=components)

python_modules/libraries/dagster-components/dagster_components/core/component_rendering.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,18 +81,18 @@ class RenderedModel(BaseModel):
8181
model_config = ConfigDict(json_schema_extra={JSON_SCHEMA_EXTRA_KEY: True})
8282

8383
def _render_property(
84-
self, key: str, raw_value: Any, value_resolver: "TemplatedValueResolver"
84+
self, key: str, raw_value: Any, value_renderer: "TemplatedValueRenderer"
8585
) -> Any:
86-
return value_resolver.render_obj(raw_value)
86+
return value_renderer.render_obj(raw_value)
8787

88-
def render_properties(self, value_resolver: "TemplatedValueResolver") -> Mapping[str, Any]:
88+
def render_properties(self, value_renderer: "TemplatedValueRenderer") -> Mapping[str, Any]:
8989
"""Returns a dictionary of rendered properties for this class."""
9090
raw_properties = self.model_dump(exclude_unset=True)
9191

9292
# validate that the rendered properties match the output type
9393
rendered_properties = {}
9494
for k, v in raw_properties.items():
95-
rendered = self._render_property(k, v, value_resolver)
95+
rendered = self._render_property(k, v, value_renderer)
9696
annotation = self.__annotations__[k]
9797
expected_type = _get_expected_type(annotation)
9898
if expected_type is not None:
@@ -106,17 +106,17 @@ def render_properties(self, value_resolver: "TemplatedValueResolver") -> Mapping
106106

107107

108108
@record
109-
class TemplatedValueResolver:
109+
class TemplatedValueRenderer:
110110
context: Mapping[str, Any]
111111

112112
@staticmethod
113-
def default() -> "TemplatedValueResolver":
114-
return TemplatedValueResolver(
113+
def default() -> "TemplatedValueRenderer":
114+
return TemplatedValueRenderer(
115115
context={"env": _env, "automation_condition": automation_condition_scope()}
116116
)
117117

118-
def with_context(self, **additional_context) -> "TemplatedValueResolver":
119-
return TemplatedValueResolver(context={**self.context, **additional_context})
118+
def with_context(self, **additional_context) -> "TemplatedValueRenderer":
119+
return TemplatedValueRenderer(context={**self.context, **additional_context})
120120

121121
def _render_value(self, val: Any) -> Any:
122122
"""Renders a single value, if it is a templated string."""

python_modules/libraries/dagster-components/dagster_components/core/dsl_schema.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from dagster_components.core.component_rendering import (
1616
RenderedModel,
1717
RenderingMetadata,
18-
TemplatedValueResolver,
18+
TemplatedValueRenderer,
1919
)
2020

2121

@@ -42,8 +42,8 @@ class AssetAttributesModel(RenderedModel):
4242
Optional[str], RenderingMetadata(output_type=Optional[AutomationCondition])
4343
] = None
4444

45-
def _render_property(self, key, raw_value, value_resolver):
46-
rendered = super()._render_property(key, raw_value, value_resolver)
45+
def _render_property(self, key, raw_value, value_renderer):
46+
rendered = super()._render_property(key, raw_value, value_renderer)
4747
if key == "key":
4848
# coerce the string asset key into an AssetKey object
4949
return AssetKey.from_user_string(rendered) if rendered else None
@@ -62,24 +62,24 @@ def _apply_to_spec(self, spec: AssetSpec, attributes: Mapping[str, Any]) -> Asse
6262
def apply_to_spec(
6363
self,
6464
spec: AssetSpec,
65-
value_resolver: TemplatedValueResolver,
65+
value_renderer: TemplatedValueRenderer,
6666
target_keys: AbstractSet[AssetKey],
6767
) -> AssetSpec:
6868
if spec.key not in target_keys:
6969
return spec
7070

7171
# add the original spec to the context and resolve values
7272
return self._apply_to_spec(
73-
spec, self.attributes.render_properties(value_resolver.with_context(asset=spec))
73+
spec, self.attributes.render_properties(value_renderer.with_context(asset=spec))
7474
)
7575

76-
def apply(self, defs: Definitions, value_resolver: TemplatedValueResolver) -> Definitions:
76+
def apply(self, defs: Definitions, value_renderer: TemplatedValueRenderer) -> Definitions:
7777
target_selection = AssetSelection.from_string(self.target, include_sources=True)
7878
target_keys = target_selection.resolve(defs.get_asset_graph())
7979

8080
mappable = [d for d in defs.assets or [] if isinstance(d, (AssetsDefinition, AssetSpec))]
8181
mapped_assets = map_asset_specs(
82-
lambda spec: self.apply_to_spec(spec, value_resolver, target_keys),
82+
lambda spec: self.apply_to_spec(spec, value_renderer, target_keys),
8383
mappable,
8484
)
8585

python_modules/libraries/dagster-components/dagster_components/lib/dbt_project.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from dagster_components import Component, ComponentLoadContext
1515
from dagster_components.core.component import (
1616
ComponentGenerateRequest,
17-
TemplatedValueResolver,
17+
TemplatedValueRenderer,
1818
component_type,
1919
)
2020
from dagster_components.core.dsl_schema import (
@@ -43,16 +43,16 @@ def __init__(
4343
self,
4444
*,
4545
params: Optional[AssetAttributesModel],
46-
value_resolver: TemplatedValueResolver,
46+
value_renderer: TemplatedValueRenderer,
4747
):
4848
self.params = params or AssetAttributesModel()
49-
self.value_resolver = value_resolver
49+
self.value_renderer = value_renderer
5050

5151
def _get_rendered_attribute(
5252
self, attribute: str, dbt_resource_props: Mapping[str, Any], default_method
5353
) -> Any:
54-
resolver = self.value_resolver.with_context(node=dbt_resource_props)
55-
rendered_attribute = self.params.render_properties(resolver).get(attribute)
54+
renderer = self.value_renderer.with_context(node=dbt_resource_props)
55+
rendered_attribute = self.params.render_properties(renderer).get(attribute)
5656
return (
5757
rendered_attribute
5858
if rendered_attribute is not None
@@ -102,7 +102,7 @@ def load(cls, context: ComponentLoadContext) -> Self:
102102
op_spec=loaded_params.op,
103103
dbt_translator=DbtProjectComponentTranslator(
104104
params=loaded_params.translator,
105-
value_resolver=context.templated_value_resolver,
105+
value_renderer=context.templated_value_renderer,
106106
),
107107
asset_processors=loaded_params.asset_attributes or [],
108108
)
@@ -123,7 +123,7 @@ def _fn(context: AssetExecutionContext):
123123

124124
defs = Definitions(assets=[_fn])
125125
for transform in self.asset_processors:
126-
defs = transform.apply(defs, context.templated_value_resolver)
126+
defs = transform.apply(defs, context.templated_value_renderer)
127127
return defs
128128

129129
@classmethod

python_modules/libraries/dagster-components/dagster_components/lib/pipes_subprocess_script_collection.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def load(cls, context: ComponentLoadContext) -> "PipesSubprocessScriptCollection
5252
if not script_path.exists():
5353
raise FileNotFoundError(f"Script {script_path} does not exist")
5454
path_specs[script_path] = [
55-
AssetSpec(**asset.render_properties(context.templated_value_resolver))
55+
AssetSpec(**asset.render_properties(context.templated_value_renderer))
5656
for asset in script.assets
5757
]
5858

python_modules/libraries/dagster-components/dagster_components/lib/sling_replication.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def _fn(context: AssetExecutionContext, sling: SlingResource):
6060

6161
defs = Definitions(assets=[_fn], resources={"sling": self.resource})
6262
for transform in self.asset_processors:
63-
defs = transform.apply(defs, context.templated_value_resolver)
63+
defs = transform.apply(defs, context.templated_value_renderer)
6464
return defs
6565

6666
@classmethod

python_modules/libraries/dagster-components/dagster_components_tests/rendering_tests/test_component_rendering.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from dagster_components.core.component_rendering import (
55
RenderedModel,
66
RenderingMetadata,
7-
TemplatedValueResolver,
7+
TemplatedValueRenderer,
88
can_render_with_default_scope,
99
)
1010
from pydantic import BaseModel, TypeAdapter, ValidationError
@@ -71,7 +71,7 @@ def test_render() -> None:
7171
},
7272
}
7373

74-
renderer = TemplatedValueResolver(context={"foo_val": "foo", "bar_val": "bar"})
74+
renderer = TemplatedValueRenderer(context={"foo_val": "foo", "bar_val": "bar"})
7575
rendered_data = renderer.render_params(data, Outer)
7676

7777
assert rendered_data == {
@@ -104,8 +104,8 @@ def test_valid_rendering() -> None:
104104
the_str="{{ some_str }}",
105105
the_opt_int="{{ some_int }}",
106106
)
107-
resolver = TemplatedValueResolver(context={"some_int": 1, "some_str": "aaa"})
108-
resolved_properties = rm.render_properties(resolver)
107+
renderer = TemplatedValueRenderer(context={"some_int": 1, "some_str": "aaa"})
108+
resolved_properties = rm.render_properties(renderer)
109109

110110
assert resolved_properties == {
111111
"the_renderable_int": 1,
@@ -123,8 +123,8 @@ def test_invalid_rendering() -> None:
123123
the_opt_int="{{ some_str }}",
124124
)
125125

126-
resolver = TemplatedValueResolver(context={"some_int": 1, "some_str": "aaa"})
126+
renderer = TemplatedValueRenderer(context={"some_int": 1, "some_str": "aaa"})
127127

128128
with pytest.raises(ValidationError):
129129
# string is not a valid output type for the_opt_int
130-
rm.render_properties(resolver)
130+
rm.render_properties(renderer)

python_modules/libraries/dagster-components/dagster_components_tests/unit_tests/test_spec_processing.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
AssetAttributesModel,
66
MergeAttributes,
77
ReplaceAttributes,
8-
TemplatedValueResolver,
8+
TemplatedValueRenderer,
99
)
1010
from pydantic import BaseModel, TypeAdapter
1111

@@ -30,7 +30,7 @@ def test_replace_attributes() -> None:
3030
attributes=AssetAttributesModel(tags={"newtag": "newval"}),
3131
)
3232

33-
newdefs = op.apply(defs, TemplatedValueResolver.default())
33+
newdefs = op.apply(defs, TemplatedValueRenderer.default())
3434
asset_graph = newdefs.get_asset_graph()
3535
assert asset_graph.get(AssetKey("a")).tags == {}
3636
assert asset_graph.get(AssetKey("b")).tags == {"newtag": "newval"}
@@ -44,7 +44,7 @@ def test_merge_attributes() -> None:
4444
attributes=AssetAttributesModel(tags={"newtag": "newval"}),
4545
)
4646

47-
newdefs = op.apply(defs, TemplatedValueResolver.default())
47+
newdefs = op.apply(defs, TemplatedValueRenderer.default())
4848
asset_graph = newdefs.get_asset_graph()
4949
assert asset_graph.get(AssetKey("a")).tags == {}
5050
assert asset_graph.get(AssetKey("b")).tags == {"newtag": "newval"}
@@ -56,7 +56,7 @@ def test_render_attributes_asset_context() -> None:
5656
attributes=AssetAttributesModel(tags={"group_name_tag": "group__{{ asset.group_name }}"})
5757
)
5858

59-
newdefs = op.apply(defs, TemplatedValueResolver.default().with_context(foo="theval"))
59+
newdefs = op.apply(defs, TemplatedValueRenderer.default().with_context(foo="theval"))
6060
asset_graph = newdefs.get_asset_graph()
6161
assert asset_graph.get(AssetKey("a")).tags == {"group_name_tag": "group__g1"}
6262
assert asset_graph.get(AssetKey("b")).tags == {"group_name_tag": "group__g2"}
@@ -80,7 +80,7 @@ def _custom_cron(s):
8080
metadata = {"a": 1, "b": "str", "d": 1.23}
8181
newdefs = op.apply(
8282
defs,
83-
TemplatedValueResolver.default().with_context(
83+
TemplatedValueRenderer.default().with_context(
8484
foo="theval", metadata=metadata, custom_cron=_custom_cron
8585
),
8686
)

python_modules/libraries/dagster-components/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def get_version() -> str:
1313

1414

1515
ver = get_version()
16-
# dont pin dev installs to avoid pip dep resolver issues
16+
# dont pin dev installs to avoid pip dep renderer issues
1717
pin = "" if ver == "1!0+dev" else f"=={ver}"
1818
setup(
1919
name="dagster-components",

0 commit comments

Comments
 (0)