Files
OpenOPC/pyproject.toml
LZH-YS1998 76c530a9e5 test: repair full suite — hang fix, stale-test updates, patch hygiene, timeout backstop
Suite went from 27 failures plus one permanent hang (never finished) to
1846 passed / 0 failed in ~85s, including under FORCE_COLOR.

- office_shutdown_lifecycle: construct WSHandler via the real __init__
  (helper) instead of hand-copied __new__ stubs that drift from the
  constructor (#11 added _runtime_status_sync_task and the stubs hung);
  the formerly-hanging wait now has a 5s wait_for.
- import-time patch hygiene: company_recruiter / company_reorg /
  engine_session_defaults replaced module-level permanent
  tempfile.TemporaryDirectory monkeypatching with paired
  setUpModule/tearDownModule, fixing order-dependent sqlite failures in
  transcript_pagination during full runs.
- stale tests updated to current product semantics: resume stubs use
  status="done" (failed is deliberately non-resumable), fix4 asserts the
  native review contract through build_company_work_item_contract,
  delivery fixture carries user_visible/feedback_scope=final, ownership
  doc names progress_log, session compression calls
  maybe_compact_session(force=True) explicitly, hard delete removes the
  work item row, parallel-isolation asserts delegate rebind and stubs
  _get_project_delegate, role update goes through OrgService on an
  editable custom org (plus read-only rejection case), collab_rpc patches
  the single os.name decision point instead of poisoning pathlib, codex
  no-pty builds inside the patch, identity-guard false positives reworded.
- cli_board actions rewritten against the real OfficeServiceFactory seam
  with a tempdir OPC_HOME (old direct-engine stubs were never consulted
  and the tests wrote into the real OPC home).
- cli_app assertions strip ANSI via _plain_output so a color-forcing
  shell (FORCE_COLOR) cannot break plain-text expectations.
- deleted never-runnable test_org_concurrency (pytest.mark.asyncio
  without the plugin, stdlib-only assertions) and three dead skipped
  filesystem-handoff tests.
- pyproject: dev extra (pytest, pytest-timeout) and a 300s per-test
  timeout backstop so a wedged test fails instead of stalling the suite.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 22:14:47 +08:00

106 lines
2.6 KiB
TOML

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "opc"
version = "0.1.0"
description = "One-Person Company — Autonomous AI Agent collaboration system with natural language interface"
readme = "README.md"
requires-python = ">=3.10"
license = {text = "MIT"}
dependencies = [
"typer[all]>=0.9.0",
"rich>=13.0",
"prompt-toolkit>=3.0",
"litellm==1.82.1",
"pydantic>=2.0",
"pydantic-settings>=2.0",
"pyyaml>=6.0",
"aiosqlite>=0.19.0",
"chromadb>=0.4.0",
"httpx>=0.27.0",
"loguru>=0.7.0",
"playwright>=1.40",
"mcp>=1.0.0",
"anyio>=4.0",
"python-docx>=1.1.0",
"openpyxl>=3.1.0",
"python-pptx>=0.6.21",
]
[project.optional-dependencies]
# Backwards-compatible alias: browser tools are now native and the dependency
# is installed with the base package.
browser = []
# Optional legacy CLI board/TUI inspector; not installed by default.
cli-board = ["textual>=8.1.1"]
channels-telegram = ["python-telegram-bot>=21.0"]
channels-whatsapp = ["websockets>=12.0"]
channels-discord = ["discord.py>=2.3"]
channels-feishu = ["lark-oapi>=1.4.0"]
channels-mochat = ["python-socketio[asyncio_client]>=5.11.0"]
channels-dingtalk = ["dingtalk-stream>=0.21.0"]
channels-email = []
channels-slack = ["slack-sdk>=3.27.0"]
channels-qq = ["qq-botpy>=1.2.1"]
channels-matrix = ["matrix-nio>=0.24.0"]
channels-bridges = [
"websockets>=12.0",
"python-socketio[asyncio_client]>=5.11.0",
]
channels-all = [
"python-telegram-bot>=21.0",
"websockets>=12.0",
"discord.py>=2.3",
"lark-oapi>=1.4.0",
"python-socketio[asyncio_client]>=5.11.0",
"dingtalk-stream>=0.21.0",
"slack-sdk>=3.27.0",
"qq-botpy>=1.2.1",
"matrix-nio>=0.24.0",
]
all = [
"python-telegram-bot>=21.0",
"websockets>=12.0",
"discord.py>=2.3",
"lark-oapi>=1.4.0",
"python-socketio[asyncio_client]>=5.11.0",
"dingtalk-stream>=0.21.0",
"slack-sdk>=3.27.0",
"qq-botpy>=1.2.1",
"matrix-nio>=0.24.0",
]
dev = [
"pytest>=9.0",
"pytest-timeout>=2.3",
]
[project.scripts]
opc = "opc.cli.app:main"
[tool.hatch.build.targets.wheel]
packages = ["opc"]
[tool.hatch.build.targets.wheel.force-include]
"config" = "opc/config_templates"
"skills/core" = "opc/skills_assets/core"
[tool.hatch.build.targets.sdist]
include = [
"opc",
"config",
"skills/core",
"docs",
"scripts",
"README.md",
"pyproject.toml",
]
[tool.pytest.ini_options]
# Backstop against wedged tests: a hung test fails after 5 minutes instead
# of stalling the whole suite (requires pytest-timeout, in the `dev` extra).
timeout = 300