apache-hamilton 1.90.0.dev0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. apache_hamilton-1.90.0.dev0.dist-info/METADATA +407 -0
  2. apache_hamilton-1.90.0.dev0.dist-info/RECORD +151 -0
  3. apache_hamilton-1.90.0.dev0.dist-info/WHEEL +4 -0
  4. apache_hamilton-1.90.0.dev0.dist-info/entry_points.txt +9 -0
  5. apache_hamilton-1.90.0.dev0.dist-info/licenses/DISCLAIMER +10 -0
  6. apache_hamilton-1.90.0.dev0.dist-info/licenses/LICENSE +228 -0
  7. apache_hamilton-1.90.0.dev0.dist-info/licenses/NOTICE +5 -0
  8. hamilton/__init__.py +24 -0
  9. hamilton/ad_hoc_utils.py +132 -0
  10. hamilton/async_driver.py +465 -0
  11. hamilton/base.py +466 -0
  12. hamilton/caching/__init__.py +16 -0
  13. hamilton/caching/adapter.py +1475 -0
  14. hamilton/caching/cache_key.py +70 -0
  15. hamilton/caching/fingerprinting.py +287 -0
  16. hamilton/caching/stores/__init__.py +16 -0
  17. hamilton/caching/stores/base.py +242 -0
  18. hamilton/caching/stores/file.py +140 -0
  19. hamilton/caching/stores/memory.py +297 -0
  20. hamilton/caching/stores/sqlite.py +282 -0
  21. hamilton/caching/stores/utils.py +40 -0
  22. hamilton/cli/__init__.py +16 -0
  23. hamilton/cli/__main__.py +328 -0
  24. hamilton/cli/commands.py +126 -0
  25. hamilton/cli/logic.py +338 -0
  26. hamilton/common/__init__.py +76 -0
  27. hamilton/contrib/__init__.py +41 -0
  28. hamilton/data_quality/__init__.py +16 -0
  29. hamilton/data_quality/base.py +198 -0
  30. hamilton/data_quality/default_validators.py +560 -0
  31. hamilton/data_quality/pandera_validators.py +121 -0
  32. hamilton/dataflows/__init__.py +726 -0
  33. hamilton/dataflows/template/README.md +25 -0
  34. hamilton/dataflows/template/__init__.py +54 -0
  35. hamilton/dataflows/template/author.md +28 -0
  36. hamilton/dataflows/template/requirements.txt +0 -0
  37. hamilton/dataflows/template/tags.json +7 -0
  38. hamilton/dataflows/template/valid_configs.jsonl +1 -0
  39. hamilton/dev_utils/__init__.py +16 -0
  40. hamilton/dev_utils/deprecation.py +204 -0
  41. hamilton/driver.py +2112 -0
  42. hamilton/execution/__init__.py +16 -0
  43. hamilton/execution/debugging_utils.py +56 -0
  44. hamilton/execution/executors.py +502 -0
  45. hamilton/execution/graph_functions.py +421 -0
  46. hamilton/execution/grouping.py +430 -0
  47. hamilton/execution/state.py +539 -0
  48. hamilton/experimental/__init__.py +27 -0
  49. hamilton/experimental/databackend.py +61 -0
  50. hamilton/experimental/decorators/__init__.py +16 -0
  51. hamilton/experimental/decorators/parameterize_frame.py +233 -0
  52. hamilton/experimental/h_async.py +29 -0
  53. hamilton/experimental/h_cache.py +413 -0
  54. hamilton/experimental/h_dask.py +28 -0
  55. hamilton/experimental/h_databackends.py +174 -0
  56. hamilton/experimental/h_ray.py +28 -0
  57. hamilton/experimental/h_spark.py +32 -0
  58. hamilton/function_modifiers/README +40 -0
  59. hamilton/function_modifiers/__init__.py +121 -0
  60. hamilton/function_modifiers/adapters.py +900 -0
  61. hamilton/function_modifiers/base.py +859 -0
  62. hamilton/function_modifiers/configuration.py +310 -0
  63. hamilton/function_modifiers/delayed.py +202 -0
  64. hamilton/function_modifiers/dependencies.py +246 -0
  65. hamilton/function_modifiers/expanders.py +1230 -0
  66. hamilton/function_modifiers/macros.py +1634 -0
  67. hamilton/function_modifiers/metadata.py +434 -0
  68. hamilton/function_modifiers/recursive.py +908 -0
  69. hamilton/function_modifiers/validation.py +289 -0
  70. hamilton/function_modifiers_base.py +31 -0
  71. hamilton/graph.py +1153 -0
  72. hamilton/graph_types.py +264 -0
  73. hamilton/graph_utils.py +41 -0
  74. hamilton/htypes.py +450 -0
  75. hamilton/io/__init__.py +32 -0
  76. hamilton/io/data_adapters.py +216 -0
  77. hamilton/io/default_data_loaders.py +224 -0
  78. hamilton/io/materialization.py +500 -0
  79. hamilton/io/utils.py +158 -0
  80. hamilton/lifecycle/__init__.py +67 -0
  81. hamilton/lifecycle/api.py +833 -0
  82. hamilton/lifecycle/base.py +1130 -0
  83. hamilton/lifecycle/default.py +802 -0
  84. hamilton/log_setup.py +47 -0
  85. hamilton/models.py +92 -0
  86. hamilton/node.py +449 -0
  87. hamilton/plugins/README.md +48 -0
  88. hamilton/plugins/__init__.py +16 -0
  89. hamilton/plugins/dask_extensions.py +47 -0
  90. hamilton/plugins/dlt_extensions.py +161 -0
  91. hamilton/plugins/geopandas_extensions.py +49 -0
  92. hamilton/plugins/h_dask.py +331 -0
  93. hamilton/plugins/h_ddog.py +522 -0
  94. hamilton/plugins/h_diskcache.py +163 -0
  95. hamilton/plugins/h_experiments/__init__.py +22 -0
  96. hamilton/plugins/h_experiments/__main__.py +62 -0
  97. hamilton/plugins/h_experiments/cache.py +39 -0
  98. hamilton/plugins/h_experiments/data_model.py +68 -0
  99. hamilton/plugins/h_experiments/hook.py +219 -0
  100. hamilton/plugins/h_experiments/server.py +375 -0
  101. hamilton/plugins/h_kedro.py +152 -0
  102. hamilton/plugins/h_logging.py +454 -0
  103. hamilton/plugins/h_mcp/__init__.py +28 -0
  104. hamilton/plugins/h_mcp/__main__.py +33 -0
  105. hamilton/plugins/h_mcp/_helpers.py +129 -0
  106. hamilton/plugins/h_mcp/_templates.py +417 -0
  107. hamilton/plugins/h_mcp/server.py +328 -0
  108. hamilton/plugins/h_mlflow.py +335 -0
  109. hamilton/plugins/h_narwhals.py +134 -0
  110. hamilton/plugins/h_openlineage.py +400 -0
  111. hamilton/plugins/h_opentelemetry.py +167 -0
  112. hamilton/plugins/h_pandas.py +257 -0
  113. hamilton/plugins/h_pandera.py +117 -0
  114. hamilton/plugins/h_polars.py +304 -0
  115. hamilton/plugins/h_polars_lazyframe.py +282 -0
  116. hamilton/plugins/h_pyarrow.py +56 -0
  117. hamilton/plugins/h_pydantic.py +127 -0
  118. hamilton/plugins/h_ray.py +242 -0
  119. hamilton/plugins/h_rich.py +142 -0
  120. hamilton/plugins/h_schema.py +493 -0
  121. hamilton/plugins/h_slack.py +100 -0
  122. hamilton/plugins/h_spark.py +1380 -0
  123. hamilton/plugins/h_threadpool.py +125 -0
  124. hamilton/plugins/h_tqdm.py +122 -0
  125. hamilton/plugins/h_vaex.py +129 -0
  126. hamilton/plugins/huggingface_extensions.py +236 -0
  127. hamilton/plugins/ibis_extensions.py +93 -0
  128. hamilton/plugins/jupyter_magic.py +622 -0
  129. hamilton/plugins/kedro_extensions.py +117 -0
  130. hamilton/plugins/lightgbm_extensions.py +99 -0
  131. hamilton/plugins/matplotlib_extensions.py +108 -0
  132. hamilton/plugins/mlflow_extensions.py +216 -0
  133. hamilton/plugins/numpy_extensions.py +105 -0
  134. hamilton/plugins/pandas_extensions.py +1763 -0
  135. hamilton/plugins/plotly_extensions.py +150 -0
  136. hamilton/plugins/polars_extensions.py +71 -0
  137. hamilton/plugins/polars_implementations.py +25 -0
  138. hamilton/plugins/polars_lazyframe_extensions.py +302 -0
  139. hamilton/plugins/polars_post_1_0_0_extensions.py +877 -0
  140. hamilton/plugins/polars_pre_1_0_0_extension.py +836 -0
  141. hamilton/plugins/pydantic_extensions.py +98 -0
  142. hamilton/plugins/pyspark_pandas_extensions.py +47 -0
  143. hamilton/plugins/sklearn_plot_extensions.py +129 -0
  144. hamilton/plugins/spark_extensions.py +105 -0
  145. hamilton/plugins/vaex_extensions.py +51 -0
  146. hamilton/plugins/xgboost_extensions.py +91 -0
  147. hamilton/plugins/yaml_extensions.py +89 -0
  148. hamilton/registry.py +254 -0
  149. hamilton/settings.py +18 -0
  150. hamilton/telemetry.py +50 -0
  151. hamilton/version.py +18 -0
