langchain-dev-utils 1.3.0__tar.gz → 1.3.1__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.
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/PKG-INFO +2 -1
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/pyproject.toml +47 -47
- langchain_dev_utils-1.3.1/src/langchain_dev_utils/__init__.py +1 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/factory.py +1 -1
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/middleware/__init__.py +3 -0
- langchain_dev_utils-1.3.1/src/langchain_dev_utils/agents/middleware/handoffs.py +138 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/__init__.py +0 -1
- langchain_dev_utils-1.3.1/tests/test_handoffs_middleware.py +75 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/uv.lock +123 -123
- langchain_dev_utils-1.3.0/src/langchain_dev_utils/__init__.py +0 -1
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/.gitignore +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/.python-version +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/.vscode/settings.json +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/LICENSE +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/README.md +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/README_cn.md +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/_utils.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/__init__.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/file_system.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/middleware/format_prompt.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/middleware/model_fallback.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/middleware/model_router.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/middleware/plan.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/middleware/summarization.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/middleware/tool_call_repair.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/middleware/tool_emulator.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/middleware/tool_selection.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/plan.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/wrap.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/chat_models/__init__.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/chat_models/adapters/__init__.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/chat_models/adapters/openai_compatible.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/chat_models/base.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/chat_models/types.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/embeddings/__init__.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/embeddings/base.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/message_convert/__init__.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/message_convert/content.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/message_convert/format.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/pipeline/__init__.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/pipeline/parallel.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/pipeline/sequential.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/pipeline/types.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/py.typed +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/tool_calling/__init__.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/tool_calling/human_in_the_loop.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/tool_calling/utils.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/test_agent.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/test_chat_models.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/test_human_in_the_loop.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/test_load_embbeding.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/test_load_model.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/test_messages.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/test_model_tool_emulator.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/test_pipline.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/test_plan_middleware.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/test_router_model.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/test_tool_call_repair.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/test_tool_calling.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/test_wrap_agent.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/utils/__init__.py +0 -0
- {langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/tests/utils/register.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langchain-dev-utils
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.1
|
|
4
4
|
Summary: A practical utility library for LangChain and LangGraph development
|
|
5
5
|
Project-URL: Source Code, https://github.com/TBice123123/langchain-dev-utils
|
|
6
6
|
Project-URL: repository, https://github.com/TBice123123/langchain-dev-utils
|
|
@@ -8,6 +8,7 @@ Project-URL: documentation, https://tbice123123.github.io/langchain-dev-utils
|
|
|
8
8
|
Author-email: tiebingice <tiebingice123@outlook.com>
|
|
9
9
|
License-File: LICENSE
|
|
10
10
|
Requires-Python: >=3.11
|
|
11
|
+
Requires-Dist: langchain-core>=1.2.5
|
|
11
12
|
Requires-Dist: langchain>=1.2.0
|
|
12
13
|
Requires-Dist: langgraph>=1.0.0
|
|
13
14
|
Provides-Extra: standard
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
[project]
|
|
2
|
-
name = "langchain-dev-utils"
|
|
3
|
-
version = "1.3.
|
|
4
|
-
description = "A practical utility library for LangChain and LangGraph development"
|
|
5
|
-
readme = "README.md"
|
|
6
|
-
authors = [{ name = "tiebingice", email = "tiebingice123@outlook.com" }]
|
|
7
|
-
requires-python = ">=3.11"
|
|
8
|
-
dependencies = ["langchain>=1.2.0", "langgraph>=1.0.0"]
|
|
9
|
-
|
|
10
|
-
[project.urls]
|
|
11
|
-
"Source Code" = "https://github.com/TBice123123/langchain-dev-utils"
|
|
12
|
-
repository = "https://github.com/TBice123123/langchain-dev-utils"
|
|
13
|
-
documentation = "https://tbice123123.github.io/langchain-dev-utils"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
[project.optional-dependencies]
|
|
17
|
-
standard = ["json-repair>=0.53.1", "langchain-openai"]
|
|
18
|
-
|
|
19
|
-
[build-system]
|
|
20
|
-
requires = ["hatchling"]
|
|
21
|
-
build-backend = "hatchling.build"
|
|
22
|
-
|
|
23
|
-
[tool.hatch.build]
|
|
24
|
-
exclude = ["/data", "/docs", "mkdocs.yml"]
|
|
25
|
-
|
|
26
|
-
[tool.pytest.ini_options]
|
|
27
|
-
asyncio_mode = "auto"
|
|
28
|
-
testpaths = ["tests"]
|
|
29
|
-
python_files = ["test_*.py"]
|
|
30
|
-
python_functions = ["test_*"]
|
|
31
|
-
|
|
32
|
-
[dependency-groups]
|
|
33
|
-
dev = ["langchain-model-profiles>=0.0.5", "ruff>=0.14.5"]
|
|
34
|
-
docs = ["mkdocs-material>=9.7.0", "mkdocs-static-i18n>=1.3.0"]
|
|
35
|
-
tests = [
|
|
36
|
-
"python-dotenv>=1.1.1",
|
|
37
|
-
"langchain-tests>=1.0.0",
|
|
38
|
-
"langchain-deepseek>=1.0.0",
|
|
39
|
-
"langchain-qwq>=0.3.0",
|
|
40
|
-
"langchain-ollama>=1.0.0",
|
|
41
|
-
"langchain-community>=0.4.1",
|
|
42
|
-
]
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
[tool.ruff.lint]
|
|
46
|
-
select = ["E", "F", "I", "PGH003", "T201"]
|
|
47
|
-
ignore = ["E501"]
|
|
1
|
+
[project]
|
|
2
|
+
name = "langchain-dev-utils"
|
|
3
|
+
version = "1.3.1"
|
|
4
|
+
description = "A practical utility library for LangChain and LangGraph development"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
authors = [{ name = "tiebingice", email = "tiebingice123@outlook.com" }]
|
|
7
|
+
requires-python = ">=3.11"
|
|
8
|
+
dependencies = ["langchain>=1.2.0", "langchain-core>=1.2.5", "langgraph>=1.0.0"]
|
|
9
|
+
|
|
10
|
+
[project.urls]
|
|
11
|
+
"Source Code" = "https://github.com/TBice123123/langchain-dev-utils"
|
|
12
|
+
repository = "https://github.com/TBice123123/langchain-dev-utils"
|
|
13
|
+
documentation = "https://tbice123123.github.io/langchain-dev-utils"
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
[project.optional-dependencies]
|
|
17
|
+
standard = ["json-repair>=0.53.1", "langchain-openai"]
|
|
18
|
+
|
|
19
|
+
[build-system]
|
|
20
|
+
requires = ["hatchling"]
|
|
21
|
+
build-backend = "hatchling.build"
|
|
22
|
+
|
|
23
|
+
[tool.hatch.build]
|
|
24
|
+
exclude = ["/data", "/docs", "mkdocs.yml"]
|
|
25
|
+
|
|
26
|
+
[tool.pytest.ini_options]
|
|
27
|
+
asyncio_mode = "auto"
|
|
28
|
+
testpaths = ["tests"]
|
|
29
|
+
python_files = ["test_*.py"]
|
|
30
|
+
python_functions = ["test_*"]
|
|
31
|
+
|
|
32
|
+
[dependency-groups]
|
|
33
|
+
dev = ["langchain-model-profiles>=0.0.5", "ruff>=0.14.5"]
|
|
34
|
+
docs = ["mkdocs-material>=9.7.0", "mkdocs-static-i18n>=1.3.0"]
|
|
35
|
+
tests = [
|
|
36
|
+
"python-dotenv>=1.1.1",
|
|
37
|
+
"langchain-tests>=1.0.0",
|
|
38
|
+
"langchain-deepseek>=1.0.0",
|
|
39
|
+
"langchain-qwq>=0.3.0",
|
|
40
|
+
"langchain-ollama>=1.0.0",
|
|
41
|
+
"langchain-community>=0.4.1",
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
[tool.ruff.lint]
|
|
46
|
+
select = ["E", "F", "I", "PGH003", "T201"]
|
|
47
|
+
ignore = ["E501"]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.3.1"
|
{langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/factory.py
RENAMED
|
@@ -5,9 +5,9 @@ from langchain.agents.middleware.types import (
|
|
|
5
5
|
AgentMiddleware,
|
|
6
6
|
AgentState,
|
|
7
7
|
ResponseT,
|
|
8
|
+
StateT_co,
|
|
8
9
|
_InputAgentState,
|
|
9
10
|
_OutputAgentState,
|
|
10
|
-
StateT_co,
|
|
11
11
|
)
|
|
12
12
|
from langchain.agents.structured_output import ResponseFormat
|
|
13
13
|
from langchain_core.messages import SystemMessage
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from .format_prompt import format_prompt
|
|
2
|
+
from .handoffs import HandoffsAgentMiddleware, create_handoffs_tool
|
|
2
3
|
from .model_fallback import ModelFallbackMiddleware
|
|
3
4
|
from .model_router import ModelRouterMiddleware
|
|
4
5
|
from .plan import (
|
|
@@ -24,4 +25,6 @@ __all__ = [
|
|
|
24
25
|
"ModelRouterMiddleware",
|
|
25
26
|
"ToolCallRepairMiddleware",
|
|
26
27
|
"format_prompt",
|
|
28
|
+
"create_handoffs_tool",
|
|
29
|
+
"HandoffsAgentMiddleware",
|
|
27
30
|
]
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
from typing import Any, Awaitable, Callable
|
|
2
|
+
|
|
3
|
+
from langchain.agents import AgentState
|
|
4
|
+
from langchain.agents.middleware import AgentMiddleware, ModelRequest, ModelResponse
|
|
5
|
+
from langchain.agents.middleware.types import ModelCallResult
|
|
6
|
+
from langchain.tools import BaseTool, ToolRuntime, tool
|
|
7
|
+
from langchain_core.language_models.chat_models import BaseChatModel
|
|
8
|
+
from langchain_core.messages import SystemMessage, ToolMessage
|
|
9
|
+
from langgraph.types import Command
|
|
10
|
+
from typing_extensions import NotRequired, Optional, TypedDict
|
|
11
|
+
|
|
12
|
+
from langchain_dev_utils.chat_models import load_chat_model
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class MultiAgentState(AgentState):
|
|
16
|
+
active_agent: NotRequired[str]
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class AgentConfig(TypedDict):
|
|
20
|
+
model: NotRequired[str | BaseChatModel]
|
|
21
|
+
prompt: str | SystemMessage
|
|
22
|
+
tools: list[BaseTool | dict[str, Any]]
|
|
23
|
+
default: NotRequired[bool]
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def create_handoffs_tool(
|
|
27
|
+
agent_name: str,
|
|
28
|
+
tool_name: Optional[str] = None,
|
|
29
|
+
tool_description: Optional[str] = None,
|
|
30
|
+
):
|
|
31
|
+
"""Create a tool for handoffs to a specified agent.
|
|
32
|
+
|
|
33
|
+
Args:
|
|
34
|
+
agent_name (str): The name of the agent to transfer to.
|
|
35
|
+
tool_name (Optional[str], optional): The name of the tool. Defaults to None.
|
|
36
|
+
tool_description (Optional[str], optional): The description of the tool. Defaults to None.
|
|
37
|
+
|
|
38
|
+
Returns:
|
|
39
|
+
BaseTool: A tool instance for handoffs to the specified agent.
|
|
40
|
+
|
|
41
|
+
Example:
|
|
42
|
+
Basic usage
|
|
43
|
+
>>> from langchain_dev_utils.agents.middleware import create_handoffs_tool
|
|
44
|
+
>>> handoffs_tool = create_handoffs_tool("time_agent")
|
|
45
|
+
"""
|
|
46
|
+
if tool_name is None:
|
|
47
|
+
tool_name = f"transfer_to_{agent_name}"
|
|
48
|
+
if not tool_name.endswith("_agent"):
|
|
49
|
+
tool_name += "_agent"
|
|
50
|
+
|
|
51
|
+
if tool_description is None:
|
|
52
|
+
tool_description = f"Transfer to the {agent_name}"
|
|
53
|
+
|
|
54
|
+
@tool(name_or_callable=tool_name, description=tool_description)
|
|
55
|
+
def handoffs_tool(runtime: ToolRuntime) -> Command:
|
|
56
|
+
return Command(
|
|
57
|
+
update={
|
|
58
|
+
"messages": [
|
|
59
|
+
ToolMessage(
|
|
60
|
+
content=f"Transferred to {agent_name}",
|
|
61
|
+
tool_call_id=runtime.tool_call_id,
|
|
62
|
+
)
|
|
63
|
+
],
|
|
64
|
+
"active_agent": agent_name,
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
return handoffs_tool
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _get_default_active_agent(state: dict[str, AgentConfig]) -> Optional[str]:
|
|
72
|
+
for agent_name, config in state.items():
|
|
73
|
+
if config.get("default", False):
|
|
74
|
+
return agent_name
|
|
75
|
+
return None
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
class HandoffsAgentMiddleware(AgentMiddleware):
|
|
79
|
+
"""Agent middleware for switching between multiple agents.
|
|
80
|
+
This middleware dynamically replaces model call parameters based on the currently active agent configuration, enabling seamless switching between different agents.
|
|
81
|
+
|
|
82
|
+
Args:
|
|
83
|
+
agents_config (dict[str, AgentConfig]): A dictionary of agent configurations.
|
|
84
|
+
|
|
85
|
+
Examples:
|
|
86
|
+
```python
|
|
87
|
+
from langchain_dev_utils.agents.middleware import HandoffsAgentMiddleware
|
|
88
|
+
middleware = HandoffsAgentMiddleware(agents_config)
|
|
89
|
+
```
|
|
90
|
+
"""
|
|
91
|
+
|
|
92
|
+
state_schema = MultiAgentState
|
|
93
|
+
|
|
94
|
+
def __init__(self, agents_config: dict[str, AgentConfig]):
|
|
95
|
+
default_agent_name = _get_default_active_agent(agents_config)
|
|
96
|
+
if default_agent_name is None:
|
|
97
|
+
raise ValueError(
|
|
98
|
+
"No default agent found, you must set one by set default=True"
|
|
99
|
+
)
|
|
100
|
+
self.default_agent_name = default_agent_name
|
|
101
|
+
self.agents_config = agents_config
|
|
102
|
+
|
|
103
|
+
def _get_active_agent_config(self, request: ModelRequest) -> dict[str, Any]:
|
|
104
|
+
active_agent_name = request.state.get("active_agent", self.default_agent_name)
|
|
105
|
+
|
|
106
|
+
_config = self.agents_config[active_agent_name]
|
|
107
|
+
|
|
108
|
+
params = {}
|
|
109
|
+
if _config.get("model"):
|
|
110
|
+
model = _config.get("model")
|
|
111
|
+
if isinstance(model, str):
|
|
112
|
+
model = load_chat_model(model)
|
|
113
|
+
params["model"] = model
|
|
114
|
+
if _config.get("prompt"):
|
|
115
|
+
params["system_prompt"] = _config.get("prompt")
|
|
116
|
+
if _config.get("tools"):
|
|
117
|
+
params["tools"] = _config.get("tools")
|
|
118
|
+
return params
|
|
119
|
+
|
|
120
|
+
def wrap_model_call(
|
|
121
|
+
self, request: ModelRequest, handler: Callable[[ModelRequest], ModelResponse]
|
|
122
|
+
) -> ModelCallResult:
|
|
123
|
+
override_kwargs = self._get_active_agent_config(request)
|
|
124
|
+
if override_kwargs:
|
|
125
|
+
return handler(request.override(**override_kwargs))
|
|
126
|
+
else:
|
|
127
|
+
return handler(request)
|
|
128
|
+
|
|
129
|
+
async def awrap_model_call(
|
|
130
|
+
self,
|
|
131
|
+
request: ModelRequest,
|
|
132
|
+
handler: Callable[[ModelRequest], Awaitable[ModelResponse]],
|
|
133
|
+
) -> ModelCallResult:
|
|
134
|
+
override_kwargs = self._get_active_agent_config(request)
|
|
135
|
+
if override_kwargs:
|
|
136
|
+
return await handler(request.override(**override_kwargs))
|
|
137
|
+
else:
|
|
138
|
+
return await handler(request)
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
from langchain.tools import tool
|
|
3
|
+
from langchain_core.messages import HumanMessage, ToolMessage
|
|
4
|
+
from langchain_dev_utils.agents import create_agent
|
|
5
|
+
from langchain_dev_utils.agents.middleware import (
|
|
6
|
+
HandoffsAgentMiddleware,
|
|
7
|
+
create_handoffs_tool,
|
|
8
|
+
)
|
|
9
|
+
from langchain_dev_utils.agents.middleware.handoffs import AgentConfig
|
|
10
|
+
from tests.utils.register import register_all_model_providers
|
|
11
|
+
|
|
12
|
+
register_all_model_providers()
|
|
13
|
+
|
|
14
|
+
transfer_time_agent = create_handoffs_tool("time_agent")
|
|
15
|
+
transfer_talk_agent = create_handoffs_tool("talk_agent")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@tool
|
|
19
|
+
def get_current_time() -> str:
|
|
20
|
+
"""Get the current time."""
|
|
21
|
+
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
agents_config: dict[str, AgentConfig] = {
|
|
25
|
+
"time_agent": {
|
|
26
|
+
"model": "zai:glm-4.5",
|
|
27
|
+
"prompt": "你是一个时间助手,你可以回答用户的时间相关问题",
|
|
28
|
+
"tools": [transfer_talk_agent, get_current_time],
|
|
29
|
+
},
|
|
30
|
+
"talk_agent": {
|
|
31
|
+
"prompt": "你是一个对话助手,你可以回答用户的问题",
|
|
32
|
+
"tools": [transfer_time_agent],
|
|
33
|
+
"default": True,
|
|
34
|
+
},
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def test_handoffs_middleware():
|
|
39
|
+
agent = create_agent(
|
|
40
|
+
model="dashscope:qwen-flash",
|
|
41
|
+
middleware=[HandoffsAgentMiddleware(agents_config)],
|
|
42
|
+
tools=[
|
|
43
|
+
get_current_time,
|
|
44
|
+
transfer_time_agent,
|
|
45
|
+
transfer_talk_agent,
|
|
46
|
+
],
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
response = agent.invoke({"messages": [HumanMessage(content="get current time")]})
|
|
50
|
+
|
|
51
|
+
assert response
|
|
52
|
+
assert response["messages"][-1].response_metadata.get("model_name") == "glm-4.5"
|
|
53
|
+
assert isinstance(response["messages"][-2], ToolMessage)
|
|
54
|
+
assert "active_agent" in response and response["active_agent"] == "time_agent"
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
async def test_handoffs_middleware_async():
|
|
58
|
+
agent = create_agent(
|
|
59
|
+
model="dashscope:qwen-flash",
|
|
60
|
+
middleware=[HandoffsAgentMiddleware(agents_config)],
|
|
61
|
+
tools=[
|
|
62
|
+
get_current_time,
|
|
63
|
+
transfer_time_agent,
|
|
64
|
+
transfer_talk_agent,
|
|
65
|
+
],
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
response = await agent.ainvoke(
|
|
69
|
+
{"messages": [HumanMessage(content="get current time")]}
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
assert response
|
|
73
|
+
assert response["messages"][-1].response_metadata.get("model_name") == "glm-4.5"
|
|
74
|
+
assert isinstance(response["messages"][-2], ToolMessage)
|
|
75
|
+
assert "active_agent" in response and response["active_agent"] == "time_agent"
|
|
@@ -752,7 +752,7 @@ wheels = [
|
|
|
752
752
|
|
|
753
753
|
[[package]]
|
|
754
754
|
name = "langchain-classic"
|
|
755
|
-
version = "1.0.
|
|
755
|
+
version = "1.0.1"
|
|
756
756
|
source = { registry = "https://pypi.mirrors.ustc.edu.cn/simple/" }
|
|
757
757
|
dependencies = [
|
|
758
758
|
{ name = "langchain-core" },
|
|
@@ -763,9 +763,9 @@ dependencies = [
|
|
|
763
763
|
{ name = "requests" },
|
|
764
764
|
{ name = "sqlalchemy" },
|
|
765
765
|
]
|
|
766
|
-
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
766
|
+
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/7c/4b/bd03518418ece4c13192a504449b58c28afee915dc4a6f4b02622458cb1b/langchain_classic-1.0.1.tar.gz", hash = "sha256:40a499684df36b005a1213735dc7f8dca8f5eb67978d6ec763e7a49780864fdc", size = 10516020, upload-time = "2025-12-23T22:55:22.615Z" }
|
|
767
767
|
wheels = [
|
|
768
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
768
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/83/0f/eab87f017d7fe28e8c11fff614f4cdbfae32baadb77d0f79e9f922af1df2/langchain_classic-1.0.1-py3-none-any.whl", hash = "sha256:131d83a02bb80044c68fedc1ab4ae885d5b8f8c2c742d8ab9e7534ad9cda8e80", size = 1040666, upload-time = "2025-12-23T22:55:21.025Z" },
|
|
769
769
|
]
|
|
770
770
|
|
|
771
771
|
[[package]]
|
|
@@ -829,6 +829,7 @@ version = "1.3.0"
|
|
|
829
829
|
source = { editable = "." }
|
|
830
830
|
dependencies = [
|
|
831
831
|
{ name = "langchain" },
|
|
832
|
+
{ name = "langchain-core" },
|
|
832
833
|
{ name = "langgraph" },
|
|
833
834
|
]
|
|
834
835
|
|
|
@@ -860,6 +861,7 @@ tests = [
|
|
|
860
861
|
requires-dist = [
|
|
861
862
|
{ name = "json-repair", marker = "extra == 'standard'", specifier = ">=0.53.1" },
|
|
862
863
|
{ name = "langchain", specifier = ">=1.2.0" },
|
|
864
|
+
{ name = "langchain-core", specifier = ">=1.2.5" },
|
|
863
865
|
{ name = "langchain-openai", marker = "extra == 'standard'" },
|
|
864
866
|
{ name = "langgraph", specifier = ">=1.0.0" },
|
|
865
867
|
]
|
|
@@ -911,16 +913,16 @@ wheels = [
|
|
|
911
913
|
|
|
912
914
|
[[package]]
|
|
913
915
|
name = "langchain-openai"
|
|
914
|
-
version = "1.1.
|
|
916
|
+
version = "1.1.6"
|
|
915
917
|
source = { registry = "https://pypi.mirrors.ustc.edu.cn/simple/" }
|
|
916
918
|
dependencies = [
|
|
917
919
|
{ name = "langchain-core" },
|
|
918
920
|
{ name = "openai" },
|
|
919
921
|
{ name = "tiktoken" },
|
|
920
922
|
]
|
|
921
|
-
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
923
|
+
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/ae/67/228dc28b4498ea16422577013b5bb4ba35a1b99f8be975d6747c7a9f7e6a/langchain_openai-1.1.6.tar.gz", hash = "sha256:e306612654330ae36fb6bbe36db91c98534312afade19e140c3061fe4208dac8", size = 1038310, upload-time = "2025-12-18T17:58:52.84Z" }
|
|
922
924
|
wheels = [
|
|
923
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
925
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/db/5b/1f6521df83c1a8e8d3f52351883b59683e179c0aa1bec75d0a77a394c9e7/langchain_openai-1.1.6-py3-none-any.whl", hash = "sha256:c42d04a67a85cee1d994afe400800d2b09ebf714721345f0b651eb06a02c3948", size = 84701, upload-time = "2025-12-18T17:58:51.527Z" },
|
|
924
926
|
]
|
|
925
927
|
|
|
926
928
|
[[package]]
|
|
@@ -939,7 +941,7 @@ wheels = [
|
|
|
939
941
|
|
|
940
942
|
[[package]]
|
|
941
943
|
name = "langchain-tests"
|
|
942
|
-
version = "1.1.
|
|
944
|
+
version = "1.1.1"
|
|
943
945
|
source = { registry = "https://pypi.mirrors.ustc.edu.cn/simple/" }
|
|
944
946
|
dependencies = [
|
|
945
947
|
{ name = "httpx" },
|
|
@@ -954,9 +956,9 @@ dependencies = [
|
|
|
954
956
|
{ name = "syrupy" },
|
|
955
957
|
{ name = "vcrpy" },
|
|
956
958
|
]
|
|
957
|
-
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
959
|
+
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/92/63/7b9198ff67a9bac8af06d1a00a975e973565b0988e3785372ec9eec2c64e/langchain_tests-1.1.1.tar.gz", hash = "sha256:f7ebaa9329f1f61b5a18e7397f516f214b4ae4524c77a947f491c4add704f7c6", size = 178525, upload-time = "2025-12-16T20:28:04.698Z" }
|
|
958
960
|
wheels = [
|
|
959
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
961
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/b5/00/140cb1ce6f531981d1393993ec04a6fa55b826737f82392c9f0513bd2585/langchain_tests-1.1.1-py3-none-any.whl", hash = "sha256:26dc53366e6e7ae18856dad6095f52d13452355933af12372969f28dc240c713", size = 52128, upload-time = "2025-12-16T20:28:03.344Z" },
|
|
960
962
|
]
|
|
961
963
|
|
|
962
964
|
[[package]]
|
|
@@ -1016,20 +1018,20 @@ wheels = [
|
|
|
1016
1018
|
|
|
1017
1019
|
[[package]]
|
|
1018
1020
|
name = "langgraph-sdk"
|
|
1019
|
-
version = "0.3.
|
|
1021
|
+
version = "0.3.1"
|
|
1020
1022
|
source = { registry = "https://pypi.mirrors.ustc.edu.cn/simple/" }
|
|
1021
1023
|
dependencies = [
|
|
1022
1024
|
{ name = "httpx" },
|
|
1023
1025
|
{ name = "orjson" },
|
|
1024
1026
|
]
|
|
1025
|
-
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1027
|
+
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/a9/d3/b6be0b0aba2a53a8920a2b0b4328a83121ec03eea9952e576d06a4182f6f/langgraph_sdk-0.3.1.tar.gz", hash = "sha256:f6dadfd2444eeff3e01405a9005c95fb3a028d4bd954ebec80ea6150084f92bb", size = 130312, upload-time = "2025-12-18T22:11:47.42Z" }
|
|
1026
1028
|
wheels = [
|
|
1027
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1029
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/ab/fe/0c1c9c01a154eba62b20b02fabe811fd94a2b810061ae9e4d8462b8cf85a/langgraph_sdk-0.3.1-py3-none-any.whl", hash = "sha256:0b856923bfd20bf3441ce9d03bef488aa333fb610e972618799a9d584436acad", size = 66517, upload-time = "2025-12-18T22:11:46.625Z" },
|
|
1028
1030
|
]
|
|
1029
1031
|
|
|
1030
1032
|
[[package]]
|
|
1031
1033
|
name = "langsmith"
|
|
1032
|
-
version = "0.
|
|
1034
|
+
version = "0.5.1"
|
|
1033
1035
|
source = { registry = "https://pypi.mirrors.ustc.edu.cn/simple/" }
|
|
1034
1036
|
dependencies = [
|
|
1035
1037
|
{ name = "httpx" },
|
|
@@ -1041,9 +1043,9 @@ dependencies = [
|
|
|
1041
1043
|
{ name = "uuid-utils" },
|
|
1042
1044
|
{ name = "zstandard" },
|
|
1043
1045
|
]
|
|
1044
|
-
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1046
|
+
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/fb/92/967ba83ec40448f46e23f231731b1564207af5ffba32aecef4e1f2f9f83f/langsmith-0.5.1.tar.gz", hash = "sha256:6a10b38cb4ce58941b7f1dbdf41a461868605dd0162bf05d17690f2e4b6e50e7", size = 871631, upload-time = "2025-12-24T19:50:24.823Z" }
|
|
1045
1047
|
wheels = [
|
|
1046
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1048
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/19/67/1720b01e58d3487a44c780a86aabad95d9eaaf6b2fa8d0718c98f0eca18d/langsmith-0.5.1-py3-none-any.whl", hash = "sha256:70aa2a4c75add3f723c3bbac80dbb8adc575077834d3a733ee1ec133206ff351", size = 275527, upload-time = "2025-12-24T19:50:22.808Z" },
|
|
1047
1049
|
]
|
|
1048
1050
|
|
|
1049
1051
|
[[package]]
|
|
@@ -1143,14 +1145,14 @@ wheels = [
|
|
|
1143
1145
|
|
|
1144
1146
|
[[package]]
|
|
1145
1147
|
name = "marshmallow"
|
|
1146
|
-
version = "3.26.
|
|
1148
|
+
version = "3.26.2"
|
|
1147
1149
|
source = { registry = "https://pypi.mirrors.ustc.edu.cn/simple/" }
|
|
1148
1150
|
dependencies = [
|
|
1149
1151
|
{ name = "packaging" },
|
|
1150
1152
|
]
|
|
1151
|
-
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1153
|
+
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/55/79/de6c16cc902f4fc372236926b0ce2ab7845268dcc30fb2fbb7f71b418631/marshmallow-3.26.2.tar.gz", hash = "sha256:bbe2adb5a03e6e3571b573f42527c6fe926e17467833660bebd11593ab8dfd57", size = 222095, upload-time = "2025-12-22T06:53:53.309Z" }
|
|
1152
1154
|
wheels = [
|
|
1153
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1155
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/be/2f/5108cb3ee4ba6501748c4908b908e55f42a5b66245b4cfe0c99326e1ef6e/marshmallow-3.26.2-py3-none-any.whl", hash = "sha256:013fa8a3c4c276c24d26d84ce934dc964e2aa794345a0f8c7e5a7191482c8a73", size = 50964, upload-time = "2025-12-22T06:53:51.801Z" },
|
|
1154
1156
|
]
|
|
1155
1157
|
|
|
1156
1158
|
[[package]]
|
|
@@ -1211,7 +1213,7 @@ wheels = [
|
|
|
1211
1213
|
|
|
1212
1214
|
[[package]]
|
|
1213
1215
|
name = "mkdocs-material"
|
|
1214
|
-
version = "9.7.
|
|
1216
|
+
version = "9.7.1"
|
|
1215
1217
|
source = { registry = "https://pypi.mirrors.ustc.edu.cn/simple/" }
|
|
1216
1218
|
dependencies = [
|
|
1217
1219
|
{ name = "babel" },
|
|
@@ -1226,9 +1228,9 @@ dependencies = [
|
|
|
1226
1228
|
{ name = "pymdown-extensions" },
|
|
1227
1229
|
{ name = "requests" },
|
|
1228
1230
|
]
|
|
1229
|
-
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1231
|
+
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/27/e2/2ffc356cd72f1473d07c7719d82a8f2cbd261666828614ecb95b12169f41/mkdocs_material-9.7.1.tar.gz", hash = "sha256:89601b8f2c3e6c6ee0a918cc3566cb201d40bf37c3cd3c2067e26fadb8cce2b8", size = 4094392, upload-time = "2025-12-18T09:49:00.308Z" }
|
|
1230
1232
|
wheels = [
|
|
1231
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1233
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/3e/32/ed071cb721aca8c227718cffcf7bd539620e9799bbf2619e90c757bfd030/mkdocs_material-9.7.1-py3-none-any.whl", hash = "sha256:3f6100937d7d731f87f1e3e3b021c97f7239666b9ba1151ab476cabb96c60d5c", size = 9297166, upload-time = "2025-12-18T09:48:56.664Z" },
|
|
1232
1234
|
]
|
|
1233
1235
|
|
|
1234
1236
|
[[package]]
|
|
@@ -1380,83 +1382,81 @@ wheels = [
|
|
|
1380
1382
|
|
|
1381
1383
|
[[package]]
|
|
1382
1384
|
name = "numpy"
|
|
1383
|
-
version = "2.
|
|
1384
|
-
source = { registry = "https://pypi.mirrors.ustc.edu.cn/simple/" }
|
|
1385
|
-
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1386
|
-
wheels = [
|
|
1387
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1388
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1389
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1390
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1391
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1392
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1393
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1394
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1395
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1396
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1397
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1398
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1399
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1400
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1401
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1402
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1403
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1404
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1405
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1406
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1407
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1408
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1409
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1410
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1411
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1412
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1413
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1414
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1415
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1416
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1417
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1418
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1419
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1420
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1421
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1422
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1423
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1424
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1425
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1426
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1427
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1428
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1429
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1430
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1431
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1432
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1433
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1434
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1435
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1436
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1437
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1438
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1439
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1440
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1441
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1442
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1443
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1444
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1445
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1446
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1447
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1448
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1449
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1450
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1451
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1452
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1453
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1454
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1455
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1456
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1457
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1458
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/b8/50/94ccd8a2b141cb50651fddd4f6a48874acb3c91c8f0842b08a6afc4b0b21/numpy-2.3.5-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63c0e9e7eea69588479ebf4a8a270d5ac22763cc5854e9a7eae952a3908103f7", size = 16729263, upload-time = "2025-11-16T22:52:36.369Z" },
|
|
1459
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/2d/ee/346fa473e666fe14c52fcdd19ec2424157290a032d4c41f98127bfb31ac7/numpy-2.3.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f16417ec91f12f814b10bafe79ef77e70113a2f5f7018640e7425ff979253425", size = 12967213, upload-time = "2025-11-16T22:52:39.38Z" },
|
|
1385
|
+
version = "2.4.0"
|
|
1386
|
+
source = { registry = "https://pypi.mirrors.ustc.edu.cn/simple/" }
|
|
1387
|
+
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/a4/7a/6a3d14e205d292b738db449d0de649b373a59edb0d0b4493821d0a3e8718/numpy-2.4.0.tar.gz", hash = "sha256:6e504f7b16118198f138ef31ba24d985b124c2c469fe8467007cf30fd992f934", size = 20685720, upload-time = "2025-12-20T16:18:19.023Z" }
|
|
1388
|
+
wheels = [
|
|
1389
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/26/7e/7bae7cbcc2f8132271967aa03e03954fc1e48aa1f3bf32b29ca95fbef352/numpy-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:316b2f2584682318539f0bcaca5a496ce9ca78c88066579ebd11fd06f8e4741e", size = 16940166, upload-time = "2025-12-20T16:15:43.434Z" },
|
|
1390
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/0f/27/6c13f5b46776d6246ec884ac5817452672156a506d08a1f2abb39961930a/numpy-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a2718c1de8504121714234b6f8241d0019450353276c88b9453c9c3d92e101db", size = 12641781, upload-time = "2025-12-20T16:15:45.701Z" },
|
|
1391
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/14/1c/83b4998d4860d15283241d9e5215f28b40ac31f497c04b12fa7f428ff370/numpy-2.4.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:21555da4ec4a0c942520ead42c3b0dc9477441e085c42b0fbdd6a084869a6f6b", size = 5470247, upload-time = "2025-12-20T16:15:47.943Z" },
|
|
1392
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/54/08/cbce72c835d937795571b0464b52069f869c9e78b0c076d416c5269d2718/numpy-2.4.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:413aa561266a4be2d06cd2b9665e89d9f54c543f418773076a76adcf2af08bc7", size = 6799807, upload-time = "2025-12-20T16:15:49.795Z" },
|
|
1393
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/ff/be/2e647961cd8c980591d75cdcd9e8f647d69fbe05e2a25613dc0a2ea5fb1a/numpy-2.4.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0feafc9e03128074689183031181fac0897ff169692d8492066e949041096548", size = 14701992, upload-time = "2025-12-20T16:15:51.615Z" },
|
|
1394
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/a2/fb/e1652fb8b6fd91ce6ed429143fe2e01ce714711e03e5b762615e7b36172c/numpy-2.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8fdfed3deaf1928fb7667d96e0567cdf58c2b370ea2ee7e586aa383ec2cb346", size = 16646871, upload-time = "2025-12-20T16:15:54.129Z" },
|
|
1395
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/62/23/d841207e63c4322842f7cd042ae981cffe715c73376dcad8235fb31debf1/numpy-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e06a922a469cae9a57100864caf4f8a97a1026513793969f8ba5b63137a35d25", size = 16487190, upload-time = "2025-12-20T16:15:56.147Z" },
|
|
1396
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/bc/a0/6a842c8421ebfdec0a230e65f61e0dabda6edbef443d999d79b87c273965/numpy-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:927ccf5cd17c48f801f4ed43a7e5673a2724bd2171460be3e3894e6e332ef83a", size = 18580762, upload-time = "2025-12-20T16:15:58.524Z" },
|
|
1397
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/0a/d1/c79e0046641186f2134dde05e6181825b911f8bdcef31b19ddd16e232847/numpy-2.4.0-cp311-cp311-win32.whl", hash = "sha256:882567b7ae57c1b1a0250208cc21a7976d8cbcc49d5a322e607e6f09c9e0bd53", size = 6233359, upload-time = "2025-12-20T16:16:00.938Z" },
|
|
1398
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/fc/f0/74965001d231f28184d6305b8cdc1b6fcd4bf23033f6cb039cfe76c9fca7/numpy-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:8b986403023c8f3bf8f487c2e6186afda156174d31c175f747d8934dfddf3479", size = 12601132, upload-time = "2025-12-20T16:16:02.484Z" },
|
|
1399
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/65/32/55408d0f46dfebce38017f5bd931affa7256ad6beac1a92a012e1fbc67a7/numpy-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:3f3096405acc48887458bbf9f6814d43785ac7ba2a57ea6442b581dedbc60ce6", size = 10573977, upload-time = "2025-12-20T16:16:04.77Z" },
|
|
1400
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/8b/ff/f6400ffec95de41c74b8e73df32e3fff1830633193a7b1e409be7fb1bb8c/numpy-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2a8b6bb8369abefb8bd1801b054ad50e02b3275c8614dc6e5b0373c305291037", size = 16653117, upload-time = "2025-12-20T16:16:06.709Z" },
|
|
1401
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/fd/28/6c23e97450035072e8d830a3c411bf1abd1f42c611ff9d29e3d8f55c6252/numpy-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2e284ca13d5a8367e43734148622caf0b261b275673823593e3e3634a6490f83", size = 12369711, upload-time = "2025-12-20T16:16:08.758Z" },
|
|
1402
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/bc/af/acbef97b630ab1bb45e6a7d01d1452e4251aa88ce680ac36e56c272120ec/numpy-2.4.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:49ff32b09f5aa0cd30a20c2b39db3e669c845589f2b7fc910365210887e39344", size = 5198355, upload-time = "2025-12-20T16:16:10.902Z" },
|
|
1403
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/c1/c8/4e0d436b66b826f2e53330adaa6311f5cac9871a5b5c31ad773b27f25a74/numpy-2.4.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:36cbfb13c152b1c7c184ddac43765db8ad672567e7bafff2cc755a09917ed2e6", size = 6545298, upload-time = "2025-12-20T16:16:12.607Z" },
|
|
1404
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/ef/27/e1f5d144ab54eac34875e79037011d511ac57b21b220063310cb96c80fbc/numpy-2.4.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:35ddc8f4914466e6fc954c76527aa91aa763682a4f6d73249ef20b418fe6effb", size = 14398387, upload-time = "2025-12-20T16:16:14.257Z" },
|
|
1405
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/67/64/4cb909dd5ab09a9a5d086eff9586e69e827b88a5585517386879474f4cf7/numpy-2.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc578891de1db95b2a35001b695451767b580bb45753717498213c5ff3c41d63", size = 16363091, upload-time = "2025-12-20T16:16:17.32Z" },
|
|
1406
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/9d/9c/8efe24577523ec6809261859737cf117b0eb6fdb655abdfdc81b2e468ce4/numpy-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98e81648e0b36e325ab67e46b5400a7a6d4a22b8a7c8e8bbfe20e7db7906bf95", size = 16176394, upload-time = "2025-12-20T16:16:19.524Z" },
|
|
1407
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/61/f0/1687441ece7b47a62e45a1f82015352c240765c707928edd8aef875d5951/numpy-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d57b5046c120561ba8fa8e4030fbb8b822f3063910fa901ffadf16e2b7128ad6", size = 18287378, upload-time = "2025-12-20T16:16:22.866Z" },
|
|
1408
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/d3/6f/f868765d44e6fc466467ed810ba9d8d6db1add7d4a748abfa2a4c99a3194/numpy-2.4.0-cp312-cp312-win32.whl", hash = "sha256:92190db305a6f48734d3982f2c60fa30d6b5ee9bff10f2887b930d7b40119f4c", size = 5955432, upload-time = "2025-12-20T16:16:25.06Z" },
|
|
1409
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/d4/b5/94c1e79fcbab38d1ca15e13777477b2914dd2d559b410f96949d6637b085/numpy-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:680060061adb2d74ce352628cb798cfdec399068aa7f07ba9fb818b2b3305f98", size = 12306201, upload-time = "2025-12-20T16:16:26.979Z" },
|
|
1410
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/70/09/c39dadf0b13bb0768cd29d6a3aaff1fb7c6905ac40e9aaeca26b1c086e06/numpy-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:39699233bc72dd482da1415dcb06076e32f60eddc796a796c5fb6c5efce94667", size = 10308234, upload-time = "2025-12-20T16:16:29.417Z" },
|
|
1411
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/a7/0d/853fd96372eda07c824d24adf02e8bc92bb3731b43a9b2a39161c3667cc4/numpy-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a152d86a3ae00ba5f47b3acf3b827509fd0b6cb7d3259665e63dafbad22a75ea", size = 16649088, upload-time = "2025-12-20T16:16:31.421Z" },
|
|
1412
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/e3/37/cc636f1f2a9f585434e20a3e6e63422f70bfe4f7f6698e941db52ea1ac9a/numpy-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:39b19251dec4de8ff8496cd0806cbe27bf0684f765abb1f4809554de93785f2d", size = 12364065, upload-time = "2025-12-20T16:16:33.491Z" },
|
|
1413
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/ed/69/0b78f37ca3690969beee54103ce5f6021709134e8020767e93ba691a72f1/numpy-2.4.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:009bd0ea12d3c784b6639a8457537016ce5172109e585338e11334f6a7bb88ee", size = 5192640, upload-time = "2025-12-20T16:16:35.636Z" },
|
|
1414
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/1d/2a/08569f8252abf590294dbb09a430543ec8f8cc710383abfb3e75cc73aeda/numpy-2.4.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5fe44e277225fd3dff6882d86d3d447205d43532c3627313d17e754fb3905a0e", size = 6541556, upload-time = "2025-12-20T16:16:37.276Z" },
|
|
1415
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/93/e9/a949885a4e177493d61519377952186b6cbfdf1d6002764c664ba28349b5/numpy-2.4.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f935c4493eda9069851058fa0d9e39dbf6286be690066509305e52912714dbb2", size = 14396562, upload-time = "2025-12-20T16:16:38.953Z" },
|
|
1416
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/99/98/9d4ad53b0e9ef901c2ef1d550d2136f5ac42d3fd2988390a6def32e23e48/numpy-2.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8cfa5f29a695cb7438965e6c3e8d06e0416060cf0d709c1b1c1653a939bf5c2a", size = 16351719, upload-time = "2025-12-20T16:16:41.503Z" },
|
|
1417
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/28/de/5f3711a38341d6e8dd619f6353251a0cdd07f3d6d101a8fd46f4ef87f895/numpy-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ba0cb30acd3ef11c94dc27fbfba68940652492bc107075e7ffe23057f9425681", size = 16176053, upload-time = "2025-12-20T16:16:44.552Z" },
|
|
1418
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/2a/5b/2a3753dc43916501b4183532e7ace862e13211042bceafa253afb5c71272/numpy-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:60e8c196cd82cbbd4f130b5290007e13e6de3eca79f0d4d38014769d96a7c475", size = 18277859, upload-time = "2025-12-20T16:16:47.174Z" },
|
|
1419
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/2c/c5/a18bcdd07a941db3076ef489d036ab16d2bfc2eae0cf27e5a26e29189434/numpy-2.4.0-cp313-cp313-win32.whl", hash = "sha256:5f48cb3e88fbc294dc90e215d86fbaf1c852c63dbdb6c3a3e63f45c4b57f7344", size = 5953849, upload-time = "2025-12-20T16:16:49.554Z" },
|
|
1420
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/4f/f1/719010ff8061da6e8a26e1980cf090412d4f5f8060b31f0c45d77dd67a01/numpy-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:a899699294f28f7be8992853c0c60741f16ff199205e2e6cdca155762cbaa59d", size = 12302840, upload-time = "2025-12-20T16:16:51.227Z" },
|
|
1421
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/f5/5a/b3d259083ed8b4d335270c76966cb6cf14a5d1b69e1a608994ac57a659e6/numpy-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:9198f447e1dc5647d07c9a6bbe2063cc0132728cc7175b39dbc796da5b54920d", size = 10308509, upload-time = "2025-12-20T16:16:53.313Z" },
|
|
1422
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/31/01/95edcffd1bb6c0633df4e808130545c4f07383ab629ac7e316fb44fff677/numpy-2.4.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74623f2ab5cc3f7c886add4f735d1031a1d2be4a4ae63c0546cfd74e7a31ddf6", size = 12491815, upload-time = "2025-12-20T16:16:55.496Z" },
|
|
1423
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/59/ea/5644b8baa92cc1c7163b4b4458c8679852733fa74ca49c942cfa82ded4e0/numpy-2.4.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:0804a8e4ab070d1d35496e65ffd3cf8114c136a2b81f61dfab0de4b218aacfd5", size = 5320321, upload-time = "2025-12-20T16:16:57.468Z" },
|
|
1424
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/26/4e/e10938106d70bc21319bd6a86ae726da37edc802ce35a3a71ecdf1fdfe7f/numpy-2.4.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:02a2038eb27f9443a8b266a66911e926566b5a6ffd1a689b588f7f35b81e7dc3", size = 6641635, upload-time = "2025-12-20T16:16:59.379Z" },
|
|
1425
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/b3/8d/a8828e3eaf5c0b4ab116924df82f24ce3416fa38d0674d8f708ddc6c8aac/numpy-2.4.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1889b3a3f47a7b5bee16bc25a2145bd7cb91897f815ce3499db64c7458b6d91d", size = 14456053, upload-time = "2025-12-20T16:17:01.768Z" },
|
|
1426
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/68/a1/17d97609d87d4520aa5ae2dcfb32305654550ac6a35effb946d303e594ce/numpy-2.4.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85eef4cb5625c47ee6425c58a3502555e10f45ee973da878ac8248ad58c136f3", size = 16401702, upload-time = "2025-12-20T16:17:04.235Z" },
|
|
1427
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/18/32/0f13c1b2d22bea1118356b8b963195446f3af124ed7a5adfa8fdecb1b6ca/numpy-2.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6dc8b7e2f4eb184b37655195f421836cfae6f58197b67e3ffc501f1333d993fa", size = 16242493, upload-time = "2025-12-20T16:17:06.856Z" },
|
|
1428
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/ae/23/48f21e3d309fbc137c068a1475358cbd3a901b3987dcfc97a029ab3068e2/numpy-2.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:44aba2f0cafd287871a495fb3163408b0bd25bbce135c6f621534a07f4f7875c", size = 18324222, upload-time = "2025-12-20T16:17:09.392Z" },
|
|
1429
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/ac/52/41f3d71296a3dcaa4f456aaa3c6fc8e745b43d0552b6bde56571bb4b4a0f/numpy-2.4.0-cp313-cp313t-win32.whl", hash = "sha256:20c115517513831860c573996e395707aa9fb691eb179200125c250e895fcd93", size = 6076216, upload-time = "2025-12-20T16:17:11.437Z" },
|
|
1430
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/35/ff/46fbfe60ab0710d2a2b16995f708750307d30eccbb4c38371ea9e986866e/numpy-2.4.0-cp313-cp313t-win_amd64.whl", hash = "sha256:b48e35f4ab6f6a7597c46e301126ceba4c44cd3280e3750f85db48b082624fa4", size = 12444263, upload-time = "2025-12-20T16:17:13.182Z" },
|
|
1431
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/a3/e3/9189ab319c01d2ed556c932ccf55064c5d75bb5850d1df7a482ce0badead/numpy-2.4.0-cp313-cp313t-win_arm64.whl", hash = "sha256:4d1cfce39e511069b11e67cd0bd78ceff31443b7c9e5c04db73c7a19f572967c", size = 10378265, upload-time = "2025-12-20T16:17:15.211Z" },
|
|
1432
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/ab/ed/52eac27de39d5e5a6c9aadabe672bc06f55e24a3d9010cd1183948055d76/numpy-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:c95eb6db2884917d86cde0b4d4cf31adf485c8ec36bf8696dd66fa70de96f36b", size = 16647476, upload-time = "2025-12-20T16:17:17.671Z" },
|
|
1433
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/77/c0/990ce1b7fcd4e09aeaa574e2a0a839589e4b08b2ca68070f1acb1fea6736/numpy-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:65167da969cd1ec3a1df31cb221ca3a19a8aaa25370ecb17d428415e93c1935e", size = 12374563, upload-time = "2025-12-20T16:17:20.216Z" },
|
|
1434
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/37/7c/8c5e389c6ae8f5fd2277a988600d79e9625db3fff011a2d87ac80b881a4c/numpy-2.4.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:3de19cfecd1465d0dcf8a5b5ea8b3155b42ed0b639dba4b71e323d74f2a3be5e", size = 5203107, upload-time = "2025-12-20T16:17:22.47Z" },
|
|
1435
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/e6/94/ca5b3bd6a8a70a5eec9a0b8dd7f980c1eff4b8a54970a9a7fef248ef564f/numpy-2.4.0-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:6c05483c3136ac4c91b4e81903cb53a8707d316f488124d0398499a4f8e8ef51", size = 6538067, upload-time = "2025-12-20T16:17:24.001Z" },
|
|
1436
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/79/43/993eb7bb5be6761dde2b3a3a594d689cec83398e3f58f4758010f3b85727/numpy-2.4.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36667db4d6c1cea79c8930ab72fadfb4060feb4bfe724141cd4bd064d2e5f8ce", size = 14411926, upload-time = "2025-12-20T16:17:25.822Z" },
|
|
1437
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/03/75/d4c43b61de473912496317a854dac54f1efec3eeb158438da6884b70bb90/numpy-2.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9a818668b674047fd88c4cddada7ab8f1c298812783e8328e956b78dc4807f9f", size = 16354295, upload-time = "2025-12-20T16:17:28.308Z" },
|
|
1438
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/b8/0a/b54615b47ee8736a6461a4bb6749128dd3435c5a759d5663f11f0e9af4ac/numpy-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1ee32359fb7543b7b7bd0b2f46294db27e29e7bbdf70541e81b190836cd83ded", size = 16190242, upload-time = "2025-12-20T16:17:30.993Z" },
|
|
1439
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/98/ce/ea207769aacad6246525ec6c6bbd66a2bf56c72443dc10e2f90feed29290/numpy-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e493962256a38f58283de033d8af176c5c91c084ea30f15834f7545451c42059", size = 18280875, upload-time = "2025-12-20T16:17:33.327Z" },
|
|
1440
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/17/ef/ec409437aa962ea372ed601c519a2b141701683ff028f894b7466f0ab42b/numpy-2.4.0-cp314-cp314-win32.whl", hash = "sha256:6bbaebf0d11567fa8926215ae731e1d58e6ec28a8a25235b8a47405d301332db", size = 6002530, upload-time = "2025-12-20T16:17:35.729Z" },
|
|
1441
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/5f/4a/5cb94c787a3ed1ac65e1271b968686521169a7b3ec0b6544bb3ca32960b0/numpy-2.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:3d857f55e7fdf7c38ab96c4558c95b97d1c685be6b05c249f5fdafcbd6f9899e", size = 12435890, upload-time = "2025-12-20T16:17:37.599Z" },
|
|
1442
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/48/a0/04b89db963af9de1104975e2544f30de89adbf75b9e75f7dd2599be12c79/numpy-2.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:bb50ce5fb202a26fd5404620e7ef820ad1ab3558b444cb0b55beb7ef66cd2d63", size = 10591892, upload-time = "2025-12-20T16:17:39.649Z" },
|
|
1443
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/53/e5/d74b5ccf6712c06c7a545025a6a71bfa03bdc7e0568b405b0d655232fd92/numpy-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:355354388cba60f2132df297e2d53053d4063f79077b67b481d21276d61fc4df", size = 12494312, upload-time = "2025-12-20T16:17:41.714Z" },
|
|
1444
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/c2/08/3ca9cc2ddf54dfee7ae9a6479c071092a228c68aef08252aa08dac2af002/numpy-2.4.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:1d8f9fde5f6dc1b6fc34df8162f3b3079365468703fee7f31d4e0cc8c63baed9", size = 5322862, upload-time = "2025-12-20T16:17:44.145Z" },
|
|
1445
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/87/74/0bb63a68394c0c1e52670cfff2e309afa41edbe11b3327d9af29e4383f34/numpy-2.4.0-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:e0434aa22c821f44eeb4c650b81c7fbdd8c0122c6c4b5a576a76d5a35625ecd9", size = 6644986, upload-time = "2025-12-20T16:17:46.203Z" },
|
|
1446
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/06/8f/9264d9bdbcf8236af2823623fe2f3981d740fc3461e2787e231d97c38c28/numpy-2.4.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40483b2f2d3ba7aad426443767ff5632ec3156ef09742b96913787d13c336471", size = 14457958, upload-time = "2025-12-20T16:17:48.017Z" },
|
|
1447
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/8c/d9/f9a69ae564bbc7236a35aa883319364ef5fd41f72aa320cc1cbe66148fe2/numpy-2.4.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9e6a7664ddd9746e20b7325351fe1a8408d0a2bf9c63b5e898290ddc8f09544", size = 16398394, upload-time = "2025-12-20T16:17:50.409Z" },
|
|
1448
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/34/c7/39241501408dde7f885d241a98caba5421061a2c6d2b2197ac5e3aa842d8/numpy-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ecb0019d44f4cdb50b676c5d0cb4b1eae8e15d1ed3d3e6639f986fc92b2ec52c", size = 16241044, upload-time = "2025-12-20T16:17:52.661Z" },
|
|
1449
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/7c/95/cae7effd90e065a95e59fe710eeee05d7328ed169776dfdd9f789e032125/numpy-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d0ffd9e2e4441c96a9c91ec1783285d80bf835b677853fc2770a89d50c1e48ac", size = 18321772, upload-time = "2025-12-20T16:17:54.947Z" },
|
|
1450
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/96/df/3c6c279accd2bfb968a76298e5b276310bd55d243df4fa8ac5816d79347d/numpy-2.4.0-cp314-cp314t-win32.whl", hash = "sha256:77f0d13fa87036d7553bf81f0e1fe3ce68d14c9976c9851744e4d3e91127e95f", size = 6148320, upload-time = "2025-12-20T16:17:57.249Z" },
|
|
1451
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/92/8d/f23033cce252e7a75cae853d17f582e86534c46404dea1c8ee094a9d6d84/numpy-2.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b1f5b45829ac1848893f0ddf5cb326110604d6df96cdc255b0bf9edd154104d4", size = 12623460, upload-time = "2025-12-20T16:17:58.963Z" },
|
|
1452
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/a4/4f/1f8475907d1a7c4ef9020edf7f39ea2422ec896849245f00688e4b268a71/numpy-2.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:23a3e9d1a6f360267e8fbb38ba5db355a6a7e9be71d7fce7ab3125e88bb646c8", size = 10661799, upload-time = "2025-12-20T16:18:01.078Z" },
|
|
1453
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/4b/ef/088e7c7342f300aaf3ee5f2c821c4b9996a1bef2aaf6a49cc8ab4883758e/numpy-2.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b54c83f1c0c0f1d748dca0af516062b8829d53d1f0c402be24b4257a9c48ada6", size = 16819003, upload-time = "2025-12-20T16:18:03.41Z" },
|
|
1454
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/ff/ce/a53017b5443b4b84517182d463fc7bcc2adb4faa8b20813f8e5f5aeb5faa/numpy-2.4.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:aabb081ca0ec5d39591fc33018cd4b3f96e1a2dd6756282029986d00a785fba4", size = 12567105, upload-time = "2025-12-20T16:18:05.594Z" },
|
|
1455
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/77/58/5ff91b161f2ec650c88a626c3905d938c89aaadabd0431e6d9c1330c83e2/numpy-2.4.0-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:8eafe7c36c8430b7794edeab3087dec7bf31d634d92f2af9949434b9d1964cba", size = 5395590, upload-time = "2025-12-20T16:18:08.031Z" },
|
|
1456
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/1d/4e/f1a084106df8c2df8132fc437e56987308e0524836aa7733721c8429d4fe/numpy-2.4.0-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:2f585f52b2baf07ff3356158d9268ea095e221371f1074fadea2f42544d58b4d", size = 6709947, upload-time = "2025-12-20T16:18:09.836Z" },
|
|
1457
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/63/09/3d8aeb809c0332c3f642da812ac2e3d74fc9252b3021f8c30c82e99e3f3d/numpy-2.4.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:32ed06d0fe9cae27d8fb5f400c63ccee72370599c75e683a6358dd3a4fb50aaf", size = 14535119, upload-time = "2025-12-20T16:18:12.105Z" },
|
|
1458
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/fd/7f/68f0fc43a2cbdc6bb239160c754d87c922f60fbaa0fa3cd3d312b8a7f5ee/numpy-2.4.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:57c540ed8fb1f05cb997c6761cd56db72395b0d6985e90571ff660452ade4f98", size = 16475815, upload-time = "2025-12-20T16:18:14.433Z" },
|
|
1459
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/11/73/edeacba3167b1ca66d51b1a5a14697c2c40098b5ffa01811c67b1785a5ab/numpy-2.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a39fb973a726e63223287adc6dafe444ce75af952d711e400f3bf2b36ef55a7b", size = 12489376, upload-time = "2025-12-20T16:18:16.524Z" },
|
|
1460
1460
|
]
|
|
1461
1461
|
|
|
1462
1462
|
[[package]]
|
|
@@ -1474,7 +1474,7 @@ wheels = [
|
|
|
1474
1474
|
|
|
1475
1475
|
[[package]]
|
|
1476
1476
|
name = "openai"
|
|
1477
|
-
version = "2.
|
|
1477
|
+
version = "2.14.0"
|
|
1478
1478
|
source = { registry = "https://pypi.mirrors.ustc.edu.cn/simple/" }
|
|
1479
1479
|
dependencies = [
|
|
1480
1480
|
{ name = "anyio" },
|
|
@@ -1486,9 +1486,9 @@ dependencies = [
|
|
|
1486
1486
|
{ name = "tqdm" },
|
|
1487
1487
|
{ name = "typing-extensions" },
|
|
1488
1488
|
]
|
|
1489
|
-
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1489
|
+
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/d8/b1/12fe1c196bea326261718eb037307c1c1fe1dedc2d2d4de777df822e6238/openai-2.14.0.tar.gz", hash = "sha256:419357bedde9402d23bf8f2ee372fca1985a73348debba94bddff06f19459952", size = 626938, upload-time = "2025-12-19T03:28:45.742Z" }
|
|
1490
1490
|
wheels = [
|
|
1491
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
1491
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/27/4b/7c1a00c2c3fbd004253937f7520f692a9650767aa73894d7a34f0d65d3f4/openai-2.14.0-py3-none-any.whl", hash = "sha256:7ea40aca4ffc4c4a776e77679021b47eec1160e341f42ae086ba949c9dcc9183", size = 1067558, upload-time = "2025-12-19T03:28:43.727Z" },
|
|
1492
1492
|
]
|
|
1493
1493
|
|
|
1494
1494
|
[[package]]
|
|
@@ -2229,28 +2229,28 @@ wheels = [
|
|
|
2229
2229
|
|
|
2230
2230
|
[[package]]
|
|
2231
2231
|
name = "ruff"
|
|
2232
|
-
version = "0.14.
|
|
2233
|
-
source = { registry = "https://pypi.mirrors.ustc.edu.cn/simple/" }
|
|
2234
|
-
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2235
|
-
wheels = [
|
|
2236
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2237
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2238
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2239
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2240
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/31/
|
|
2241
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2242
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2243
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2244
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2245
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2246
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2247
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2248
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2249
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2250
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2251
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2252
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2253
|
-
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/
|
|
2232
|
+
version = "0.14.10"
|
|
2233
|
+
source = { registry = "https://pypi.mirrors.ustc.edu.cn/simple/" }
|
|
2234
|
+
sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/57/08/52232a877978dd8f9cf2aeddce3e611b40a63287dfca29b6b8da791f5e8d/ruff-0.14.10.tar.gz", hash = "sha256:9a2e830f075d1a42cd28420d7809ace390832a490ed0966fe373ba288e77aaf4", size = 5859763, upload-time = "2025-12-18T19:28:57.98Z" }
|
|
2235
|
+
wheels = [
|
|
2236
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/60/01/933704d69f3f05ee16ef11406b78881733c186fe14b6a46b05cfcaf6d3b2/ruff-0.14.10-py3-none-linux_armv6l.whl", hash = "sha256:7a3ce585f2ade3e1f29ec1b92df13e3da262178df8c8bdf876f48fa0e8316c49", size = 13527080, upload-time = "2025-12-18T19:29:25.642Z" },
|
|
2237
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/df/58/a0349197a7dfa603ffb7f5b0470391efa79ddc327c1e29c4851e85b09cc5/ruff-0.14.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:674f9be9372907f7257c51f1d4fc902cb7cf014b9980152b802794317941f08f", size = 13797320, upload-time = "2025-12-18T19:29:02.571Z" },
|
|
2238
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/7b/82/36be59f00a6082e38c23536df4e71cdbc6af8d7c707eade97fcad5c98235/ruff-0.14.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d85713d522348837ef9df8efca33ccb8bd6fcfc86a2cde3ccb4bc9d28a18003d", size = 12918434, upload-time = "2025-12-18T19:28:51.202Z" },
|
|
2239
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/a6/00/45c62a7f7e34da92a25804f813ebe05c88aa9e0c25e5cb5a7d23dd7450e3/ruff-0.14.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6987ebe0501ae4f4308d7d24e2d0fe3d7a98430f5adfd0f1fead050a740a3a77", size = 13371961, upload-time = "2025-12-18T19:29:04.991Z" },
|
|
2240
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/40/31/a5906d60f0405f7e57045a70f2d57084a93ca7425f22e1d66904769d1628/ruff-0.14.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16a01dfb7b9e4eee556fbfd5392806b1b8550c9b4a9f6acd3dbe6812b193c70a", size = 13275629, upload-time = "2025-12-18T19:29:21.381Z" },
|
|
2241
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/3e/60/61c0087df21894cf9d928dc04bcd4fb10e8b2e8dca7b1a276ba2155b2002/ruff-0.14.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7165d31a925b7a294465fa81be8c12a0e9b60fb02bf177e79067c867e71f8b1f", size = 14029234, upload-time = "2025-12-18T19:29:00.132Z" },
|
|
2242
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/44/84/77d911bee3b92348b6e5dab5a0c898d87084ea03ac5dc708f46d88407def/ruff-0.14.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c561695675b972effb0c0a45db233f2c816ff3da8dcfbe7dfc7eed625f218935", size = 15449890, upload-time = "2025-12-18T19:28:53.573Z" },
|
|
2243
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/e9/36/480206eaefa24a7ec321582dda580443a8f0671fdbf6b1c80e9c3e93a16a/ruff-0.14.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bb98fcbbc61725968893682fd4df8966a34611239c9fd07a1f6a07e7103d08e", size = 15123172, upload-time = "2025-12-18T19:29:23.453Z" },
|
|
2244
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/5c/38/68e414156015ba80cef5473d57919d27dfb62ec804b96180bafdeaf0e090/ruff-0.14.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f24b47993a9d8cb858429e97bdf8544c78029f09b520af615c1d261bf827001d", size = 14460260, upload-time = "2025-12-18T19:29:27.808Z" },
|
|
2245
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/b3/19/9e050c0dca8aba824d67cc0db69fb459c28d8cd3f6855b1405b3f29cc91d/ruff-0.14.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59aabd2e2c4fd614d2862e7939c34a532c04f1084476d6833dddef4afab87e9f", size = 14229978, upload-time = "2025-12-18T19:29:11.32Z" },
|
|
2246
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/51/eb/e8dd1dd6e05b9e695aa9dd420f4577debdd0f87a5ff2fedda33c09e9be8c/ruff-0.14.10-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:213db2b2e44be8625002dbea33bb9c60c66ea2c07c084a00d55732689d697a7f", size = 14338036, upload-time = "2025-12-18T19:29:09.184Z" },
|
|
2247
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/6a/12/f3e3a505db7c19303b70af370d137795fcfec136d670d5de5391e295c134/ruff-0.14.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b914c40ab64865a17a9a5b67911d14df72346a634527240039eb3bd650e5979d", size = 13264051, upload-time = "2025-12-18T19:29:13.431Z" },
|
|
2248
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/08/64/8c3a47eaccfef8ac20e0484e68e0772013eb85802f8a9f7603ca751eb166/ruff-0.14.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1484983559f026788e3a5c07c81ef7d1e97c1c78ed03041a18f75df104c45405", size = 13283998, upload-time = "2025-12-18T19:29:06.994Z" },
|
|
2249
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/12/84/534a5506f4074e5cc0529e5cd96cfc01bb480e460c7edf5af70d2bcae55e/ruff-0.14.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c70427132db492d25f982fffc8d6c7535cc2fd2c83fc8888f05caaa248521e60", size = 13601891, upload-time = "2025-12-18T19:28:55.811Z" },
|
|
2250
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/0d/1e/14c916087d8598917dbad9b2921d340f7884824ad6e9c55de948a93b106d/ruff-0.14.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5bcf45b681e9f1ee6445d317ce1fa9d6cba9a6049542d1c3d5b5958986be8830", size = 14336660, upload-time = "2025-12-18T19:29:16.531Z" },
|
|
2251
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/f2/1c/d7b67ab43f30013b47c12b42d1acd354c195351a3f7a1d67f59e54227ede/ruff-0.14.10-py3-none-win32.whl", hash = "sha256:104c49fc7ab73f3f3a758039adea978869a918f31b73280db175b43a2d9b51d6", size = 13196187, upload-time = "2025-12-18T19:29:19.006Z" },
|
|
2252
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/fb/9c/896c862e13886fae2af961bef3e6312db9ebc6adc2b156fe95e615dee8c1/ruff-0.14.10-py3-none-win_amd64.whl", hash = "sha256:466297bd73638c6bdf06485683e812db1c00c7ac96d4ddd0294a338c62fdc154", size = 14661283, upload-time = "2025-12-18T19:29:30.16Z" },
|
|
2253
|
+
{ url = "https://mirrors.ustc.edu.cn/pypi/packages/74/31/b0e29d572670dca3674eeee78e418f20bdf97fa8aa9ea71380885e175ca0/ruff-0.14.10-py3-none-win_arm64.whl", hash = "sha256:e51d046cf6dda98a4633b8a8a771451107413b0f07183b2bef03f075599e44e6", size = 13729839, upload-time = "2025-12-18T19:28:48.636Z" },
|
|
2254
2254
|
]
|
|
2255
2255
|
|
|
2256
2256
|
[[package]]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.2.16"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/plan.py
RENAMED
|
File without changes
|
{langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/agents/wrap.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/chat_models/base.py
RENAMED
|
File without changes
|
{langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/chat_models/types.py
RENAMED
|
File without changes
|
|
File without changes
|
{langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/embeddings/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/pipeline/__init__.py
RENAMED
|
File without changes
|
{langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/pipeline/parallel.py
RENAMED
|
File without changes
|
|
File without changes
|
{langchain_dev_utils-1.3.0 → langchain_dev_utils-1.3.1}/src/langchain_dev_utils/pipeline/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|