WIP
diff --git a/hamilton/base.py b/hamilton/base.py
index 5debad7..298567d 100644
--- a/hamilton/base.py
+++ b/hamilton/base.py
@@ -32,10 +32,12 @@
@staticmethod
@abc.abstractmethod
- def build_result(**outputs: Dict[str, Any]) -> Any:
+ def build_result(**outputs: Any) -> Any:
"""This function builds the result given the computed values."""
pass
+ # def valid_inputs(self) -> :
+
class DictResult(ResultMixin):
"""Simple function that returns the dict of column -> value results.
diff --git a/hamilton/io/__init__.py b/hamilton/io/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/hamilton/io/__init__.py
diff --git a/hamilton/io/materialization.py b/hamilton/io/materialization.py
new file mode 100644
index 0000000..cf8ce2c
--- /dev/null
+++ b/hamilton/io/materialization.py
@@ -0,0 +1,24 @@
+import typing
+
+from hamilton import node
+from hamilton.base import ResultMixin
+from hamilton.function_modifiers import dependencies
+
+
+class SaveTo:
+ def __init__(self, *columns: str):
+ self.columns = columns
+
+ def to_nodes(self) -> typing.List[node.Node]:
+ raise NotImplementedError()
+
+
+class SaveToCSV:
+ def __init__(
+ self,
+ pathname: typing.Union[dependencies.LiteralDependency, dependencies.UpstreamDependency],
+ results_builder: ResultMixin,
+ *columns: str
+ ):
+ self.pathname = pathname
+ self.results_builder = results_builder