[project] name = "honcho" version = "2.0.2" description = "Honcho Server" authors = [ {name = "Plastic Labs", email = "hello@plasticlabs.ai"}, ] readme = "README.md" requires-python = ">=3.10" dependencies = [ "fastapi[standard]>=0.111.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", "tiktoken>=0.9.0", "mirascope[anthropic,google,groq,langfuse]>=1.25.1", "openai>=1.91.0", "pydantic>=2.11.7", "pydantic-settings>=2.10.1", ] [tool.uv] dev-dependencies = [ "honcho-core>=1.1.0", "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", ] [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"] [tool.ruff.lint.flake8-bugbear] extend-immutable-calls = ["fastapi.Depends"] [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "session" [tool.basedpyright] # BasedPyright currently seems like the best type checker option, much faster # than mypy and with a good extension for VSCode/Cursor. # https://marketplace.visualstudio.com/items?itemName=detachhead.basedpyright # https://docs.basedpyright.com/latest/configuration/config-files/#sample-pyprojecttoml-file include = ["src", "tests", "sdks/python/src"] exclude = ["tests/**/disabled*.py"] # By default BasedPyright is very strict, so you almost certainly want to disable # some of the rules. # First, these turn off warnings about (yes) how you ignore warnings: reportIgnoreCommentWithoutRule = false # reportUnnecessaryTypeIgnoreComment = false # A few typically noisy warnings are next. # How many you enable is up to you. The first few are off by default, but you can # comment/uncomment these as desired: reportMissingTypeStubs = false reportUnusedCallResult = false reportCallInDefaultInitializer = false reportAny = false reportExplicitAny = false allowedUntypedLibraries = ["langfuse", "langfuse.decorators", "mirascope"] reportImplicitOverride = false # reportImplicitStringConcatenation = false # reportUnreachable = false # reportPrivateImportUsage = false # reportPrivateLocalImportUsage = false # reportMissingImports = false # reportUnnecessaryIsInstance = false # reportUnknownVariableType = false # reportUnknownArgumentType = false # reportUnknownParameterType = false # reportUnknownMemberType = false reportImportCycles = false