首页/新闻资讯/正文详情

Starlette 开发脚本全指南:从安装、测试到发布的一体化工作流

发布时间:2026/9/23 3:50:35 来源:云帆数科 栏目:资讯中心
Starlette 开发脚本全指南:从安装、测试到发布的一体化工作流
Starlette 开发脚本全指南从安装、测试到发布的一体化工作流【免费下载链接】starletteThe little ASGI framework that shines. 项目地址: https://gitcode.com/gh_mirrors/st/starlette导读本文聚焦 Starlette 仓库中 scripts/README.md 所定义的开发脚本体系逐行解读install、test、lint、check、coverage、build、docs、sync-version等脚本背后的真实命令与设计意图。该体系遵循 GitHub Scripts to Rule Them All 约定用一套统一命名的脚本封装了 Starlette 从依赖安装、代码质量检查、测试覆盖到打包发布的完整工程化流程。读完本文你将能够在自己参与 Starlette 开发时熟练使用这套脚本也能将其模式复用到自己的 Python 项目中。脚本总览一套命名约定统一工程化流程scripts/README.md 的核心思想非常简洁用统一命名、语义清晰的脚本覆盖开发生命周期的每个环节。原文档列出的脚本及职责如下脚本职责scripts/install在虚拟环境中安装依赖scripts/test运行测试套件scripts/lint运行自动化代码检查/格式化工具scripts/check运行代码检查确认其通过scripts/coverage检查代码覆盖率是否完整scripts/build构建源码包和 wheel 包这套设计明确标注为借鉴 GitHub 的 Scripts to Rule Them All 实践——即把每个项目的常规开发命令收敛到固定脚本名下让新贡献者无需记忆每个工具的具体命令就能以一致的方式完成环境搭建、测试和发布。除了原文档点名的 6 个脚本仓库scripts/目录下还有两个承担辅助职责的脚本scripts/sync-version校验版本号一致性被check依赖scripts/docs启动本地文档开发服务器。下文将逐一深入每个脚本的实际实现。环境准备scripts/install 与 uv 依赖管理scripts/install的实现极为精简全部逻辑只有一行核心命令#!/bin/sh -e set -x uv sync --frozen三个细节值得注意#!/bin/sh -e-e选项保证任何一条命令失败时脚本立即退出避免在错误状态下继续执行这是所有脚本通用的稳健性设计。set -x打开命令回显让终端明确展示正在执行的真实命令便于排查问题。uv sync --frozen使用 uv 锁定文件安装不更新锁文件确保团队成员拿到完全一致的依赖版本。仓库在 pyproject.toml 中对 uv 做了配置[tool.uv] default-groups [dev, docs] required-version 0.8.6 exclude-newer 7 days即默认同步dev和docs两个依赖组且要求 uv 版本不低于 0.8.6。其中dev组见 pyproject.toml集中了全部开发工具pytest、coverage、ruff、mypy、twine、trio、httpx、pytest-codspeed等并注明addstarlette[full]souv syncconsiders the extras保证同步时会解析 full 可选依赖。代码质量双通道lint 与 checkStarlette 将代码质量工具拆成两个脚本对应主动修复与被动校验两种场景使用方式完全一致./scripts/lint或./scripts/check。scripts/lint自动修复#!/bin/sh -e export SOURCE_FILESstarlette tests set -x uv run ruff format $SOURCE_FILES uv run ruff check --fix $SOURCE_FILESlint面向开发者日常使用会直接修改代码先用ruff format统一格式化starlette与tests两个目录再以--fix自动修复可自动解决的 lint 问题。注意SOURCE_FILES仅包含starlette tests不包含benchmarks。scripts/checkCI 校验#!/bin/sh -e export SOURCE_FILESstarlette tests benchmarks set -x ./scripts/sync-version uv run ruff format --check --diff $SOURCE_FILES uv run mypy $SOURCE_FILES uv run ruff check $SOURCE_FILEScheck是只读的校验通道包含四个步骤./scripts/sync-version先校验版本一致性见下文ruff format --check --diff只检查格式是否符合规范不做修改并输出差异预览mypy $SOURCE_FILES对源码执行静态类型检查且SOURCE_FILES在此扩展为starlette tests benchmarks三部分ruff check $SOURCE_FILES运行 lint 规则检查不自动修复。ruff 的规则配置见 pyproject.toml行宽 120启用Epycodestyle 错误、FPyflakes、Iisort 导入排序、FAfuture annotations、UPpyupgrade、RUF100等规则集仅忽略UP031。mypy 则启用strict true见 pyproject.toml并对starlette.testclient.*单独放行implicit_optional。scripts/sync-version版本一致性守卫#!/bin/sh -e SEMVER_REGEX([0-9])\.([0-9])\.([0-9])(-([0-9A-Za-z-](\.[0-9A-Za-z-])*))?(\[0-9A-Za-z-])? CHANGELOG_VERSION$(grep -o -E $SEMVER_REGEX docs/release-notes.md | head -1) VERSION$(grep -o -E $SEMVER_REGEX starlette/__init__.py | head -1) if [ $CHANGELOG_VERSION ! $VERSION ]; then echo Version in changelog does not match version in starlette/__init__.py! exit 1 fi它用一条标准 semver 正则分别从 docs/release-notes.md 的更新日志和 starlette/init.py 的版本声明中提取版本号两者不一致即报错退出。这保证了发布版本、变更记录、包版本三者永远同步——这正是 pyproject.toml 中[tool.hatch.version]以starlette/__init__.py为单一版本来源的配套校验。测试与覆盖率scripts/test 与 scripts/coveragescripts/test适配本地与 CI 两套环境#!/bin/sh set -ex if [ -z $GITHUB_ACTIONS ]; then scripts/check fi uv run coverage run -m pytest $ if [ -z $GITHUB_ACTIONS ]; then scripts/coverage fitest脚本实现了智能环境适配本地运行时未设置GITHUB_ACTIONS环境变量会先执行scripts/check做完整质量校验测试结束后再执行scripts/coverage检查覆盖率即本地一次跑完所有关卡在 GitHub Actions CI 中GITHUB_ACTIONS非空则跳过这两步只运行测试主体因为 CI 工作流通常已单独配置了 lint 与覆盖率步骤避免重复。测试主体是uv run coverage run -m pytest $通过 coverage 包裹 pytest 运行并且$透传所有命令行参数——这意味着你可以追加文件路径或 pytest 标记来跑指定测试例如./scripts/test tests/test_routing.pypytest 的严格配置见 pyproject.toml-rXs --strict-config --strict-markers、xfail_strict true并把未过滤的警告提升为异常同时放行starlette.middleware.wsgi等已知弃用警告。scripts/coverage100% 覆盖红线#!/bin/sh -e set -x uv run coverage report --show-missing --skip-covered --fail-under100覆盖率脚本用三个参数把门槛拉满--show-missing列出所有未覆盖的行号方便针对性补测--skip-covered隐藏已完全覆盖的文件让报告只聚焦问题--fail-under100覆盖率低于 100% 即退出码非 0。这是 Starlette 长期坚持的工程纪律——任何新代码必须配套测试保证每行都处于测试保护之下。仓库中的 tests/ 目录覆盖了 routing、requests、responses、websockets、middleware 等全部核心模块正是这套红线要求的产物。发布链路scripts/build 与版本产物#!/bin/sh -e set -x uv build uv run twine check dist/* uv run zensical build --cleanbuild脚本三步完成发布前准备uv build构建出sdist源码包与wheel二进制包到dist/目录uv run twine check dist/*用 twine 校验构建产物的元数据、README 渲染与包结构是否符合 PyPI 上传规范uv run zensical build --clean通过 zensical文档构建工具重建项目文档。至此dist/中的产物即可通过twine upload发布而版本号来源已由scripts/sync-version在check阶段保证一致。本地文档预览scripts/docs#!/bin/sh -e set -x uv run zensical servedocs脚本用zensical serve启动本地文档开发服务器供撰写文档时实时预览。zensical属于 pyproject.toml 中docs依赖组含mkdocstrings、mkdocstrings-python、zensical等文档源文件位于 docs/配置见 mkdocs.yml。实战速查给贡献者的日常命令清单场景命令说明首次克隆后搭建环境./scripts/install按 lock 文件精确安装 dev docs 依赖写代码后自动格式化./scripts/lintruff 自动格式化并修复提交前全面自检./scripts/check版本校验 格式 类型 lint跑全部测试含覆盖率门槛./scripts/test本地会串联 check 与 coverage只跑指定测试./scripts/test tests/test_routing.py$透传 pytest 参数查看覆盖率明细./scripts/coverage低于 100% 即失败预览文档./scripts/docs启动本地文档服务器构建发布产物./scripts/buildsdist wheel twine 校验 文档构建模式启示如何借鉴这套脚本体系Starlette 的 scripts 体系对任何 Python 项目都有直接参考价值其可复用的设计要点包括固定入口、一致命名install/test/lint/check/build是社区通用约定新贡献者零学习成本set -ex的错误即停任何一步失败立即中断杜绝部分成功的假象修复与校验分离lint自动修与check只检查服务不同场景CI 用check保证可复现环境自适应通过GITHUB_ACTIONS环境变量区分本地与 CI避免重复执行冗余步骤发布前守卫sync-version在源头锁死版本一致性把发布错误拦截在构建之前。对想要借鉴的读者可直接对照本仓库 scripts/ 目录逐行阅读理解每一处set -x、uv run与参数透传的设计取舍再按自身工具链如 poetry、pdm、pipenv替换uv即可落地到自己的项目。【免费下载链接】starletteThe little ASGI framework that shines. 项目地址: https://gitcode.com/gh_mirrors/st/starlette创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

