langchain 1.0.0a6__tar.gz → 1.0.0a7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of langchain might be problematic. Click here for more details.

Files changed (89) hide show
  1. {langchain-1.0.0a6 → langchain-1.0.0a7}/PKG-INFO +5 -5
  2. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/__init__.py +1 -1
  3. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/agents/middleware/human_in_the_loop.py +1 -1
  4. {langchain-1.0.0a6 → langchain-1.0.0a7}/pyproject.toml +23 -32
  5. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/test_middleware_agent.py +9 -0
  6. {langchain-1.0.0a6 → langchain-1.0.0a7}/LICENSE +0 -0
  7. {langchain-1.0.0a6 → langchain-1.0.0a7}/README.md +0 -0
  8. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/_internal/__init__.py +0 -0
  9. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/_internal/_documents.py +0 -0
  10. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/_internal/_lazy_import.py +0 -0
  11. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/_internal/_prompts.py +0 -0
  12. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/_internal/_typing.py +0 -0
  13. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/_internal/_utils.py +0 -0
  14. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/agents/__init__.py +0 -0
  15. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/agents/_internal/__init__.py +0 -0
  16. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/agents/_internal/_typing.py +0 -0
  17. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/agents/middleware/__init__.py +0 -0
  18. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/agents/middleware/dynamic_system_prompt.py +0 -0
  19. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/agents/middleware/prompt_caching.py +0 -0
  20. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/agents/middleware/summarization.py +0 -0
  21. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/agents/middleware/types.py +0 -0
  22. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/agents/middleware_agent.py +0 -0
  23. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/agents/react_agent.py +0 -0
  24. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/agents/structured_output.py +0 -0
  25. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/agents/tool_node.py +0 -0
  26. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/chat_models/__init__.py +0 -0
  27. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/chat_models/base.py +0 -0
  28. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/documents/__init__.py +0 -0
  29. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/embeddings/__init__.py +0 -0
  30. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/embeddings/base.py +0 -0
  31. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/embeddings/cache.py +0 -0
  32. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/globals.py +0 -0
  33. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/py.typed +0 -0
  34. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/storage/__init__.py +0 -0
  35. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/storage/encoder_backed.py +0 -0
  36. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/storage/exceptions.py +0 -0
  37. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/storage/in_memory.py +0 -0
  38. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/text_splitter.py +0 -0
  39. {langchain-1.0.0a6 → langchain-1.0.0a7}/langchain/tools/__init__.py +0 -0
  40. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/__init__.py +0 -0
  41. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/integration_tests/__init__.py +0 -0
  42. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/integration_tests/agents/__init__.py +0 -0
  43. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/integration_tests/agents/test_response_format.py +0 -0
  44. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/integration_tests/cache/__init__.py +0 -0
  45. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/integration_tests/cache/fake_embeddings.py +0 -0
  46. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/integration_tests/chat_models/__init__.py +0 -0
  47. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/integration_tests/chat_models/test_base.py +0 -0
  48. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/integration_tests/conftest.py +0 -0
  49. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/integration_tests/embeddings/__init__.py +0 -0
  50. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/integration_tests/embeddings/test_base.py +0 -0
  51. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/integration_tests/test_compile.py +0 -0
  52. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/__init__.py +0 -0
  53. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/__init__.py +0 -0
  54. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/__snapshots__/test_middleware_agent.ambr +0 -0
  55. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/__snapshots__/test_react_agent_graph.ambr +0 -0
  56. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/any_str.py +0 -0
  57. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/compose-postgres.yml +0 -0
  58. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/compose-redis.yml +0 -0
  59. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/conftest.py +0 -0
  60. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/conftest_checkpointer.py +0 -0
  61. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/conftest_store.py +0 -0
  62. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/memory_assert.py +0 -0
  63. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/messages.py +0 -0
  64. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/model.py +0 -0
  65. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/specifications/responses.json +0 -0
  66. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/specifications/return_direct.json +0 -0
  67. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/test_react_agent.py +0 -0
  68. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/test_react_agent_graph.py +0 -0
  69. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/test_response_format.py +0 -0
  70. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/test_responses.py +0 -0
  71. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/test_responses_spec.py +0 -0
  72. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/test_return_direct_spec.py +0 -0
  73. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/test_tool_node.py +0 -0
  74. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/agents/utils.py +0 -0
  75. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/chat_models/__init__.py +0 -0
  76. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/chat_models/test_chat_models.py +0 -0
  77. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/conftest.py +0 -0
  78. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/embeddings/__init__.py +0 -0
  79. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/embeddings/test_base.py +0 -0
  80. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/embeddings/test_caching.py +0 -0
  81. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/embeddings/test_imports.py +0 -0
  82. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/storage/__init__.py +0 -0
  83. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/storage/test_imports.py +0 -0
  84. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/stubs.py +0 -0
  85. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/test_dependencies.py +0 -0
  86. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/test_imports.py +0 -0
  87. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/test_pytest_config.py +0 -0
  88. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/tools/__init__.py +0 -0
  89. {langchain-1.0.0a6 → langchain-1.0.0a7}/tests/unit_tests/tools/test_imports.py +0 -0
