2024-07-02 21:35:57 +00:00
[ build-system ]
requires = [ "poetry-core>=1.0.0" , ]
build-backend = "poetry.core.masonry.api"
2023-11-20 21:09:30 +00:00
[ tool . poetry ]
name = "langchain-core"
2024-07-30 18:41:09 +00:00
version = "0.2.25"
2023-11-20 21:09:30 +00:00
description = "Building applications with LLMs through composability"
authors = [ ]
license = "MIT"
readme = "README.md"
repository = "https://github.com/langchain-ai/langchain"
2024-07-02 21:35:57 +00:00
[ tool . mypy ]
disallow_untyped_defs = "True"
2024-07-31 18:27:24 +00:00
exclude = [ "notebooks" , "examples" , "example_data" , "langchain_core/pydantic" , "tests/unit_tests/utils/test_function_calling.py" ]
2024-07-02 21:35:57 +00:00
[ [ tool . mypy . overrides ] ]
module = [ "numpy" , "pytest" , ]
ignore_missing_imports = true
2023-11-20 21:09:30 +00:00
2024-07-23 16:01:18 +00:00
[ tool . poetry . urls ]
"Source Code" = "https://github.com/langchain-ai/langchain/tree/master/libs/core"
"Release Notes" = "https://github.com/langchain-ai/langchain/releases?q=tag%3A%22langchain-core%3D%3D0%22&expanded=true"
2023-11-20 21:09:30 +00:00
[ tool . poetry . dependencies ]
python = ">=3.8.1,<4.0"
2024-06-06 23:54:35 +00:00
langsmith = "^0.1.75"
core[patch],community[patch],langchain[patch]: `tenacity` dependency to version `>=8.1.0,<8.4.0` (#22973)
Fix https://github.com/langchain-ai/langchain/issues/22972.
- [x] **PR title**: "package: description"
- Where "package" is whichever of langchain, community, core,
experimental, etc. is being modified. Use "docs: ..." for purely docs
changes, "templates: ..." for template changes, "infra: ..." for CI
changes.
- Example: "community: add foobar LLM"
- [x] **PR message**: ***Delete this entire checklist*** and replace
with
- **Description:** a description of the change
- **Issue:** the issue # it fixes, if applicable
- **Dependencies:** any dependencies required for this change
- **Twitter handle:** if your PR gets announced, and you'd like a
mention, we'll gladly shout you out!
- [x] **Add tests and docs**: If you're adding a new integration, please
include
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.
- [x] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/
Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.
If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.
2024-06-18 14:34:28 +00:00
tenacity = "^8.1.0,!=8.4.0"
2023-11-20 21:09:30 +00:00
jsonpatch = "^1.33"
2023-12-07 22:24:58 +00:00
PyYAML = ">=5.3"
2024-06-12 23:22:20 +00:00
packaging = ">=23.2,<25"
2024-07-31 18:27:24 +00:00
typing-extensions = ">=4.7"
2024-07-02 21:35:57 +00:00
[ [ tool . poetry . dependencies . pydantic ] ]
version = ">=1,<3"
python = "<3.12.4"
[ [ tool . poetry . dependencies . pydantic ] ]
version = "^2.7.4"
python = ">=3.12.4"
[ tool . poetry . extras ]
[ tool . ruff . lint ]
select = [ "E" , "F" , "I" , "T201" , ]
[ tool . coverage . run ]
omit = [ "tests/*" , ]
[ tool . pytest . ini_options ]
addopts = "--snapshot-warn-unused --strict-markers --strict-config --durations=5"
markers = [ "requires: mark tests as requiring a specific library" , "asyncio: mark tests as requiring asyncio" , "compile: mark placeholder test used to compile integration tests without running them" , ]
asyncio_mode = "auto"
2023-12-07 22:24:58 +00:00
[ tool . poetry . group . lint ]
optional = true
2023-11-20 21:09:30 +00:00
2023-12-07 22:24:58 +00:00
[ tool . poetry . group . typing ]
optional = true
2024-07-02 21:35:57 +00:00
[ tool . poetry . group . dev ]
optional = true
[ tool . poetry . group . test ]
optional = true
[ tool . poetry . group . test_integration ]
optional = true
2024-07-11 21:34:25 +00:00
[ tool . ruff . lint . per-file-ignores ]
"tests/unit_tests/prompts/test_chat.py" = [ "E501" , ]
"tests/unit_tests/runnables/test_runnable.py" = [ "E501" , ]
"tests/unit_tests/runnables/test_graph.py" = [ "E501" , ]
2024-07-02 21:35:57 +00:00
[ tool . poetry . group . lint . dependencies ]
infra: update mypy 1.10, ruff 0.5 (#23721)
```python
"""python scripts/update_mypy_ruff.py"""
import glob
import tomllib
from pathlib import Path
import toml
import subprocess
import re
ROOT_DIR = Path(__file__).parents[1]
def main():
for path in glob.glob(str(ROOT_DIR / "libs/**/pyproject.toml"), recursive=True):
print(path)
with open(path, "rb") as f:
pyproject = tomllib.load(f)
try:
pyproject["tool"]["poetry"]["group"]["typing"]["dependencies"]["mypy"] = (
"^1.10"
)
pyproject["tool"]["poetry"]["group"]["lint"]["dependencies"]["ruff"] = (
"^0.5"
)
except KeyError:
continue
with open(path, "w") as f:
toml.dump(pyproject, f)
cwd = "/".join(path.split("/")[:-1])
completed = subprocess.run(
"poetry lock --no-update; poetry install --with typing; poetry run mypy . --no-color",
cwd=cwd,
shell=True,
capture_output=True,
text=True,
)
logs = completed.stdout.split("\n")
to_ignore = {}
for l in logs:
if re.match("^(.*)\:(\d+)\: error:.*\[(.*)\]", l):
path, line_no, error_type = re.match(
"^(.*)\:(\d+)\: error:.*\[(.*)\]", l
).groups()
if (path, line_no) in to_ignore:
to_ignore[(path, line_no)].append(error_type)
else:
to_ignore[(path, line_no)] = [error_type]
print(len(to_ignore))
for (error_path, line_no), error_types in to_ignore.items():
all_errors = ", ".join(error_types)
full_path = f"{cwd}/{error_path}"
try:
with open(full_path, "r") as f:
file_lines = f.readlines()
except FileNotFoundError:
continue
file_lines[int(line_no) - 1] = (
file_lines[int(line_no) - 1][:-1] + f" # type: ignore[{all_errors}]\n"
)
with open(full_path, "w") as f:
f.write("".join(file_lines))
subprocess.run(
"poetry run ruff format .; poetry run ruff --select I --fix .",
cwd=cwd,
shell=True,
capture_output=True,
text=True,
)
if __name__ == "__main__":
main()
```
2024-07-03 17:33:27 +00:00
ruff = "^0.5"
2024-07-02 21:35:57 +00:00
2024-07-30 18:41:09 +00:00
2023-11-20 21:09:30 +00:00
[ tool . poetry . group . typing . dependencies ]
2024-07-27 23:37:02 +00:00
mypy = ">=1.10,<1.11"
2023-11-20 21:09:30 +00:00
types-pyyaml = "^6.0.12.2"
types-requests = "^2.28.11.5"
2023-12-07 22:24:58 +00:00
types-jinja2 = "^2.11.9"
2023-11-20 21:09:30 +00:00
2024-07-30 18:41:09 +00:00
2023-11-20 21:09:30 +00:00
[ tool . poetry . group . dev . dependencies ]
jupyter = "^1.0.0"
setuptools = "^67.6.1"
2023-12-22 19:40:45 +00:00
grandalf = "^0.8"
2023-11-20 21:09:30 +00:00
2024-07-30 18:41:09 +00:00
2023-11-20 21:09:30 +00:00
[ tool . poetry . group . test . dependencies ]
pytest = "^7.3.0"
freezegun = "^1.2.2"
2024-03-07 00:12:18 +00:00
pytest-mock = "^3.10.0"
2023-11-20 21:09:30 +00:00
syrupy = "^4.0.2"
pytest-watcher = "^0.3.4"
pytest-asyncio = "^0.21.1"
2023-12-22 19:40:45 +00:00
grandalf = "^0.8"
Cache calls to create_model for get_input_schema and get_output_schema (#17755)
Thank you for contributing to LangChain!
- [ ] **PR title**: "package: description"
- Where "package" is whichever of langchain, community, core,
experimental, etc. is being modified. Use "docs: ..." for purely docs
changes, "templates: ..." for template changes, "infra: ..." for CI
changes.
- Example: "community: add foobar LLM"
- [ ] **PR message**: ***Delete this entire checklist*** and replace
with
- **Description:** a description of the change
- **Issue:** the issue # it fixes, if applicable
- **Dependencies:** any dependencies required for this change
- **Twitter handle:** if your PR gets announced, and you'd like a
mention, we'll gladly shout you out!
- [ ] **Add tests and docs**: If you're adding a new integration, please
include
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.
- [ ] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/
Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.
If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, hwchase17.
2024-02-19 21:26:42 +00:00
pytest-profiling = "^1.7.0"
2024-03-05 20:49:38 +00:00
responses = "^0.25.0"
2024-07-02 21:35:57 +00:00
[ [ tool . poetry . group . test . dependencies . numpy ] ]
version = "^1.24.0"
python = "<3.12"
2024-06-12 20:31:36 +00:00
2024-07-02 21:35:57 +00:00
[ [ tool . poetry . group . test . dependencies . numpy ] ]
version = "^1.26.0"
python = ">=3.12"
2023-11-20 21:09:30 +00:00
2024-07-30 18:41:09 +00:00
2024-07-02 21:35:57 +00:00
[ tool . poetry . group . test_integration . dependencies ]
2024-05-14 21:29:07 +00:00
2024-07-30 18:41:09 +00:00
2024-07-02 21:35:57 +00:00
[ tool . poetry . group . typing . dependencies . langchain-text-splitters ]
path = "../text-splitters"
develop = true
2024-07-11 21:34:25 +00:00
2024-07-30 18:41:09 +00:00
2024-07-11 21:34:25 +00:00
[ tool . poetry . group . test . dependencies . langchain-standard-tests ]
path = "../standard-tests"
develop = true