网络安全学习论坛推荐:吾爱破解、看雪、Freebuf高效使用指南
网络安全学习论坛推荐:吾爱破解、看雪、Freebuf高效使用指南

1. 网络安全学习路上,论坛为什么依然是绕不开的一环刚入行那会儿,我一度觉得论坛这种形态早就该被淘汰了。短视频、直播、付费课程铺天盖地,谁还去论坛翻帖子?但真正在安全圈摸爬滚打几年之后,我的看法完全变了。网络安… · 2026/9/23 3:50:29

Argo Workflows OSSArtifact 详解:基于 Alibaba Cloud OSS 的制品(Artifact)定义与配置指南
Argo Workflows OSSArtifact 详解:基于 Alibaba Cloud OSS 的制品(Artifact)定义与配置指南

云原生容器编排工作流自动化任务调度后端 【免费下载链接】argo-workflows Workflow Engine for Kubernetes 项目地址: https://gitcode.com/gh_mirrors/ar/argo-workflows 点击查看 免费下载 OSSArtifact 是 Argo Workflows 中用于描述 Alibaba Cloud OSS&#xf… · 2026/9/23 3:50:29

Pillow 7.2.0 版本解读:TIFF/EXIF API 变更与三项弃用迁移指南
Pillow 7.2.0 版本解读:TIFF/EXIF API 变更与三项弃用迁移指南

