[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-apache--hamilton":3,"tool-apache--hamilton":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",143909,2,"2026-04-07T11:33:18",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":77,"owner_email":77,"owner_twitter":77,"owner_website":78,"owner_url":79,"languages":80,"stars":115,"forks":116,"last_commit_at":117,"license":118,"difficulty_score":32,"env_os":119,"env_gpu":120,"env_ram":120,"env_deps":121,"category_tags":130,"github_topics":132,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":152,"updated_at":153,"faqs":154,"releases":184},5128,"apache\u002Fhamilton","hamilton","Apache Hamilton helps data scientists and engineers define testable, modular, self-documenting dataflows, that encode lineage\u002Ftracing and metadata. Runs and scales everywhere python does.","Apache Hamilton 是一款轻量级的 Python 库，旨在帮助开发者构建可测试、模块化且自带文档的数据转换流程。它通过有向无环图（DAG）来组织数据逻辑，让复杂的数据流向清晰可见。\n\n在传统数据工程中，管道代码往往耦合严重、难以追踪数据来源且缺乏自文档化能力。Hamilton 巧妙地解决了这些痛点：用户只需编写普通的 Python 函数，并通过函数参数自然声明依赖关系，Hamilton 即可自动解析并构建出完整的数据流程图。这种方式不仅让代码像脚本一样易读，还天然记录了数据血缘和元数据，极大提升了调试与维护效率。\n\n这款工具特别适合数据科学家、数据工程师以及需要处理 ETL 流水线、机器学习工作流、大语言模型（LLM）应用或生物信息学分析的开发者。无论是本地脚本、Jupyter 笔记本，还是 Airflow、FastAPI 等生产环境，只要支持 Python，Hamilton 就能无缝运行。\n\n其独特的技术亮点在于“代码即定义”的理念——无需学习复杂的配置语法，利用标准的 Python 函数签名即可实现强大的流程编排、数据验证及实验追踪功能。同时，它还提供了可视化界面，让抽","Apache Hamilton 是一款轻量级的 Python 库，旨在帮助开发者构建可测试、模块化且自带文档的数据转换流程。它通过有向无环图（DAG）来组织数据逻辑，让复杂的数据流向清晰可见。\n\n在传统数据工程中，管道代码往往耦合严重、难以追踪数据来源且缺乏自文档化能力。Hamilton 巧妙地解决了这些痛点：用户只需编写普通的 Python 函数，并通过函数参数自然声明依赖关系，Hamilton 即可自动解析并构建出完整的数据流程图。这种方式不仅让代码像脚本一样易读，还天然记录了数据血缘和元数据，极大提升了调试与维护效率。\n\n这款工具特别适合数据科学家、数据工程师以及需要处理 ETL 流水线、机器学习工作流、大语言模型（LLM）应用或生物信息学分析的开发者。无论是本地脚本、Jupyter 笔记本，还是 Airflow、FastAPI 等生产环境，只要支持 Python，Hamilton 就能无缝运行。\n\n其独特的技术亮点在于“代码即定义”的理念——无需学习复杂的配置语法，利用标准的 Python 函数签名即可实现强大的流程编排、数据验证及实验追踪功能。同时，它还提供了可视化界面，让抽象的数据流转过程一目了然，是提升数据项目结构化水平的得力助手。","\u003C!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n\u003Cdiv align=\"center\">\n   \u003Ch1>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_4aac85aa4d6f.png\" width=\"50\"\u002F> Apache Hamilton — portable & expressive \u003Cbr> data transformation DAGs\u003C\u002Fh1>\n   \u003Ca href='https:\u002F\u002Fhamilton.apache.org\u002F?badge=latest'>\n      \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_6bf48b3e9a6d.png' alt='Documentation Status' \u002F>\n   \u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F\" target=\"_blank\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.10%20|%203.11%20|%203.12%20|%203.13%20|%203.14-blue.svg\" alt=\"Python supported\"\u002F>\n   \u003C\u002Fa>\n   \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fsf-hamilton\u002F\" target=\"_blank\">\n      \u003Cimg src=\"https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fsf-hamilton.svg\" alt=\"PyPi Version\"\u002F>\n   \u003C\u002Fa>\n   \u003Ca href=\"https:\u002F\u002Fpepy.tech\u002Fproject\u002Fsf-hamilton\" target=\"_blank\">\n      \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_34c50e933400.png\" alt=\"Total Downloads\"\u002F>\n   \u003C\u002Fa>\n   \u003Ca href=\"https:\u002F\u002Fpepy.tech\u002Fproject\u002Fsf-hamilton\" target=\"_blank\">\n      \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_3190a3abdf44.png\" alt=\"Total Monthly Downloads\"\u002F>\n   \u003C\u002Fa>\n   \u003Cbr\u002F>\n   \u003Ca href=\"https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fhamilton-opensource\u002Fshared_invite\u002Fzt-2niepkra8-DGKGf_tTYhXuJWBTXtIs4g\" target=\"_blank\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FApache Hamilton-Join-purple.svg?logo=slack\" alt=\"Apache Hamilton Slack\"\u002F>\n   \u003C\u002Fa>\n   \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Fhamilton_os\" target=\"_blank\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FHamiltonOS-Follow-purple.svg?logo=X\"\u002F>\n   \u003C\u002Fa>\n\u003C\u002Fdiv>\n\u003Cbr>\u003C\u002Fbr>\n\n> **Disclaimer**\n>\n> Apache Hamilton is an effort undergoing incubation at the Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC.\n>\n> 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.\n>\n> 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.\n\nApache 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).\n\nTo 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!\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_60f873f2e0fb.png\" alt=\"Create a project\" width=\"65%\"\u002F>\n\u003C\u002Fdiv>\n\u003Cdiv align=\"center\">\n   Functions \u003Ccode>B()\u003C\u002Fcode> and \u003Ccode>C()\u003C\u002Fcode> refer to function \u003Ccode>A\u003C\u002Fcode> via their parameters\n\u003C\u002Fdiv>\n\u003Cbr>\n\nApache 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:\u002F\u002Fhamilton.apache.org\u002Fconcepts\u002Fui) allows you to automatically visualize, catalog, and monitor execution.\n\n> 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:\u002F\u002Fgithub.com\u002Fapache\u002Fburr) 🤖 .\n\n\n# Installation\n\nApache Hamilton supports Python 3.8+. We include the optional `visualization` dependency to display our Apache Hamilton DAG. For visualizations, [Graphviz](https:\u002F\u002Fgraphviz.org\u002Fdownload\u002F) needs to be installed on your system separately.\n\n```bash\npip install \"sf-hamilton[visualization]\"\n```\n\nTo use the Apache Hamilton UI, install the `ui` and `sdk` dependencies.\n\n```bash\npip install \"sf-hamilton[ui,sdk]\"\n```\n\nTo try Apache Hamilton in the browser, visit [www.tryhamilton.dev](https:\u002F\u002Fwww.tryhamilton.dev\u002F?utm_source=README)\n\n# Why use Apache Hamilton?\n\nData 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:\n\n- **Separation of concerns**. Apache Hamilton separates the DAG \"definition\" and \"execution\" which lets data scientists focus on solving problems and engineers manage production pipelines.\n\n- **Effective collaboration**. The [Apache Hamilton UI provides a shared interface](https:\u002F\u002Fhamilton.apache.org\u002Fhamilton-ui\u002Fui\u002F) for teams to inspect results and debug failures throughout the development cycle.\n\n- **Low-friction dev to prod**. Use `@config.when()` to modify your DAG between execution environments instead of error-prone `if\u002Felse` feature flags. The notebook extension prevents the pain of migrating code from a notebook to a Python module.\n\n- **Portable transformations**. Your DAG is [independent of infrastructure or orchestration](https:\u002F\u002Fblog.dagworks.io\u002Fpublish\u002Fposts\u002Fdetail\u002F145543927?referrer=%2Fpublish%2Fposts), meaning you can develop and debug locally and reuse code across contexts (local, Airflow, FastAPI, etc.).\n\n- **Maintainable DAG definition**. Apache Hamilton [automatically builds the DAG from a single line of code whether it has 10 or 1000 nodes](https:\u002F\u002Fhamilton.apache.org\u002Fconcepts\u002Fdriver\u002F). It can also assemble multiple Python modules into a pipeline, encouraging modularity.\n\n- **Expressive DAGs**. [Function modifiers](https:\u002F\u002Fhamilton.apache.org\u002Fconcepts\u002Ffunction-modifiers\u002F) are a unique feature to keep your code [DRY](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDon't_repeat_yourself) and reduce the complexity of maintaining large DAGs. Other frameworks inevitably lead to code redundancy or bloated functions.\n\n- **Built-in coding style**. The Apache Hamilton DAG is [defined using Python functions](https:\u002F\u002Fhamilton.apache.org\u002Fconcepts\u002Fnode\u002F), encouraging  modular, easy-to-read, self-documenting, and unit testable code.\n\n- **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.\n\n- **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!\n\n\n# Apache Hamilton UI\n\nYou can track the execution of your Apache Hamilton DAG in the [Apache Hamilton UI](https:\u002F\u002Fhamilton.apache.org\u002Fhamilton-ui\u002Fui\u002F). It automatically populates a data catalog with lineage \u002F tracing and provides execution observability to inspect results and debug errors. You can run it as a [local server](https:\u002F\u002Fhamilton.apache.org\u002Fhamilton-ui\u002Fui\u002F#local-mode) or a [self-hosted application using Docker](https:\u002F\u002Fhamilton.apache.org\u002Fhamilton-ui\u002Fui\u002F#docker-deployed-mode).\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_0fdfa2e449b5.jpeg\" alt=\"Description1\" width=\"30%\" style=\"margin-right: 20px;\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_d45db38f1ba8.jpeg\" alt=\"Description2\" width=\"30%\" style=\"margin-right: 20px;\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_efec83094aac.jpeg\" alt=\"Description3\" width=\"30%\"\u002F>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cem>DAG catalog, automatic dataset profiling, and execution tracking\u003C\u002Fem>\n\u003C\u002Fp>\n\n\n## Get started with the Apache Hamilton UI\n\n1. To use the Apache Hamilton UI, install the dependencies (see `Installation` section) and start the server with\n\n   ```bash\n   hamilton ui\n   ```\n\n2. On the first connection, create a `username` and a new project (the `project_id` should be `1`).\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_d2cae176ae30.png\" alt=\"Create a project\" width=\"70%\"\u002F>\n\u003C\u002Fdiv>\n\u003Cbr>\n\n3. 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!\n\n   ```python\n   from hamilton import driver\n   from hamilton_sdk.adapters import HamiltonTracker\n   import my_dag\n\n   # use your `username` and `project_id`\n   tracker = HamiltonTracker(\n      username=\"my_username\",\n      project_id=1,\n      dag_name=\"hello_world\",\n   )\n\n   # adding the tracker to the `Builder` will add the DAG to the catalog\n   dr = (\n      driver.Builder()\n      .with_modules(my_dag)\n      .with_adapters(tracker)  # add your tracker here\n      .build()\n   )\n\n   # executing the `Driver` will track results\n   dr.execute([\"C\"])\n   ```\n\n# Documentation & learning resources\n\n* 📚 See the [official documentation](https:\u002F\u002Fhamilton.apache.org\u002F) to learn about the core concepts of Apache Hamilton.\n\n* 👨‍🏫 Consult the [examples on GitHub](https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Ftree\u002Fmain\u002Fexamples) to learn about specific features or integrations with other frameworks.\n\n* 📰 The [DAGWorks blog](https:\u002F\u002Fblog.dagworks.io\u002F) includes guides about how to build a data platform and narrative tutorials.\n\n* 📺 Find video tutorials on the [DAGWorks YouTube channel](https:\u002F\u002Fwww.youtube.com\u002F@DAGWorks-Inc)\n\n* 📣 Reach out via the [Apache Hamilton Slack community](https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fhamilton-opensource\u002Fshared_invite\u002Fzt-2niepkra8-DGKGf_tTYhXuJWBTXtIs4g) for help and troubleshooting\n\n\n# How does Apache Hamilton compare to X?\n\nApache Hamilton is not an orchestrator ([you might not need one](https:\u002F\u002Fblog.dagworks.io\u002Fp\u002Flean-data-automation-a-principal)), nor a feature store ([but you can use it to build one!](https:\u002F\u002Fblog.dagworks.io\u002Fp\u002Ffeaturization-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.\n\nAnother 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.\n\n\u003Cdiv align=\"center\" style=\"width: 100%\">\n   \u003Ctable>\n      \u003Ccolgroup>\n         \u003Ccol style=\"width: 20%\">\n         \u003Ccol style=\"width: 40%\">\n         \u003Ccol style=\"width: 40%\">\n      \u003C\u002Fcolgroup>\n      \u003Cthead>\n         \u003Ctr>\n               \u003Cth>Layer\u003C\u002Fth>\n               \u003Cth>Purpose\u003C\u002Fth>\n               \u003Cth>Example Tools\u003C\u002Fth>\n         \u003C\u002Ftr>\n      \u003C\u002Fthead>\n      \u003Ctbody>\n         \u003Ctr>\n               \u003Ctd>Orchestration\u003C\u002Ftd>\n               \u003Ctd>Operational system for the creation of assets\u003C\u002Ftd>\n               \u003Ctd>Airflow, Metaflow, Prefect, Dagster\u003C\u002Ftd>\n         \u003C\u002Ftr>\n         \u003Ctr>\n               \u003Ctd>Asset\u003C\u002Ftd>\n               \u003Ctd>Organize expressions into meaningful units \u003Cbr> (e.g., dataset, ML model, table)\u003C\u002Ftd>\n               \u003Ctd>\u003Cb>Apache Hamilton\u003C\u002Fb>, dbt, dlt, SQLMesh, \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fapache\u002Fburr\">Burr\u003C\u002Fa>\u003C\u002Ftd>\n         \u003C\u002Ftr>\n         \u003Ctr>\n               \u003Ctd>Expression\u003C\u002Ftd>\n               \u003Ctd>Language to write data transformations\u003C\u002Ftd>\n               \u003Ctd>pandas, SQL, polars, Ibis, LangChain\u003C\u002Ftd>\n         \u003C\u002Ftr>\n         \u003Ctr>\n               \u003Ctd>Execution\u003C\u002Ftd>\n               \u003Ctd>Perform data transformations\u003C\u002Ftd>\n               \u003Ctd>Spark, Snowflake, DuckDB, RAPIDS\u003C\u002Ftd>\n         \u003C\u002Ftr>\n         \u003Ctr>\n               \u003Ctd>Data\u003C\u002Ftd>\n               \u003Ctd>Physical representation of data, inputs and outputs\u003C\u002Ftd>\n               \u003Ctd>S3, Postgres, file system, Snowflake\u003C\u002Ftd>\n         \u003C\u002Ftr>\n      \u003C\u002Ftbody>\n   \u003C\u002Ftable>\n\u003C\u002Fdiv>\n\nSee our page on [Why use Apache Hamilton?](https:\u002F\u002Fhamilton.apache.org\u002Fget-started\u002Fwhy-hamilton\u002F) and framework [code comparisons](https:\u002F\u002Fhamilton.apache.org\u002Fcode-comparisons\u002F) for more information.\n\n# 📑 License\n\nApache Hamilton is released under the Apache 2.0 License. See [LICENSE](https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fblob\u002Fmain\u002FLICENSE.md) for details.\n\n\n# 🌎 Community\n## 👨‍💻 Contributing\nWe'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!\n\n To contribute, checkout our [contributing guidelines](https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fblob\u002Fmain\u002FCONTRIBUTING.md), our [developer setup guide](https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fblob\u002Fmain\u002Fdeveloper_setup.md), and our [Code of Conduct](https:\u002F\u002Fwww.apache.org\u002Ffoundation\u002Fpolicies\u002Fconduct.html).\n\n\n## 😎 Used by\nApache 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.\n\n>Read more about the [origin story](https:\u002F\u002Fmultithreaded.stitchfix.com\u002Fblog\u002F2021\u002F10\u002F14\u002Ffunctions-dags-hamilton\u002F).\n\n\n* [Stitch Fix](https:\u002F\u002Fwww.stitchfix.com\u002F) — Time series forecasting\n* [UK Government Digital Services](https:\u002F\u002Fgithub.com\u002Falphagov\u002Fgovuk-feedback-analysis) — National feedback pipeline (processing & analysis)\n* [IBM](https:\u002F\u002Fwww.ibm.com\u002F) — Internal search and ML pipelines\n* [Opendoor](https:\u002F\u002Fwww.opendoor.com\u002F) — Manage PySpark pipelines\n* [Lexis Nexis](https:\u002F\u002Fwww.lexisnexis.com\u002Fen-us\u002Fhome.page) — Feature processing and lineage\n* [Adobe](https:\u002F\u002Fwww.adobe.com\u002F) — Prompt engineering research\n* [WrenAI](https:\u002F\u002Fgithub.com\u002FCanner\u002FWrenAI) — async text-to-SQL workflows\n* [British Cycling](https:\u002F\u002Fwww.britishcycling.org.uk\u002F) — Telemetry analysis\n* [Oak Ridge & PNNL](https:\u002F\u002Fpnnl.gov\u002F) — Naturf project\n* [ORNL](https:\u002F\u002Fwww.ornl.gov\u002F)\n* [Federal Reserve Board](https:\u002F\u002Fwww.federalreserve.gov\u002F)\n* [Joby Aviation](https:\u002F\u002Fwww.jobyaviation.com\u002F) — Flight data processing\n* [Two](https:\u002F\u002Fwww.two.inc\u002F)\n* [Transfix](https:\u002F\u002Ftransfix.io\u002F) — Online featurization and prediction\n* [Railofy](https:\u002F\u002Fwww.railofy.com) — Orchestrate pandas code\n* [Habitat Energy](https:\u002F\u002Fwww.habitat.energy\u002F) — Time-series feature engineering\n* [KI-Insurance](https:\u002F\u002Fwww.ki-insurance.com\u002F) — Feature engineering\n* [Ascena Retail](https:\u002F\u002Fwww.ascena.com\u002F) — Feature engineering\n* [NaroHQ](https:\u002F\u002Fwww.narohq.com\u002F)\n* [EquipmentShare](https:\u002F\u002Fwww.equipmentshare.com\u002F)\n* [Everstream.ai](https:\u002F\u002Fwww.everstream.ai\u002F)\n* [Flectere](https:\u002F\u002Fflectere.net\u002F)\n* [F33.ai](https:\u002F\u002Ff33.ai\u002F)\n* [Kora Money](https:\u002F\u002Fwww.koramoney.com)\n* [Capitec Bank](https:\u002F\u002Fwww.capitecbank.co.za\u002F)\n* [Best Egg](https:\u002F\u002Fbestegg.com\u002F)\n* [RTV Euro AGD](https:\u002F\u002Fwww.euro.com.pl\u002F)\n* [Wealth.com](https:\u002F\u002Fwww.wealth.com\u002F)\n* [wren.ai](https:\u002F\u002Fwren.ai\u002F)\n\n## 🤝 Code Contributors\n[![Contributors](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_d4f2b822fd97.png)](https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fgraphs\u002Fcontributors)\n\n\n## 🙌 Special Mentions & 🦟 Bug Hunters\n\nThanks to our awesome community and their active involvement in the Apache Hamilton library.\n\n[Nils Olsson](https:\u002F\u002Fgithub.com\u002Fnilsso), [Michał Siedlaczek](https:\u002F\u002Fgithub.com\u002Felshize), [Alaa Abedrabbo](https:\u002F\u002Fgithub.com\u002FAAbedrabbo), [Shreya Datar](https:\u002F\u002Fgithub.com\u002Fdatarshreya), [Baldo Faieta](https:\u002F\u002Fgithub.com\u002Fbaldofaieta), [Anwar Brini](https:\u002F\u002Fgithub.com\u002FAnwarBrini), [Gourav Kumar](https:\u002F\u002Fgithub.com\u002Fgms101), [Amos Aikman](https:\u002F\u002Fgithub.com\u002Famosaikman), [Ankush Kundaliya](https:\u002F\u002Fgithub.com\u002Fakundaliya), [David Weselowski](https:\u002F\u002Fgithub.com\u002Fj7zAhU), [Peter Robinson](https:\u002F\u002Fgithub.com\u002FPeter4137), [Seth Stokes](https:\u002F\u002Fgithub.com\u002FsT0v), [Louis Maddox](https:\u002F\u002Fgithub.com\u002Flmmx), [Stephen Bias](https:\u002F\u002Fgithub.com\u002Fs-ducks), [Anup Joseph](https:\u002F\u002Fgithub.com\u002FAnupJoseph), [Jan Hurst](https:\u002F\u002Fgithub.com\u002Fjanhurst), [Flavia Santos](https:\u002F\u002Fgithub.com\u002Fflaviassantos), [Nicolas Huray](https:\u002F\u002Fgithub.com\u002Fnhuray), [Manabu Niseki](https:\u002F\u002Fgithub.com\u002Fninoseki), [Kyle Pounder](https:\u002F\u002Fgithub.com\u002Fkpounder), [Alex Bustos](https:\u002F\u002Fgithub.com\u002Fbustosalex1), [Andy Day](https:\u002F\u002Fgithub.com\u002FadayNU), [Alexander Cai](https:\u002F\u002Fgithub.com\u002Fadzcai), [Nils Müller-Wendt](https:\u002F\u002Fgithub.com\u002FChronoJon), [Paul Larsen](https:\u002F\u002Fgithub.com\u002Fmunichpavel), [\nKemal Eren](https:\u002F\u002Fgithub.com\u002Fkemaleren), [Jernej Frank](https:\u002F\u002Fgithub.com\u002Fjernejfrank), [Noah Ridge](https:\u002F\u002Fgithub.com\u002Fnoahridge)\n\n# 🎓 Citations\nWe'd appreciate citing Apache Hamilton by referencing one of the following:\n\n```bibtex\n@inproceedings{DBLP:conf\u002Fvldb\u002FKrawczykI22,\n  title     = {Hamilton: a modular open source declarative paradigm for high level\n               modeling of dataflows},\n  author    = {Stefan Krawczyk and Elijah ben Izzy},\n  editor    = {Satyanarayana R. Valluri and Mohamed Za{\\\"{\\i}}t},\n  booktitle = {1st International Workshop on Composable Data Management Systems,\n               CDMS@VLDB 2022, Sydney, Australia, September 9, 2022},\n  year      = {2022},\n  url       = {https:\u002F\u002Fcdmsworkshop.github.io\u002F2022\u002FProceedings\u002FShortPapers\u002FPaper6\\_StefanKrawczyk.pdf},\n  timestamp = {Wed, 19 Oct 2022 16:20:48 +0200},\n  biburl    = {https:\u002F\u002Fdblp.org\u002Frec\u002Fconf\u002Fvldb\u002FKrawczykI22.bib},\n  bibsource = {dblp computer science bibliography, https:\u002F\u002Fdblp.org}\n}\n```\n```bibtex\n@inproceedings{CEURWS:conf\u002Fvldb\u002FKrawczykIQ22,\n  title     = {Hamilton: enabling software engineering best practices for data transformations via generalized dataflow graphs},\n  author    = {Stefan Krawczyk and Elijah ben Izzy and Danielle Quinn},\n  editor    = {Cinzia Cappiello and Sandra Geisler and Maria-Esther Vidal},\n  booktitle = {1st International Workshop on Data Ecosystems co-located with 48th International Conference on Very Large Databases (VLDB 2022)},\n  pages     = {41--50},\n  url       = {https:\u002F\u002Fceur-ws.org\u002FVol-3306\u002Fpaper5.pdf},\n  year      = {2022}\n}\n```\n\n# 📚 Libraries built on \u002F for Apache Hamilton\n* [Hypster](https:\u002F\u002Fgithub.com\u002Fgilad-rubin\u002Fhypster) - hyperparameter management\n* [DSP Decision Engine](https:\u002F\u002Fgithub.com\u002Fcapitec\u002Fdsp-decision-engine) - decision trees\n* [NaturF](https:\u002F\u002Fgithub.com\u002FIMMM-SFA\u002Fnaturf\u002F) - library for data transformation for weather forecasting\n* [WrenAI](https:\u002F\u002Fgithub.com\u002FCanner\u002FWrenAI) - RAG\n* [FlowerPower](https:\u002F\u002Fgithub.com\u002Flegout\u002Fflowerpower\u002F) - Scheduler for Apache Hamilton\n","\u003C!--\n根据一项或多项贡献者许可协议授予 Apache 软件基金会（ASF）许可。有关版权归属的更多信息，请参阅随本作品分发的 NOTICE 文件。ASF 根据 Apache 许可协议第 2.0 版（“许可”）向您授予本文件的使用许可；除非遵守该许可，否则不得使用本文件。您可以在以下网址获取许可副本：\n\n  http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n\n除非适用法律要求或以书面形式达成一致，否则根据本许可分发的软件按“原样”提供，不提供任何形式的保证或条件，无论是明示的还是默示的。有关特定语言的权限和限制，请参阅本许可。\n-->\n\n\u003Cdiv align=\"center\">\n   \u003Ch1>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_4aac85aa4d6f.png\" width=\"50\"\u002F> Apache Hamilton — 可移植且表达力强的\u003Cbr>数据转换有向无环图\u003C\u002Fh1>\n   \u003Ca href='https:\u002F\u002Fhamilton.apache.org\u002F?badge=latest'>\n      \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_6bf48b3e9a6d.png' alt='文档状态' \u002F>\n   \u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F\" target=\"_blank\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.10%20|%203.11%20|%203.12%20|%203.13%20|%203.14%20-blue.svg\" alt=\"支持的 Python 版本\"\u002F>\n   \u003C\u002Fa>\n   \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fsf-hamilton\u002F\" target=\"_blank\">\n      \u003Cimg src=\"https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fsf-hamilton.svg\" alt=\"PyPI 版本\"\u002F>\n   \u003C\u002Fa>\n   \u003Ca href=\"https:\u002F\u002Fpepy.tech\u002Fproject\u002Fsf-hamilton\" target=\"_blank\">\n      \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_34c50e933400.png\" alt=\"总下载量\"\u002F>\n   \u003C\u002Fa>\n   \u003Ca href=\"https:\u002F\u002Fpepy.tech\u002Fproject\u002Fsf-hamilton\" target=\"_blank\">\n      \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_3190a3abdf44.png\" alt=\"月度总下载量\"\u002F>\n   \u003C\u002Fa>\n   \u003Cbr\u002F>\n   \u003Ca href=\"https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fhamilton-opensource\u002Fshared_invite\u002Fzt-2niepkra8-DGKGf_tTYhXuJWBTXtIs4g\" target=\"_blank\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FApache Hamilton-Join-purple.svg?logo=slack\" alt=\"Apache Hamilton Slack\"\u002F>\n   \u003C\u002Fa>\n   \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Fhamilton_os\" target=\"_blank\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FHamiltonOS-Follow-purple.svg?logo=X\"\u002F>\n   \u003C\u002Fa>\n\u003C\u002Fdiv>\n\u003Cbr>\u003C\u002Fbr>\n\n> **免责声明**\n>\n> Apache Hamilton 是 Apache 软件基金会（ASF）孵化中的一个项目，由 Apache 孵化器 PMC 赞助。\n>\n> 所有新接受的项目都必须经过孵化期，直到进一步评估表明其基础设施、沟通机制和决策流程已稳定下来，达到与其他成功 ASF 项目一致的标准。\n>\n> 虽然孵化状态并不一定反映代码的完整性和稳定性，但它确实意味着该项目尚未得到 ASF 的完全认可。\n\nApache Hamilton（孵化中）是一个轻量级的 Python 库，用于构建数据转换的有向无环图（DAG）。您的 DAG 具有**可移植性**，无论是在脚本、笔记本、Airflow 流水线、FastAPI 服务器等任何可以运行 Python 的环境中，它都能正常运行。同时，Apache Hamilton 的 DAG 具有**表达力**，提供了丰富的功能来定义和修改 DAG 的执行过程（例如，数据验证、实验跟踪、远程执行等）。\n\n要创建一个 DAG，只需编写普通的 Python 函数，并通过函数参数指定它们之间的依赖关系。如下所示，这样生成的代码既易于阅读，又始终可以可视化。Apache Hamilton 会加载这些定义并自动为您构建 DAG！\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_60f873f2e0fb.png\" alt=\"创建项目\" width=\"65%\"\u002F>\n\u003C\u002Fdiv>\n\u003Cdiv align=\"center\">\n   函数 \u003Ccode>B()\u003C\u002Fcode> 和 \u003Ccode>C()\u003C\u002Fcode> 通过其参数引用函数 \u003Ccode>A\u003C\u002Fcode>\n\u003C\u002Fdiv>\n\u003Cbr>\n\nApache Hamilton 为任何涉及数据流动的 Python 应用程序带来了模块化和结构化：ETL 流水线、机器学习工作流、大型语言模型应用、RAG 系统、BI 仪表盘等。而 [Apache Hamilton UI](https:\u002F\u002Fhamilton.apache.org\u002Fconcepts\u002Fui) 则允许您自动可视化、编目并监控 DAG 的执行情况。\n\n> Apache Hamilton 非常适合处理 DAG，但如果您需要循环或条件逻辑来构建大型语言模型代理或进行模拟，不妨看看我们的姊妹库 [Burr](https:\u002F\u002Fgithub.com\u002Fapache\u002Fburr) 🤖 .\n\n\n# 安装\n\nApache Hamilton 支持 Python 3.8 及以上版本。我们包含了可选的 `visualization` 依赖项，用于显示 Apache Hamilton DAG。对于可视化功能，您需要在系统上单独安装 [Graphviz](https:\u002F\u002Fgraphviz.org\u002Fdownload\u002F)。\n\n```bash\npip install \"sf-hamilton[visualization]\"\n```\n\n若要使用 Apache Hamilton UI，还需安装 `ui` 和 `sdk` 依赖项。\n\n```bash\npip install \"sf-hamilton[ui,sdk]\"\n```\n\n如需在浏览器中试用 Apache Hamilton，请访问 [www.tryhamilton.dev](https:\u002F\u002Fwww.tryhamilton.dev\u002F?utm_source=README)\n\n# 为什么使用 Apache Hamilton？\n\n数据团队编写代码以实现业务价值，但很少有资源来标准化实践并提供质量保证。无论团队规模大小，从概念验证过渡到生产环境以及跨职能协作（例如数据科学、工程和运维）仍然是挑战。Apache Hamilton 旨在在整个项目生命周期中提供帮助：\n\n- **关注点分离**。Apache Hamilton 将 DAG 的“定义”与“执行”分离，使数据科学家能够专注于解决问题，而工程师则负责管理生产管道。\n\n- **高效协作**。[Apache Hamilton UI 提供一个共享界面](https:\u002F\u002Fhamilton.apache.org\u002Fhamilton-ui\u002Fui\u002F)，供团队在整个开发周期内检查结果并调试故障。\n\n- **低摩擦的开发到生产**。使用 `@config.when()` 在不同执行环境中修改 DAG，而不是依赖容易出错的 `if\u002Felse` 功能标志。Notebook 扩展可以避免将代码从 Notebook 迁移到 Python 模块时的麻烦。\n\n- **可移植的转换**。您的 DAG [独立于基础设施或编排系统](https:\u002F\u002Fblog.dagworks.io\u002Fpublish\u002Fposts\u002Fdetail\u002F145543927?referrer=%2Fpublish%2Fposts)，这意味着您可以在本地开发和调试，并在不同上下文中重用代码（本地、Airflow、FastAPI 等）。\n\n- **可维护的 DAG 定义**。Apache Hamilton [可以从一行代码自动构建 DAG，无论其包含 10 个节点还是 1000 个节点](https:\u002F\u002Fhamilton.apache.org\u002Fconcepts\u002Fdriver\u002F)。它还可以将多个 Python 模块组装成一个管道，从而鼓励模块化设计。\n\n- **表达性强的 DAG**。[函数修饰器](https:\u002F\u002Fhamilton.apache.org\u002Fconcepts\u002Ffunction-modifiers\u002F)是一项独特功能，可帮助您保持代码的 [DRY 原则](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDon't_repeat_yourself)，并降低维护大型 DAG 的复杂性。其他框架往往会导致代码冗余或函数臃肿。\n\n- **内置编码风格**。Apache Hamilton DAG 是通过 [Python 函数定义的](https:\u002F\u002Fhamilton.apache.org\u002Fconcepts\u002Fnode\u002F)，这有助于编写模块化、易读、自文档化且易于单元测试的代码。\n\n- **数据和模式验证**。使用 `@check_output` 装饰函数以验证输出属性，并触发警告或异常。添加 `SchemaValidator()` 适配器，即可自动检查类似 DataFrame 的对象（pandas、polars、Ibis 等），从而跟踪和验证其模式。\n\n- **为插件而生**。Apache Hamilton 专为与各种工具良好兼容而设计，并提供了适当的抽象层，以便您根据自身技术栈创建自定义集成。我们活跃的社区将帮助您构建所需的功能！\n\n\n# Apache Hamilton UI\n\n您可以在 [Apache Hamilton UI](https:\u002F\u002Fhamilton.apache.org\u002Fhamilton-ui\u002Fui\u002F) 中跟踪 Apache Hamilton DAG 的执行情况。它会自动填充包含血缘关系和追踪信息的数据目录，并提供执行可观测性，以便检查结果和调试错误。您可以将其作为 [本地服务器](https:\u002F\u002Fhamilton.apache.org\u002Fhamilton-ui\u002Fui\u002F#local-mode) 或使用 Docker 部署的 [自托管应用](https:\u002F\u002Fhamilton.apache.org\u002Fhamilton-ui\u002Fui\u002F#docker-deployed-mode) 来运行。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_0fdfa2e449b5.jpeg\" alt=\"Description1\" width=\"30%\" style=\"margin-right: 20px;\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_d45db38f1ba8.jpeg\" alt=\"Description2\" width=\"30%\" style=\"margin-right: 20px;\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_efec83094aac.jpeg\" alt=\"Description3\" width=\"30%\"\u002F>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cem>DAG 目录、自动数据集分析和执行追踪\u003C\u002Fem>\n\u003C\u002Fp>\n\n\n## 开始使用 Apache Hamilton UI\n\n1. 要使用 Apache Hamilton UI，您需要安装依赖项（参见“安装”部分），然后通过以下命令启动服务器：\n\n   ```bash\n   hamilton ui\n   ```\n\n2. 首次连接时，请创建一个用户名并新建一个项目（`project_id` 应设置为 1）。\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_d2cae176ae30.png\" alt=\"创建项目\" width=\"70%\"\u002F>\n\u003C\u002Fdiv>\n\u003Cbr>\n\n3. 通过使用您的用户名和项目 ID 创建一个 `HamiltonTracker` 对象，并将其添加到 `Builder` 中，即可跟踪您的 Apache Hamilton DAG。现在，您的 DAG 将显示在 UI 的目录中，所有执行操作都会被记录下来！\n\n   ```python\n   from hamilton import driver\n   from hamilton_sdk.adapters import HamiltonTracker\n   import my_dag\n\n   # 使用您的用户名和项目 ID\n   tracker = HamiltonTracker(\n      username=\"my_username\",\n      project_id=1,\n      dag_name=\"hello_world\",\n   )\n\n   # 将跟踪器添加到 Builder 中，DAG 就会被加入目录\n   dr = (\n      driver.Builder()\n      .with_modules(my_dag)\n      .with_adapters(tracker)  # 在此处添加您的跟踪器\n      .build()\n   )\n\n   # 执行 Driver 将会记录结果\n   dr.execute([\"C\"])\n   ```\n\n# 文档与学习资源\n\n* 📚 请参阅 [官方文档](https:\u002F\u002Fhamilton.apache.org\u002F)，了解 Apache Hamilton 的核心概念。\n\n* 👨‍🏫 可以查阅 [GitHub 上的示例](https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Ftree\u002Fmain\u002Fexamples)，学习特定功能或与其他框架的集成方法。\n\n* 📰 [DAGWorks 博客](https:\u002F\u002Fblog.dagworks.io\u002F) 包含有关如何构建数据平台的指南和叙事式教程。\n\n* 📺 您可以在 [DAGWorks YouTube 频道](https:\u002F\u002Fwww.youtube.com\u002F@DAGWorks-Inc) 上找到视频教程。\n\n* 📣 如需帮助或故障排除，请通过 [Apache Hamilton Slack 社区](https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fhamilton-opensource\u002Fshared_invite\u002Fzt-2niepkra8-DGKGf_tTYhXuJWBTXtIs4g) 联系我们。\n\n# Apache Hamilton 与 X 相比如何？\n\nApache Hamilton 既不是编排工具（[你可能并不需要一个](https:\u002F\u002Fblog.dagworks.io\u002Fp\u002Flean-data-automation-a-principal)），也不是特征存储库（[不过你可以用它来构建一个！](https:\u002F\u002Fblog.dagworks.io\u002Fp\u002Ffeaturization-integrating-hamilton)）。它的主要用途是帮助你组织和管理数据转换逻辑。如果你熟悉 dbt，那么 Apache Hamilton 对 Python 的作用就类似于 dbt 对 SQL 的作用。\n\n另一种理解方式是从数据栈的不同层次来考虑。Apache Hamilton 处于**资产层**。它可以帮助你将数据转换代码（即**表达式层**）组织起来，管理变更，并对数据进行验证和测试。\n\n\u003Cdiv align=\"center\" style=\"width: 100%\">\n   \u003Ctable>\n      \u003Ccolgroup>\n         \u003Ccol style=\"width: 20%\">\n         \u003Ccol style=\"width: 40%\">\n         \u003Ccol style=\"width: 40%\">\n      \u003C\u002Fcolgroup>\n      \u003Cthead>\n         \u003Ctr>\n               \u003Cth>层\u003C\u002Fth>\n               \u003Cth>目的\u003C\u002Fth>\n               \u003Cth>示例工具\u003C\u002Fth>\n         \u003C\u002Ftr>\n      \u003C\u002Fthead>\n      \u003Ctbody>\n         \u003Ctr>\n               \u003Ctd>编排\u003C\u002Ftd>\n               \u003Ctd>用于创建资产的运行时系统\u003C\u002Ftd>\n               \u003Ctd>Airflow、Metaflow、Prefect、Dagster\u003C\u002Ftd>\n         \u003C\u002Ftr>\n         \u003Ctr>\n               \u003Ctd>资产\u003C\u002Ftd>\n               \u003Ctd>将表达式组织成有意义的单元\u003Cbr>（例如：数据集、机器学习模型、表）\u003C\u002Ftd>\n               \u003Ctd>\u003Cb>Apache Hamilton\u003C\u002Fb>、dbt、dlt、SQLMesh、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fapache\u002Fburr\">Burr\u003C\u002Fa>\u003C\u002Ftd>\n         \u003C\u002Ftr>\n         \u003Ctr>\n               \u003Ctd>表达式\u003C\u002Ftd>\n               \u003Ctd>用于编写数据转换的语言\u003C\u002Ftd>\n               \u003Ctd>pandas、SQL、polars、Ibis、LangChain\u003C\u002Ftd>\n         \u003C\u002Ftr>\n         \u003Ctr>\n               \u003Ctd>执行\u003C\u002Ftd>\n               \u003Ctd>实际执行数据转换\u003C\u002Ftd>\n               \u003Ctd>Spark、Snowflake、DuckDB、RAPIDS\u003C\u002Ftd>\n         \u003C\u002Ftr>\n         \u003Ctr>\n               \u003Ctd>数据\u003C\u002Ftd>\n               \u003Ctd>数据的物理表示形式，包括输入和输出\u003C\u002Ftd>\n               \u003Ctd>S3、Postgres、文件系统、Snowflake\u003C\u002Ftd>\n         \u003C\u002Ftr>\n      \u003C\u002Ftbody>\n   \u003C\u002Ftable>\n\u003C\u002Fdiv>\n\n更多信息请参阅我们的页面 [为什么使用 Apache Hamilton？](https:\u002F\u002Fhamilton.apache.org\u002Fget-started\u002Fwhy-hamilton\u002F) 以及框架间的[代码比较](https:\u002F\u002Fhamilton.apache.org\u002Fcode-comparisons\u002F)。\n\n# 📑 许可证\n\nApache Hamilton 根据 Apache 2.0 许可证发布。详细信息请参阅 [LICENSE](https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fblob\u002Fmain\u002FLICENSE.md)。\n\n# 🌎 社区\n## 👨‍💻 贡献\n我们非常欢迎新贡献者提出的各种大小改动！在提交拉取请求之前，请务必通过创建议题或在现有议题上留言来讨论潜在的更改。不错的首次贡献包括创建示例或与你喜欢的 Python 库集成！\n\n如需贡献，请查看我们的[贡献指南](https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fblob\u002Fmain\u002FCONTRIBUTING.md)、[开发者设置指南](https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fblob\u002Fmain\u002Fdeveloper_setup.md)，以及我们的[行为准则](https:\u002F\u002Fwww.apache.org\u002Ffoundation\u002Fpolicies\u002Fconduct.html)。\n\n## 😎 使用情况\nApache Hamilton 最初是在 Stitch Fix 开发的，后来由其原作者创立了 DAGWorks Inc！该库经过实战检验，自 2019 年以来一直支持生产环境中的各类用例。\n\n> 更多关于[起源故事](https:\u002F\u002Fmultithreaded.stitchfix.com\u002Fblog\u002F2021\u002F10\u002F14\u002Ffunctions-dags-hamilton\u002F)的信息。\n\n* [Stitch Fix](https:\u002F\u002Fwww.stitchfix.com\u002F) — 时间序列预测\n* [英国政府数字服务](https:\u002F\u002Fgithub.com\u002Falphagov\u002Fgovuk-feedback-analysis) — 全国反馈流水线（处理与分析）\n* [IBM](https:\u002F\u002Fwww.ibm.com\u002F) — 内部搜索与机器学习流水线\n* [Opendoor](https:\u002F\u002Fwww.opendoor.com\u002F) — 管理 PySpark 流水线\n* [Lexis Nexis](https:\u002F\u002Fwww.lexisnexis.com\u002Fen-us\u002Fhome.page) — 特征处理与血缘关系追踪\n* [Adobe](https:\u002F\u002Fwww.adobe.com\u002F) — 提示工程研究\n* [WrenAI](https:\u002F\u002Fgithub.com\u002FCanner\u002FWrenAI) — 异步文本转 SQL 工作流\n* [British Cycling](https:\u002F\u002Fwww.britishcycling.org.uk\u002F) — 遥测数据分析\n* [Oak Ridge 和 PNNL](https:\u002F\u002Fpnnl.gov\u002F) — Naturf 项目\n* [ORNL](https:\u002F\u002Fwww.ornl.gov\u002F)\n* [联邦储备委员会](https:\u002F\u002Fwww.federalreserve.gov\u002F)\n* [Joby Aviation](https:\u002F\u002Fwww.jobyaviation.com\u002F) — 飞行数据处理\n* [Two](https:\u002F\u002Fwww.two.inc\u002F)\n* [Transfix](https:\u002F\u002Ftransfix.io\u002F) — 在线特征提取与预测\n* [Railofy](https:\u002F\u002Fwww.railofy.com) — 编排 pandas 代码\n* [Habitat Energy](https:\u002F\u002Fwww.habitat.energy\u002F) — 时间序列特征工程\n* [KI-Insurance](https:\u002F\u002Fwww.ki-insurance.com\u002F) — 特征工程\n* [Ascena Retail](https:\u002F\u002Fwww.ascena.com\u002F) — 特征工程\n* [NaroHQ](https:\u002F\u002Fwww.narohq.com\u002F)\n* [EquipmentShare](https:\u002F\u002Fwww.equipmentshare.com\u002F)\n* [Everstream.ai](https:\u002F\u002Fwww.everstream.ai\u002F)\n* [Flectere](https:\u002F\u002Fflectere.net\u002F)\n* [F33.ai](https:\u002F\u002Ff33.ai\u002F)\n* [Kora Money](https:\u002F\u002Fwww.koramoney.com)\n* [Capitec Bank](https:\u002F\u002Fwww.capitecbank.co.za\u002F)\n* [Best Egg](https:\u002F\u002Fbestegg.com\u002F)\n* [RTV Euro AGD](https:\u002F\u002Fwww.euro.com.pl\u002F)\n* [Wealth.com](https:\u002F\u002Fwww.wealth.com\u002F)\n* [wren.ai](https:\u002F\u002Fwren.ai\u002F)\n\n## 🤝 代码贡献者\n[![贡献者](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_readme_d4f2b822fd97.png)](https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fgraphs\u002Fcontributors)\n\n\n## 🙌 特别感谢 & 🦟 漏洞猎人\n\n感谢我们出色的社区及其对 Apache Hamilton 库的积极参与。\n\n[Nils Olsson](https:\u002F\u002Fgithub.com\u002Fnilsso)、[Michał Siedlaczek](https:\u002F\u002Fgithub.com\u002Felshize)、[Alaa Abedrabbo](https:\u002F\u002Fgithub.com\u002FAAbedrabbo)、[Shreya Datar](https:\u002F\u002Fgithub.com\u002Fdatarshreya)、[Baldo Faieta](https:\u002F\u002Fgithub.com\u002Fbaldofaieta)、[Anwar Brini](https:\u002F\u002Fgithub.com\u002FAnwarBrini)、[Gourav Kumar](https:\u002F\u002Fgithub.com\u002Fgms101)、[Amos Aikman](https:\u002F\u002Fgithub.com\u002Famosaikman)、[Ankush Kundaliya](https:\u002F\u002Fgithub.com\u002Fakundaliya)、[David Weselowski](https:\u002F\u002Fgithub.com\u002Fj7zAhU)、[Peter Robinson](https:\u002F\u002Fgithub.com\u002FPeter4137)、[Seth Stokes](https:\u002F\u002Fgithub.com\u002FsT0v)、[Louis Maddox](https:\u002F\u002Fgithub.com\u002Flmmx)、[Stephen Bias](https:\u002F\u002Fgithub.com\u002Fs-ducks)、[Anup Joseph](https:\u002F\u002Fgithub.com\u002FAnupJoseph)、[Jan Hurst](https:\u002F\u002Fgithub.com\u002Fjanhurst)、[Flavia Santos](https:\u002F\u002Fgithub.com\u002Fflaviassantos)、[Nicolas Huray](https:\u002F\u002Fgithub.com\u002Fnhuray)、[Manabu Niseki](https:\u002F\u002Fgithub.com\u002Fninoseki)、[Kyle Pounder](https:\u002F\u002Fgithub.com\u002Fkpounder)、[Alex Bustos](https:\u002F\u002Fgithub.com\u002Fbustosalex1)、[Andy Day](https:\u002F\u002Fgithub.com\u002FadayNU)、[Alexander Cai](https:\u002F\u002Fgithub.com\u002Fadzcai)、[Nils Müller-Wendt](https:\u002F\u002Fgithub.com\u002FChronoJon)、[Paul Larsen](https:\u002F\u002Fgithub.com\u002Fmunichpavel)、[\nKemal Eren](https:\u002F\u002Fgithub.com\u002Fkemaleren)、[Jernej Frank](https:\u002F\u002Fgithub.com\u002Fjernejfrank)、[Noah Ridge](https:\u002F\u002Fgithub.com\u002Fnoahridge)\n\n# 🎓 引用\n如果您使用了 Apache Hamilton，请通过以下任一方式引用我们：\n\n```bibtex\n@inproceedings{DBLP:conf\u002Fvldb\u002FKrawczykI22,\n  title     = {Hamilton: 一种模块化的开源声明式范式，用于数据流的高层次建模},\n  author    = {Stefan Krawczyk 和 Elijah ben Izzy},\n  editor    = {Satyanarayana R. Valluri 和 Mohamed Za{\\\"{\\i}}t},\n  booktitle = {第一届可组合数据管理系统国际研讨会，CDMS@VLDB 2022，澳大利亚悉尼，2022年9月9日},\n  year      = {2022},\n  url       = {https:\u002F\u002Fcdmsworkshop.github.io\u002F2022\u002FProceedings\u002FShortPapers\u002FPaper6\\_StefanKrawczyk.pdf},\n  timestamp = {Wed, 19 Oct 2022 16:20:48 +0200},\n  biburl    = {https:\u002F\u002Fdblp.org\u002Frec\u002Fconf\u002Fvldb\u002FKrawczykI22.bib},\n  bibsource = {dblp 计算机科学文献数据库，https:\u002F\u002Fdblp.org}\n}\n```\n```bibtex\n@inproceedings{CEURWS:conf\u002Fvldb\u002FKrawczykIQ22,\n  title     = {Hamilton：通过广义数据流图实现数据转换中的软件工程最佳实践},\n  author    = {Stefan Krawczyk、Elijah ben Izzy 和 Danielle Quinn},\n  editor    = {Cinzia Cappiello、Sandra Geisler 和 Maria-Esther Vidal},\n  booktitle = {与第48届非常大规模数据库国际会议（VLDB 2022）同期举办的首届数据生态系统国际研讨会},\n  pages     = {41--50},\n  url       = {https:\u002F\u002Fceur-ws.org\u002FVol-3306\u002Fpaper5.pdf},\n  year      = {2022}\n}\n```\n\n# 📚 基于或为 Apache Hamilton 构建的库\n* [Hypster](https:\u002F\u002Fgithub.com\u002Fgilad-rubin\u002Fhypster) - 超参数管理\n* [DSP Decision Engine](https:\u002F\u002Fgithub.com\u002Fcapitec\u002Fdsp-decision-engine) - 决策树\n* [NaturF](https:\u002F\u002Fgithub.com\u002FIMMM-SFA\u002Fnaturf\u002F) - 用于天气预报的数据转换库\n* [WrenAI](https:\u002F\u002Fgithub.com\u002FCanner\u002FWrenAI) - RAG\n* [FlowerPower](https:\u002F\u002Fgithub.com\u002Flegout\u002Fflowerpower\u002F) - Apache Hamilton 的调度器","# Apache Hamilton 快速上手指南\n\nApache Hamilton 是一个轻量级的 Python 库，用于构建可移植且表达力强的数据转换有向无环图（DAG）。它通过普通的 Python 函数定义依赖关系，自动构建 DAG，适用于 ETL、机器学习工作流、LLM 应用及 BI 仪表盘等场景。\n\n## 环境准备\n\n*   **操作系统**：支持所有可运行 Python 的系统（Linux, macOS, Windows）。\n*   **Python 版本**：要求 Python 3.8 及以上（推荐 3.10 - 3.14）。\n*   **前置依赖**：\n    *   若需使用 DAG 可视化功能，需单独安装系统级工具 [Graphviz](https:\u002F\u002Fgraphviz.org\u002Fdownload\u002F)。\n    *   若需使用 Apache Hamilton UI 进行目录管理和执行监控，需额外安装相关依赖包。\n\n## 安装步骤\n\n建议使用国内镜像源（如清华源或阿里源）加速安装。\n\n### 1. 基础安装（含可视化支持）\n安装核心库及可视化可选依赖：\n```bash\npip install \"sf-hamilton[visualization]\" -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n> **注意**：安装完成后，请确保系统已安装 `graphviz` 二进制文件，否则可视化功能无法使用。\n\n### 2. 完整安装（含 UI 支持）\n若需要使用 Apache Hamilton UI 进行项目追踪和调试：\n```bash\npip install \"sf-hamilton[ui,sdk]\" -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n## 基本使用\n\nHamilton 的核心理念是：**代码即 DAG**。只需编写带有明确参数依赖的普通 Python 函数，Hamilton 会自动解析并构建执行图。\n\n### 1. 定义 DAG (my_dag.py)\n创建一个 Python 文件（例如 `my_dag.py`），定义数据转换逻辑。函数的参数名即为该节点所依赖的其他节点名称。\n\n```python\n# my_dag.py\n\ndef A() -> int:\n    \"\"\"根节点，不依赖其他节点\"\"\"\n    return 1\n\ndef B(A: int) -> int:\n    \"\"\"依赖节点 A\"\"\"\n    return A + 1\n\ndef C(A: int, B: int) -> int:\n    \"\"\"依赖节点 A 和 B\"\"\"\n    return A + B\n```\n\n### 2. 执行 DAG\n使用 `driver` 加载模块并执行。你只需指定想要计算的最终输出节点名称，Hamilton 会自动解析依赖链并执行必要的函数。\n\n```python\nfrom hamilton import driver\nimport my_dag\n\n# 初始化 Driver，加载包含函数定义的模块\ndr = driver.Builder().with_modules(my_dag).build()\n\n# 执行 DAG，请求计算节点 \"C\"\n# Hamilton 会自动先执行 A，然后 B，最后计算 C\nresult = dr.execute([\"C\"])\n\nprint(result)\n# 输出示例：{'C': 3}\n```\n\n### 3. (可选) 可视化 DAG\n如果已安装 Graphviz，可以生成 DAG 图像以检查依赖结构：\n\n```python\n# 生成并显示 DAG 图像\ndr.visualize_execution(\n    [\"C\"],          # 目标输出节点\n    {},             # 输入参数（本例无需外部输入）\n    {\"format\": \"png\"} # 输出格式\n)\n```\n\n### 4. (可选) 接入 Hamilton UI\n若需追踪执行记录和查看数据血缘，可配置 `HamiltonTracker`：\n\n```python\nfrom hamilton import driver\nfrom hamilton_sdk.adapters import HamiltonTracker\nimport my_dag\n\n# 配置追踪器（需先在 UI 中创建项目和用户）\ntracker = HamiltonTracker(\n    username=\"my_username\",\n    project_id=1,\n    dag_name=\"hello_world\",\n)\n\n# 将追踪器添加到 Builder\ndr = (\n    driver.Builder()\n    .with_modules(my_dag)\n    .with_adapters(tracker)\n    .build()\n)\n\n# 执行后，结果将自动同步至 UI\ndr.execute([\"C\"])\n```\n\n启动 UI 服务器命令：\n```bash\nhamilton ui\n```","某电商数据团队正在构建一个每日用户行为分析管道，需要从原始日志中清洗数据、计算转化漏斗并生成 BI 报表。\n\n### 没有 hamilton 时\n- **依赖管理混乱**：工程师需手动维护复杂的函数调用顺序，一旦修改中间逻辑，极易引发“牵一发而动全身”的隐性报错。\n- **血缘追踪缺失**：当最终报表数据异常时，难以快速定位是上游哪个清洗步骤或特征计算出了问题，排查耗时极长。\n- **文档与代码脱节**：数据转换逻辑散落在巨大的脚本文件中，缺乏自动生成的文档，新成员接手需要花费数周理解业务逻辑。\n- **测试困难**：由于函数间耦合紧密且状态共享，无法针对单个指标逻辑编写独立的单元测试，导致回归测试成本高昂。\n\n### 使用 hamilton 后\n- **声明式依赖自动解析**：只需定义普通 Python 函数并通过参数名声明依赖，hamilton 自动构建有向无环图（DAG），彻底消除手动排序的执行风险。\n- **全链路血缘可视化**：系统自动记录每个数据列的来源与去向，出现数据异常时可秒级定位到具体的故障节点和输入源。\n- **代码即文档**：函数名和参数直接构成自解释的数据流图，hamilton 能自动生成实时更新的逻辑文档，大幅降低沟通与上手门槛。\n- **模块化轻松测试**：每个数据转换步骤被解耦为独立函数，数据科学家可直接对特定指标逻辑进行单元测试，确保迭代安全。\n\nhamilton 将原本脆弱黑盒的数据脚本，转变为可测试、自文档化且具备清晰血缘的模块化资产，显著提升了数据管道的开发效率与维护信心。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fapache_hamilton_60f873f2.png","apache","The Apache Software Foundation","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fapache_c52803a1.png","",null,"https:\u002F\u002Fwww.apache.org\u002F","https:\u002F\u002Fgithub.com\u002Fapache",[81,85,89,93,97,101,105,108,112],{"name":82,"color":83,"percentage":84},"Jupyter Notebook","#DA5B0B",55.2,{"name":86,"color":87,"percentage":88},"Python","#3572A5",36.9,{"name":90,"color":91,"percentage":92},"TypeScript","#3178c6",6.9,{"name":94,"color":95,"percentage":96},"Shell","#89e051",0.6,{"name":98,"color":99,"percentage":100},"JavaScript","#f1e05a",0.3,{"name":102,"color":103,"percentage":104},"HTML","#e34c26",0.1,{"name":106,"color":107,"percentage":104},"CSS","#663399",{"name":109,"color":110,"percentage":111},"Jinja","#a52a22",0,{"name":113,"color":114,"percentage":111},"Dockerfile","#384d54",2445,179,"2026-04-06T19:48:00","Apache-2.0","Linux, macOS, Windows","未说明",{"notes":122,"python":123,"dependencies":124},"该工具是一个轻量级 Python 库，旨在任何能运行 Python 的地方运行（如脚本、Notebook、Airflow、FastAPI 等）。若需使用 DAG 可视化功能，需在系统中单独安装 Graphviz 软件。若需使用 Apache Hamilton UI 进行执行跟踪和数据目录管理，需安装额外的 'ui' 和 'sdk' 依赖，并可通过本地服务器或 Docker 部署运行。","3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14",[125,126,127,128,129],"sf-hamilton","graphviz (可选，用于可视化)","pandas (可选，用于数据验证)","polars (可选，用于数据验证)","ibis (可选，用于数据验证)",[16,13,35,131,14],"其他",[133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151],"data-science","python","dag","data-engineering","dataframe","etl","etl-framework","etl-pipeline","feature-engineering","machine-learning","pandas","software-engineering","data-analysis","lineage","llmops","mlops","orchestration","hacktoberfest","rag","2026-03-27T02:49:30.150509","2026-04-08T00:58:41.501586",[155,160,165,170,175,180],{"id":156,"question_zh":157,"answer_zh":158,"source_url":159},23282,"如何在 Hamilton 中实现节点的并行执行和结果收集？","可以使用 `parallelizeable` 和 `collect` 构造来实现。这些功能允许你将任务并行化并在完成后收集结果。具体用法请参考官方文档中的并行任务概念章节：https:\u002F\u002Fhamilton.dagworks.io\u002Fen\u002Flatest\u002Fconcepts\u002Fparallel-task\u002F。","https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fissues\u002F90",{"id":161,"question_zh":162,"answer_zh":163,"source_url":164},23283,"如何为 Hamilton 贡献新的 Pandas 读写器（Readers\u002FWriters）？","贡献步骤如下：1. 在 Issue 列表中认领一个未完成的格式（如 pandas fwf, hdf 等）；2. 参考现有的实现代码（例如 polars_extensions.py 中的类结构）；3. 阅读相关 Pandas 文档；4. 创建对应的类、编写测试用例；5. 在 examples 仓库中创建示例。维护者会协助你完成后续流程。","https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fissues\u002F284",{"id":166,"question_zh":167,"answer_zh":168,"source_url":169},23284,"Hamilton 的示例项目是否提供 Jupyter Notebook 版本以便初学者上手？","是的，项目致力于确保每个示例都有对应的 Jupyter Notebook（类似于 hello_world 示例中的 my_notebook.ipynb），以便数据科学家更容易运行和实验。如果你发现某个示例缺少 Notebook，可以认领该任务进行补充，但需注意部分示例可能不适合转换为 Notebook 格式。","https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fissues\u002F247",{"id":171,"question_zh":172,"answer_zh":173,"source_url":174},23285,"如何在 Dask 仪表板中显示 Hamilton 节点的具体函数名称而不是通用的 'node_fn'？","该问题已在最近的更新中得到解决。现在 Dask 仪表板能够显示更有意义的节点信息（即 DAG 中定义的函数名称）。请确保你使用的是最新版本的 Hamilton，以便在监控任务时能清晰识别正在执行的管道部分。","https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fissues\u002F161",{"id":176,"question_zh":177,"answer_zh":178,"source_url":179},23286,"如何从配置中定义参数化的子 DAG 以实现输入列表的“扇出”处理？","可以通过 `@resolve` 装饰器结合 `parameterized_subdag` 来实现。当配置可用时（ResolveAt.CONFIG_AVAILABLE），使用 lambda 函数动态生成子 DAG。示例代码结构如下：\n@resolve(when=ResolveAt.CONFIG_AVAILABLE, decorate_with=lambda inputs: parameterized_subdag(module, **inputs))\ndef pipeline(sub_dag_fcn: MyObj) -> MyObj:\n    return sub_dag_fcn\n其中 `_subdag_inputs`  helper 函数用于将配置列表转换为子 DAG 所需的参数字典。","https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fissues\u002F157",{"id":181,"question_zh":182,"answer_zh":183,"source_url":159},23287,"如何让某个节点在每次被依赖时都重新计算（例如生成新的 docx.Document 实例）？","虽然用户曾请求一个强制重算的装饰器，但目前的推荐做法是利用 `parallelizeable` \u002F `collect` 构造或参考 Issue #19 中更通用的 API 设计思路。对于需要每次生成新实例的场景（如文档分段），避免使用共享状态，而是通过架构设计确保每次调用都是独立的，或者关注后续版本中关于此特性的 API 更新。",[185,190,195,200,205,210,215,220,225,230,235,240,245,250,255,260,265,270,275,280],{"id":186,"version":187,"summary_zh":188,"released_at":189},136951,"v1.89.0-incubating","## 变更内容\n* @cswartzvi 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1302 中修复了本地（Windows）测试问题。\n* @skrawcz 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1301 中为 Docker 配置传递了 REACT_APP_HAMILTON_SUB_PATH 环境变量。\n* @cswartzvi 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1306 中修复了 `dlt` 插件，并对 `loader_file_format` 进行了更改。\n* @pjfanning 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1315 中更新了 SECURITY.md 文件。\n* @pjfanning 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1316 中删除了 CODE_OF_CONDUCT.md 文件。\n* @pjfanning 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1312 中创建了 .asf.yaml 文件。\n* @skrawcz 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1335 中将许可证变更为 Apache 2.0。\n* @skrawcz 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1344 中增加了网站发布功能。\n* @pjfanning 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1345 中尝试发布 .asf.yaml 中的更改。\n* @jernejfrank 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1342 中迁移到 GitHub Actions。\n* @cswartzvi 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1303 中添加了新的函数修饰符 `upack_fields`。\n* @skrawcz 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1339 中替换了大部分链接和 Hamilton 相关引用。\n* 在 \u002Fui\u002Fbackend\u002Fserver 中，@dependabot[bot] 将 urllib3 从 1.26.17 升级到 2.5.0，见 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1347。\n* 在 \u002Fui\u002Fbackend\u002Fserver 中，@dependabot[bot] 将 protobuf 从 4.24.4 升级到 4.25.8，见 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1343。\n* 在 \u002Fui\u002Fbackend\u002Fserver 中，@dependabot[bot] 将 requests 从 2.31.0 升级到 2.32.4，见 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1340。\n* 在 \u002Fui\u002Fbackend\u002Fserver 中，@dependabot[bot] 将 django 从 4.2.6 升级到 4.2.22，见 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1338。\n* 在 \u002Fui\u002Fbackend\u002Fserver 中，@dependabot[bot] 将 certifi 从 2023.7.22 升级到 2024.7.4，见 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1334。\n* 在 \u002Fui\u002Fbackend\u002Fserver 中，@dependabot[bot] 将 idna 从 3.4 升级到 3.7，见 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1333。\n* 在 \u002Fui\u002Fbackend\u002Fserver 中，@dependabot[bot] 将 zipp 从 3.17.0 升级到 3.19.1，见 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1330。\n* 在 \u002Fui\u002Fbackend\u002Fserver 中，@dependabot[bot] 将 sqlparse 从 0.4.4 升级到 0.5.0，见 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1329。\n* 在 \u002Fui\u002Ffrontend 中，@dependabot[bot] 将 @babel\u002Fhelpers 从 7.23.5 升级到 7.27.1，见 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1328。\n* 在 \u002Fui\u002Ffrontend 中，@dependabot[bot] 将 cross-spawn 从 7.0.3 升级到 7.0.6，见 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1327。\n* 在 \u002Fui\u002Ffrontend 中，@dependabot[bot] 将 @babel\u002Fruntime 从 7.23.5 升级到 7.27.1，见 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1326。\n* 在 \u002Fui\u002Ffrontend 中，@dependabot[bot] 将 serialize-javascript 从 6.0.1 升级到 6.0.2，见 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1325。\n* 在 \u002Fui\u002Ffrontend 中，@dependabot[bot] 同时升级了 path-to-regexp 和 express，见 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1324。\n* 在 \u002Fui\u002Ffrontend 中，@dependabot[bot] 将 nanoid 从 3.3.7 升级到 3.3.11，见 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1323。\n* 在 \u002Fu 中，@dependabot[bot] 将 aiohttp 从 3.8.6 升级到 3.11.0b0。","2025-10-11T17:39:04",{"id":191,"version":192,"summary_zh":193,"released_at":194},136952,"v1.89.0-incubating-RC1","## 变更内容\n* @cswartzvi 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1302 中修复了本地（Windows）测试\n* @skrawcz 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1301 中为 Docker 传递 REACT_APP_HAMILTON_SUB_PATH 配置\n* @cswartzvi 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1306 中修复了 `dlt` 插件中对 `loader_file_format` 的更改\n* @pjfanning 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1315 中更新了 SECURITY.md 文件\n* @pjfanning 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1316 中删除了 CODE_OF_CONDUCT.md 文件\n* @pjfanning 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1312 中创建了 .asf.yaml 文件\n* @skrawcz 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1335 中将许可证更改为 Apache 2.0\n* @skrawcz 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1344 中增加了网站发布功能\n* @pjfanning 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1345 中尝试发布 .asf.yaml 中的更改\n* @jernejfrank 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1342 中迁移到 GitHub Actions\n* @cswartzvi 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1303 中添加了新的函数修饰符 `upack_fields`\n* @skrawcz 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1339 中替换了大部分链接和 Hamilton 相关引用\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1347 中将 \u002Fui\u002Fbackend\u002Fserver 中的 urllib3 从 1.26.17 升级到 2.5.0\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1343 中将 \u002Fui\u002Fbackend\u002Fserver 中的 protobuf 从 4.24.4 升级到 4.25.8\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1340 中将 \u002Fui\u002Fbackend\u002Fserver 中的 requests 从 2.31.0 升级到 2.32.4\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1338 中将 \u002Fui\u002Fbackend\u002Fserver 中的 django 从 4.2.6 升级到 4.2.22\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1334 中将 \u002Fui\u002Fbackend\u002Fserver 中的 certifi 从 2023.7.22 升级到 2024.7.4\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1333 中将 \u002Fui\u002Fbackend\u002Fserver 中的 idna 从 3.4 升级到 3.7\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1330 中将 \u002Fui\u002Fbackend\u002Fserver 中的 zipp 从 3.17.0 升级到 3.19.1\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1329 中将 \u002Fui\u002Fbackend\u002Fserver 中的 sqlparse 从 0.4.4 升级到 0.5.0\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1328 中将 \u002Fui\u002Ffrontend 中的 @babel\u002Fhelpers 从 7.23.5 升级到 7.27.1\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1327 中将 \u002Fui\u002Ffrontend 中的 cross-spawn 从 7.0.3 升级到 7.0.6\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1326 中将 \u002Fui\u002Ffrontend 中的 @babel\u002Fruntime 从 7.23.5 升级到 7.27.1\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1325 中将 \u002Fui\u002Ffrontend 中的 serialize-javascript 从 6.0.1 升级到 6.0.2\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1324 中将 \u002Fui\u002Ffrontend 中的 path-to-regexp 和 express 升级\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1323 中将 \u002Fui\u002Ffrontend 中的 nanoid 从 3.3.7 升级到 3.3.11\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fapache\u002Fhamilton\u002Fpull\u002F1322 中将 \u002Fu 中的 aiohttp 从 3.8.6 升级到 3.11.0b0","2025-10-04T16:09:23",{"id":196,"version":197,"summary_zh":198,"released_at":199},136953,"sf-hamilton-1.88.0","## 变更内容\n* 添加在域名子路径上运行 hamilton-ui 的功能，由 @jonas-meyer 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1284 中实现\n* 锁定 `ddtrace` 版本，直至废弃模块可被评估，由 @cswartzvi 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1288 中完成\n* 修复并行执行文档中的类型提示和链接，由 @bustosalex1 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1292 中完成\n* 修复 CI 中的 `xgboost` 错误，由 @cswartzvi 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1295 中完成\n* 将 sf-hamilton-ui 版本升级至 0.0.17，由 @elijahbenizzy 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1296 中完成\n* 添加任务提交与返回钩子，由 @cswartzvi 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1287 中实现\n* 添加上下文感知的同步\u002F异步日志适配器，由 @cswartzvi 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1294 中实现\n* 将 sf-hamilton 版本从 1.87.0 升级至 1.88.0，由 @elijahbenizzy 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1299 中完成\n\n## 新贡献者\n* @jonas-meyer 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1284 中完成了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.87.0...sf-hamilton-1.88.0","2025-03-29T18:55:13",{"id":201,"version":202,"summary_zh":203,"released_at":204},136954,"sf-hamilton-1.87.0","## 变更内容\n* 由 @MG-MW 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1270 中修复了 `resolve` 装饰器的文档\n* 由 @cswartzvi 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1269 中更新或新增了任务执行钩子\n* 由 @skrawcz 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1278 中更新了 Dask 依赖，并跳过了一项测试\n* 由 @cswartzvi 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1276 中解决了数据流可视化中的 `Annotated` 类型（PEP 593）问题\n* 由 @skrawcz 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1277 中使 Hamilton 能够在 WASM 下安装\n* 由 @elijahbenizzy 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1280 中将版本从 1.86.1 升级至 1.87.0\n\n## 新贡献者\n* @MG-MW 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1270 中完成了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.86.1...sf-hamilton-1.87.0","2025-02-12T04:45:14",{"id":206,"version":207,"summary_zh":208,"released_at":209},136955,"sf-hamilton-1.86.1","## 变更内容\n* 杂项：@eltociear 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1262 中更新了 base.py\n* 添加了 FutureAdapter，它会将执行委托给线程池以实现并行化，由 @skrawcz 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1264 中完成\n* 版本从 1.85.1 升级到 1.86.0，由 @elijahbenizzy 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1265 中完成\n* 移除多余代码，由 @skrawcz 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1266 中完成\n* 版本从 1.86.0 升级到 1.86.1，由 @elijahbenizzy 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1267 中完成\n\n## 新贡献者\n* @eltociear 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1262 中做出了首次贡献\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.85.1...sf-hamilton-1.86.1","2025-01-06T16:59:50",{"id":211,"version":212,"summary_zh":213,"released_at":214},136956,"sf-hamilton-1.85.1","## 变更内容\n* 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1257 中，@skrawcz 添加了用于运行 UI 的 Snowflake 容器示例代码。\n* 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1258 中，@skrawcz 为 Snowflake 示例添加了更多 SQL 命令。\n* 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1261 中，@elijahbenizzy 修复了 DataLoader，使其使用正确的类型提示。\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.85.0...sf-hamilton-1.85.1","2024-12-17T21:33:56",{"id":216,"version":217,"summary_zh":218,"released_at":219},136957,"sf-hamilton-1.85.0","## 变更内容\n* 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1249 中，@skrawcz 添加了用户评价\n* 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1254 中，@skrawcz 修复了 UI 中输入字典的显示问题\n* 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1253 中，@skrawcz 实现了对字典字段的类型化提取\n* 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1251 中，@skrawcz 提供了模块化子 DAG 的示例\n* 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1255 中，@skrawcz 因 scikit 库的问题将 XGBoost 测试标记为 xfail\n* 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1256 中，@elijahbenizzy 更新了版本号至 2024 年 12 月 12 日\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.84.0...sf-hamilton-1.85.0","2024-12-12T20:15:37",{"id":221,"version":222,"summary_zh":223,"released_at":224},136958,"sf-hamilton-1.84.0","## 变更内容\n* @jernejfrank 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1234 中实现了使用 Polars 的列操作功能，并支持异步的 `with_columns` 操作\n* @skrawcz 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1245 中更新了首个数据流文档\n* @rwhitten577 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1247 中添加了 AsyncDDOGTracer\n* @elijahbenizzy 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1248 中将版本从 1.83.3 升级至 1.84.0\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.83.3...sf-hamilton-1.84.0","2024-12-04T19:29:35",{"id":226,"version":227,"summary_zh":228,"released_at":229},136959,"sf-hamilton-1.83.3","## 变更内容\n* 基础用例的指纹识别逻辑现会处理空 `__dict__`，由 @zilto 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1243 中实现。\n* 修复了 #1240 问题，由 @skrawcz 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1241 中完成。\n* 版本升级至 1.83.3，由 @skrawcz 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1244 中完成。\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.83.2...sf-hamilton-1.83.3","2024-11-26T01:03:29",{"id":231,"version":232,"summary_zh":233,"released_at":234},136960,"sf-hamilton-1.83.2","## 变更内容\n* 修复 CI 问题：其他包会破坏其他包，由 @skrawcz 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1233 中完成\n* 添加异步管道家族的端到端测试，由 @jernejfrank 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1231 中完成\n* 添加 SDK 配置，由 @skrawcz 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1232 中完成\n* 将 SDK 版本升级至 0.8.0，由 @skrawcz 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1235 中完成\n* 减少发送的遥测数据，由 @skrawcz 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1237 中完成\n* 修改文档字符串中的 `pipe_input` 示例，由 @sT0v 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1239 中完成\n* 将版本号升级至 1.83.2，由 @skrawcz 在 https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1238 中完成\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.83.1...sf-hamilton-1.83.2","2024-11-22T21:15:34",{"id":236,"version":237,"summary_zh":238,"released_at":239},136961,"sf-hamilton-1.83.1","## What's Changed\r\n* examples: added pre-commit check and format all notebooks by @zilto in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1220\r\n* fix example notebook by @zilto in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1222\r\n* Bugfix pipe_output after config.when resolution by @jernejfrank in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1221\r\n* added --display-cache to jupyter magic by @zilto in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1225\r\n* helpful exception message for `.visualize_execution()` by @zilto in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1226\r\n* fix: escape HTML characters in config visualization by @zilto in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1227\r\n* Adds docs on allowed_hosts for UI by @skrawcz in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1229\r\n* Add async support for pipe_family by @jernejfrank in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1223\r\n* Bumps hamilton version from 1.83.0 to 1.83.1 by @elijahbenizzy in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1230\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.83.0...sf-hamilton-1.83.1","2024-11-14T22:45:56",{"id":241,"version":242,"summary_zh":243,"released_at":244},136962,"sf-hamilton-1.83.0","## What's Changed\r\n* docs: added in-memory caching to reference and concepts sections by @zilto in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1211\r\n* Automate Article Collection and README Updates from Blog Source by @sikehish in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1208\r\n* Add allow_module_overrides to AsyncDriver by @rwhitten577 in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1217\r\n* with_columns for Pandas by @jernejfrank in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1209\r\n* Bumps sf-hamilton version from 1.82.0 to 1.83.0 by @elijahbenizzy in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1219\r\n\r\n## New Contributors\r\n* @rwhitten577 made their first contribution in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1217\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.82.0...sf-hamilton-1.83.0","2024-11-06T17:58:09",{"id":246,"version":247,"summary_zh":248,"released_at":249},136963,"sf-hamilton-1.82.0","## What's Changed\r\n* feat: in-memory caching by @zilto in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1207\r\n* Bumps hamilton version from 1.81.2 to 1.82.0 by @elijahbenizzy in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1210\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.81.2...sf-hamilton-1.82.0","2024-10-30T16:27:06",{"id":251,"version":252,"summary_zh":253,"released_at":254},136964,"sf-hamilton-1.81.2","## What's Changed\r\n* fix: caching `SQLiteMetadataStore.get_run_ids()` by @zilto in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1205\r\n* Bumps hamilton version from 1.81.1 to 1.81.2 by @elijahbenizzy in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1206\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.81.1...sf-hamilton-1.81.2","2024-10-24T20:28:58",{"id":256,"version":257,"summary_zh":258,"released_at":259},136965,"sf-hamilton-1.81.1","## What's Changed\r\n* Jupyter notebook for reusing_functions example (reusing_functions #1179) by @eoagyen in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1189\r\n* Update materialization.rst by @thedimlebowski in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1191\r\n* FIX pipe_output \u002F mutate naming convention and docstrings by @jernejfrank in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1198\r\n* Provide dockerx setup for docker builds by @sikehish in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1194\r\n* Fix `keep_dot` propagation in `Driver` display functions by @ChronoJon in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1202\r\n* Bumps hamilton version from 1.81.0 to 1.81.1 by @elijahbenizzy in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1203\r\n\r\n## New Contributors\r\n* @thedimlebowski made their first contribution in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1191\r\n* @sikehish made their first contribution in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1194\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.81.0...sf-hamilton-1.81.1","2024-10-24T03:52:48",{"id":261,"version":262,"summary_zh":263,"released_at":264},136966,"sf-hamilton-1.81.0","## What's Changed\r\n* @ignore by @jernejfrank in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1172\r\n* pipe_input target by @jernejfrank in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1173\r\n* Adds instructions for creating a PDF of the documentation by @skrawcz in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1178\r\n* Jupyter Notebook for Data Loaders Example (Data loaders #1122) by @eoagyen in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1174\r\n* fix: added polars to extension list by @zilto in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1188\r\n* Bumps version from 1.80.0 to 1.81.0 by @elijahbenizzy in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1190\r\n\r\n## New Contributors\r\n* @eoagyen made their first contribution in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1174\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.80.0...sf-hamilton-1.81.0","2024-10-16T17:46:30",{"id":266,"version":267,"summary_zh":268,"released_at":269},136967,"sf-hamilton-1.80.0","## What's Changed\r\n* Adds better formatted slack notifications by @elijahbenizzy in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1169\r\n* Mutate Decorator by @jernejfrank in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1160\r\n* fixed syntax error in code block for `parameterized_subdag` by @sT0v in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1171\r\n* Version bump 1.80.0 by @elijahbenizzy in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1175\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.79.0...sf-hamilton-1.80.0","2024-10-10T21:52:03",{"id":271,"version":272,"summary_zh":273,"released_at":274},136968,"sf-hamilton-1.79.0","## What's Changed\r\n* Sdk extra guard by @skrawcz in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1157\r\n* Update using by @skrawcz in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1164\r\n* feat: First-class caching by @zilto in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1104\r\n* Bumps version from 1.78.0 to 1.79.0 by @elijahbenizzy in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1166\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.78.0...sf-hamilton-1.79.0","2024-10-03T21:17:09",{"id":276,"version":277,"summary_zh":278,"released_at":279},136969,"sf-hamilton-1.78.0","## What's Changed\r\n* Fix date summary polars by @skrawcz in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1146\r\n* docs: new — reloading of imports in Hamilton Jupyter Magic cells by @creative-resort in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1144\r\n* post_pipe implementation by @jernejfrank in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1145\r\n* Post-hoc feedback from #1145 by @elijahbenizzy in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1151\r\n* added check for default_factory by @zilto in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1149\r\n* Bumps hamilton version from 1.77.0 to 1.78.0 by @elijahbenizzy in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1159\r\n\r\n## New Contributors\r\n* @creative-resort made their first contribution in https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fpull\u002F1144\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.77.0...sf-hamilton-1.78.0","2024-09-26T22:51:19",{"id":281,"version":282,"summary_zh":283,"released_at":284},136970,"sf-hamilton-1.77.1","Cut off of a specific branch, not `main` -- this is a fix prior to our next release.\r\n\r\nSee: #1152 for full context.\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FDAGWorks-Inc\u002Fhamilton\u002Fcompare\u002Fsf-hamilton-1.77.0...sf-hamilton-1.77.1","2024-09-23T19:01:26"]