Skip to content

Commit

Permalink
Adds example static validator
Browse files Browse the repository at this point in the history
Updates doc string to show example usage.
  • Loading branch information
skrawcz committed Aug 14, 2024
1 parent 57a960c commit 85faa08
Show file tree
Hide file tree
Showing 6 changed files with 320 additions and 1 deletion.
24 changes: 24 additions & 0 deletions examples/validation/static_validator/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Example showing graph validation

This uses the StaticValidator class to validate a graph.

This specifically show how, for example, you can validate tags on functions.

- run.py shows the validator and how to wire it in
- good_module.py shows a node with the correct tags
- bad_module.py shows a node with the wrong tags
- notebook.ipynb shows how to run the same code in a notebook

To run the example, run `python run.py` and you should see the following output:

```
# good_module.py ran
{'foo': 'Hello, world!'}
# bad_module.py didn't have the right tags so graph building errored out
...
Hamilton.lifecycle.base.ValidationException: Node validation failed! 1 errors encountered:
foo: Node bad_module.foo is an output node, but does not have a table_name tag.
```

Alternatively you can run this all via the notebook.ipynb.
6 changes: 6 additions & 0 deletions examples/validation/static_validator/bad_module.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from hamilton.function_modifiers import tag


@tag(node_type="output")
def foo() -> str:
return "Hello, world!"
6 changes: 6 additions & 0 deletions examples/validation/static_validator/good_module.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from hamilton.function_modifiers import tag


@tag(node_type="output", table_name="my_table")
def foo() -> str:
return "Hello, world!"
Loading

0 comments on commit 85faa08

Please sign in to comment.