Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-langchain-core for
openSUSE:Factory checked in at 2026-09-08 16:53:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-langchain-core (Old)
and /work/SRC/openSUSE:Factory/.python-langchain-core.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-langchain-core"
Tue Sep 8 16:53:26 2026 rev:13 rq:1376077 version:1.6.2
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-langchain-core/python-langchain-core.changes
2026-08-29 17:44:19.982228288 +0200
+++
/work/SRC/openSUSE:Factory/.python-langchain-core.new.1265/python-langchain-core.changes
2026-09-08 16:54:06.058924255 +0200
@@ -1,0 +2,9 @@
+Mon Sep 7 06:35:07 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to 1.6.2:
+ * bedrock_converse/google_genai content_blocks translators no
+ longer mutate the caller's message.content
+ * openai: an "async" key on a tool-call block is carried into
+ extras
+
+-------------------------------------------------------------------
Old:
----
langchain_core-1.6.1.tar.gz
New:
----
langchain_core-1.6.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-langchain-core.spec ++++++
--- /var/tmp/diff_new_pack.F4foT0/_old 2026-09-08 16:54:06.842957148 +0200
+++ /var/tmp/diff_new_pack.F4foT0/_new 2026-09-08 16:54:06.846957316 +0200
@@ -17,7 +17,7 @@
Name: python-langchain-core
-Version: 1.6.1
+Version: 1.6.2
Release: 0
Summary: Building applications with LLMs through composability
License: MIT
++++++ langchain_core-1.6.1.tar.gz -> langchain_core-1.6.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/langchain_core-1.6.1/PKG-INFO
new/langchain_core-1.6.2/PKG-INFO
--- old/langchain_core-1.6.1/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_core-1.6.2/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.5
Name: langchain-core
-Version: 1.6.1
+Version: 1.6.2
Summary: Building applications with LLMs through composability
Project-URL: Homepage, https://docs.langchain.com/
Project-URL: Documentation,
https://reference.langchain.com/python/langchain_core/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/langchain_core-1.6.1/langchain_core/messages/block_translators/bedrock_converse.py
new/langchain_core-1.6.2/langchain_core/messages/block_translators/bedrock_converse.py
---
old/langchain_core-1.6.1/langchain_core/messages/block_translators/bedrock_converse.py
2020-02-02 01:00:00.000000000 +0100
+++
new/langchain_core-1.6.2/langchain_core/messages/block_translators/bedrock_converse.py
2020-02-02 01:00:00.000000000 +0100
@@ -159,11 +159,16 @@
# Converse outputs multiple chunks containing response metadata
return []
- if isinstance(message.content, str):
- message.content = [{"type": "text", "text": message.content}]
+ # Translated through a local list so that reading `content_blocks` leaves
+ # `message.content` untouched.
+ content: list[str | dict[str, Any]] = (
+ [{"type": "text", "text": message.content}]
+ if isinstance(message.content, str)
+ else message.content
+ )
def _iter_blocks() -> Iterator[types.ContentBlock]:
- for block in message.content:
+ for block in content:
if not isinstance(block, dict):
continue
block_type = block.get("type")
@@ -269,12 +274,17 @@
yield tool_call_chunk
else:
- new_block: types.NonStandardContentBlock = {
- "type": "non_standard",
- "value": block,
- }
- if "index" in new_block["value"]:
- new_block["index"] = new_block["value"].pop("index")
+ if "index" in block:
+ # Copy before lifting `index` off the block.
+ value = block.copy()
+ index = value.pop("index")
+ new_block: types.NonStandardContentBlock = {
+ "type": "non_standard",
+ "value": value,
+ "index": index,
+ }
+ else:
+ new_block = {"type": "non_standard", "value": block}
yield new_block
return list(_iter_blocks())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/langchain_core-1.6.1/langchain_core/messages/block_translators/google_genai.py
new/langchain_core-1.6.2/langchain_core/messages/block_translators/google_genai.py
---
old/langchain_core-1.6.1/langchain_core/messages/block_translators/google_genai.py
2020-02-02 01:00:00.000000000 +0100
+++
new/langchain_core-1.6.2/langchain_core/messages/block_translators/google_genai.py
2020-02-02 01:00:00.000000000 +0100
@@ -527,10 +527,15 @@
if grounding_metadata:
citations =
translate_grounding_metadata_to_citations(grounding_metadata)
- for block in converted_blocks:
+ for i, block in enumerate(converted_blocks):
if block["type"] == "text" and citations:
- # Add citations to text blocks (only the first text block)
- block["annotations"] = cast("list[types.Annotation]",
citations)
+ # Add citations to text blocks (only the first text block).
+ # Replaced rather than assigned into: `block` is the caller's
own
+ # dict from `message.content`.
+ converted_blocks[i] = cast(
+ "types.TextContentBlock",
+ {**block, "annotations": citations},
+ )
break
# Audio is stored on the message.additional_kwargs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/langchain_core-1.6.1/langchain_core/messages/block_translators/openai.py
new/langchain_core-1.6.2/langchain_core/messages/block_translators/openai.py
---
old/langchain_core-1.6.1/langchain_core/messages/block_translators/openai.py
2020-02-02 01:00:00.000000000 +0100
+++
new/langchain_core-1.6.2/langchain_core/messages/block_translators/openai.py
2020-02-02 01:00:00.000000000 +0100
@@ -735,7 +735,7 @@
tool_call_block["extras"]["item_id"] = block["id"]
if "index" in block:
tool_call_block["index"] = f"lc_tc_{block['index']}"
- for extra_key in ("status", "namespace"):
+ for extra_key in ("status", "namespace", "async"):
if extra_key in block:
if "extras" not in tool_call_block:
tool_call_block["extras"] = {}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/langchain_core-1.6.1/langchain_core/version.py
new/langchain_core-1.6.2/langchain_core/version.py
--- old/langchain_core-1.6.1/langchain_core/version.py 2020-02-02
01:00:00.000000000 +0100
+++ new/langchain_core-1.6.2/langchain_core/version.py 2020-02-02
01:00:00.000000000 +0100
@@ -1,3 +1,3 @@
"""Version information for `langchain-core`."""
-VERSION = "1.6.1"
+VERSION = "1.6.2"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/langchain_core-1.6.1/pyproject.toml
new/langchain_core-1.6.2/pyproject.toml
--- old/langchain_core-1.6.1/pyproject.toml 2020-02-02 01:00:00.000000000
+0100
+++ new/langchain_core-1.6.2/pyproject.toml 2020-02-02 01:00:00.000000000
+0100
@@ -21,7 +21,7 @@
"Topic :: Software Development :: Libraries :: Python Modules",
]
-version = "1.6.1"
+version = "1.6.2"
requires-python = ">=3.10.0,<4.0.0"
dependencies = [
"langsmith>=0.3.45,<1.0.0",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/langchain_core-1.6.1/tests/unit_tests/messages/block_translators/test_bedrock_converse.py
new/langchain_core-1.6.2/tests/unit_tests/messages/block_translators/test_bedrock_converse.py
---
old/langchain_core-1.6.1/tests/unit_tests/messages/block_translators/test_bedrock_converse.py
2020-02-02 01:00:00.000000000 +0100
+++
new/langchain_core-1.6.2/tests/unit_tests/messages/block_translators/test_bedrock_converse.py
2020-02-02 01:00:00.000000000 +0100
@@ -1,3 +1,8 @@
+from copy import deepcopy
+from typing import Any
+
+import pytest
+
from langchain_core.messages import AIMessage, AIMessageChunk, HumanMessage
from langchain_core.messages import content as types
@@ -119,10 +124,12 @@
"value": {"type": "something_else", "foo": "bar"},
},
]
+ original_content = deepcopy(message.content)
+
assert message.content_blocks == expected_content
# Check no mutation
- assert message.content != expected_content
+ assert message.content == original_content
def test_convert_to_v1_from_converse_chunk() -> None:
@@ -377,3 +384,66 @@
]
assert message.content_blocks == expected
+
+
[email protected]("message_class", [AIMessage, AIMessageChunk])
[email protected](
+ "content",
+ [
+ "hello",
+ [{"type": "custom", "payload": "value", "index": 3}],
+ [{"type": "custom", "payload": "value"}],
+ [{"type": "text", "text": "hello", "index": 0}],
+ ],
+)
+def test_content_blocks_does_not_mutate_content(
+ message_class: type[AIMessage],
+ content: str | list[str | dict[Any, Any]],
+) -> None:
+ """Reading `content_blocks` must leave `message.content` unchanged."""
+ message = message_class(
+ content=deepcopy(content),
+ response_metadata={"model_provider": "bedrock_converse"},
+ )
+ original_content = deepcopy(message.content)
+
+ first_read = message.content_blocks
+
+ assert message.content == original_content
+
+ # Repeated reads of an unchanged message must agree
+ assert message.content_blocks == first_read
+
+
[email protected]("message_class", [AIMessage, AIMessageChunk])
+def test_non_standard_block_index_is_lifted_not_removed(
+ message_class: type[AIMessage],
+) -> None:
+ """`index` moves onto the standardized block without leaving the source."""
+ message = message_class(
+ content=[{"type": "custom", "payload": "value", "index": 3}],
+ response_metadata={"model_provider": "bedrock_converse"},
+ )
+
+ assert message.content_blocks == [
+ {
+ "type": "non_standard",
+ "value": {"type": "custom", "payload": "value"},
+ "index": 3,
+ }
+ ]
+ assert message.content == [{"type": "custom", "payload": "value", "index":
3}]
+
+
[email protected]("message_class", [AIMessage, AIMessageChunk])
+def test_string_content_is_not_replaced_with_blocks(
+ message_class: type[AIMessage],
+) -> None:
+ """String content is translated through a local list, not written back."""
+ message = message_class(
+ content="hello",
+ response_metadata={"model_provider": "bedrock_converse"},
+ )
+
+ assert message.content_blocks == [{"type": "text", "text": "hello"}]
+ assert message.content == "hello"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/langchain_core-1.6.1/tests/unit_tests/messages/block_translators/test_google_genai.py
new/langchain_core-1.6.2/tests/unit_tests/messages/block_translators/test_google_genai.py
---
old/langchain_core-1.6.1/tests/unit_tests/messages/block_translators/test_google_genai.py
2020-02-02 01:00:00.000000000 +0100
+++
new/langchain_core-1.6.2/tests/unit_tests/messages/block_translators/test_google_genai.py
2020-02-02 01:00:00.000000000 +0100
@@ -1,8 +1,9 @@
"""Tests for Google GenAI block translator."""
+from copy import deepcopy
from typing import Any
-from langchain_core.messages import AIMessageChunk
+from langchain_core.messages import AIMessage, AIMessageChunk
from langchain_core.messages.block_translators.google_genai import (
translate_grounding_metadata_to_citations,
)
@@ -331,3 +332,31 @@
assert indices == [0, 1, 2]
assert len(indices) == len(set(indices))
+
+
+_GROUNDING_METADATA = {
+ "grounding_chunks": [{"web": {"uri": "https://example.com", "title":
"Example"}}],
+ "grounding_supports": [
+ {
+ "segment": {"start_index": 0, "end_index": 5},
+ "grounding_chunk_indices": [0],
+ }
+ ],
+}
+
+
+def test_grounding_citations_do_not_mutate_content() -> None:
+ """Attaching grounding citations must leave `message.content` unchanged."""
+ message = AIMessage(
+ content=[{"type": "text", "text": "hello"}],
+ response_metadata={
+ "model_provider": "google_genai",
+ "grounding_metadata": _GROUNDING_METADATA,
+ },
+ )
+ original_content = deepcopy(message.content)
+
+ blocks = message.content_blocks
+
+ assert message.content == original_content
+ assert "annotations" in blocks[0]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/langchain_core-1.6.1/tests/unit_tests/messages/block_translators/test_openai.py
new/langchain_core-1.6.2/tests/unit_tests/messages/block_translators/test_openai.py
---
old/langchain_core-1.6.1/tests/unit_tests/messages/block_translators/test_openai.py
2020-02-02 01:00:00.000000000 +0100
+++
new/langchain_core-1.6.2/tests/unit_tests/messages/block_translators/test_openai.py
2020-02-02 01:00:00.000000000 +0100
@@ -603,3 +603,53 @@
expected = {"type": "input_file", "file_id": "file-abc123"}
result = convert_to_openai_data_block(block, api="responses")
assert result == expected
+
+
+def test_convert_to_v1_from_responses_async_tool_call() -> None:
+ """Test that the `async` flag on a function call reaches `tool_call`
extras."""
+ message = AIMessage(
+ [
+ {
+ "type": "function_call",
+ "call_id": "call_A",
+ "id": "fc_1",
+ "name": "lookup_price",
+ "arguments": '{"sku": "WIDGET"}',
+ "async": True,
+ },
+ {
+ "type": "function_call",
+ "call_id": "call_B",
+ "id": "fc_2",
+ "name": "get_time",
+ "arguments": "{}",
+ },
+ ],
+ tool_calls=[
+ {
+ "type": "tool_call",
+ "id": "call_A",
+ "name": "lookup_price",
+ "args": {"sku": "WIDGET"},
+ },
+ {"type": "tool_call", "id": "call_B", "name": "get_time", "args":
{}},
+ ],
+ response_metadata={"model_provider": "openai"},
+ )
+ expected_content: list[types.ContentBlock] = [
+ {
+ "type": "tool_call",
+ "id": "call_A",
+ "name": "lookup_price",
+ "args": {"sku": "WIDGET"},
+ "extras": {"item_id": "fc_1", "async": True},
+ },
+ {
+ "type": "tool_call",
+ "id": "call_B",
+ "name": "get_time",
+ "args": {},
+ "extras": {"item_id": "fc_2"},
+ },
+ ]
+ assert message.content_blocks == expected_content
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/langchain_core-1.6.1/uv.lock
new/langchain_core-1.6.2/uv.lock
--- old/langchain_core-1.6.1/uv.lock 2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_core-1.6.2/uv.lock 2020-02-02 01:00:00.000000000 +0100
@@ -523,7 +523,7 @@
version = "1.3.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "typing-extensions" },
+ { name = "typing-extensions", marker = "python_full_version < '3.11'" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz",
hash =
"sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size
= 30371, upload-time = "2025-11-21T23:01:54.787Z" }
wheels = [
@@ -685,17 +685,17 @@
"python_full_version < '3.11' and platform_python_implementation !=
'PyPy'",
]
dependencies = [
- { name = "colorama", marker = "sys_platform == 'win32'" },
- { name = "decorator" },
- { name = "exceptiongroup" },
- { name = "jedi" },
- { name = "matplotlib-inline" },
- { name = "pexpect", marker = "sys_platform != 'emscripten' and
sys_platform != 'win32'" },
- { name = "prompt-toolkit" },
- { name = "pygments" },
- { name = "stack-data" },
- { name = "traitlets" },
- { name = "typing-extensions" },
+ { name = "colorama", marker = "python_full_version < '3.11' and
sys_platform == 'win32'" },
+ { name = "decorator", marker = "python_full_version < '3.11'" },
+ { name = "exceptiongroup", marker = "python_full_version < '3.11'" },
+ { name = "jedi", marker = "python_full_version < '3.11'" },
+ { name = "matplotlib-inline", marker = "python_full_version < '3.11'" },
+ { name = "pexpect", marker = "python_full_version < '3.11' and
sys_platform != 'emscripten' and sys_platform != 'win32'" },
+ { name = "prompt-toolkit", marker = "python_full_version < '3.11'" },
+ { name = "pygments", marker = "python_full_version < '3.11'" },
+ { name = "stack-data", marker = "python_full_version < '3.11'" },
+ { name = "traitlets", marker = "python_full_version < '3.11'" },
+ { name = "typing-extensions", marker = "python_full_version < '3.11'" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/85/31/10ac88f3357fc276dc8a64e8880c82e80e7459326ae1d0a211b40abf6665/ipython-8.37.0.tar.gz",
hash =
"sha256:ca815841e1a41a1e6b73a0b08f3038af9b2252564d01fc405356d34033012216", size
= 5606088, upload-time = "2025-05-31T16:39:09.613Z" }
wheels = [
@@ -717,17 +717,17 @@
"python_full_version >= '3.11' and python_full_version < '3.13' and
platform_python_implementation != 'PyPy'",
]
dependencies = [
- { name = "colorama", marker = "sys_platform == 'win32'" },
- { name = "decorator" },
- { name = "ipython-pygments-lexers" },
- { name = "jedi" },
- { name = "matplotlib-inline" },
- { name = "pexpect", marker = "sys_platform != 'emscripten' and
sys_platform != 'win32'" },
- { name = "prompt-toolkit" },
- { name = "pygments" },
- { name = "stack-data" },
- { name = "traitlets" },
- { name = "typing-extensions", marker = "python_full_version < '3.12'" },
+ { name = "colorama", marker = "python_full_version >= '3.11' and
sys_platform == 'win32'" },
+ { name = "decorator", marker = "python_full_version >= '3.11'" },
+ { name = "ipython-pygments-lexers", marker = "python_full_version >=
'3.11'" },
+ { name = "jedi", marker = "python_full_version >= '3.11'" },
+ { name = "matplotlib-inline", marker = "python_full_version >= '3.11'" },
+ { name = "pexpect", marker = "python_full_version >= '3.11' and
sys_platform != 'emscripten' and sys_platform != 'win32'" },
+ { name = "prompt-toolkit", marker = "python_full_version >= '3.11'" },
+ { name = "pygments", marker = "python_full_version >= '3.11'" },
+ { name = "stack-data", marker = "python_full_version >= '3.11'" },
+ { name = "traitlets", marker = "python_full_version >= '3.11'" },
+ { name = "typing-extensions", marker = "python_full_version == '3.11.*'" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/12/51/a703c030f4928646d390b4971af4938a1b10c9dfce694f0d99a0bb073cb2/ipython-9.8.0.tar.gz",
hash =
"sha256:8e4ce129a627eb9dd221c41b1d2cdaed4ef7c9da8c17c63f6f578fe231141f83", size
= 4424940, upload-time = "2025-12-03T10:18:24.353Z" }
wheels = [
@@ -739,7 +739,7 @@
version = "1.1.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pygments" },
+ { name = "pygments", marker = "python_full_version >= '3.11'" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz",
hash =
"sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size
= 8393, upload-time = "2025-01-17T11:24:34.505Z" }
wheels = [
@@ -1073,7 +1073,7 @@
[[package]]
name = "langchain-core"
-version = "1.6.1"
+version = "1.6.2"
source = { editable = "." }
dependencies = [
{ name = "httpx" },
@@ -1212,7 +1212,7 @@
{ name = "pytest-codspeed" },
{ name = "pytest-recording" },
{ name = "pytest-socket", specifier = ">=0.7.0,<1.0.0" },
- { name = "syrupy", specifier = ">=5.0.0,<6.0.0" },
+ { name = "syrupy", specifier = ">=5.0.0,<7.0.0" },
{ name = "vcrpy", specifier = ">=8.2.1,<9.0.0" },
]
@@ -1551,14 +1551,14 @@
[[package]]
name = "mistune"
-version = "3.3.0"
+version = "3.3.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
]
-sdist = { url =
"https://files.pythonhosted.org/packages/84/9c/1939635275ec7258e2b43b00dafabc36d89ad11aa7838d375dc1b0e561cb/mistune-3.3.0.tar.gz",
hash =
"sha256:3074ec4c61b384abe725128e4dcbb483f5a09cc4632012505cdee655d3a113b9", size
= 110936, upload-time = "2026-06-21T13:11:39.458Z" }
+sdist = { url =
"https://files.pythonhosted.org/packages/7b/a5/2dab368d6950e6808904dec98f54c7e726ee7be4a0c6afe00e6e011bd52d/mistune-3.3.3.tar.gz",
hash =
"sha256:c4c6c0c840b8637a2e9b8b6d607eb7c8f00888bf14c754409bcd339e848c2477", size
= 115363, upload-time = "2026-07-09T06:18:05.268Z" }
wheels = [
- { url =
"https://files.pythonhosted.org/packages/b7/76/b90f9d48d43fbd80a79a20d3eab2e5109859c7a56dc663b23187385898f3/mistune-3.3.0-py3-none-any.whl",
hash =
"sha256:a758e578acda49d8195f9a860b132dae2cf7bf409381393b1c4e6e489a65397b", size
= 61250, upload-time = "2026-06-21T13:11:37.938Z" },
+ { url =
"https://files.pythonhosted.org/packages/89/70/b1e4737b84163db5bb1dfde6f216dbfbf32783330a9989c965e121172830/mistune-3.3.3-py3-none-any.whl",
hash =
"sha256:99de1585e42dcbd826faa9e11a202727a5e202e4e4722a4c69ac1ff615793dd7", size
= 63569, upload-time = "2026-07-09T06:18:03.839Z" },
]
[[package]]
@@ -2978,19 +2978,19 @@
[[package]]
name = "tornado"
-version = "6.5.7"
+version = "6.5.8"
source = { registry = "https://pypi.org/simple" }
-sdist = { url =
"https://files.pythonhosted.org/packages/64/24/95ec527ad67b76d59299e5465b3935d05e4294b7e0290a3924b7487df30b/tornado-6.5.7.tar.gz",
hash =
"sha256:66c513a76cda70d53907bc27cf1447557699c2e95aa48ba27a442ff61c3ddfc2", size
= 519252, upload-time = "2026-06-08T17:34:51.232Z" }
+sdist = { url =
"https://files.pythonhosted.org/packages/10/d3/343e5bb989d6515b1646cf3d40135d73f3d5e45339bded401b56cdac24dd/tornado-6.5.8.tar.gz",
hash =
"sha256:9452e1b208a8bd771e2cb1f2ff564985b9b214bdebbe622793e1799e0a6bd23f", size
= 520493, upload-time = "2026-08-07T02:12:42.971Z" }
wheels = [
- { url =
"https://files.pythonhosted.org/packages/02/dc/c7043cab6fed8ae159fc1923ce829ada35c4dbd797d408a43858ffaf9639/tornado-6.5.7-cp39-abi3-macosx_10_9_universal2.whl",
hash =
"sha256:148b2eb15c2c765a50796172c1e499649b35f30d2e3c3d3e15913cfa56bfb163", size
= 448543, upload-time = "2026-06-08T17:34:38.052Z" },
- { url =
"https://files.pythonhosted.org/packages/92/4f/090b1431e5a43df696feceffc268c5383cc079ecb5f08ce58f917109aafe/tornado-6.5.7-cp39-abi3-macosx_10_9_x86_64.whl",
hash =
"sha256:9da38de27f1da3b78a966f0dae12b5a1ea9afe72ca805d84ff06508272ddf100", size
= 446707, upload-time = "2026-06-08T17:34:39.594Z" },
- { url =
"https://files.pythonhosted.org/packages/37/d8/ef374952fd5da67d4463122c2b8e5a96536ec10b4b339254c6dcde81d01c/tornado-6.5.7-cp39-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
hash =
"sha256:8d759e71906ee783f8867b93bf26a265743da4c1e2f4a018464c1ba019862972", size
= 449774, upload-time = "2026-06-08T17:34:41.204Z" },
- { url =
"https://files.pythonhosted.org/packages/35/37/d434c73f4c6e014b745b9b37085f34f40c022f007efff3d7fe65991899f3/tornado-6.5.7-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
hash =
"sha256:8a46347a18f23fb92b396beebe0fb78f61dda0cc302445202c16203d8a18848b", size
= 450745, upload-time = "2026-06-08T17:34:42.531Z" },
- { url =
"https://files.pythonhosted.org/packages/b6/2b/56b9aff361d7f1ab728a805ec7d7ea835f8807afa9f5cc690ea0e630efb9/tornado-6.5.7-cp39-abi3-musllinux_1_2_aarch64.whl",
hash =
"sha256:7778b30bef919231265e91c69963ce0f49a1e9c07ac900bbe75b19ce2575ba92", size
= 450578, upload-time = "2026-06-08T17:34:43.787Z" },
- { url =
"https://files.pythonhosted.org/packages/02/30/a7444fb23aa76860a14198fab96ac79f1866b0a6e19e26c4381b0938e50f/tornado-6.5.7-cp39-abi3-musllinux_1_2_x86_64.whl",
hash =
"sha256:e726f0c75da7726eec023aa62751ff8878bd2737e34fbdd33b1ae5897d2200f5", size
= 449985, upload-time = "2026-06-08T17:34:45.326Z" },
- { url =
"https://files.pythonhosted.org/packages/5c/42/5f0e56c01e8d9d36f4e23f367b85ae6cae0c1ecddd5e6977d8388ad27488/tornado-6.5.7-cp39-abi3-win32.whl",
hash =
"sha256:f8de3bf12d3efdd0cbe7c8887868198f8a91415e3f29fcf258d9b8eb7b1d9ae4", size
= 451047, upload-time = "2026-06-08T17:34:46.784Z" },
- { url =
"https://files.pythonhosted.org/packages/c9/a4/b393076ffb21b469eec5b328a0534cf03a3b90bfc6b1f09507cdd075d938/tornado-6.5.7-cp39-abi3-win_amd64.whl",
hash =
"sha256:de942f843533a039ef9fa3d9c88c7cd8a7c94553fb5ad0154270989b3d99a2c4", size
= 451485, upload-time = "2026-06-08T17:34:48.248Z" },
- { url =
"https://files.pythonhosted.org/packages/71/2e/7b1c769803121b809112cf9a00681c472eae1d80e32d7ec0e0bd61d0d0e1/tornado-6.5.7-cp39-abi3-win_arm64.whl",
hash =
"sha256:ff934fce95643af5f11efdae618eaa73d469dc588641e5c8d19295a0c65c4796", size
= 450506, upload-time = "2026-06-08T17:34:49.702Z" },
+ { url =
"https://files.pythonhosted.org/packages/f2/d5/007086fd8df5489338e204f65adce33fd4f21a4999dbb2b9cff2f897b5f4/tornado-6.5.8-cp39-abi3-macosx_10_9_universal2.whl",
hash =
"sha256:cc6aa787d7cfab7c3d35189dc7a56fbd2399a569624c730c6b55b3d6531d0403", size
= 449487, upload-time = "2026-08-07T02:12:28.682Z" },
+ { url =
"https://files.pythonhosted.org/packages/70/c8/5a24a99495903f594f6a199dd7beead1cbc0a13e2cb9102727bcaaf2a997/tornado-6.5.8-cp39-abi3-macosx_10_9_x86_64.whl",
hash =
"sha256:9715b5eb79735b2bcd454ce216a9275b7c0470e64ea1bf5742f78b2f72b26eeb", size
= 447649, upload-time = "2026-08-07T02:12:30.306Z" },
+ { url =
"https://files.pythonhosted.org/packages/6e/de/f2e733f386b85962d1b1dc82cd63d169b5b4580062b35397eac9244a41fe/tornado-6.5.8-cp39-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
hash =
"sha256:547d63f450d570c14fe0e8db2cfb14c9bbd1c2503b4a6612586267955aa47b58", size
= 450707, upload-time = "2026-08-07T02:12:31.95Z" },
+ { url =
"https://files.pythonhosted.org/packages/0b/94/20efeee9a01c141e9ac47c397f81679dfda24b32768fc4fff24e76d36c2c/tornado-6.5.8-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
hash =
"sha256:7e2360a0ffbe145eca8af0b19cb7203d79b1a98dd4cccdd6b368f6f49c2e3808", size
= 451677, upload-time = "2026-08-07T02:12:33.512Z" },
+ { url =
"https://files.pythonhosted.org/packages/42/ec/a96ccb8ccf0de2b7bc2c5fa1608a4803735018242e90c4882365a9fd418f/tornado-6.5.8-cp39-abi3-musllinux_1_2_aarch64.whl",
hash =
"sha256:5d242290bdf7ab3151bc1065fdd75c0dcc21cbc7b49f22a4c56329c2d6566d22", size
= 451510, upload-time = "2026-08-07T02:12:35.346Z" },
+ { url =
"https://files.pythonhosted.org/packages/29/b5/93185859245ad3f00e62175f29607346788b696369347f0146e0421286bb/tornado-6.5.8-cp39-abi3-musllinux_1_2_x86_64.whl",
hash =
"sha256:7b94ff0e128fe0542f3bd331fb44d06260fc4ac16881545159f34ef08aad4195", size
= 450917, upload-time = "2026-08-07T02:12:36.963Z" },
+ { url =
"https://files.pythonhosted.org/packages/97/cf/fe33cf062834487d34d1559746a4a12521033c22645b6d74d4bca702e018/tornado-6.5.8-cp39-abi3-win32.whl",
hash =
"sha256:67832909c4779c64942380cb5f044a5c6163d00831472d80e25e115de9917836", size
= 451952, upload-time = "2026-08-07T02:12:38.512Z" },
+ { url =
"https://files.pythonhosted.org/packages/cb/e1/468ad54333e92ccb62627e62cb88e5fc14a2171daa67ed47b1b8542d5b86/tornado-6.5.8-cp39-abi3-win_amd64.whl",
hash =
"sha256:11881db6b7c168494be2c2d12e65931451bdf7ee718535418ae1d8855dd5a0ee", size
= 452391, upload-time = "2026-08-07T02:12:39.971Z" },
+ { url =
"https://files.pythonhosted.org/packages/ad/3e/cd5e4f06e34cde33b8ef66cf36aa2b5ad46354cc1af7d2136bbe365fee1d/tornado-6.5.8-cp39-abi3-win_arm64.whl",
hash =
"sha256:68a7468c7e289f8514d7d664101753903217eff1bb6822c6b5994a0b5f5bcb26", size
= 451411, upload-time = "2026-08-07T02:12:41.469Z" },
]
[[package]]