@@ -0,0 +1,407 @@
1
+ Metadata-Version: 2.4
2
+ Name: apache-hamilton
3
+ Version: 1.90.0.dev0
4
+ Summary: Apache Hamilton (incubating) is a lightweight Python library for directed acyclic graphs (DAGs) of transformations. Your DAG is **portable**; it runs anywhere Python runs, whether it's a script, notebook, Airflow pipeline, FastAPI server, etc. Your DAG is **expressive**; Apache Hamilton has extensive features to define and modify the execution of a DAG (e.g., data validation, experiment tracking, remote execution).
5
+ Keywords: hamilton
6
+ Author-email: Stefan Krawczyk <stefank@cs.stanford.edu>, Elijah ben Izzy <elijah@dagworks.io>
7
+ Requires-Python: >=3.10.1, <4
8
+ Description-Content-Type: text/markdown
9
+ License-Expression: Apache-2.0
10
+ Classifier: Development Status :: 5 - Production/Stable
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Natural Language :: English
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Programming Language :: Python :: 3.14
19
+ License-File: DISCLAIMER
20
+ License-File: LICENSE
21
+ License-File: NOTICE
22
+ Requires-Dist: numpy
23
+ Requires-Dist: pandas
24
+ Requires-Dist: typing_extensions > 4.0.0
25
+ Requires-Dist: typing_inspect
26
+ Requires-Dist: typer ; extra == "cli"
27
+ Requires-Dist: dask[complete] ; extra == "dask"
28
+ Requires-Dist: dask[array] ; extra == "dask-array"
29
+ Requires-Dist: dask[dataframe] ; extra == "dask-dataframe"
30
+ Requires-Dist: dask[diagnostics] ; extra == "dask-diagnostics"
31
+ Requires-Dist: dask[distributed] ; extra == "dask-distributed"
32
+ Requires-Dist: ddtrace<3.0 ; extra == "datadog"
33
+ Requires-Dist: diskcache ; extra == "diskcache"
34
+ Requires-Dist: fastapi ; extra == "experiments"
35
+ Requires-Dist: fastui ; extra == "experiments"
36
+ Requires-Dist: uvicorn ; extra == "experiments"
37
+ Requires-Dist: apache-hamilton-lsp==0.2.0.dev0 ; extra == "lsp"
38
+ Requires-Dist: fastmcp>=3.0.0,<4 ; extra == "mcp"
39
+ Requires-Dist: openlineage-python ; extra == "openlineage"
40
+ Requires-Dist: pandera ; extra == "pandera"
41
+ Requires-Dist: pydantic>=2.0 ; extra == "pydantic"
42
+ Requires-Dist: pyspark[pandas-on-spark, sql] >= 4.0.0 ; extra == "pyspark"
43
+ Requires-Dist: ray>=2.0.0 ; extra == "ray" and ( python_version < '3.14')
44
+ Requires-Dist: pyarrow ; extra == "ray"
45
+ Requires-Dist: rich ; extra == "rich"
46
+ Requires-Dist: apache-hamilton-sdk==0.9.0.dev0 ; extra == "sdk"
47
+ Requires-Dist: slack-sdk ; extra == "slack"
48
+ Requires-Dist: tqdm ; extra == "tqdm"
49
+ Requires-Dist: apache-hamilton-ui==0.1.0.dev0 ; extra == "ui"
50
+ Requires-Dist: vaex ; extra == "vaex" and ( python_version == '3.10')
51
+ Requires-Dist: graphviz ; extra == "visualization"
52
+ Requires-Dist: networkx ; extra == "visualization"
53
+ Project-URL: changelog, https://github.com/apache/hamilton/releases
54
+ Project-URL: documentation, https://hamilton.apache.org/en/latest/
55
+ Project-URL: homepage, https://www.tryhamilton.dev/
56
+ Project-URL: issues, https://github.com/apache/hamilton/issues
57
+ Project-URL: slack, https://join.slack.com/t/hamilton-opensource/shared_invite/zt-2niepkra8-DGKGf_tTYhXuJWBTXtIs4g
58
+ Project-URL: source, https://github.com/apache/hamilton
59
+ Provides-Extra: cli
60
+ Provides-Extra: dask
61
+ Provides-Extra: dask-array
62
+ Provides-Extra: dask-dataframe
63
+ Provides-Extra: dask-diagnostics
64
+ Provides-Extra: dask-distributed
65
+ Provides-Extra: datadog
66
+ Provides-Extra: diskcache
67
+ Provides-Extra: experiments
68
+ Provides-Extra: lsp
69
+ Provides-Extra: mcp
70
+ Provides-Extra: openlineage
71
+ Provides-Extra: pandera
72
+ Provides-Extra: pydantic
73
+ Provides-Extra: pyspark
74
+ Provides-Extra: ray
75
+ Provides-Extra: rich
76
+ Provides-Extra: sdk
77
+ Provides-Extra: slack
78
+ Provides-Extra: tqdm
79
+ Provides-Extra: ui
80
+ Provides-Extra: vaex
81
+ Provides-Extra: visualization
82
+
83
+ <!--
84
+ Licensed to the Apache Software Foundation (ASF) under one
85
+ or more contributor license agreements. See the NOTICE file
86
+ distributed with this work for additional information
87
+ regarding copyright ownership. The ASF licenses this file
88
+ to you under the Apache License, Version 2.0 (the
89
+ "License"); you may not use this file except in compliance
90
+ with the License. You may obtain a copy of the License at
91
+
92
+ http://www.apache.org/licenses/LICENSE-2.0
93
+
94
+ Unless required by applicable law or agreed to in writing,
95
+ software distributed under the License is distributed on an
96
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
97
+ KIND, either express or implied. See the License for the
98
+ specific language governing permissions and limitations
99
+ under the License.
100
+ -->
101
+
102
+ <div align="center">
103
+ <h1><img src="https://github.com/apache/hamilton/assets/2328071/feb6abaa-b6d5-4271-a320-0ae4a18d8aa7" width="50"/> Apache Hamilton — portable & expressive <br> data transformation DAGs</h1>
104
+ <a href='https://hamilton.apache.org/?badge=latest'>
105
+ <img src='https://readthedocs.org/projects/hamilton/badge/?version=latest' alt='Documentation Status' />
106
+ </a><a href="https://www.python.org/downloads/" target="_blank">
107
+ <img src="https://img.shields.io/badge/python-3.10%20|%203.11%20|%203.12%20|%203.13%20|%203.14-blue.svg" alt="Python supported"/>
108
+ </a>
109
+ <a href="https://pypi.org/project/sf-hamilton/" target="_blank">
110
+ <img src="https://badge.fury.io/py/sf-hamilton.svg" alt="PyPi Version"/>
111
+ </a>
112
+ <a href="https://pepy.tech/project/sf-hamilton" target="_blank">
113
+ <img src="https://pepy.tech/badge/sf-hamilton" alt="Total Downloads"/>
114
+ </a>
115
+ <a href="https://pepy.tech/project/sf-hamilton" target="_blank">
116
+ <img src="https://static.pepy.tech/badge/sf-hamilton/month" alt="Total Monthly Downloads"/>
117
+ </a>
118
+ <br/>
119
+ <a href="https://join.slack.com/t/hamilton-opensource/shared_invite/zt-2niepkra8-DGKGf_tTYhXuJWBTXtIs4g" target="_blank">
120
+ <img src="https://img.shields.io/badge/Apache Hamilton-Join-purple.svg?logo=slack" alt="Apache Hamilton Slack"/>
121
+ </a>
122
+ <a href="https://twitter.com/hamilton_os" target="_blank">
123
+ <img src="https://img.shields.io/badge/HamiltonOS-Follow-purple.svg?logo=X"/>
124
+ </a>
125
+ </div>
126
+ <br></br>
127
+
128
+ > **Disclaimer**
129
+ >
130
+ > Apache Hamilton is an effort undergoing incubation at the Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC.
131
+ >
132
+ > Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects.
133
+ >
134
+ > While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
135
+
136
+ Apache Hamilton (incubating) is a lightweight Python library for directed acyclic graphs (DAGs) of data transformations. Your DAG is **portable**; it runs anywhere Python runs, whether it's a script, notebook, Airflow pipeline, FastAPI server, etc. Your DAG is **expressive**; Apache Hamilton has extensive features to define and modify the execution of a DAG (e.g., data validation, experiment tracking, remote execution).
137
+
138
+ To create a DAG, write regular Python functions that specify their dependencies with their parameters. As shown below, it results in readable code that can always be visualized. Apache Hamilton loads that definition and automatically builds the DAG for you!
139
+
140
+ <div align="center">
141
+ <img src="./docs/_static/abc_highlight.png" alt="Create a project" width="65%"/>
142
+ </div>
143
+ <div align="center">
144
+ Functions <code>B()</code> and <code>C()</code> refer to function <code>A</code> via their parameters
145
+ </div>
146
+ <br>
147
+
148
+ Apache Hamilton brings modularity and structure to any Python application moving data: ETL pipelines, ML workflows, LLM applications, RAG systems, BI dashboards, and the [Apache Hamilton UI](https://hamilton.apache.org/concepts/ui) allows you to automatically visualize, catalog, and monitor execution.
149
+
150
+ > Apache Hamilton is great for DAGs, but if you need loops or conditional logic to create an LLM agent or a simulation, take a look at our sister library [Burr](https://github.com/apache/burr) 🤖 .
151
+
152
+
153
+ # Installation
154
+
155
+ Apache Hamilton supports Python 3.8+. We include the optional `visualization` dependency to display our Apache Hamilton DAG. For visualizations, [Graphviz](https://graphviz.org/download/) needs to be installed on your system separately.
156
+
157
+ ```bash
158
+ pip install "sf-hamilton[visualization]"
159
+ ```
160
+
161
+ To use the Apache Hamilton UI, install the `ui` and `sdk` dependencies.
162
+
163
+ ```bash
164
+ pip install "sf-hamilton[ui,sdk]"
165
+ ```
166
+
167
+ To try Apache Hamilton in the browser, visit [www.tryhamilton.dev](https://www.tryhamilton.dev/?utm_source=README)
168
+
169
+ # Why use Apache Hamilton?
170
+
171
+ Data teams write code to deliver business value, but few have the resources to standardize practices and provide quality assurance. Moving from proof-of-concept to production and cross-function collaboration (e.g., data science, engineering, ops) remain challenging for teams, big or small. Apache Hamilton is designed to help throughout a project's lifecycle:
172
+
173
+ - **Separation of concerns**. Apache Hamilton separates the DAG "definition" and "execution" which lets data scientists focus on solving problems and engineers manage production pipelines.
174
+
175
+ - **Effective collaboration**. The [Apache Hamilton UI provides a shared interface](https://hamilton.apache.org/hamilton-ui/ui/) for teams to inspect results and debug failures throughout the development cycle.
176
+
177
+ - **Low-friction dev to prod**. Use `@config.when()` to modify your DAG between execution environments instead of error-prone `if/else` feature flags. The notebook extension prevents the pain of migrating code from a notebook to a Python module.
178
+
179
+ - **Portable transformations**. Your DAG is [independent of infrastructure or orchestration](https://blog.dagworks.io/publish/posts/detail/145543927?referrer=%2Fpublish%2Fposts), meaning you can develop and debug locally and reuse code across contexts (local, Airflow, FastAPI, etc.).
180
+
181
+ - **Maintainable DAG definition**. Apache Hamilton [automatically builds the DAG from a single line of code whether it has 10 or 1000 nodes](https://hamilton.apache.org/concepts/driver/). It can also assemble multiple Python modules into a pipeline, encouraging modularity.
182
+
183
+ - **Expressive DAGs**. [Function modifiers](https://hamilton.apache.org/concepts/function-modifiers/) are a unique feature to keep your code [DRY](https://en.wikipedia.org/wiki/Don't_repeat_yourself) and reduce the complexity of maintaining large DAGs. Other frameworks inevitably lead to code redundancy or bloated functions.
184
+
185
+ - **Built-in coding style**. The Apache Hamilton DAG is [defined using Python functions](https://hamilton.apache.org/concepts/node/), encouraging modular, easy-to-read, self-documenting, and unit testable code.
186
+
187
+ - **Data and schema validation**. Decorate functions with `@check_output` to validate output properties, and raise warnings or exceptions. Add the `SchemaValidator()` adapter to automatically inspect dataframe-like objects (pandas, polars, Ibis, etc.) to track and validate their schema.
188
+
189
+ - **Built for plugins**. Apache Hamilton is designed to play nice with all tools and provides the right abstractions to create custom integrations with your stack. Our lively community will help you build what you need!
190
+
191
+
192
+ # Apache Hamilton UI
193
+
194
+ You can track the execution of your Apache Hamilton DAG in the [Apache Hamilton UI](https://hamilton.apache.org/hamilton-ui/ui/). It automatically populates a data catalog with lineage / tracing and provides execution observability to inspect results and debug errors. You can run it as a [local server](https://hamilton.apache.org/hamilton-ui/ui/#local-mode) or a [self-hosted application using Docker](https://hamilton.apache.org/hamilton-ui/ui/#docker-deployed-mode).
195
+
196
+ <p align="center">
197
+ <img src="./docs/_static/hamilton_1.jpeg" alt="Description1" width="30%" style="margin-right: 20px;"/>
198
+ <img src="./docs/_static/hamilton_2.jpeg" alt="Description2" width="30%" style="margin-right: 20px;"/>
199
+ <img src="./docs/_static/hamilton_3.jpeg" alt="Description3" width="30%"/>
200
+ </p>
201
+ <p align="center">
202
+ <em>DAG catalog, automatic dataset profiling, and execution tracking</em>
203
+ </p>
204
+
205
+
206
+ ## Get started with the Apache Hamilton UI
207
+
208
+ 1. To use the Apache Hamilton UI, install the dependencies (see `Installation` section) and start the server with
209
+
210
+ ```bash
211
+ hamilton ui
212
+ ```
213
+
214
+ 2. On the first connection, create a `username` and a new project (the `project_id` should be `1`).
215
+
216
+ <div align="center">
217
+ <img src="./docs/_static/new_project.png" alt="Create a project" width="70%"/>
218
+ </div>
219
+ <br>
220
+
221
+ 3. Track your Apache Hamilton DAG by creating a `HamiltonTracker` object with your `username` and `project_id` and adding it to your `Builder`. Now, your DAG will appear in the UI's catalog and all executions will be tracked!
222
+
223
+ ```python
224
+ from hamilton import driver
225
+ from hamilton_sdk.adapters import HamiltonTracker
226
+ import my_dag
227
+
228
+ # use your `username` and `project_id`
229
+ tracker = HamiltonTracker(
230
+ username="my_username",
231
+ project_id=1,
232
+ dag_name="hello_world",
233
+ )
234
+
235
+ # adding the tracker to the `Builder` will add the DAG to the catalog
236
+ dr = (
237
+ driver.Builder()
238
+ .with_modules(my_dag)
239
+ .with_adapters(tracker) # add your tracker here
240
+ .build()
241
+ )
242
+
243
+ # executing the `Driver` will track results
244
+ dr.execute(["C"])
245
+ ```
246
+
247
+ # Documentation & learning resources
248
+
249
+ * 📚 See the [official documentation](https://hamilton.apache.org/) to learn about the core concepts of Apache Hamilton.
250
+
251
+ * 👨‍🏫 Consult the [examples on GitHub](https://github.com/apache/hamilton/tree/main/examples) to learn about specific features or integrations with other frameworks.
252
+
253
+ * 📰 The [DAGWorks blog](https://blog.dagworks.io/) includes guides about how to build a data platform and narrative tutorials.
254
+
255
+ * 📺 Find video tutorials on the [DAGWorks YouTube channel](https://www.youtube.com/@DAGWorks-Inc)
256
+
257
+ * 📣 Reach out via the [Apache Hamilton Slack community](https://join.slack.com/t/hamilton-opensource/shared_invite/zt-2niepkra8-DGKGf_tTYhXuJWBTXtIs4g) for help and troubleshooting
258
+
259
+
260
+ # How does Apache Hamilton compare to X?
261
+
262
+ Apache Hamilton is not an orchestrator ([you might not need one](https://blog.dagworks.io/p/lean-data-automation-a-principal)), nor a feature store ([but you can use it to build one!](https://blog.dagworks.io/p/featurization-integrating-hamilton)). Its purpose is to help you structure and manage data transformations. If you know dbt, Apache Hamilton does for Python what dbt does for SQL.
263
+
264
+ Another way to frame it is to think about the different layers of a data stack. Apache Hamilton is at the **asset layer**. It helps you organize data transformations code (the **expression layer**), manage changes, and validate & test data.
265
+
266
+ <div align="center" style="width: 100%">
267
+ <table>
268
+ <colgroup>
269
+ <col style="width: 20%">
270
+ <col style="width: 40%">
271
+ <col style="width: 40%">
272
+ </colgroup>
273
+ <thead>
274
+ <tr>
275
+ <th>Layer</th>
276
+ <th>Purpose</th>
277
+ <th>Example Tools</th>
278
+ </tr>
279
+ </thead>
280
+ <tbody>
281
+ <tr>
282
+ <td>Orchestration</td>
283
+ <td>Operational system for the creation of assets</td>
284
+ <td>Airflow, Metaflow, Prefect, Dagster</td>
285
+ </tr>
286
+ <tr>
287
+ <td>Asset</td>
288
+ <td>Organize expressions into meaningful units <br> (e.g., dataset, ML model, table)</td>
289
+ <td><b>Apache Hamilton</b>, dbt, dlt, SQLMesh, <a href="https://github.com/apache/burr">Burr</a></td>
290
+ </tr>
291
+ <tr>
292
+ <td>Expression</td>
293
+ <td>Language to write data transformations</td>
294
+ <td>pandas, SQL, polars, Ibis, LangChain</td>
295
+ </tr>
296
+ <tr>
297
+ <td>Execution</td>
298
+ <td>Perform data transformations</td>
299
+ <td>Spark, Snowflake, DuckDB, RAPIDS</td>
300
+ </tr>
301
+ <tr>
302
+ <td>Data</td>
303
+ <td>Physical representation of data, inputs and outputs</td>
304
+ <td>S3, Postgres, file system, Snowflake</td>
305
+ </tr>
306
+ </tbody>
307
+ </table>
308
+ </div>
309
+
310
+ See our page on [Why use Apache Hamilton?](https://hamilton.apache.org/get-started/why-hamilton/) and framework [code comparisons](https://hamilton.apache.org/code-comparisons/) for more information.
311
+
312
+ # 📑 License
313
+
314
+ Apache Hamilton is released under the Apache 2.0 License. See [LICENSE](https://github.com/apache/hamilton/blob/main/LICENSE.md) for details.
315
+
316
+
317
+ # 🌎 Community
318
+ ## 👨‍💻 Contributing
319
+ We're very supportive of changes by new contributors, big or small! Make sure to discuss potential changes by creating an issue or commenting on an existing one before opening a pull request. Good first contributions include creating an example or an integration with your favorite Python library!
320
+
321
+ To contribute, checkout our [contributing guidelines](https://github.com/apache/hamilton/blob/main/CONTRIBUTING.md), our [developer setup guide](https://github.com/apache/hamilton/blob/main/developer_setup.md), and our [Code of Conduct](https://www.apache.org/foundation/policies/conduct.html).
322
+
323
+
324
+ ## 😎 Used by
325
+ Apache Hamilton was started at Stitch Fix before the original creators founded DAGWorks Inc! The library is battle-tested and has been supporting production use cases since 2019.
326
+
327
+ >Read more about the [origin story](https://multithreaded.stitchfix.com/blog/2021/10/14/functions-dags-hamilton/).
328
+
329
+
330
+ * [Stitch Fix](https://www.stitchfix.com/) — Time series forecasting
331
+ * [UK Government Digital Services](https://github.com/alphagov/govuk-feedback-analysis) — National feedback pipeline (processing & analysis)
332
+ * [IBM](https://www.ibm.com/) — Internal search and ML pipelines
333
+ * [Opendoor](https://www.opendoor.com/) — Manage PySpark pipelines
334
+ * [Lexis Nexis](https://www.lexisnexis.com/en-us/home.page) — Feature processing and lineage
335
+ * [Adobe](https://www.adobe.com/) — Prompt engineering research
336
+ * [WrenAI](https://github.com/Canner/WrenAI) — async text-to-SQL workflows
337
+ * [British Cycling](https://www.britishcycling.org.uk/) — Telemetry analysis
338
+ * [Oak Ridge & PNNL](https://pnnl.gov/) — Naturf project
339
+ * [ORNL](https://www.ornl.gov/)
340
+ * [Federal Reserve Board](https://www.federalreserve.gov/)
341
+ * [Joby Aviation](https://www.jobyaviation.com/) — Flight data processing
342
+ * [Two](https://www.two.inc/)
343
+ * [Transfix](https://transfix.io/) — Online featurization and prediction
344
+ * [Railofy](https://www.railofy.com) — Orchestrate pandas code
345
+ * [Habitat Energy](https://www.habitat.energy/) — Time-series feature engineering
346
+ * [KI-Insurance](https://www.ki-insurance.com/) — Feature engineering
347
+ * [Ascena Retail](https://www.ascena.com/) — Feature engineering
348
+ * [NaroHQ](https://www.narohq.com/)
349
+ * [EquipmentShare](https://www.equipmentshare.com/)
350
+ * [Everstream.ai](https://www.everstream.ai/)
351
+ * [Flectere](https://flectere.net/)
352
+ * [F33.ai](https://f33.ai/)
353
+ * [Kora Money](https://www.koramoney.com)
354
+ * [Capitec Bank](https://www.capitecbank.co.za/)
355
+ * [Best Egg](https://bestegg.com/)
356
+ * [RTV Euro AGD](https://www.euro.com.pl/)
357
+ * [Wealth.com](https://www.wealth.com/)
358
+ * [wren.ai](https://wren.ai/)
359
+
360
+ ## 🤝 Code Contributors
361
+ [![Contributors](https://contrib.rocks/image?repo=apache/hamilton)](https://github.com/apache/hamilton/graphs/contributors)
362
+
363
+
364
+ ## 🙌 Special Mentions & 🦟 Bug Hunters
365
+
366
+ Thanks to our awesome community and their active involvement in the Apache Hamilton library.
367
+
368
+ [Nils Olsson](https://github.com/nilsso), [Michał Siedlaczek](https://github.com/elshize), [Alaa Abedrabbo](https://github.com/AAbedrabbo), [Shreya Datar](https://github.com/datarshreya), [Baldo Faieta](https://github.com/baldofaieta), [Anwar Brini](https://github.com/AnwarBrini), [Gourav Kumar](https://github.com/gms101), [Amos Aikman](https://github.com/amosaikman), [Ankush Kundaliya](https://github.com/akundaliya), [David Weselowski](https://github.com/j7zAhU), [Peter Robinson](https://github.com/Peter4137), [Seth Stokes](https://github.com/sT0v), [Louis Maddox](https://github.com/lmmx), [Stephen Bias](https://github.com/s-ducks), [Anup Joseph](https://github.com/AnupJoseph), [Jan Hurst](https://github.com/janhurst), [Flavia Santos](https://github.com/flaviassantos), [Nicolas Huray](https://github.com/nhuray), [Manabu Niseki](https://github.com/ninoseki), [Kyle Pounder](https://github.com/kpounder), [Alex Bustos](https://github.com/bustosalex1), [Andy Day](https://github.com/adayNU), [Alexander Cai](https://github.com/adzcai), [Nils Müller-Wendt](https://github.com/ChronoJon), [Paul Larsen](https://github.com/munichpavel), [
369
+ Kemal Eren](https://github.com/kemaleren), [Jernej Frank](https://github.com/jernejfrank), [Noah Ridge](https://github.com/noahridge)
370
+
371
+ # 🎓 Citations
372
+ We'd appreciate citing Apache Hamilton by referencing one of the following:
373
+
374
+ ```bibtex
375
+ @inproceedings{DBLP:conf/vldb/KrawczykI22,
376
+ title = {Hamilton: a modular open source declarative paradigm for high level
377
+ modeling of dataflows},
378
+ author = {Stefan Krawczyk and Elijah ben Izzy},
379
+ editor = {Satyanarayana R. Valluri and Mohamed Za{\"{\i}}t},
380
+ booktitle = {1st International Workshop on Composable Data Management Systems,
381
+ CDMS@VLDB 2022, Sydney, Australia, September 9, 2022},
382
+ year = {2022},
383
+ url = {https://cdmsworkshop.github.io/2022/Proceedings/ShortPapers/Paper6\_StefanKrawczyk.pdf},
384
+ timestamp = {Wed, 19 Oct 2022 16:20:48 +0200},
385
+ biburl = {https://dblp.org/rec/conf/vldb/KrawczykI22.bib},
386
+ bibsource = {dblp computer science bibliography, https://dblp.org}
387
+ }
388
+ ```
389
+ ```bibtex
390
+ @inproceedings{CEURWS:conf/vldb/KrawczykIQ22,
391
+ title = {Hamilton: enabling software engineering best practices for data transformations via generalized dataflow graphs},
392
+ author = {Stefan Krawczyk and Elijah ben Izzy and Danielle Quinn},
393
+ editor = {Cinzia Cappiello and Sandra Geisler and Maria-Esther Vidal},
394
+ booktitle = {1st International Workshop on Data Ecosystems co-located with 48th International Conference on Very Large Databases (VLDB 2022)},
395
+ pages = {41--50},
396
+ url = {https://ceur-ws.org/Vol-3306/paper5.pdf},
397
+ year = {2022}
398
+ }
399
+ ```
400
+
401
+ # 📚 Libraries built on / for Apache Hamilton
402
+ * [Hypster](https://github.com/gilad-rubin/hypster) - hyperparameter management
403
+ * [DSP Decision Engine](https://github.com/capitec/dsp-decision-engine) - decision trees
404
+ * [NaturF](https://github.com/IMMM-SFA/naturf/) - library for data transformation for weather forecasting
405
+ * [WrenAI](https://github.com/Canner/WrenAI) - RAG
406
+ * [FlowerPower](https://github.com/legout/flowerpower/) - Scheduler for Apache Hamilton
407
+
@@ -0,0 +1,151 @@
1
+ hamilton/__init__.py,sha256=9EcPQqJ3KBNJ7xVQ92p0e9JwkoZC9DduvwuTCWURoeM,1086
2
+ hamilton/ad_hoc_utils.py,sha256=qC0CEicdDMyTFfn8MzRgzCtkMWYrBrhB3hYL-iW8QHE,5677
3
+ hamilton/async_driver.py,sha256=AKtg1KIfumiIdPS6GnxpMl9CfAa_0JWUsPr1rfllAFs,19548
4
+ hamilton/base.py,sha256=vB8b0AHIx1SUIZRMzj2xe7wODII1tyG1AQrqppWSZDQ,19860
5
+ hamilton/driver.py,sha256=COb2mToh3gW86Z_fh_rjsYeHmXsz32lC-G16FzVgl18,95686
6
+ hamilton/function_modifiers_base.py,sha256=ChdV7MJi6HwbYeCCSF3W3ThTiZpqwc1PLbgJmv_qyWw,1462
7
+ hamilton/graph.py,sha256=ydDZElmlopiMww3ZURNrMkzhZ4PQfXJiDE_ozwoEBLk,50459
8
+ hamilton/graph_types.py,sha256=V_2-a7_7wIlaGI2qilc6zEVzCPA4XqfqkDfK10F2crY,10478
9
+ hamilton/graph_utils.py,sha256=OPIp-UhEkNdQrpYwNi9K47QochHaQ2oG-1IM2-fto38,1561
10
+ hamilton/htypes.py,sha256=ZGb2nw7IRMi8mFRxz70jiEN9eHaL5uO1yCmNHHuOZD8,17746
11
+ hamilton/log_setup.py,sha256=Zh_vDyNy5Q5Vbwp86g2R4xGJLftj2uT7xyp5Fhs0yIo,1714
12
+ hamilton/models.py,sha256=A4V3BjiWpYVBlW_Gh3UJej4H_wMaCXm9Ky18EHSzxdw,3265
13
+ hamilton/node.py,sha256=0A11dDM48y-twGzUBbxPQxpVYZEZkwG4IPoRi1qauos,17153
14
+ hamilton/registry.py,sha256=UIk3ERXR-HWnauSmfKAuVjIasruSHpMpjqBloFXUUvo,8588
15
+ hamilton/settings.py,sha256=ftOOAbeV-G9eP1s0_8x1Pcw3qPHGBtezszvMVo-eDx8,845
16
+ hamilton/telemetry.py,sha256=1RrPA7K4WxC110DG1BOmBCQzFl7RNvNhApaMVo2RsbU,1772
17
+ hamilton/version.py,sha256=mI8a6Yk90avYwhUM59JG9qFR6_nItOWTiNyUbiG6Ttc,815
18
+ hamilton/caching/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
19
+ hamilton/caching/adapter.py,sha256=-Q90QziEetCDc88wczr-V9IeBYY8zziPUvDMx_mWlnE,61482
20
+ hamilton/caching/cache_key.py,sha256=72sLwDzmY76G2WiOmex6kxXiTSK5GP_W6yLR1SC-BaU,2497
21
+ hamilton/caching/fingerprinting.py,sha256=rTqU81luNmgfmEjWPsP0B6K9Ga8lxZJqOv_C8WRvdz8,9986
22
+ hamilton/caching/stores/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
23
+ hamilton/caching/stores/base.py,sha256=YCumEFC8M4v3s2L0OOko5qucgcXUHFbTIoYHG5bsXhU,8529
24
+ hamilton/caching/stores/file.py,sha256=iz9oPj5ldFS8bO-FynPsU48fAlbEOACqnFFKhzgdpoM,5229
25
+ hamilton/caching/stores/memory.py,sha256=wR1j2ewQoV5Z2VZWPmC0pAl1afmFRbev3-bKO4CPcm4,11159
26
+ hamilton/caching/stores/sqlite.py,sha256=WiYGfPxjOY4CNZCjQoW382yT3ZCj2ZG-xJ6D4oeXJgk,9965
27
+ hamilton/caching/stores/utils.py,sha256=lnUXyZL53IFII0YvUeHVyHmpcaQZ-Mcoiw939b11at0,1370
28
+ hamilton/cli/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
29
+ hamilton/cli/__main__.py,sha256=MDL9IU7IgE5HOU94z0xDslswkFAicOOKiid1misg2wk,9202
30
+ hamilton/cli/commands.py,sha256=i2seQeE2eCRxWWNHZSfxffr9xkJaWUvxt37gKk9bZws,4446
31
+ hamilton/cli/logic.py,sha256=aswTWkGvF395KLP6hwvglzHRnPWvP48BiccDZNRTxRU,10338
32
+ hamilton/common/__init__.py,sha256=9qkwq5YWx6TIysEYiRfoaFivxCS7Pm1yf6tRY2uKRf8,3075
33
+ hamilton/contrib/__init__.py,sha256=I8FNbP9BtaXuqxxzs3o3fJXeTP2PY2XZuzaMCOceK5o,1644
34
+ hamilton/data_quality/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
35
+ hamilton/data_quality/base.py,sha256=DiwDmdx2P52seduykbWYU8XQ1GD3qGP2R6qSl-QGiFg,6890
36
+ hamilton/data_quality/default_validators.py,sha256=bQZjbw3ilNxDC_tQeKuenFK3UptvWnSNljpB0-0CKII,21184
37
+ hamilton/data_quality/pandera_validators.py,sha256=HhtRteSQl3wxzH8PU-pf7L2BZ2jMqiYmpDwnZaoesvQ,4493
38
+ hamilton/dataflows/__init__.py,sha256=fV8QvO4zdqVDryY75VI8RxZdYOPY1mk8fIoeM_31uBU,27999
39
+ hamilton/dataflows/template/README.md,sha256=4EldcV63vDmX6R0eqf01qE4kQQ7RtCFqbd6nVLMyyAw,958
40
+ hamilton/dataflows/template/__init__.py,sha256=FUtszyZOWwy1sha_ztxvtQtOUTF_Ik-HbwlB8iETB_g,1721
41
+ hamilton/dataflows/template/author.md,sha256=vRxtW3jirsEp11mos2BRw7mQg-BbwJimUSApAyA4Qn0,940
42
+ hamilton/dataflows/template/requirements.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
+ hamilton/dataflows/template/tags.json,sha256=E0D2JNy40BicoKvqOjXr2Oq5V3ui6SX6Z4SRZrKhLNU,98
44
+ hamilton/dataflows/template/valid_configs.jsonl,sha256=yj0WO6sFU4GCciYUBWjzvvfqrBh869doeOC2Pp5EI1Y,3
45
+ hamilton/dev_utils/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
46
+ hamilton/dev_utils/deprecation.py,sha256=vY5L1BMrWf4K4A8ySlg_texJ94-TEoVMpSDDTXw8C74,7774
47
+ hamilton/execution/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
48
+ hamilton/execution/debugging_utils.py,sha256=Z1tLXpN6PPCuPp3rAsiSJTpWzUOtk6WJyBiwAZpvgLQ,2041
49
+ hamilton/execution/executors.py,sha256=-wwTm9lQATOhZDoS3zeuVpdjtfvHZU9lsTpzIDeb7kI,18833
50
+ hamilton/execution/graph_functions.py,sha256=tR5H84iK-B8AkBcd4Jf06z-WrDAjZyZS7o2KXGslXjo,16527
51
+ hamilton/execution/grouping.py,sha256=4l8qAP0EdeQLQ2O603IFCwXRJpSWFIrbMPC6a3_0eMo,17480
52
+ hamilton/execution/state.py,sha256=3nPcWUbZCPs0XutwS-az4nrP5jbuFE6_OWULicIRfms,23957
53
+ hamilton/experimental/__init__.py,sha256=5mTuSvsYhPZOaZLVarG1D2I7WMo6xPwRfdibUCPgNVc,1100
54
+ hamilton/experimental/databackend.py,sha256=OJOMOfIsfGX0vivOyosYExhxpgF2OdOy7VtGz66Od14,2183
55
+ hamilton/experimental/h_async.py,sha256=cXIsrgJqCP7ktN--7feP_Ja21tcR7YSxb0WFeKOVDJQ,1057
56
+ hamilton/experimental/h_cache.py,sha256=33eZWMEhYcLWj449uYxszxV6zTiLCSs0PoA5Lf6HcDQ,15259
57
+ hamilton/experimental/h_dask.py,sha256=mdnjkJrv8dBZTPbWCjeqvximCb1lbS_l-617Whqv7mo,1166
58
+ hamilton/experimental/h_databackends.py,sha256=FUqmo58-DbiV40c6-f0hn1P76KTdX__U-n_gUEPVYIA,5075
59
+ hamilton/experimental/h_ray.py,sha256=2Dqs4sAoxkpBc16qG3PzgsZTs77G1CQX6R-jUB1-0b8,1124
60
+ hamilton/experimental/h_spark.py,sha256=mX00aVcW71c4uRIX2UUSd0j04LNjS1iosLB8INbIjpA,1223
61
+ hamilton/experimental/decorators/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
62
+ hamilton/experimental/decorators/parameterize_frame.py,sha256=h9aqBK--XAGwq-nVovC6wTiQ63PAM08shhhkgqTofaU,8684
63
+ hamilton/function_modifiers/README,sha256=_e9pU3-uMHxtnzAzs45ss5S1iWv5HP6HmUFVv2s8CYI,2672
64
+ hamilton/function_modifiers/__init__.py,sha256=DAoS8bmFvOWvNh7CL33jDhGWmEJuGU1YzZF8mQU4m00,3812
65
+ hamilton/function_modifiers/adapters.py,sha256=HrHS8rL7G-PpxAweZANQr8iIx9w7CjhcrxKA6-jtgmI,38908
66
+ hamilton/function_modifiers/base.py,sha256=UBxPkqX8oKJ_jGdKodpcG7iYwEC6lUdoQ7j9bv2JI6w,33403
67
+ hamilton/function_modifiers/configuration.py,sha256=5aE0W_tw53mr4VQ9ntmiqkAONW2-mD_-a9-G4ym1CoM,13422
68
+ hamilton/function_modifiers/delayed.py,sha256=5rC-cVcj7JTSUMAawV_qf7cpYMKHchzL91i0ygR5-7A,8991
69
+ hamilton/function_modifiers/dependencies.py,sha256=Ll9214Fay8-3p1m5CFebb1LhWe8q8-CZIlE-9EOdVHU,10014
70
+ hamilton/function_modifiers/expanders.py,sha256=mX0MGyxpBWI6ubEudbR05FHXG7KUGG_4Lu7Q92wvq-A,56117
71
+ hamilton/function_modifiers/macros.py,sha256=NUdsFUMPZ_c4sJJgFwwLJfS337e7sygEQu_DROkRQec,73755
72
+ hamilton/function_modifiers/metadata.py,sha256=fNhPrc3TGtWPBDAQo5dhkfM5FBw1fSfkkp8fL6_-c1g,17253
73
+ hamilton/function_modifiers/recursive.py,sha256=NOGAfULF_18Kv2o1IfxzgFTiMcn-Q0xQYxAINnV5y5s,40426
74
+ hamilton/function_modifiers/validation.py,sha256=uFLDTRfwd8zIjj3LNAe5V3R3Q8egwp2xT5t2v4jqqPw,12484
75
+ hamilton/io/__init__.py,sha256=ZE6hs4AKWGdAt6cD-_E263YJ_WWSe58BS-j9RAL-U5c,1183
76
+ hamilton/io/data_adapters.py,sha256=U3GBixzhQ7J9XNHIT5SU6vcF9CuCP0pY3x47i7sC0TU,7987
77
+ hamilton/io/default_data_loaders.py,sha256=iVKpBABpIkHDkxK-umWXVKVrF9-fUnb7qHKjC4bOJPY,5617
78
+ hamilton/io/materialization.py,sha256=hBjtUcmUUMTWlMn_XQU2-2zUHjEox7VsECKJw87-cIc,21578
79
+ hamilton/io/utils.py,sha256=ho9GJx1RbRPbi6YftEGJjEFcXi6G6zF-dNhend4RkhQ,5073
80
+ hamilton/lifecycle/__init__.py,sha256=XYs5dZdU2W2ZW7dlMRgqbgo3Jc5O9QYlcP_o5bom2ng,2053
81
+ hamilton/lifecycle/api.py,sha256=6kpXN5oK2ut5TESxcKbu-LqMv3zz7507UexkNyZ-sFU,31981
82
+ hamilton/lifecycle/base.py,sha256=Cu0UCC-Wttf7x4khmkKRV3TQP-rRIrRhlCv406drKbU,44599
83
+ hamilton/lifecycle/default.py,sha256=qQWkVmKPOf1SY46m0BQ2ejC8SYX5uiYOhDrhnZf9JTs,32890
84
+ hamilton/plugins/README.md,sha256=KtDiEsnN-jR60eRkGpSvpTtAiiW-7AnM8HafZztJlkQ,2659
85
+ hamilton/plugins/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
86
+ hamilton/plugins/dask_extensions.py,sha256=rOC4xVL3eYFmncKoFdZE6Tb_HE8oUAT1a7F6CJhaEc0,1518
87
+ hamilton/plugins/dlt_extensions.py,sha256=qV16IsajT69Sa7x9O-HVxn1u_mcTL0abXlpkQNQr9zQ,5585
88
+ hamilton/plugins/geopandas_extensions.py,sha256=ScfGrpMzvNfo81p89pUbLGo8BFlFHFp3N_3d-8p93bk,1572
89
+ hamilton/plugins/h_dask.py,sha256=K_Xqr0PESoBYHbfibq6HF1DKFfVDgqHSElVHIm3UiiA,15566
90
+ hamilton/plugins/h_ddog.py,sha256=iRv5frwf9uAxIMRFNlPT0Ei9TqJkKA01M89MOKMtMtk,22392
91
+ hamilton/plugins/h_diskcache.py,sha256=_nwKUUi-IZsyvx1v9UkUSLGyaElVinSkNX07AbIV9xw,6683
92
+ hamilton/plugins/h_kedro.py,sha256=CDpqPqTlpOvTg_R1yurXzcMNalH0xwe8LY3vmY4L0ck,5583
93
+ hamilton/plugins/h_logging.py,sha256=5jCgN3LeojbrRnLZDsja-sBc5p76WnFfV1xwU3bwABQ,15225
94
+ hamilton/plugins/h_mlflow.py,sha256=oxZYXQ2S8kTtqUaC-9KYhLKmvnSliOR5vIyQNivs6E8,14442
95
+ hamilton/plugins/h_narwhals.py,sha256=FiniKN3P3XpWKN82bWoOfhh-xeADaaG41uAf43UeqTo,4677
96
+ hamilton/plugins/h_openlineage.py,sha256=zNlqHMuRvuv3iL5yAmtqbWDMwxcBuaLyhKem6qZi3aE,13129
97
+ hamilton/plugins/h_opentelemetry.py,sha256=_Tq9nZXg0i2B7Pv83C8B6M-NJ9MVqSQfFiRkhRbu1Xk,5928
98
+ hamilton/plugins/h_pandas.py,sha256=yWHSG5pq4vW8jVvvTPUOatDeOuj5paCpZ_V6KWnSsCc,10633
99
+ hamilton/plugins/h_pandera.py,sha256=WeQRy5GaaQHfPceqB56M6zlz1JQjh-OOTXrbiB89tL0,4952
100
+ hamilton/plugins/h_polars.py,sha256=7KkjoFkVSsVVescBk6SnAdpIUwmZ4MdlH5ml9kgQDrI,12507
101
+ hamilton/plugins/h_polars_lazyframe.py,sha256=U1lnRADXaUpzB8mBzQlNeEMaRMYzSowCnQnWPRTh30I,11561
102
+ hamilton/plugins/h_pyarrow.py,sha256=ncUzc2X7S2UL1HROwNtXgQT_2pc9WYMOL_CHAGogVao,2177
103
+ hamilton/plugins/h_pydantic.py,sha256=UI0nisC8mRg77RVGLFbVw1kr_ETAzVSAOUzOidEnAPo,4962
104
+ hamilton/plugins/h_ray.py,sha256=On0FwZbGKHYzk2CXhLu6XkRt8wVZZxK4JjDry6lzvjI,9130
105
+ hamilton/plugins/h_rich.py,sha256=E0WfFoZtD6t9omTteIxYweHZabYNAUfMh6GzxogmaZg,5181
106
+ hamilton/plugins/h_schema.py,sha256=CKeLuat2z_WbePnGZgSqE2zkaamj9q4fuv5HwnwFdXE,18307
107
+ hamilton/plugins/h_slack.py,sha256=Ezqh6jfoHvLdCv_13WGgJ0QQjfmff5Yzoitt-tER3mw,3634
108
+ hamilton/plugins/h_spark.py,sha256=G6A7G16hO0wEOBwK6-JjELQUO8QIJZNaHplkSukD4OE,63268
109
+ hamilton/plugins/h_threadpool.py,sha256=8nS3dOMDfScIAJdbekWXUiWvIwzmRFFb0j0t5qRyp_E,5036
110
+ hamilton/plugins/h_tqdm.py,sha256=BR4mv8D6-TVPDTnPzaNBXuA9NaV6NkvwUzqXkAQ5xqE,4665
111
+ hamilton/plugins/h_vaex.py,sha256=MPOR-uTHupVR4zK0TZVG6gheCbKgsB9uPjfJOfDEw-Q,5034
112
+ hamilton/plugins/huggingface_extensions.py,sha256=YSW310Lqu-6QAVvO4ydGI6n4nKWEyNL0_tGaV2SskYA,7839
113
+ hamilton/plugins/ibis_extensions.py,sha256=GxSO08AYGLwcdY3_XT-GKmu2bSbrhkQ6dPPKYAj9pUs,2970
114
+ hamilton/plugins/jupyter_magic.py,sha256=EBE-HlNznPirRRdKZImD8ZeweXKYvshjDdv3Btqrkos,24929
115
+ hamilton/plugins/kedro_extensions.py,sha256=t-hUFfo7VetB74CitxutQnfL-ySttWJil2Y5s1L6DIo,3267
116
+ hamilton/plugins/lightgbm_extensions.py,sha256=7X4wVR3hq7dbZPlb0VnkArx5nVHEYuxg491yjbub5zA,2961
117
+ hamilton/plugins/matplotlib_extensions.py,sha256=mZATMfHd5-e2ocukwP_ea0TsqjHExKOPMpnu2v_4VQU,3738
118
+ hamilton/plugins/mlflow_extensions.py,sha256=Uk2euwDO27w0tgprBeNhi7-QE6i4jS6RPvsrkcUkO9w,8856
119
+ hamilton/plugins/numpy_extensions.py,sha256=1ryQOjPSKEg7fVHEaWx4RQIlXPVx4qz-FfhKjuGSLc4,3221
120
+ hamilton/plugins/pandas_extensions.py,sha256=zekQR8vtwI7p60dZLz1YjbeEpRClV84U1g0vi_8YhiE,66288
121
+ hamilton/plugins/plotly_extensions.py,sha256=8NFguovc662jdgQI3lCwLh7g0fqmT4ZYiLSIqn68m0w,5010
122
+ hamilton/plugins/polars_extensions.py,sha256=pD0hV84Etqwk3NxtwLZS3eDgyZvvTo154nUlxSM_TsI,2345
123
+ hamilton/plugins/polars_implementations.py,sha256=XKhZ-Jh9l1FKlt56V5Q6RiEMMh2uFNPplJcEwc0T-hw,1028
124
+ hamilton/plugins/polars_lazyframe_extensions.py,sha256=y2pv4GRWF_ELAZRYcc_nxw2aw4T928qEGN3KVDvkBak,10889
125
+ hamilton/plugins/polars_post_1_0_0_extensions.py,sha256=VZik0kar1MzVidFj6ymYrCKsUIa68ZikxZvtje8XiA0,30733
126
+ hamilton/plugins/polars_pre_1_0_0_extension.py,sha256=l_4eTvMqQq7KHC1I0gNDen_qX-dAy4RrtZs7vPl89mI,29649
127
+ hamilton/plugins/pydantic_extensions.py,sha256=_LYxRzWxJjGfr07mN-LZsRJdF2W45KXOni_tYizFBRg,3840
128
+ hamilton/plugins/pyspark_pandas_extensions.py,sha256=TWbiUtkPgoUMhSTAsXgG9x2wj1VZIvrF_gBz7zQMoPs,1551
129
+ hamilton/plugins/sklearn_plot_extensions.py,sha256=4PyhnlICajJKWHyDGsAGkciH7umkof3UQR1t8I9RUpU,4326
130
+ hamilton/plugins/spark_extensions.py,sha256=Od7-iLgA8wIoU3NuPIkAoBRnAno8lGhprLK4zx8wXrc,3236
131
+ hamilton/plugins/vaex_extensions.py,sha256=LmNflI5R-GVKB8BsW9ybXWI14_0IyYFeEHSEKJ1hN-8,1673
132
+ hamilton/plugins/xgboost_extensions.py,sha256=y4SiL_IHzwPcQnfja8mk8uErnCZiOX0cp29oh9hxJyY,2762
133
+ hamilton/plugins/yaml_extensions.py,sha256=D2JF55dcOjHn04u90dbnbQF6BOS4SKobaz9n41eMqJ8,2554
134
+ hamilton/plugins/h_experiments/__init__.py,sha256=ryMg4R25xk0EL2oJE-Hafy6yP8G8J-8JMuUsvvFEFpg,892
135
+ hamilton/plugins/h_experiments/__main__.py,sha256=ql2MkjRC2wdi9pjgHYLK-tywxUkVGEVFj1nxXD5W0xk,2181
136
+ hamilton/plugins/h_experiments/cache.py,sha256=rzcGO7FRNs0ll65azDUeD3-J6bOBg76jdB6Llhr-xqM,1395
137
+ hamilton/plugins/h_experiments/data_model.py,sha256=CeEcFuM2QT31r343xp_zLBYt1UGlm6owT4O_IZiNuFI,2180
138
+ hamilton/plugins/h_experiments/hook.py,sha256=rGHxRAi7EmAPGVT-9xnzUqJj02dLFFXuSoU2XKlsDPU,7240
139
+ hamilton/plugins/h_experiments/server.py,sha256=0FINVlxitZ6uM3VH3oENq6-UDy3zDYdaN6-Dpjdks48,12493
140
+ hamilton/plugins/h_mcp/__init__.py,sha256=CZ4gil355_R9Wn-5DEeRGrsaPIUL5M-SGlWYKcwpT8g,1068
141
+ hamilton/plugins/h_mcp/__main__.py,sha256=oNAos4tE15ggp6vX0-pCwj9IXk8Y0qlAmHWpgF-yiZI,1137
142
+ hamilton/plugins/h_mcp/_helpers.py,sha256=ESedS24YSOy196PRIGfw8HskjNFiakvKiPnBi5ScCBc,4152
143
+ hamilton/plugins/h_mcp/_templates.py,sha256=Bcn108C2eyb_RvsGLNAiwpgAfUoJZdC616x6wgv3vLE,13528
144
+ hamilton/plugins/h_mcp/server.py,sha256=OnO1Zxqor_zs5EKPHXn_5vv9zX7CtZEsIW99irFJ8Vw,12392
145
+ apache_hamilton-1.90.0.dev0.dist-info/entry_points.txt,sha256=tFFL8fmZYShWqq5FW11ctCUHd-YmPpdIl_yyHKoCR34,421
146
+ apache_hamilton-1.90.0.dev0.dist-info/licenses/DISCLAIMER,sha256=77tI7hobcdbcMRBkRqvxan0ougWFmWT4RcKa8BvZp1Q,554
147
+ apache_hamilton-1.90.0.dev0.dist-info/licenses/LICENSE,sha256=-enuII5HAAzfQH6-hBMZFOlMa0r0LRVkfMyMF_D961U,12602
148
+ apache_hamilton-1.90.0.dev0.dist-info/licenses/NOTICE,sha256=cUxyq3fCD7yb1fjC7nmfIiI9kKo2VD8RGIFB33a-9CU,182
149
+ apache_hamilton-1.90.0.dev0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
150
+ apache_hamilton-1.90.0.dev0.dist-info/METADATA,sha256=JTcLbSzsgiFg7YsLeP65LCOEF3VlbVPUTDPRXWi7ISg,22710
151
+ apache_hamilton-1.90.0.dev0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: flit 3.12.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,9 @@
1
+ [console_scripts]
2
+ h_experiments=hamilton.plugins.h_experiments.__main__:main
3
+ hamilton=hamilton.cli.__main__:cli
4
+ hamilton-admin-build-and-publish=ui.admin:build_and_publish
5
+ hamilton-admin-build-ui=ui.admin:build_ui
6
+ hamilton-disable-autoload-extensions=hamilton.registry:config_disable_autoload
7
+ hamilton-enable-autoload-extensions=hamilton.registry:config_enable_autoload
8
+ hamilton-mcp=hamilton.plugins.h_mcp.__main__:main
9
+
@@ -0,0 +1,10 @@
1
+ Apache Hamilton (incubating) is an effort undergoing incubation at the Apache
2
+ Software Foundation (ASF), sponsored by the Apache Incubator PMC.
3
+
4
+ Incubation is required of all newly accepted projects until a further review
5
+ indicates that the infrastructure, communications, and decision making process
6
+ have stabilized in a manner consistent with other successful ASF projects.
7
+
8
+ While incubation status is not necessarily a reflection of the completeness
9
+ or stability of the code, it does indicate that the project has yet to be
10
+ fully endorsed by the ASF.