[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "langgraph"
version = "1.2.10"
description = "Building stateful, multi-actor applications with LLMs"
authors = []
requires-python = ">=3.10"
readme = "README.md"
license = "MIT"
license-files = ['LICENSE']
classifiers = [
    'Development Status :: 5 - Production/Stable',
    'Programming Language :: Python',
    'Programming Language :: Python :: Implementation :: CPython',
    'Programming Language :: Python :: Implementation :: PyPy',
    'Programming Language :: Python :: 3',
    'Programming Language :: Python :: 3 :: Only',
    'Programming Language :: Python :: 3.10',
    'Programming Language :: Python :: 3.11',
    'Programming Language :: Python :: 3.12',
    'Programming Language :: Python :: 3.13',
]
dependencies = [
    "langchain-core>=1.4.7,<2",
    "langgraph-checkpoint>=4.1.0,<5.0.0",
    "langgraph-sdk>=0.4.2,<0.5.0",
    "langgraph-prebuilt>=1.1.0,<1.2.0",
    "xxhash>=3.5.0",
    "pydantic>=2.7.4",
]


[project.urls]
Homepage = "https://docs.langchain.com/oss/python/langgraph/overview"
Documentation = "https://reference.langchain.com/python/langgraph/"
Source = "https://github.com/langchain-ai/langgraph/tree/main/libs/langgraph"
Changelog = "https://github.com/langchain-ai/langgraph/releases"
Twitter = "https://x.com/langchain_oss"
Slack = "https://www.langchain.com/join-community"
Reddit = "https://www.reddit.com/r/LangChain/"

[dependency-groups]
test = [
    "pytest",
    "pytest-cov",
    "pytest-dotenv",
    "pytest-mock",
    "syrupy",
    "httpx",
    "pytest-watcher",
    "pytest-xdist[psutil]",
    "pytest-repeat",
    "langchain-core>=1.0.0",
    "langgraph-prebuilt",
    "langgraph-checkpoint",
    "langgraph-checkpoint-sqlite",
    "langgraph-checkpoint-postgres",
    "langgraph-sdk",
    "psycopg[binary]",
    "uvloop==0.22.1",
    "pyperf",
    "py-spy",
    "pycryptodome",
    "langgraph-cli; python_version < '3.14'",
    "langgraph-cli[inmem]; python_version < '3.14'",
    "redis",
]
lint = [
    "ruff",
    "ty",
    "types-requests",
]
dev = [
    {include-group = "test"},
    {include-group = "lint"},
    "jupyter",
]


[tool.uv.sources]
langgraph-prebuilt = { path = "../prebuilt", editable = true }
langgraph-checkpoint = { path = "../checkpoint", editable = true }
langgraph-checkpoint-sqlite = { path = "../checkpoint-sqlite", editable = true }
langgraph-checkpoint-postgres = { path = "../checkpoint-postgres", editable = true }
langgraph-sdk = { path = "../sdk-py", editable = true }
langgraph-cli = { path = "../cli", editable = true }

[tool.ruff]
lint.select = [ "E", "F", "I", "TID251", "UP" ]
lint.ignore = [ "E501" ]
line-length = 88
indent-width = 4
extend-include = ["*.ipynb"]
target-version = "py310"

[tool.ruff.lint.flake8-tidy-imports.banned-api]
"typing.TypedDict".msg = "Use typing_extensions.TypedDict instead."

[tool.ty.rules]
call-non-callable = "ignore"
deprecated = "ignore"
invalid-argument-type = "ignore"
invalid-assignment = "ignore"
invalid-key = "ignore"
invalid-method-override = "ignore"
invalid-paramspec = "ignore"
invalid-return-type = "ignore"
invalid-type-form = "ignore"
invalid-yield = "ignore"
missing-typed-dict-key = "ignore"
no-matching-overload = "ignore"
not-iterable = "ignore"
unused-type-ignore-comment = "ignore"
unresolved-attribute = "ignore"
unsupported-base = "ignore"
unsupported-operator = "ignore"

[tool.coverage.run]
omit = ["tests/*"]

[tool.pytest-watcher]
now = true
delay = 0.1
patterns = ["*.py"]

[tool.hatch.build.targets.wheel]
packages = ["langgraph"]

[tool.pytest.ini_options]
addopts = "--full-trace --strict-markers --strict-config --durations=5 --snapshot-warn-unused"

[tool.codespell]
# Ignore words specific to the LangGraph library code
ignore-words-list = "infor,thead,stdio,nd,jupyter,lets,lite,uis,deque,langgraph,langchain,pydantic,typing,async,await,coroutine,iterable,iterables,serializable,deserializable,checkpointer,checkpointing,stateful,statefulness,prebuilt,prebuilt,supervisor,supervisory,swarm,swarming,multiactor,multiactors,subgraph,subgraphs,workflow,workflows,streaming,streamable,streamed,streamer,streamers,streaming,streamable,streamed,streamer,streamers"