@@ -1,16 +1,16 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langchain
3
- Version: 1.0.0a6
3
+ Version: 1.0.0a7
4
4
  Summary: Building applications with LLMs through composability
5
5
  License: MIT
6
6
  Project-URL: Source Code, https://github.com/langchain-ai/langchain/tree/master/libs/langchain
7
7
  Project-URL: Release Notes, https://github.com/langchain-ai/langchain/releases?q=tag%3A%22langchain%3D%3D0%22&expanded=true
8
8
  Project-URL: repository, https://github.com/langchain-ai/langchain
9
- Requires-Python: >=3.10
9
+ Requires-Python: <4.0.0,>=3.10.0
10
10
  Requires-Dist: langchain-core<2.0.0,>=0.3.75
11
- Requires-Dist: langchain-text-splitters<1.0.0,>=0.3.11
12
- Requires-Dist: langgraph>=0.6.7
13
- Requires-Dist: pydantic>=2.7.4
11
+ Requires-Dist: langchain-text-splitters<2.0.0,>=0.3.11
12
+ Requires-Dist: langgraph<2.0.0,>=0.6.7
13
+ Requires-Dist: pydantic<3.0.0,>=2.7.4
14
14
  Provides-Extra: community
15
15
  Requires-Dist: langchain-community; extra == "community"
16
16
  Provides-Extra: anthropic
@@ -2,7 +2,7 @@
2
2
 
3
3
  from typing import Any
4
4
 
5
- __version__ = "1.0.0a4"
5
+ __version__ = "1.0.0a6"
6
6
 
7
7
 
8
8
  def __getattr__(name: str) -> Any: # noqa: ANN401
@@ -149,7 +149,7 @@ class HumanInTheLoopMiddleware(AgentMiddleware):
149
149
  if not messages:
150
150
  return None
151
151
 
152
- last_ai_msg = next((msg for msg in messages if isinstance(msg, AIMessage)), None)
152
+ last_ai_msg = next((msg for msg in reversed(messages) if isinstance(msg, AIMessage)), None)
153
153
  if not last_ai_msg or not last_ai_msg.tool_calls:
154
154
  return None
155
155
 
@@ -6,15 +6,15 @@ build-backend = "pdm.backend"
6
6
 
7
7
  [project]
8
8
  authors = []
9
- requires-python = ">=3.10"
9
+ requires-python = ">=3.10.0,<4.0.0"
10
10
  dependencies = [
11
- "langchain-core<2.0.0,>=0.3.75",
12
- "langchain-text-splitters<1.0.0,>=0.3.11",
13
- "langgraph>=0.6.7",
14
- "pydantic>=2.7.4",
11
+ "langchain-core>=0.3.75,<2.0.0",
12
+ "langchain-text-splitters>=0.3.11,<2.0.0",
13
+ "langgraph>=0.6.7,<2.0.0",
14
+ "pydantic>=2.7.4,<3.0.0",
15
15
  ]
16
16
  name = "langchain"
17
- version = "1.0.0a6"
17
+ version = "1.0.0a7"
18
18
  description = "Building applications with LLMs through composability"
19
19
  readme = "README.md"
20
20
 
@@ -81,35 +81,32 @@ repository = "https://github.com/langchain-ai/langchain"
81
81
 
