[tool.poetry] name = "langgraph" version = "0.3.26" description = "Building stateful, multi-actor applications with LLMs" authors = [] license = "MIT" readme = "README.md" repository = "https://www.github.com/langchain-ai/langgraph" [tool.poetry.dependencies] python = ">=3.9.0,<4.0" langchain-core = ">=0.1,<0.4" langgraph-checkpoint = "^2.0.10" langgraph-sdk = "^0.1.42" langgraph-prebuilt = ">=0.1.1,<0.2" xxhash = "^3.5.0" [tool.poetry.group.dev.dependencies] pytest = "^8.3.2" pytest-cov = "^4.0.0" pytest-dotenv = "^0.5.2" pytest-mock = "^3.10.0" syrupy = "^4.0.2" httpx = "^0.26.0" pytest-watcher = "^0.4.1" mypy = "^1.6.0" ruff = "^0.6.2" jupyter = "^1.0.0" pytest-xdist = {extras = ["psutil"], version = "^3.6.1"} pytest-repeat = "^0.9.3" langgraph-prebuilt = {path = "../prebuilt", develop = true} langgraph-checkpoint = {path = "../checkpoint", develop = true} langgraph-checkpoint-sqlite = {path = "../checkpoint-sqlite", develop = true} langgraph-checkpoint-postgres = {path = "../checkpoint-postgres", develop = true} langgraph-sdk = {path = "../sdk-py", develop = true} psycopg = {extras = ["binary"], version = ">=3.0.0", python = ">=3.10"} uvloop = "0.21.0beta1" pyperf = "^2.7.0" py-spy = "^0.3.14" types-requests = "^2.32.0.20240914" pycryptodome = "^3.21.0" [tool.ruff] lint.select = [ "E", "F", "I", "TID251" ] lint.ignore = [ "E501" ] line-length = 88 indent-width = 4 extend-include = ["*.ipynb"] [tool.ruff.format] quote-style = "double" indent-style = "space" skip-magic-trailing-comma = false line-ending = "auto" docstring-code-format = false docstring-code-line-length = "dynamic" [tool.ruff.lint.flake8-tidy-imports.banned-api] "typing.TypedDict".msg = "Use typing_extensions.TypedDict instead." [tool.mypy] # https://mypy.readthedocs.io/en/stable/config_file.html disallow_untyped_defs = "True" explicit_package_bases = "True" warn_no_return = "False" warn_unused_ignores = "True" warn_redundant_casts = "True" allow_redefinition = "True" disable_error_code = "typeddict-item, return-value, override, has-type" [tool.coverage.run] omit = ["tests/*"] [tool.pytest-watcher] now = true delay = 0.1 patterns = ["*.py"] [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.pytest.ini_options] # --strict-markers will raise errors on unknown marks. # https://docs.pytest.org/en/7.1.x/how-to/mark.html#raising-errors-on-unknown-marks # # https://docs.pytest.org/en/7.1.x/reference/reference.html # --strict-config any warnings encountered while parsing the `pytest` # section of the configuration file raise errors. # # https://github.com/tophat/syrupy # --snapshot-warn-unused Prints a warning on unused snapshots rather than fail the test suite. addopts = "--full-trace --strict-markers --strict-config --durations=5 --snapshot-warn-unused" # Registering custom markers. # https://docs.pytest.org/en/7.1.x/example/markers.html#registering-markers