python项目中pyproject.toml是做什么用的

部署运行你感兴趣的模型镜像

pyproject.toml,相当于现代 Python 包管理的“说明书”。它定义了项目的基本信息、依赖库、打包规则、测试配置等。可以把它理解成 这个 A2A SDK 项目的元数据 + 环境说明 + 开发配置。我帮你逐段拆解解读:

  1. [project] —— 项目信息
[project]
name = "a2a-sdk"
dynamic = ["version"]
description = "A2A Python SDK"
readme = "README.md"
license = "Apache-2.0"
authors = [{ name = "Google LLC", email = "googleapis-packages@google.com" }]
requires-python = ">=3.10"
keywords = ["A2A", "A2A SDK", "A2A Protocol", "Agent2Agent", "Agent 2 Agent"]
•	name:项目名是 a2a-sdk,也就是一个“Agent-to-Agent”协议的 Python SDK。
•	dynamic = [“version”]:版本号不是写死的,而是通过 git 标签等方式动态生成。
•	description / readme / license:描述信息、说明文档、开源协议。
•	authors:作者(这里是 Google LLC)。
•	requires-python:最低 Python 版本要求 >=3.10。
•	keywords:关键词,用于 PyPI 搜索时能更容易找到。

  1. dependencies —— 核心依赖
dependencies = [
  "httpx>=0.28.1",
  "httpx-sse>=0.4.0",
  "pydantic>=2.11.3",
  "protobuf>=5.29.5",
  "google-api-core>=1.26.0",
]

表示 SDK 依赖的库:
• httpx / httpx-sse:异步 HTTP & Server-Sent Events,说明 SDK 会涉及流式通讯。
• pydantic:数据模型与校验。
• protobuf:协议数据格式(Google 的序列化方案)。
• google-api-core:谷歌 API 通用组件。

说明:SDK 本身是基于 网络通信 + 协议数据建模 来实现的。

  1. classifiers —— 分类标签
classifiers = [
  "Programming Language :: Python :: 3.10",
  "Programming Language :: Python :: 3.13",
  "License :: OSI Approved :: Apache Software License",
]

这是 PyPI 用的标准分类,标注了适用 Python 版本、开源许可证等。

  1. [project.optional-dependencies] —— 可选依赖
[project.optional-dependencies]
http-server = ["fastapi>=0.115.2", "sse-starlette", "starlette"]
postgresql = ["sqlalchemy[asyncio,postgresql-asyncpg]>=2.0.0"]
...

这些是可选功能模块:
• http-server:如果要启动 HTTP 服务,可以额外安装 FastAPI + SSE 支持。
• postgresql/mysql/sqlite/sql:不同数据库的异步驱动支持。
• encryption:加密功能(cryptography)。
• grpc:支持 gRPC 协议。
• telemetry:接入 OpenTelemetry 做监控和日志。

👉 用法:pip install a2a-sdk[postgresql] 就会安装带 PostgreSQL 的扩展。

  1. [project.urls] —— 项目链接
[project.urls]
homepage = "https://a2a-protocol.org/"
repository = "https://github.com/a2aproject/a2a-python"

官方主页、仓库地址、文档链接。

  1. [tool.hatch.*] —— 构建配置
[tool.hatch.build.targets.wheel]
packages = ["src/a2a"]
•	使用 hatchling 作为构建工具,指定打包目录是 src/a2a。
•	版本管理用 uv-dynamic-versioning,根据 git 生成 PEP440 风格版本号。
•	sdist 打包时排除 tests/。

  1. [tool.pytest.*] —— 测试配置
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = "test_*.py"

定义了单元测试规则:
• 测试文件在 tests/ 目录。
• 测试函数必须以 test_ 开头。
• 使用 pytest-asyncio 严格模式,保证异步测试不混乱。

  1. [dependency-groups] —— 开发依赖
[dependency-groups]
dev = [
  "mypy", "pytest", "pytest-asyncio", "ruff", "pre-commit", ...
]

这是开发环境需要的工具:
• mypy / pyright:类型检查。
• pytest / pytest-asyncio:测试框架。
• ruff / autoflake / pyupgrade:代码规范、自动格式化。
• datamodel-code-generator:根据 JSON Schema 生成 pydantic 模型。

说明:项目有比较严格的 类型安全 + 自动化测试 + 代码质量 要求。

  1. [tool.uv.index] —— PyPI 测试源
[[tool.uv.index]]
name = "testpypi"
url = "https://test.pypi.org/simple/"

这让开发者可以把包先发布到 test PyPI 做测试,再发到正式 PyPI。

  1. [tool.mypy] & [tool.pyright] —— 类型检查
    • pydantic.mypy 插件:增强 Pydantic 的类型推导。
    • pyright:指定哪些文件夹检查,哪些忽略。

总结:怎么解读?
1. 这是一个 pyproject.toml 文件,作用是定义 Python 项目的依赖、构建、测试、发布规则。
2. 说明这个项目是 A2A 协议的 Python SDK,用于 Agent-to-Agent 通信,Google 参与开发。
3. 核心依赖是 httpx、protobuf、pydantic,说明它基于网络通信和数据建模。
4. 可选功能模块支持数据库、加密、gRPC、监控,说明它能扩展为一个完整的分布式 Agent 平台组件。
5. 开发环境配置很完整(mypy/pyright/ruff/pytest),体现了工程化和可维护性。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值