82
82
  [dependency-groups]
83
83
  test = [
84
- "pytest<9,>=8",
85
- "pytest-cov>=4.0.0",
86
- "pytest-watcher>=0.2.6",
87
- "pytest-asyncio>=0.23.2",
88
- "pytest-socket>=0.6.0",
89
- "syrupy>=4.0.2",
90
- "pytest-xdist>=3.6.1",
84
+ "pytest>=8.0.0,<9.0.0",
85
+ "pytest-cov>=4.0.0,<8.0.0",
86
+ "pytest-watcher>=0.2.6,<1.0.0",
87
+ "pytest-asyncio>=0.23.2,<2.0.0",
88
+ "pytest-socket>=0.6.0,<1.0.0",
89
+ "pytest-xdist<4.0.0,>=3.6.1",
90
+ "pytest-mock",
91
+ "syrupy>=4.0.2,<5.0.0",
92
+ "toml>=0.10.2,<1.0.0",
91
93
  "langchain-tests",
92
94
  "langchain-text-splitters",
93
95
  "langchain-openai",
94
- "toml>=0.10.2",
95
- "pytest-mock",
96
- ]
97
- codespell = [
98
- "codespell<3.0.0,>=2.2.0",
99
96
  ]
100
97
  lint = [
101
- "ruff>=0.12.2",
98
+ "ruff>=0.12.2,<0.13.0",
102
99
  ]
103
100
  typing = [
104
- "mypy<1.19,>=1.18.1",
105
- "types-toml>=0.10.8.20240310",
101
+ "mypy>=1.18.1,<1.19.0",
102
+ "types-toml>=0.10.8.20240310,<1.0.0.0",
106
103
  ]
107
104
  test_integration = [
108
- "vcrpy>=7.0",
109
- "wrapt>=1.15.0",
110
- "python-dotenv>=1.0.0",
111
- "cassio>=0.1.0",
112
- "langchainhub>=0.1.16",
105
+ "vcrpy>=7.0.0,<8.0.0",
106
+ "wrapt>=1.15.0,<2.0.0",
107
+ "python-dotenv>=1.0.0,<2.0.0",
108
+ "cassio>=0.1.0,<1.0.0",
109
+ "langchainhub>=0.1.16,<1.0.0",
113
110
  "langchain-core",
114
111
  "langchain-text-splitters",
115
112
  ]
@@ -131,7 +128,6 @@ path = "../partners/openai"
131
128
  editable = true
132
129
 
133
130
  [tool.ruff]
134
- target-version = "py310"
135
131
  exclude = [
136
132
  "tests/integration_tests/examples/non-utf8-encoding.py",
137
133
  ]
@@ -231,11 +227,6 @@ exclude = [
231
227
  disallow_any_generics = false
232
228
  warn_return_any = false
233
229
 
234
- [tool.codespell]
235
- skip = ".git,*.pdf,*.svg,*.pdf,*.yaml,*.ipynb,poetry.lock,*.min.js,*.css,package-lock.json,example_data,_dist,examples,*.trig"
236
- ignore-regex = ".*(Stati Uniti|Tense=Pres).*"
237
- ignore-words-list = "momento,collison,ned,foor,reworkd,parth,whats,aapply,mysogyny,unsecure,damon,crate,aadd,symbl,precesses,accademia,nin"
238
-
239
230
  [tool.coverage.run]
240
231
  omit = [
241
232
  "tests/*",
@@ -438,6 +438,15 @@ def test_human_in_the_loop_middleware_single_tool_accept() -> None:
438
438
  assert result["messages"][0] == ai_message
439
439
  assert result["messages"][0].tool_calls == ai_message.tool_calls
440
440
 
441
+ state["messages"].append(
442
+ ToolMessage(content="Tool message", name="test_tool", tool_call_id="1")
443
+ )
444
+ state["messages"].append(AIMessage(content="test_tool called with result: Tool message"))
445
+
446
+ result = middleware.after_model(state)
447
+ # No interrupts needed
448
+ assert result is None
449
+
441
450
 
442
451
  def test_human_in_the_loop_middleware_single_tool_edit() -> None:
443
452
  """Test HumanInTheLoopMiddleware with single tool edit response."""
File without changes
File without changes