新闻详情

新闻详情

首页 / 资讯中心 / 详情

Home Assistant 开发环境如何用 script/lint 与 script/check_format 检查并提交代码?

发布时间:2026/9/13 16:27:32来源:尧图网络
Home Assistant 开发环境如何用 script/lint 与 script/check_format 检查并提交代码?
Home Assistant 开发环境如何用 script/lint 与 script/check_format 检查并提交代码【免费下载链接】core:house_with_garden: Open source home automation that puts local control and privacy first.项目地址: https://gitcode.com/GitHub_Trending/co/core你修改了 Home Assistant core 仓库里的 Python 代码想确认改动满足项目的格式与 lint 标准后再提交、发 PR。这个仓库在script/目录下提供了固定的开发检查入口script/check_format 检查代码格式script/lint 对相对上游dev分支改动的文件跑 lint配合 AGENTS.md 与 CONTRIBUTING.md 中的提交规范即可完成“本地检查 → 提交 → 发起 PR”的完整流程。本文只覆盖这条路径不涉及功能开发本身。准备用 script/setup 搭建开发环境仓库要求 Python 3.14根目录 .python-version 固定为3.14.5并使用uv管理虚拟环境。AGENTS.md 明确要求进入新的环境或 worktree 时先运行script/setup这是提交代码前的必要步骤。script/setupscript/setup 脚本按顺序做以下几件事中途出错即停止若.vscode/settings.json不存在从.vscode/settings.default.jsonc复制一份创建config/目录若当前没有激活的虚拟环境VIRTUAL_ENV为空优先用uv venv .venv创建否则回退到python3 -m venv .venv然后激活.venv若系统没有uv用python3 -m pip install uv安装执行 script/bootstrap安装开发依赖uv pip install -e . -r requirements_all.txt -r requirements_test.txt colorlog并把全部英文翻译编译到翻译目录执行prek install安装 pre-commit 钩子prek即 pre-commit 的入口运行hass --script ensure_config -c config生成配置并在config/configuration.yaml中缺少 logger 配置时追加一段logger配置块。已知问题如果uv报告找不到所需的 Python 版本说明你的 uv 版本过旧。AGENTS.md 给出的处理方式是先升级 uv 再重跑 setupcurl -LsSf https://astral.sh/uv/install.sh | sh script/setup检查代码格式script/check_format格式检查入口是 script/check_format它固定检查仓库内的四个位置script/check_format脚本内部执行的是ruff format --check --quiet homeassistant tests script *.py注意两点--check表示只检查不修改所以它不会改动你的文件--quiet表示格式全部通过时基本无输出有不符合格式的文件时才会列出文件名。因此判断方式很简单无输出即通过列出文件即需要重新格式化。需要修复格式时不必手工逐文件处理仓库的 .pre-commit-config.yaml 注册了ruff-format钩子以及带--fix参数的ruff-check钩子提交时会自动修正格式问题。也可以等提交阶段由钩子统一处理但建议提交前再跑一次script/check_format确认干净。对改动文件运行 lintscript/lintscript/lint 只检查“你这次改动的 Python 文件”而不是整个仓库。它先执行git diff $(git merge-base upstream/dev HEAD)取出改动文件列表因此有两个前置条件本地必须配置名为upstream的远端且分支基于upstream/dev改动必须已经git add并git commit——未提交的改动不在 diff 结果里脚本会直接打印No python file changed.退出。script/lint脚本按两步输出结果先打印FILES CHANGED区块列出参与检查的.py文件再打印LINT with ruff区块对这些文件执行prek run ruff-check --files ...最后打印LINT with pylint区块对其中非测试文件执行pylint。如果改动只有tests/下的文件脚本打印Only test files changed. Skipping并退出——这与 script/lint_and_test.py 中的注释一致tests/* does not have to pass lint。任一步报错都会出现在对应区块下按文件与行号修改后重跑即可。提交前的完整钩子检查可选如果你希望比script/lint覆盖更多检查项ruff 修复与格式化、codespell 拼写检查、yamllint、prettier、mypy、pylint、gen_requirements_all、hassfest 等AGENTS.md 建议在一次代码会话结束后运行uv run --no-sync prek run --all-filesVS Code 用户也可以使用 .vscode/tasks.json 里预置的任务其中Prek任务执行的正是prek run --show-diff-on-failureRuff任务执行prek run ruff-check --all-files失败时会显示 diff 便于定位。快速自查 PR 标准可选script/lint_and_test.py 用于“快速检查分支是否达到 PR 标准”它明确说明自己不是完整 CI 的替代只是开发期间的快速检查。它同样基于upstream/dev的 merge-base 找出改动文件要求改动已提交否则提示No changed files found. Please ensure you have added your changes with git add git commit然后依次执行对改动的.py文件跑 pylint 与 ruff有错误时输出Please fix your lint issues before continuing并停止若改动了homeassistant/components/下的文件额外校验gen_requirements_all是否通过不通过时提示Please run script/gen_requirements.py按文件名映射规则找出对应的tests/测试文件并运行 pytest。python3 script/lint_and_test.py判断标准看结尾输出全部通过时打印Yay! This will most likely pass CI文档原文如此表示“很可能”通过 CI不是保证测试失败则打印Tests not passing。带--skiplint参数可跳过 lint 步骤输出中会标注LINT DISABLED仅适合确认 lint 已通过后快速复跑测试。提交与发起 PR检查全部通过后按仓库规范提交并发起 PR分支限制pre-commit 配置中的no-commit-to-branch钩子禁止直接向dev、master、rc分支提交改动必须走 PR提交历史AGENTS.md 要求不要在 PR 分支已经推送的提交上做amend、squash 或 rebase因为评审者需要按提交历史跟踪每次审查后的变化PR 流程CONTRIBUTING.md 说明 PR 要针对dev分支发起并确保测试通过AGENTS.md 要求使用仓库的 PR 模板不得删除模板中任何内容未勾选的复选框也要保留原样。限制说明script/lint与script/lint_and_test.py都依赖upstream/dev作为对比基线若你的分支不是从upstream/dev切出取到的改动文件列表会不符合预期script/lint_and_test.py只是快速自检AGENTS.md 中提到的钩子检查如prek run --all-files与完整 CI 的检查范围不同本地全绿不等于 CI 必然通过格式检查script/check_format与 ruff-format 钩子都只作用于homeassistant、tests、script、*.py等 Python 文件非 Python 文件的格式由 yamllint、prettier 等钩子在 pre-commit 阶段处理。【免费下载链接】core:house_with_garden: Open source home automation that puts local control and privacy first.项目地址: https://gitcode.com/GitHub_Trending/co/core创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

