[project] name = "honcho" version = "2.3.3" description = "Honcho Server" authors = [ {name = "Plastic Labs", email = "hello@plasticlabs.ai"}, ] readme = "README.md" requires-python = ">=3.10" dependencies = [ "fastapi[standard]>=0.111.0", "groq>=0.31.0", "python-dotenv>=1.0.0", "sqlalchemy>=2.0.30", "fastapi-pagination>=0.12.24", "pgvector>=0.2.5", "sentry-sdk[anthropic,fastapi,sqlalchemy]>=2.3.1", "greenlet>=3.0.3", "psycopg[binary]>=3.1.19", "httpx>=0.27.0", "rich>=13.7.1", "nanoid>=2.0.0", "alembic>=1.14.0", "pyjwt>=2.10.0", "tenacity>=9.1.2", "tiktoken>=0.9.0", "langfuse>=3.3.2", "openai>=1.99.7", "pydantic>=2.11.7", "pydantic-settings>=2.10.1", "google-genai>=1.32.0", "pdfplumber>=0.11.7", "typing-extensions>=4.11.0", ] [tool.uv] dev-dependencies = [ "pytest>=8.2.2", "sqlalchemy-utils>=0.41.2", "pytest-asyncio>=0.23.7", "coverage>=7.6.0", "interrogate>=1.7.0", "py-spy>=0.3.14", "ruff>=0.11.2", "basedpyright>=1.29.4", "pre-commit>=4.2.0", "pytest-cov>=6.2.1", "honcho-ai", ] [tool.uv.workspace] members = [ "sdks/python", ] [tool.uv.sources] honcho-ai = { workspace = true } [tool.ruff.lint] # from https://docs.astral.sh/ruff/linter/#rule-selection example select = [ # pycodestyle "E", # Pyflakes "F", # pyupgrade "UP", # flake8-bugbear "B", # flake8-simplify "SIM", # isort "I", ] ignore = ["E501", "B008", "COM812"] [tool.ruff.lint.flake8-bugbear] extend-immutable-calls = ["fastapi.Depends"] [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "session" addopts = "--strict-markers --cov=src/ --cov=sdks/python/src/honcho --cov-report=term-missing" testpaths = ["tests"] pythonpath = ["src"] [tool.basedpyright] # BasedPyright currently seems like the best type checker option, much faster # https://docs.basedpyright.com/latest/configuration/config-files/#sample-pyprojecttoml-file include = ["src", "tests", "sdks/python/src"] exclude = ["tests/**/disabled*.py"] reportIgnoreCommentWithoutRule = false reportMissingTypeStubs = false reportUnusedCallResult = false reportCallInDefaultInitializer = false reportAny = false reportExplicitAny = false allowedUntypedLibraries = ["langfuse"] reportImplicitOverride = false reportImportCycles = false [[tool.uv.index]] name = "testpypi" url = "https://test.pypi.org/simple/" publish-url = "https://test.pypi.org/legacy/" explicit = true