Build DAG from functions directly
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- python
調査の方向性
既存の ad_hoc_utils パスと Builder().with_modules() エントリーポイントから始めて、現在どのように関数オブジェクトが DAG に変換されているかを理解します。Issue ではファイルもテストも指定されていません。完了の条件は、サポートする関数ベースの API を 1 つ選んで文書化し、テストでカバーし、既存のモジュール読み込みワークフローを維持することです。
索引モデルが issue の本文から書いたものです。
説明
Summary
Add first-class way to build a DAG from function objects (in contrast to DIY/ hacky). The user API could be either:
Builder().with_functions()- or an intermediary
my_module = module_from_functions(fns*)then passed to.with_modules()
Goals:
- simplify codebase
- foundation for better hierarchical / nested graph structures (i.e., subdags)
Current
At the core of Hamilton, users:
- write functions in a Python module ("dataflow code")
- load that module in the "driver code" to build a DAG
- execute the DAG via the Driver
Problem
- It is currently possible to build Hamilton DAGs from functions, but we have no official "here's how you do it" that we guarantee we'll support.
ad_hoc_utilsmeans exactly the opposite
- In a notebook, there's no good reason to create a module from a notebook function before passing to Hamilton (except our how constraints)
- Python module machinery is complex and adds indirection to the codebase (tests, notebook extension, LSP)
Benefits
- greatly simply many unit tests
- facilitate marimo integration
Hamilton 2.0 / Broader perspective
There's no well-defined structure or purpose to Hamilton top-level modules (e.g., nodes, graph_types, graph_utils, graph, ad_hoc_utils, base, hamilton.common, models). I propose a structure that matches the Hamilton lifecycle:
hamilton.parser: everything that deals with source code: how functions are written, if type annotations are present (not type matching), collecting functions from modules, converting a notebook cell string to a module, remove comments and docstring before hashing source codehamilton.compiler: converting code to DAG: structuring the DAG from functions, applying function modifiers, validating types, etc.- remove
ad_hoc_utils
- 主要言語
- Jupyter Notebook
- スター
- 2.6k
- フォーク
- 223
- 平均マージ
- 14時間
- マージ済み PR(30日)
- 12
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/hamilton のほかの issue
-
FunctionInputOutputTypeChecker rejects correct values for fixed-length tuple annotations (tuple[int, str])対応中かも @tarang-tp が 4 日前に担当しました。 オープンbug core-work
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
Engine crashes when client sends nan or inf float to UI再び着手できるかも @Exudev が 246 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンbug SDK
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
apache/hamilton#1458 · コメント 5 件 ·
メンテナーはふだん 1 日以内に返信
-
More detailed type annotations in graph visualizations再び着手できるかも @Nishant-Manocha が 381 日前に担当しましたが、オープン中のプルリクエストはありません。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
apache/hamilton#1383 · コメント 4 件 ·
メンテナーはふだん 1 日以内に返信
-
Documentation: add explainer for FastAPI再び着手できるかも @Aditya-Deshwal23 が 201 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンdocumentation
難易度 2/5 1〜2日 初心者へのやさしさ 65/100
apache/hamilton#1304 · コメント 5 件 ·
メンテナーはふだん 1 日以内に返信
-
Link back to github from reference API docs対応中かも @naikvaib が 38 日前に担当しました。 オープンdocumentation good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
apache/hamilton#572 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
apache/hamilton の issue をすべて見る
似ている issue
-
[MLIR][TOSA] Assertion in verifyBlockScaledTensorType when a tosa op result type is not a tensorオープンcrash mlir:tosa
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
llvm/llvm-project#236561 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
A-lexer
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
oxc-project/oxc#28320 ·
メンテナーはふだん 1 日以内に返信
-
[python] Python library model: str(None) is modelled as an unconstrained string instead of "None"オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
area:codegen backend:spirv bug direction:input
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
メンテナーはふだん 1 日以内に返信