[dependency-groups] dev = [ "pyright==1.1.389", "mypy==1.13.0", "ruff==0.4.8", "pytest", "pytest-asyncio", "pytest-cov", "pytest-xdist", "typer", "rich", "polars", "pytest_mock", "poethepoet", "packaging", "grpcio-tools~=1.62.0", "mypy-protobuf", "cookiecutter", "poethepoet", "tomli", "tomli-w", "chainlit", ] [tool.uv] override-dependencies = [ "tenacity==9.0.0", "aiofiles==24.1.0", "chainlit==2.0.1", ] [tool.uv.workspace] members = ["packages/*"] [tool.uv.sources] agbench = { workspace = true } autogen-agentchat = { workspace = true } autogen-core = { workspace = true } autogen-ext = { workspace = true } autogen-magentic-one = { workspace = true } autogen-test-utils = { workspace = true } autogenstudio = { workspace = true } component-schema-gen = { workspace = true } magentic-one-cli = { workspace = true } [tool.ruff] line-length = 120 fix = true target-version = "py310" [tool.ruff.format] docstring-code-format = true [tool.ruff.lint] select = ["E", "F", "W", "B", "Q", "I", "ASYNC", "T20"] ignore = ["F401", "E501"] [tool.ruff.lint.flake8-tidy-imports] [tool.ruff.lint.flake8-tidy-imports.banned-api] "unittest".msg = "Use `pytest` instead." [tool.mypy] strict = true python_version = "3.10" ignore_missing_imports = true # from https://blog.wolt.com/engineering/2021/09/30/professional-grade-mypy-configuration/ disallow_untyped_defs = true no_implicit_optional = true check_untyped_defs = true warn_return_any = true show_error_codes = true warn_unused_ignores = false disallow_incomplete_defs = true disallow_untyped_decorators = true disallow_any_unimported = true [tool.pyright] include = ["src", "tests", "samples"] exclude = ["samples/core_xlang_hello_python_agent/protos"] typeCheckingMode = "strict" reportUnnecessaryIsInstance = false reportMissingTypeStubs = false [tool.poe.tasks] fmt = "python run_task_in_pkgs_if_exist.py fmt" format.ref = "fmt" lint = "python run_task_in_pkgs_if_exist.py lint" pyright = "python run_task_in_pkgs_if_exist.py pyright" mypy = "python run_task_in_pkgs_if_exist.py mypy" test = "python run_task_in_pkgs_if_exist.py test" coverage = "python run_task_in_pkgs_if_exist.py coverage" markdown-code-lint = """python check_md_code_blocks.py ../README.md ./packages/autogen-core/docs/src/**/*.md""" samples-code-check = """pyright ./samples""" check = ["fmt", "lint", "pyright", "mypy", "coverage", "markdown-code-lint", "samples-code-check"] gen-proto = "python -m grpc_tools.protoc --python_out=./packages/autogen-ext/src/autogen_ext/runtimes/grpc/protos --grpc_python_out=./packages/autogen-ext/src/autogen_ext/runtimes/grpc/protos --mypy_out=./packages/autogen-ext/src/autogen_ext/runtimes/grpc/protos --mypy_grpc_out=./packages/autogen-ext/src/autogen_ext/runtimes/grpc/protos --proto_path ../protos/ agent_worker.proto --proto_path ../protos/ cloudevent.proto" gen-proto-samples = "python -m grpc_tools.protoc --python_out=./samples/core_xlang_hello_python_agent/protos --grpc_python_out=./samples/core_xlang_hello_python_agent/protos --mypy_out=./samples/core_xlang_hello_python_agent/protos --mypy_grpc_out=./samples/core_xlang_hello_python_agent/protos --proto_path ../protos/ agent_events.proto" [[tool.poe.tasks.gen-test-proto.sequence]] cmd = "python -m grpc_tools.protoc --python_out=./packages/autogen-core/tests/protos --grpc_python_out=./packages/autogen-core/tests/protos --mypy_out=./packages/autogen-core/tests/protos --mypy_grpc_out=./packages/autogen-core/tests/protos --proto_path ./packages/autogen-core/tests/protos serialization_test.proto" [[tool.poe.tasks.gen-test-proto.sequence]] cmd = "python -m grpc_tools.protoc --python_out=./packages/autogen-ext/tests/protos --grpc_python_out=./packages/autogen-ext/tests/protos --mypy_out=./packages/autogen-ext/tests/protos --mypy_grpc_out=./packages/autogen-ext/tests/protos --proto_path ./packages/autogen-core/tests/protos serialization_test.proto"