Files
PolyGateway/pyproject.toml
T
iomgaa 2af445cfc2 chore: cut 1.2.1 with the docs the sdist will freeze
Dating the changelog and bumping both version strings is the cheap half.
The README is the half that gets frozen into the sdist, so it is fixed
first: the install pin now names 1.2.1 (1.2.0 has no tenant dimension),
and the per-source FIELD table finally lists MISSING_DONE and EXTRA_BODY
- the latter was already referenced elsewhere in the same file. The same
table was missing QUOTA_FULL, the embedding-only keys, the memory cache
backend and three optional PGW_* keys; all are reconciled against
_SOURCE_FIELDS and _load_pgw rather than from memory.
2026-08-18 12:54:54 -04:00

87 lines
2.9 KiB
TOML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[build-system]
requires = ["setuptools>=68.0"]
build-backend = "setuptools.build_meta"
[project]
name = "polygateway"
version = "1.2.1"
description = "PolyGateway:实验室统一的大语言模型(LLM/VLM/OCR)调度与中转库——多源、限流、重试、熔断、缓存、遥测"
# registry 包页面的正文只认这一项:缺了页面就是一片空白(1.1.2 的教训,twine 会警告
# long_description missing 但不阻塞上传)。README 在打包时被固化进产物,发布后再改无效。
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"httpx>=0.27",
"pydantic>=2.8",
"pydantic-settings>=2.4",
# 显式声明(2026-07-20 人类确认): config.py 的多源动态键族直接使用 dotenv_values,
# 不能只依赖 pydantic-settings 的传递安装
"python-dotenv>=1.0",
"loguru>=0.7",
]
[project.optional-dependencies]
redis = ["redis>=5.0"]
postgres = ["asyncpg>=0.29"]
structured = ["json-repair>=0.28"]
sdk = ["openai>=1.30"]
dev = [
"pytest>=8.0",
"pytest-cov>=5.0",
"pytest-asyncio>=0.23",
"ruff>=0.6",
"radon>=6.0",
"import-linter>=2.0",
]
[project.urls]
Homepage = "https://gitea.iomgaa.online/iomgaa/PolyGateway"
Changelog = "https://gitea.iomgaa.online/iomgaa/PolyGateway/src/branch/main/CHANGELOG.md"
Issues = "https://gitea.iomgaa.online/iomgaa/PolyGateway/issues"
[tool.setuptools.packages.find]
where = ["src"]
[tool.pytest.ini_options]
pythonpath = ["src"]
testpaths = ["tests"]
asyncio_mode = "auto"
# slow(真实等待的时间语义变体,单文件 12-15 分钟)默认排除;
# 显式 `pytest -m slow` 覆盖(CLI 的 -m 后到优先)。M2 T12 全量跑。
addopts = "-m 'not slow'"
markers = [
"requires_redis: 需要可达的 Redis(无则 skip",
"requires_llm: 需要真实 LLM 网关(无则 skip,输出落 tests/outputs/",
"slow: 慢速测试(CI 按需跑)",
]
[tool.ruff]
target-version = "py311"
line-length = 100
[tool.ruff.lint]
select = ["E", "F", "W", "I", "N", "UP", "B", "A", "C4", "SIM", "TCH"]
ignore = ["E501"]
[tool.ruff.lint.isort]
known-first-party = ["polygateway"]
# 依赖纪律(ARCHITECTURE.md §8):ports/types/errors/streaming 为最内层;
# middleware 只依赖端口;transports/backends/telemetry/structured/providers/sources
# 只实现端口且互不依赖;client 是唯一组装层。
# 注:M1 模块落地前 lint-imports 由 Makefile 门控跳过。
[tool.importlinter]
root_packages = ["polygateway"]
[[tool.importlinter.contracts]]
name = "洋葱分层:client → config → middleware → 实现层(互不依赖)→ 叶子 → 内核"
type = "layers"
layers = [
"polygateway.client",
"polygateway.config",
"polygateway.middleware",
"polygateway.transports | polygateway.backends | polygateway.telemetry | polygateway.structured",
"polygateway.providers : polygateway.sources",
"polygateway.ports : polygateway.types : polygateway.errors : polygateway.streaming",
]