kohya_ss LoRA 训练实战指南:4 步完成你的第一个角色 LoRA 2026/9/13 17:00:36

kohya_ss LoRA 训练实战指南:4 步完成你的第一个角色 LoRA

kohya_ss LoRA 训练实战指南:4 步完成你的第一个角色 LoRA 【免费下载链接】kohya_ss 项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss kohya_ss 是一个构建在 Kohya 的 sd-scripts 训练脚本之上的 Gradio(基于网页的 GUI 框架&…

阅读更多 →
STM32电声乐器调音器:信号采集与AMDF频率检测 2026/9/13 17:00:36

STM32电声乐器调音器:信号采集与AMDF频率检测

简介:基于STM32的电声乐器调音器毕业设计项目,面向嵌入式、计算机及相关专业需要完成毕业设计、课程设计或期末大作业的学生,也适合希望借助完整项目上手嵌入式开发的学习者。该项目为经导师指导并通过的高分设计,评审99分&#x…

阅读更多 →
嵌入式系统时间安排术:中断、任务与抖动的硬实时协同 2026/9/13 17:00:36

嵌入式系统时间安排术:中断、任务与抖动的硬实时协同

1. 这不是“时间管理”,是嵌入式系统里最硬的生存法则你写过一个LED闪烁程序,用delay_ms(500)控制亮灭间隔;你也试过串口收发数据,发现偶尔丢一两个字节;你甚至调试过电机PID控制,明明参数调得挺稳&#xf…

阅读更多 →
继电器坏了不用整板换:从拆焊到验证的板级维修全攻略 2026/9/13 17:00:36

继电器坏了不用整板换:从拆焊到验证的板级维修全攻略

“继电器一坏就要整板更换?”,这句话在工业现场混过几年的人听了都得心头一紧。说它是“反人类”设计真不夸张——产线停在那里,每一分钟都是钱,结果就因为一个不起眼的继电器触点烧了、线圈断了,整块几斤重的控制板就…

阅读更多 →
控制信号从传感器到执行器的硬件全流程解析 2026/9/13 17:00:36

控制信号从传感器到执行器的硬件全流程解析

1. 一条控制信号的“硬件人生”:从传感器触碰到执行器动作的完整旅程你有没有想过,当汽车胎压监测系统报警、工厂流水线上的机械臂精准抓取工件、或者智能家居窗帘自动闭合时,背后那个微小却关键的“控制信号”,究竟经历了怎样一场…

阅读更多 →
LEANN 零基础上手:6GB 存储装下 6000 万文档的本地 RAG 语义检索 2026/9/13 16:57:36

LEANN 零基础上手:6GB 存储装下 6000 万文档的本地 RAG 语义检索

LEANN 零基础上手:6GB 存储装下 6000 万文档的本地 RAG 语义检索 【免费下载链接】LEANN [MLsys2026 Best Paper]: https://arxiv.org/abs/2506.08276. RAG on Everything with LEANN. Enjoy 97% storage savings while running a fast, accurate, and 100% private…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