From 438651882eebeb688ca65c2cf2661b4f2f13aa03 Mon Sep 17 00:00:00 2001 From: skrawczyk Date: Wed, 12 May 2021 20:23:14 -0700 Subject: [PATCH] Adds/edits/updates some documentation --- CONTRIBUTING.md | 8 +- README.md | 417 ++++++--------------------- basics.md | 138 +++++++++ decorators.md | 209 ++++++++++++++ developer_setup.md | 43 +++ examples/hello_world/my_functions.py | 11 + examples/hello_world/my_script.py | 27 ++ hamilton/driver.py | 16 +- hamilton/function_modifiers.py | 2 +- hamiltondag.png | Bin 0 -> 121007 bytes hello_world_image.png | Bin 0 -> 24345 bytes 11 files changed, 540 insertions(+), 331 deletions(-) create mode 100644 basics.md create mode 100644 decorators.md create mode 100644 developer_setup.md create mode 100644 examples/hello_world/my_functions.py create mode 100644 examples/hello_world/my_script.py create mode 100644 hamiltondag.png create mode 100644 hello_world_image.png diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 014c4f7e..5fbeba81 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Guidance on how to contribute -> All contributions to this project will be released under the Affero General Public License v3 (AGPLv3). +> All contributions to this project will be released under the Affero General Public License v3 (AGPLv3). > By submitting a pull request or filing a bug, issue, or > feature request, you are agreeing to comply with this waiver of copyright interest. > Details can be found in our [CLA](CLA.md) and [LICENSE](LICENSE). @@ -29,5 +29,7 @@ Generally speaking, you should fork this repository, make changes in your own fork, and then submit a pull request. All new code should have associated unit tests that validate implemented features and the presence or lack of defects. Additionally, the code should follow any stylistic and architectural guidelines -prescribed by the project. In the absence of such guidelines, mimic the styles -and patterns in the existing code-base. +prescribed by the project. For us here, this means you install a pre-commit hook and use +the given style files. Basically, you should mimic the styles and patterns in the Hamilton code-base. + +In terms of getting setup to develop, we invite you to read our [developer setup guide](developer_setup.md). diff --git a/README.md b/README.md index ab685f30..79451172 100644 --- a/README.md +++ b/README.md @@ -3,369 +3,136 @@ The micro-framework to create dataframes from functions. Specifically, Hamilton is a framework that allows for delayed executions of functions in a Directed Acyclic Graph (DAG). -This is meant to solve the problem of creating complex data pipelines. Core to the design of hamilton is a 1:1 mapping of -key (function name) to implementation. Hamilton forces a certain paradigm with writing functions, and aims for DAG clarity, +This is meant to solve the problem of creating complex data pipelines. Core to the design of Hamilton is a clear mapping of +function name to implementation. That is, Hamilton forces a certain paradigm with writing functions, and aims for DAG clarity, easy modifications, unit testing, and documentation. # Getting Started -Here's a quick getting started guide to get you up and running in less than 10 minutes. +Here's a quick getting started guide to get you up and running in less than 15 minutes. ## Installation -TODO: +Requirements: -## Hello World -TODO: - -# License -Hamilton is released under GNU Affero General Public License version 3.0 (AGPLv3). -See [COPYING](COPYING) for a copy of the AGPL3 license or see . -This allows many free uses, but does not allow its incorporation (even in part or in translation) into any type of -[proprietary software](http://www.gnu.org/licenses/gpl-faq.html#GPLInProprietarySystem) which you distribute, -or host on a server (e.g. SaaS), without providing - -That said, we're happy to grant commercial licenses of Hamilton. To do so, contact a Stitch Fix contributor and they'll help -point you in the right direction. - -# Contributing -We take contributions, large and small. We operate via a [Code of Conduct](CODE_OF_CONDUCT.md) and expect anyone -contributing to do the same. - -From a legal perspective, we require a contributor license agreement to be signed before taking on contributions. See [CLA](CLA) for details. -Don't be scared by the legalese, your contribution will always be available and free for use; we just want to cover -our bases with respect to using AGPLv3. - -# Hamilton Basics - -## Hamilton API - -### Hamilton Functions -Hamilton is composed of functions. A simple (but rather contrived) example of a hamilton DAG that adds two numbers is as follows: - -```python -def _sum(*vars): - """Helper function to sum numbers. - This is here to demonstrate that functions starting with _ do not get processed by hamilton. - """ - return sum(vars) - -def sum_a_b(a: int, b: int) -> int: - """Adds a and b together - :param a: The first number to add - :param b: The second number to add - :return: The sum of a and b - """ - return _sum(a,b) # Delegates to a helper function -``` - -While this looks like a simple python function, there are a few components to note: -1. The function name `sum_a_b` is a globally unique key. In the DAG there can only be one function named `sum_a_b`. -While this is not optimal for functionality reuse, it makes it extremely easy to learn exactly how a node in the DAG is generated, -and separate out that logic for debugging/iterating. -2. The function `sum_a_b` depends on two upstream nodes -- `a` and `b`. This means that these values must either be: - * Defined by another function - * Passed in by the user as a configuration variable (see `Configuring Hamilton` below) -3. . The function `sum_a_b` makes full use of the python type-hint system. This is required in hamilton, -as it allows us to type-check the inputs and outputs to match with upstream producers and downstream consumers. In this case, -we know that the input `a` has to be an integer, the input `b` has to also be an integer, and anythying that declares `sum_a_b` as an input -has to declare it as an integer. -4. Standard python documentation is a first-class citizen. As we have a 1:1 relationship between python functions and nodes, each function documentation also describes a piece of business logic. -5. Functions that start with _ are ignored, and not included in the DAG. Hamilton tries to make use of every function in a module, so this allows us to easily indicate helper functions that -won't become part of the DAG. +* Python 3.6 or 3.7 +To get started, first you need to install hamilton. It is published to pypi under `sf-hamilton`: +> pip install sf-hamilton -### Decorators - -While the 1:1 mapping of key -> implementation is powerful, we've implemented a few decorators to promote business-logic reuse. The decorators we've used are as follows: - -#### @parameterized -Expands a single function into n, each of which corresponds to a function in which the parameter value is replaced by that specific value. -```python -import pandas as pd -from hamilton.function_modifiers import parametrized -import internal_package_with_logic - -ONE_OFF_DATES = { - #output name # doc string # input value to function - ('D_ELECTION_2016', 'US Election 2016 Dummy'): '2016-11-12', - ('SOME_OUTPUT_NAME', 'Doc string for this thing'): 'value to pass to function', -} - # parameter matches the name of the argument in the function below -@parametrized(parameter='one_off_date', assigned_output=ONE_OFF_DATES) -def create_one_off_dates(date_index: pd.Series, one_off_date: str) -> pd.Series: - """Given a date index, produces a series where a 1 is placed at the date index that would contain that event.""" - one_off_dates = internal_package_with_logic.get_business_week(one_off_date) - return internal_package_with_logic.bool_to_int(date_index.isin([one_off_dates])) -``` -We see here that `parameterized` allows you keep your code DRY by reusing the same function to create multiple -distinct outputs. The _parameter_ key word argument has to match one of the arguments in the function. The rest of -the arguments are pulled from outside the DAG. The _assigned_output_ key word argument takes in a dictionary of -tuple(Output Name, Documentation string) -> value. - -#### @parametrized_input -Expands a single function into n, each of which corresponds to a function in which the parameter value is fed -the input from a specific column -```python -import pandas as pd -from hamilton.function_modifiers import parametrized_input -import internal_package_with_logic - -ONE_OFF_DATES = { - #input var (# output var, # description of new outputs) - 'D_ELECTION_2016', ('D_ELECTION_2016_shifted', 'US election 2016 shifted by 1'), - 'SOME_INPUT_NAME', ('SOME_OUTPUT_NAME', 'Doc string for this thing'), -} - # parameter matches the name of the argument in the function below -@parametrized_input(parameter='one_off_date', assigned_inputs=ONE_OFF_DATES) -def date_shifter(one_off_date: pd.Series) -> pd.Series: - return one_off_date.shift(1) - -``` -We see here that `parameterized_inputs` allows you keep your code DRY by reusing the same function to create multiple -distinct outputs. The _parameter_ key word argument has to match one of the arguments in the function. The rest of -the arguments are pulled from items inside the DAG the DAG. The _assigned_inputs_ key word argument takes in a -dictionary of input_column -> tuple(Output Name, Documentation string). - -Note that this is equivalent to writing the following two function definitions: - -```python -def D_ELECTION_2016_shifted(D_ELECTION_2016: pd.Series) -> pd.Series: - return D_ELECTION_2016.shift(1) - -def SOME_OUTPUT_NAME(SOME_INPUT_NAME: pd.Series) -> pd.Series: - return SOME_INPUT_NAME.shift(1) -``` +While it is installing we encourage you to start on the next section. -Note also that the different input variables must all have compatible types with the original decorated input variable. +## Hamilton in 15 minutes +Hamilton is a new paradigm when it comes to creating dataframes. Rather than thinking about manipulating +a central dataframe, you instead think about the column(s) you want to create, and what inputs are required. There +is no need for you to think about maintaining this dataframe, meaning you do not need to think about any "glue" code; +this is all taken care of by the Hamilton framework. -#### @extract_columns -This works on a function that outputs a dataframe, that we want to extract the columns from and make them individually -available for consumption. So it expands a single function into _n functions_, each of which take in the output dataframe - and output a specific column as named in the `extract_coumns` decorator. +For example rather than writing the following to manipulate a central dataframe object `df`: ```python -import pandas as pd -from hamilton.function_modifiers import extract_columns - -@extract_columns('fiscal_date', 'fiscal_week_name', 'fiscal_month', 'fiscal_quarter', 'fiscal_year') -def fiscal_columns(date_index: pd.Series, fiscal_dates: pd.DataFrame) -> pd.DataFrame: - """Extracts the fiscal column data. - We want to ensure that it has the same spine as date_index. - :param fiscal_dates: the input dataframe to extract. - :return: - """ - df = pd.DataFrame({'date_index': date_index}, index=date_index.index) - merged = df.join(fiscal_dates, how='inner') - return merged -``` -Note: if you have a list of columns to extract, then when you call `@extract_columns` you should call it with an asterisk like this: -```python -import pandas as pd -from hamilton.function_modifiers import extract_columns - -@extract_columns(*my_list_of_column_names) -def my_func(...) -> pd.DataFrame: - """...""" +df['col_c'] = df['col_a'] + df['col_b'] ``` -#### @does -`@does` is a decorator that essentially allows you to run a function over all the input parameters. So you can't pass -any function to `@does`, it has to take any amount of inputs and process them in the same way. +you write ```python -import pandas as pd -from hamilton.function_modifiers import does -import internal_package_with_logic - -def sum_series(**series: pd.Series) -> pd.Series: - ... - -@does(sum_series) -def D_XMAS_GC_WEIGHTED_BY_DAY(D_XMAS_GC_WEIGHTED_BY_DAY_1: pd.Series, - D_XMAS_GC_WEIGHTED_BY_DAY_2: pd.Series) -> pd.Series: - """Adds D_XMAS_GC_WEIGHTED_BY_DAY_1 and D_XMAS_GC_WEIGHTED_BY_DAY_2""" - pass - -@does(internal_package_with_logic.identity_function) -def copy_of_x(x: pd.Series) -> pd.Series: - """Just returns x""" - pass +def col_c(col_a: pd.Series, col_b: pd.Series) -> pd.Series: + """Creating column c from summing column a and column b.""" + return col_a + col_b ``` -The example here is a function, that all that it does, is sum all the parameters together. So we can annotate it with -the `@does` decorator and pass it the `sum_series` function. -The `@does` decorator is currently limited to just allow functions that consist only of one argument, a generic **kwargs. - -#### @model -`@model` allows you to run one of a few pre-configured models. You will need to implement models that make sense for -your business case. Reach out if you need examples. +In diagram form: +![example](hamiltondag.png) +The Hamilton framework will then be able to build a DAG from this function definition. -Under the hood, they're just DAG nodes whose inputs are determined by a configuration parameter. A model takes in two required parameters: -1. The class it uses to run the model. This is (currently) one of the above two classes, and determines what the function actually does. -2. The configuration key that determines how the model functions. This is just the name of a configuration parameter that stores the way the model is run. +So let's create a "Hello World" and start using Hamilton! -The following is an example usage of `@model`: +### Your first hello world. +By now, you should have installed Hamilton, so let's write some code. +1. Create a file `my_functions.py` and add the following functions: ```python import pandas as pd -from hamilton.function_modifiers import model -import internal_package_with_logic - -@model(internal_package_with_logic.GLM, 'model_p_cancel_manual_res') -# This runs a GLM (Generalized Linear Model) -# The associated configuration parameter is 'model_p_cancel_manual_res', -# which points to the results of loading the model_p_cancel_manual_res table -def prob_cancel_manual_res() -> pd.Series: - pass -``` - -`GLM` here is not part of the hamilton framework, and instead a user defined model. -Models (optionally) accept a `output_column` parameter -- this is specifically if the name of the function differs from the output column that it right to. -E.G. if you use the model result as an intermediate object, and manipulate it all later. This is necessary because various dependent columns that a model queries -(e.g. `MULTIPLIER_...` and `OFFSET_...`) are derived from the model's name. +def avg_3wk_spend(spend: pd.Series) -> pd.Series: + """Rolling 3 week average spend.""" + return spend.rolling(3).mean() -#### @config.when* - -`@config.when` allows you to specify different implementations depending on configuration parameters. - -The following use cases are supported: -1. A column is present for only one value of a config parameter -- in this case, we define a function only once, with a `@config.when` -```python - import pandas as pd - from hamilton.function_modifiers import config - - # signups_parent_before_launch is only present in the kids business line - @config.when(business_line='kids') - def signups_parent_before_launch(signups_from_existing_womens_tf: pd.Series) -> pd.Series: - """TODO: - :param signups_from_existing_womens_tf: - :return: - """ - return signups_from_existing_womens_tf -``` -2. A column is implemented differently for different business inputs, e.g. in the case of Stitch Fix gender intent. -```python - import pandas as pd - from hamilton.function_modifiers import config, model - import internal_package_with_logic - - # Some 21 day autoship cadence does not exist for kids, so we just return 0s - @config.when(gender_intent='kids') - def percent_clients_something__kids(date_index: pd.Series) -> pd.Series: - return pd.Series(index=date_index.index, data=0.0) - - # In other business lines, we have a model for it - @config.when_not(gender_intent='kids') - @model(internal_package_with_logic.GLM, 'some_model_name', output_column='percent_clients_something') - def percent_clients_something_model() -> pd.Series: - pass +def spend_per_signup(spend: pd.Series, signups: pd.Series) -> pd.Series: + """The cost per signup in relation to spend.""" + return spend / signups ``` -Note the following: -- The function cannot have the same name in the same file (or python gets unhappy), so we name it with a __ (dunderscore) as a suffix. The dunderscore is -removed before it goes into the function. -- There is currently no `@config.otherwise(...)` decorator, so make sure to have `config.when` specify set of configuration possibilities. -Any missing cases will not have that output column (and subsequent downstream nodes may error out if they ask for it). To make this easier, we have a few more -`@config` decorators: - - - `@config.when_not(param=value)` Will be included if the parameter is _not_ equal to the value specified. - - `@config.when_in(param=[value1, value2, ...])` Will be included if the parameter is equal to one of the specified values. - - `@config.when_not_in(param=[value1, value2, ...])` Will be included if the parameter is not equal to any of the specified values. - - `@config` If you're feeling adventurous, you can pass in a lambda function that takes in the entire configuration and resolves to - `True` or `False`. You probably don't want to do this. - -## Implementation details -### Configuration -The configuration is used not just to feed data to the DAG, but also to determine the strcuture of the DAG. -As such, it is passed in in the constructor, and used during DAG creation. - -### Execution -Execution of the DAG is done using an externally maintained cache. As such, the caller is responsible for storing the dictionary of results and passing -it into the execution engine. Note that this may change as we abstract execution from DAG construction. Execution of the DAG -is currently implemented with a recursive depth-first-traversal, meaning that it is possible (although highly unlikely) to hit recursion depth errors. -If that happens, the culprit is almost always a circular reference in the graph. - -## Configuring Hamilton -In hamilton, configuration is built in as a simple key-value store. Thus, the config is a `Dict[str, Any]`, that should contain a key for -every input not produced by another function. - -### Overrides -The configuration dictionary should not be used for overriding functions that are already implemented. To do this, use the `override` parameter in `execute`. -## Running Hamilton -See the function `execute(...)`. - -## Visualizing the DAG -To visualize the DAG, pass the flag `display_graph=True` to execute. It will render an image in a pdf format. - -### Typing System - -Hamilton makes use of python's type-hinting feature to check compatibility between function outputs and function inputs. However, -this is not particularly sophisticated, largely due to the lack of available tooling in python. Thus, generic types do not function correctly. -The following will not work: +The astute observer will notice we have not defined `spend` or `signups` as functions. That is okay, +this just means these need to be provided as input when we come to actually wanting to create a dataframe. +2. Create a `my_script.py` which is where code will live to tell Hamilton what to do: ```python -def some_func() -> Dict[str, int]: - return {1: 2} -``` +import importlib +import logging +import sys -The following will both work: -```python -def some_func() -> Dict: - return {1: 2} -``` +import pandas as pd +from hamilton import driver -```python -def some_func() -> dict: - return {1: 2} +logger = logging.getLogger(__name__) +logging.basicConfig(stream=sys.stdout) +initial_columns = { # load from actuals or wherever -- this is our initial data we use as input. + 'signups': pd.Series([1, 10, 50, 100, 200, 400]), + 'spend': pd.Series([10, 10, 20, 40, 40, 50]), +} +# we need to tell hamilton where to load function definitions from +module_name = 'my_functions' +module = importlib.import_module(module_name) +dr = driver.Driver(initial_columns, module) # can pass in multiple modules +# we need to specify what we want in the final dataframe. +output_columns = [ + 'spend', + 'signups', + 'avg_3wk_spend', + 'spend_per_signup', +] +# let's create the dataframe! +df = dr.execute(output_columns, display_graph=True) +print(df) ``` +3. Run my_script.py +> python my_script.py -While this is unfortunate, the typing API in python is not yet sophisticated enough to rely on accurate subclass validation. - - -## Repo organization - -This repository is organized as follows: - -1. hamilton/ is platform code to orchestrate and execute the graph. -2. tests/ is the place where unit tests (or light integration tests) are located. - -## How to contribute - -1. Checkout the repo. If external to Stitch Fix, fork the repo. -2. Create a virtual environment for it. See python algo curriculum slides for details. -3. Activate the virtual environment and install all dependencies. One for the package, one for making comparisons, one for running unit tests. I.e. `pip install -r requirements*.txt` should install all three for you. -3. Make pycharm depend on that virtual environment & install required dependencies (it should prompt you because it'll read the requirements.txt file). -4. `brew install pre-commit` if you haven't. -5. Run `pre-commit install` from the root of the repository. -6. Create a branch off of the latest master branch. `git checkout -b my_branch`. -7. Do you work & commit it. -8. Push to github and create a PR. -9. When you push to github circle ci will kick off unit tests and migration tests (for Stitch Fix users only). +You should see the following output: +![hello_world_image](hello_world_image.png) + spend signups avg_3wk_spend spend_per_signup + 0 10 1 NaN 10.000 + 1 10 10 NaN 1.000 + 2 20 50 13.333333 0.400 + 3 40 100 23.333333 0.400 + 4 40 200 33.333333 0.200 + 5 50 400 43.333333 0.125 -## How to run unit tests +Congratulations - you just created your first dataframe with Hamilton! -You need to have installed the `requirements-test.txt` dependencies into the environment you're running for this to work. You can run tests two ways: - -1. Through pycharm/command line. -2. Using circle ci locally. The config for this lives in `.circleci/config.yml` which also shows commands to run tests -from the command line. - -## How to run compare integration tests +# License +Hamilton is released under the GNU Affero General Public License version 3.0 (AGPLv3). +See [COPYING](COPYING) for a copy of the AGPL3 license or see . +This allows many free uses, but does not allow its incorporation (even in part or in translation) into any type of +[proprietary software](http://www.gnu.org/licenses/gpl-faq.html#GPLInProprietarySystem) which you distribute, +or host on a server (e.g. SaaS), without providing source code. -You need to have installed the `requirements-demandpy-migration.txt` dependencies into the environment you're running for this to work. You can run tests two ways: +That said, we're happy to grant commercial licenses of Hamilton. To do so, contact algorithms-opensource@stitchfix.com. -1. Through pycharm/command line. -2. Using circle ci locally. The config for this lives in `.circleci/config.yml` which also shows commands to run the migration integration tests from the command line. +# Contributing +We take contributions, large and small. We operate via a [Code of Conduct](CODE_OF_CONDUCT.md) and expect anyone +contributing to do the same. -### Using pycharm to execute & debug unit tests +From a legal perspective, we require a contributor license agreement to be signed before taking on contributions. See [CLA](CLA) for details. +Don't be scared by the legalese, your contribution will always be available and free for use; we just want to cover +our bases with respect to using AGPLv3. -You can debug and execute unit tests in pycharm easily. To set it up, you just hit `Edit configurations` and then -add New > Python Tests > pytest. You then want to specify the `tests/` folder under `Script path`, and ensure the -python environment executing it is the appropriate one with all the dependencies installed. If you add `-v` to the -additional arguments part, you'll then get verbose diffs if any tests fail. +# Prescribed Development Workflow +In general we prescribe the following: -### Using circle ci locally +0. Ensure you understand [Hamilton Basics](basics.md). +1. Familiarize yourself with some of the [Hamilton decorators](decorators.md). They will help keep your code DRY. +2. Start creating Hamilton Functions that represent your work. We suggest grouping them in modules where it makes sense. +3. Write a simple script so that you can easily run things end to end. +4. Join the [slack/discord]() community to chat/ask Qs/etc. -You need to install the circleci command line tooling for this to work. See the unit testing algo curriculum slides for details. -Once you have installed it you just need to run `circleci local execute` from the root directory and it'll run the entire suite of tests -that are setup to run each time you push a commit to a branch in github. ## PyCharm Tips diff --git a/basics.md b/basics.md new file mode 100644 index 00000000..13987280 --- /dev/null +++ b/basics.md @@ -0,0 +1,138 @@ +# Hamilton Basics + +There are two parts to Hamilton: + +1. Hamilton Functions. + + Hamilton Functions are what you, the end user write. + +2. Hamilton Driver. + + Once you've written your functions, you will need to use the Hamilton Driver to build the DAG and orchestrate + execution. + +Let's diver deeper into these parts below, but first a word on terminology. + +We use the following terms interchangeably, e.g. a ____ in Hamilton is ... : + +* column +* variable +* node +* function + +That's because we're representing columns as functions, which are parts of a directed acyclic graph. That is + a column is a part of a dataframe. To compute a column we write a function that has input variables. From these functions +we create a DAG and represent each function as a node, linking each input variable by an edge to its respective node. + +## Hamilton Functions +Using Hamilton is all about writing functions. From these functions a dataframe is constructed for you at execution time. + +A simple (but rather contrived) example of what Hamilton does that adds two numbers is as follows: + +```python +def _sum(*vars): + """Helper function to sum numbers. + This is here to demonstrate that functions starting with _ do not get processed by hamilton. + """ + return sum(vars) + +def sum_a_b(a: int, b: int) -> int: + """Adds a and b together + :param a: The first number to add + :param b: The second number to add + :return: The sum of a and b + """ + return _sum(a,b) # Delegates to a helper function +``` + +While this looks like a simple python function, there are a few components to note: +1. The function name `sum_a_b` is a globally unique key. In the DAG there can only be one function named `sum_a_b`. + While this is not optimal for functionality reuse, it makes it extremely easy to learn exactly how a node in the DAG is generated, + and separate out that logic for debugging/iterating. +2. The function `sum_a_b` depends on two upstream nodes -- `a` and `b`. This means that these values must either be: + * Defined by another function + * Passed in by the user as a configuration variable (see `Hamilton Driver Code` below) +3. The function `sum_a_b` makes full use of the python type-hint system. This is required in Hamilton, + as it allows us to type-check the inputs and outputs to match with upstream producers and downstream consumers. In this case, + we know that the input `a` has to be an integer, the input `b` has to also be an integer, and anything that declares `sum_a_b` as an input + has to declare it as an integer. +4. Standard python documentation is a first-class citizen. As we have a 1:1 relationship between python functions and + nodes, each function documentation also describes a piece of business logic. +5. Functions that start with _ are ignored, and not included in the DAG. Hamilton tries to make use of every function + in a module, so this allows us to easily indicate helper functions that won't become part of the DAG. + + +### Python Types & Hamilton + +Hamilton makes use of python's type-hinting feature to check compatibility between function outputs and function inputs. However, +this is not particularly sophisticated, largely due to the lack of available tooling in python. Thus, generic types do not function correctly. +The following will not work: + +```python +def some_func() -> Dict[str, int]: + return {1: 2} +``` + +The following will both work: +```python +def some_func() -> Dict: + return {1: 2} +``` + +```python +def some_func() -> dict: + return {1: 2} +``` + +While this is unfortunate, the typing API in python is not yet sophisticated enough to rely on accurate subclass validation. + +## Hamilton Driver Code +For documentation on the actual Hamilton Driver code, we invite the reader to [read the Driver class source code](/hamilton/driver.py) directly. + +At a high level, the driver code does two things: + +1. Create a Directed Acyclic Graph (DAG) from functions you define. + ```python + from hamilton import driver + dr = driver.Driver(config, *modules_to_load) # this creates the DAG from the modules you pass in. + ``` +2. It orchestrates execution given expected output and provided input. + ```python + df = dr.execute(final_vars, overrides, display_graph) # this executes the DAG appropriately to create the dataframe. + ``` + +The driver object also has a few other methods, e.g. `display_all_functions()`, `list_available_variables()`, but they're +really only used for debugging purposes. + +Let's dive into the driver constructor call, and the execute method. + +### Constructor Call to Driver() +The constructor call is pretty simple. Each constructor call sets up a DAG for execution given some configuration. +So if you want to change something about the DAG, very likely you'll need to create a new Driver() object. + +#### config: Dict[str, Any], e.g. Configuration +The configuration is used not just to feed data to the DAG, but also to determine the structure of the DAG. +As such, it is passed in to the constructor, and used during DAG creation. This enables such decorators like @config.when. + +Otherwise the contents of the _config_ dictionary should include all the inputs required for whatever final output you +want to create. The configuration dictionary should not be used for overriding what Hamilton will compute. +To do this, use the `override` parameter as part of the `execute()` -- see below. + +#### *modules: ModuleType +This can be any number of modules. We traverse the modules in the order they are provided. + +### Driver.execute() +The execute function determines the DAG walk required to get the requisite final variables (aka columns) that you want +in the dataframe. It also ensures that you have provided everything to execute properly. + +Once it executes it uses a dictionary to memoize results, so that everything is only computed once. It executes the DAG +via a recursive depth-first-traversal, which leads to the possibility (although highly unlikely) of hitting python +recursion depth errors. If that happens, the culprit is almost always a circular reference in the graph. We suggest +displaying the DAG to verify this. + +To help speed up development of new or existing Hamilton Functions, we enable you to _override_ parts of the DAG. What +this means is that before calling `execute()`, you have computed some result that you want to use instead of what Hamilton +would produce. To do so, you just pass in a dictionary of `{'col_name': YOUR_VALUE}` as the overrides argument to the +execute function. + +To visualize the DAG that would be executed, pass the flag `display_graph=True` to execute. It will render an image in a pdf format. diff --git a/decorators.md b/decorators.md new file mode 100644 index 00000000..fe97b27c --- /dev/null +++ b/decorators.md @@ -0,0 +1,209 @@ +# Decorators + +While the 1:1 mapping of column -> function implementation is powerful, we've implemented a few decorators to promote +business-logic reuse. The decorators we've defined are as follows +(source can be found in [function_modifiers](hamilton/function_modifiers.py)): + +## @parameterized +Expands a single function into n, each of which corresponds to a function in which the parameter value is replaced by +that specific value. +```python +import pandas as pd +from hamilton.function_modifiers import parametrized +import internal_package_with_logic + +ONE_OFF_DATES = { + #output name # doc string # input value to function + ('D_ELECTION_2016', 'US Election 2016 Dummy'): '2016-11-12', + ('SOME_OUTPUT_NAME', 'Doc string for this thing'): 'value to pass to function', +} + # parameter matches the name of the argument in the function below +@parametrized(parameter='one_off_date', assigned_output=ONE_OFF_DATES) +def create_one_off_dates(date_index: pd.Series, one_off_date: str) -> pd.Series: + """Given a date index, produces a series where a 1 is placed at the date index that would contain that event.""" + one_off_dates = internal_package_with_logic.get_business_week(one_off_date) + return internal_package_with_logic.bool_to_int(date_index.isin([one_off_dates])) +``` +We see here that `parameterized` allows you keep your code DRY by reusing the same function to create multiple +distinct outputs. The _parameter_ key word argument has to match one of the arguments in the function. The rest of +the arguments are pulled from outside the DAG. The _assigned_output_ key word argument takes in a dictionary of +tuple(Output Name, Documentation string) -> value. + +## @parametrized_input +Expands a single function into n, each of which corresponds to a function in which the parameter value is fed +the input from a specific column +```python +import pandas as pd +from hamilton.function_modifiers import parametrized_input +import internal_package_with_logic + +ONE_OFF_DATES = { + #input var (# output var, # description of new outputs) + 'D_ELECTION_2016', ('D_ELECTION_2016_shifted', 'US election 2016 shifted by 1'), + 'SOME_INPUT_NAME', ('SOME_OUTPUT_NAME', 'Doc string for this thing'), +} + # parameter matches the name of the argument in the function below +@parametrized_input(parameter='one_off_date', assigned_inputs=ONE_OFF_DATES) +def date_shifter(one_off_date: pd.Series) -> pd.Series: + return one_off_date.shift(1) + +``` +We see here that `parameterized_inputs` allows you keep your code DRY by reusing the same function to create multiple +distinct outputs. The _parameter_ key word argument has to match one of the arguments in the function. The rest of +the arguments are pulled from items inside the DAG the DAG. The _assigned_inputs_ key word argument takes in a +dictionary of input_column -> tuple(Output Name, Documentation string). + +Note that this is equivalent to writing the following two function definitions: + +```python +def D_ELECTION_2016_shifted(D_ELECTION_2016: pd.Series) -> pd.Series: + return D_ELECTION_2016.shift(1) + +def SOME_OUTPUT_NAME(SOME_INPUT_NAME: pd.Series) -> pd.Series: + return SOME_INPUT_NAME.shift(1) +``` + +Note also that the different input variables must all have compatible types with the original decorated input variable. + +## @extract_columns +This works on a function that outputs a dataframe, that we want to extract the columns from and make them individually +available for consumption. So it expands a single function into _n functions_, each of which take in the output dataframe + and output a specific column as named in the `extract_coumns` decorator. +```python +import pandas as pd +from hamilton.function_modifiers import extract_columns + +@extract_columns('fiscal_date', 'fiscal_week_name', 'fiscal_month', 'fiscal_quarter', 'fiscal_year') +def fiscal_columns(date_index: pd.Series, fiscal_dates: pd.DataFrame) -> pd.DataFrame: + """Extracts the fiscal column data. + We want to ensure that it has the same spine as date_index. + :param fiscal_dates: the input dataframe to extract. + :return: + """ + df = pd.DataFrame({'date_index': date_index}, index=date_index.index) + merged = df.join(fiscal_dates, how='inner') + return merged +``` +Note: if you have a list of columns to extract, then when you call `@extract_columns` you should call it with an +asterisk like this: +```python +import pandas as pd +from hamilton.function_modifiers import extract_columns + +@extract_columns(*my_list_of_column_names) +def my_func(...) -> pd.DataFrame: + """...""" +``` + +## @does +`@does` is a decorator that essentially allows you to run a function over all the input parameters. So you can't pass +any function to `@does`, it has to take any amount of inputs and process them in the same way. +```python +import pandas as pd +from hamilton.function_modifiers import does +import internal_package_with_logic + +def sum_series(**series: pd.Series) -> pd.Series: + ... + +@does(sum_series) +def D_XMAS_GC_WEIGHTED_BY_DAY(D_XMAS_GC_WEIGHTED_BY_DAY_1: pd.Series, + D_XMAS_GC_WEIGHTED_BY_DAY_2: pd.Series) -> pd.Series: + """Adds D_XMAS_GC_WEIGHTED_BY_DAY_1 and D_XMAS_GC_WEIGHTED_BY_DAY_2""" + pass + +@does(internal_package_with_logic.identity_function) +def copy_of_x(x: pd.Series) -> pd.Series: + """Just returns x""" + pass +``` +The example here is a function, that all that it does, is sum all the parameters together. So we can annotate it with +the `@does` decorator and pass it the `sum_series` function. +The `@does` decorator is currently limited to just allow functions that consist only of one argument, a generic **kwargs. + +## @model +`@model` allows you to abstract a function that is a model. You will need to implement models that make sense for +your business case. Reach out if you need examples. + +Under the hood, they're just DAG nodes whose inputs are determined by a configuration parameter. A model takes in +two required parameters: +1. The class it uses to run the model. If external to Stitch Fix you will need to write your own, else internally + see the internal docs for this. Basically the class defined determines what the function actually does. +2. The configuration key that determines how the model functions. This is just the name of a configuration parameter + that stores the way the model is run. + +The following is an example usage of `@model`: + +```python +import pandas as pd +from hamilton.function_modifiers import model +import internal_package_with_logic + +@model(internal_package_with_logic.GLM, 'model_p_cancel_manual_res') +# This runs a GLM (Generalized Linear Model) +# The associated configuration parameter is 'model_p_cancel_manual_res', +# which points to the results of loading the model_p_cancel_manual_res table +def prob_cancel_manual_res() -> pd.Series: + pass +``` + +`GLM` here is not part of the hamilton framework, and instead a user defined model. + +Models (optionally) accept a `output_column` parameter -- this is specifically if the name of the function differs +from the output column that it right to. E.G. if you use the model result as an intermediate object, and manipulate +it all later. This is necessary because various dependent columns that a model queries +(e.g. `MULTIPLIER_...` and `OFFSET_...`) are derived from the model's name. + +## @config.when* + +`@config.when` allows you to specify different implementations depending on configuration parameters. + +The following use cases are supported: +1. A column is present for only one value of a config parameter -- in this case, we define a function only once, + with a `@config.when` +```python + import pandas as pd + from hamilton.function_modifiers import config + + # signups_parent_before_launch is only present in the kids business line + @config.when(business_line='kids') + def signups_parent_before_launch(signups_from_existing_womens_tf: pd.Series) -> pd.Series: + """TODO: + :param signups_from_existing_womens_tf: + :return: + """ + return signups_from_existing_womens_tf +``` +2. A column is implemented differently for different business inputs, e.g. in the case of Stitch Fix gender intent. +```python + import pandas as pd + from hamilton.function_modifiers import config, model + import internal_package_with_logic + + # Some 21 day autoship cadence does not exist for kids, so we just return 0s + @config.when(gender_intent='kids') + def percent_clients_something__kids(date_index: pd.Series) -> pd.Series: + return pd.Series(index=date_index.index, data=0.0) + + # In other business lines, we have a model for it + @config.when_not(gender_intent='kids') + @model(internal_package_with_logic.GLM, 'some_model_name', output_column='percent_clients_something') + def percent_clients_something_model() -> pd.Series: + pass +``` +Note the following: +- The function cannot have the same name in the same file (or python gets unhappy), so we name it with a + __ (dunderscore) as a suffix. The dunderscore is removed before it goes into the function. +- There is currently no `@config.otherwise(...)` decorator, so make sure to have `config.when` specify set of + configuration possibilities. +Any missing cases will not have that output column (and subsequent downstream nodes may error out if they ask for it). +To make this easier, we have a few more `@config` decorators: + + - `@config.when_not(param=value)` Will be included if the parameter is _not_ equal to the value specified. + - `@config.when_in(param=[value1, value2, ...])` Will be included if the parameter is equal to one of the specified + values. + - `@config.when_not_in(param=[value1, value2, ...])` Will be included if the parameter is not equal to any of the + specified values. + - `@config` If you're feeling adventurous, you can pass in a lambda function that takes in the entire configuration + and resolves to + `True` or `False`. You probably don't want to do this. diff --git a/developer_setup.md b/developer_setup.md new file mode 100644 index 00000000..e19db3e5 --- /dev/null +++ b/developer_setup.md @@ -0,0 +1,43 @@ +# Developer/Contributor Setup + +## Repo organization + +This repository is organized as follows: + +1. hamilton/ is code to orchestrate and execute the graph. +2. tests/ is the place where unit tests (or light integration tests) are located. + +## How to contribute + +1. Checkout the repo. If external to Stitch Fix, fork the repo. +2. Create a virtual environment for it. See python algo curriculum slides for details. +3. Activate the virtual environment and install all dependencies. One for the package, one for making comparisons, one for running unit tests. I.e. `pip install -r requirements*.txt` should install all three for you. +3. Make pycharm depend on that virtual environment & install required dependencies (it should prompt you because it'll read the requirements.txt file). +4. `brew install pre-commit` if you haven't. +5. Run `pre-commit install` from the root of the repository. +6. Create a branch off of the latest master branch. `git checkout -b my_branch`. +7. Do you work & commit it. +8. Push to github and create a PR. +9. When you push to github circle ci will kick off unit tests and migration tests (for Stitch Fix users only). + + +## How to run unit tests + +You need to have installed the `requirements-test.txt` dependencies into the environment you're running for this to work. You can run tests two ways: + +1. Through pycharm/command line. +2. Using circle ci locally. The config for this lives in `.circleci/config.yml` which also shows commands to run tests +from the command line. + +### Using pycharm to execute & debug unit tests + +You can debug and execute unit tests in pycharm easily. To set it up, you just hit `Edit configurations` and then +add New > Python Tests > pytest. You then want to specify the `tests/` folder under `Script path`, and ensure the +python environment executing it is the appropriate one with all the dependencies installed. If you add `-v` to the +additional arguments part, you'll then get verbose diffs if any tests fail. + +### Using circle ci locally + +You need to install the circleci command line tooling for this to work. See the unit testing algo curriculum slides for details. +Once you have installed it you just need to run `circleci local execute` from the root directory and it'll run the entire suite of tests +that are setup to run each time you push a commit to a branch in github. diff --git a/examples/hello_world/my_functions.py b/examples/hello_world/my_functions.py new file mode 100644 index 00000000..3da0e833 --- /dev/null +++ b/examples/hello_world/my_functions.py @@ -0,0 +1,11 @@ +import pandas as pd + + +def avg_3wk_spend(spend: pd.Series) -> pd.Series: + """Rolling 3 week average spend.""" + return spend.rolling(3).mean() + + +def spend_per_signup(spend: pd.Series, signups: pd.Series) -> pd.Series: + """The cost per signup in relation to spend.""" + return spend / signups diff --git a/examples/hello_world/my_script.py b/examples/hello_world/my_script.py new file mode 100644 index 00000000..84f219cd --- /dev/null +++ b/examples/hello_world/my_script.py @@ -0,0 +1,27 @@ +import importlib +import logging +import sys + +import pandas as pd +from hamilton import driver + +logger = logging.getLogger(__name__) +logging.basicConfig(stream=sys.stdout) +initial_columns = { # load from actuals or wherever -- this is our initial data we use as input. + 'signups': pd.Series([1, 10, 50, 100, 200, 400]), + 'spend': pd.Series([10, 10, 20, 40, 40, 50]), +} +# we need to tell hamilton where to load function definitions from +module_name = 'my_functions' +module = importlib.import_module(module_name) +dr = driver.Driver(initial_columns, module) # can pass in multiple modules +# we need to specify what we want in the final dataframe. +output_columns = [ + 'spend', + 'signups', + 'avg_3wk_spend', + 'spend_per_signup', +] +# let's create the dataframe! +df = dr.execute(output_columns, display_graph=True) +print(df) diff --git a/hamilton/driver.py b/hamilton/driver.py index 9bf30db0..de34e530 100644 --- a/hamilton/driver.py +++ b/hamilton/driver.py @@ -30,7 +30,15 @@ class Variable: class Driver(object): + """This class orchestrates creating and executing the DAG to create a dataframe.""" + def __init__(self, config: Dict[str, Any], *modules: ModuleType): + """Constructor: creates a DAG given the configuration & modules to crawl. + + :param config: This is a dictionary of initial data & configuration. + The contents are used to help create the DAG. + :param modules: Python module objects you want to inspect for Hamilton Functions. + """ self.graph = graph.FunctionGraph(*modules, config=config) def validate_inputs(self, user_nodes: Collection[node.Node], inputs: Dict[str, Any]): @@ -83,8 +91,11 @@ def raw_execute(self, nodes, user_nodes = self.graph.get_required_functions(final_vars) self.validate_inputs(user_nodes, self.graph.config) # TODO -- validate within the function graph itself if display_graph: - # TODO: fix path. - self.graph.display(nodes, user_nodes, output_file_path='test-output/execute.gv') + # TODO: fix hardcoded path. + try: + self.graph.display(nodes, user_nodes, output_file_path='test-output/execute.gv') + except ImportError as e: + logger.warning(f'Unable to import {e}', exc_info=True) memoized_computation = dict() # memoized storage self.graph.execute(nodes, memoized_computation, overrides) columns = {c: memoized_computation[c] for c in final_vars} # only want request variables in df. @@ -104,6 +115,7 @@ def display_all_functions(self): if __name__ == '__main__': + """some example test code""" import sys import importlib diff --git a/hamilton/function_modifiers.py b/hamilton/function_modifiers.py index 4cb1b7a0..fb9bc5d2 100644 --- a/hamilton/function_modifiers.py +++ b/hamilton/function_modifiers.py @@ -314,7 +314,7 @@ def get_nodes(self, fn: Callable, config) -> Collection[node.Node]: class model(NodeExpander): def __init__(self, model_cls: Type[BaseModel], config_param: str, **extra_model_params): - """Constructs a model. Takes in a model_cls, whose only cunstruction parameter is a dictionary.""" + """Constructs a model. Takes in a model_cls, whose only construction parameter is a dictionary.""" self.model_cls = model_cls self.config_param = config_param self.extra_model_params = extra_model_params diff --git a/hamiltondag.png b/hamiltondag.png new file mode 100644 index 0000000000000000000000000000000000000000..450aa790b55fdb1c0b040bcb4c4ac784fbfeaf74 GIT binary patch literal 121007 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 z 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%0DFNy;3XTea%XJy`-z!&faGE&&klA{>HAm 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 literal 0 HcmV?d00001 diff --git a/hello_world_image.png b/hello_world_image.png new file mode 100644 index 0000000000000000000000000000000000000000..6c4f63b08cc7e2f68f5a55c7f2eb180ac2c1e5fc GIT binary patch literal 24345 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