图像处理计算机视觉 【免费下载链接】Pillow Python Imaging Library (fork) 项目地址: https://gitcode.com/gh_mirrors/pi/Pillow 点击查看 免费下载 本篇技术指南基于当前仓库 docs/releasenotes/7.2.0.rst 展开,聚焦 Pillow 7.2.0 发布说明中列出的… · 2026/9/23 3:50:29

手写JDBC的JavaWeb课设:Servlet+JSP+MySQL宿舍管理系统实战解析
手写JDBC的JavaWeb课设:Servlet+JSP+MySQL宿舍管理系统实战解析

简介:这是一份完整的学生宿舍管理系统开发项目,基于 Java Web 经典技术组合 Servlet、JSP 和 MySQL 实现,适合正在学习 Java 服务端开发的学生,也适用于课程设计、毕业设计或新手练习。系统覆盖宿舍管理日常业务,包括管… · 2026/9/23 4:32:51

VGAM实现Tobit模型:处理删失数据与零堆积的R实战指南
VGAM实现Tobit模型:处理删失数据与零堆积的R实战指南

数据分析做到一定阶段,一定会撞上一类特别烦人的数据形态:因变量在某个边界值上大量堆积。最典型的就是“0”——比如研究家庭消费,很多家庭当期就是没花钱;研究产品销量,非促销期大多数门店就是零销量;研究… · 2026/9/23 4:32:51

从0到1搭建AI Agent平台:架构设计与工程实践
从0到1搭建AI Agent平台:架构设计与工程实践

最近一年,"AI Agent"这个词几乎被聊烂了。我身边不少开发者分成了两拨:一拨觉得Agent无非就是"大模型加一个循环调用",另一拨正在认真琢磨怎么把Agent变成公司里真正能上岗、能交付成果的"数字同事"。我属于后… · 2026/9/23 4:32:51

前端Leader转型AI Agent开发:LangChain+FastAPI实战路线
前端Leader转型AI Agent开发:LangChain+FastAPI实战路线

1. 从 Vue3 到 LangChain:一个前端 Leader 的转型路线图DAY57,这个数字本身就说明了很多问题。一个在职前端 Leader,每天挤出时间学 AI Agent,能坚持到第 57 天,说明这不是一时兴起,而是有明确目标的系统性… · 2026/9/23 4:32:45

FreeRTOS内核12大机制深度解析:从STM32实操到调度抖动根治
FreeRTOS内核12大机制深度解析:从STM32实操到调度抖动根治

1. 这不是背概念,是拆解RTOS的“操作系统级肌肉记忆”你翻过《FreeRTOS手册》第37页,抄过任务创建函数xTaskCreate()的参数表,用HAL库在STM32上跑通了两个LED闪烁任务——但当老板突然问:“为什么这个高优先级任务响应延迟超了200… · 2026/9/23 4:32:45

DeepAgent实战:SSE流式输出与Agent长期记忆体系设计拆解
DeepAgent实战:SSE流式输出与Agent长期记忆体系设计拆解

DeepAgent 的 SSE 流式输出上线跑了一阵子,整体链路算是通了,但长期记忆这块我评估下来仍然是个半成品。这篇文章把这次实战的完整过程拆开讲清楚:SSE 怎么接、Abort 怎么处理、记忆体系怎么设计、以及为什么说长期记忆还差得远。内容偏工程落… · 2026/9/23 4:32:45

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码