pyproject.toml
Rama main · réplica de lectura del repositorio original.
[project]
name = "opencompany-cli"
version = "0.3.1"
description = "OpenCompany project supervisor CLI (company)."
requires-python = ">=3.12"
dependencies = [
"typer>=0.12",
"rich>=13",
"anyio>=4",
"psutil>=6",
# OS-native user data / cache / config / log dirs. Soft dependency
# in the CLI (``cli/platform_.py`` imports it inside a try/except
# and falls back to a stdlib implementation if the wheel isn't
# available) so ``company clean`` / ``company build`` still work
# immediately after a wipe, before ``pip install`` has had a
# chance to materialise it.
"platformdirs>=4.0",
# Required on Windows for the supervisor's Job Object (cli/tree.py).
# Without it, child processes survive abnormal supervisor exit
# (SIGKILL, BSOD, console close) and accumulate as orphans across
# dev restarts. Floor 308 is the first release shipping prebuilt
# wheels for Python 3.13.
"pywin32>=308; platform_system == 'Windows'",
]
[project.scripts]
company = "cli.cli:app"
# Deprecated compatibility alias. New documentation and installs use
# ``company``; keep this entry point so existing automation keeps working.
machina = "cli.cli:app"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["cli"]
# The CLI runs under the user's global / pipx-managed Python — it is
# NOT a uv-managed project. ``managed = false`` tells ``uv`` to leave
# this project alone: ``uv sync`` at the repo root is a no-op, no
# ``<repo>/.venv/`` is created, ``python`` on PATH resolves to the
# user's global interpreter instead of being shadowed by a workspace
# venv. The server is the only uv-managed project (``server/.venv``).
[tool.uv]
managed = false
[dependency-groups]
dev = []
# ``opencompany-cli`` is a standalone Python CLI package -- installable
# via ``pipx install .`` / ``pip install .`` against any Python >=3.12
# without involving uv. It depends on nothing from ``server/``. The
# server has its own uv-managed venv at ``server/.venv``; the CLI
# invokes server-side commands by shelling out via ``cli.run.uv_run``
# (which runs ``uv run --no-sync ...`` with ``cwd=server/`` so uv
# discovers ``server/pyproject.toml`` and activates ``server/.venv``).
# Keeping the CLI independent of the uv workspace means contributors
# can install / run / debug ``company`` on whatever interpreter is on
# PATH -- no per-checkout venv activation required.