Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-langchain-aws for 
openSUSE:Factory checked in at 2026-07-29 19:00:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-langchain-aws (Old)
 and      /work/SRC/openSUSE:Factory/.python-langchain-aws.new.2004 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-langchain-aws"

Wed Jul 29 19:00:05 2026 rev:4 rq:1368302 version:1.6.4

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-langchain-aws/python-langchain-aws.changes    
    2026-07-23 23:34:54.832045313 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-langchain-aws.new.2004/python-langchain-aws.changes
      2026-07-29 19:01:32.078374295 +0200
@@ -1,0 +2,9 @@
+Wed Jul 29 06:35:17 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to version 1.6.4:
+  * Support Bedrock Guardrails in ChatAnthropicBedrock, including
+    per-request guardrail configuration
+  * Support Claude Opus 5 default thinking in ChatBedrock
+  * Fix Opus 5 streaming
+
+-------------------------------------------------------------------

Old:
----
  langchain_aws-1.6.3.tar.gz

New:
----
  langchain_aws-1.6.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-langchain-aws.spec ++++++
--- /var/tmp/diff_new_pack.MEskpS/_old  2026-07-29 19:01:33.006406303 +0200
+++ /var/tmp/diff_new_pack.MEskpS/_new  2026-07-29 19:01:33.022406855 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           python-langchain-aws
-Version:        1.6.3
+Version:        1.6.4
 Release:        0
 Summary:        LangChain integrations for AWS
 License:        MIT

++++++ langchain_aws-1.6.3.tar.gz -> langchain_aws-1.6.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_aws-1.6.3/PKG-INFO 
new/langchain_aws-1.6.4/PKG-INFO
--- old/langchain_aws-1.6.3/PKG-INFO    2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_aws-1.6.4/PKG-INFO    2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: langchain-aws
-Version: 1.6.3
+Version: 1.6.4
 Summary: An integration package connecting AWS and LangChain
 Project-URL: Source Code, 
https://github.com/langchain-ai/langchain-aws/tree/main/libs/aws
 Project-URL: Repository, https://github.com/langchain-ai/langchain-aws
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_aws-1.6.3/langchain_aws/chat_models/anthropic.py 
new/langchain_aws-1.6.4/langchain_aws/chat_models/anthropic.py
--- old/langchain_aws-1.6.3/langchain_aws/chat_models/anthropic.py      
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_aws-1.6.4/langchain_aws/chat_models/anthropic.py      
2020-02-02 01:00:00.000000000 +0100
@@ -28,6 +28,45 @@
     return default.copy()
 
 
+def _guardrail_config_to_headers(
+    guardrail_config: dict[str, Any] | None,
+) -> dict[str, str]:
+    """Translate a guardrail_config dict into Bedrock guardrail request 
headers.
+
+    The native Bedrock ``InvokeModel`` / ``InvokeModelWithResponseStream`` APIs
+    attach guardrails via HTTP headers instead of a request body field, so the
+    Converse-style config is mapped onto those headers here.
+
+    Args:
+        guardrail_config: Dict with ``guardrailIdentifier``,
+            ``guardrailVersion``, and optional ``trace``.
+
+    Returns:
+        Header dict; empty when no guardrail is configured.
+
+    Raises:
+        ValueError: If ``guardrail_config`` is missing
+            ``guardrailIdentifier`` or ``guardrailVersion``.
+    """
+    if not guardrail_config:
+        return {}
+    identifier = guardrail_config.get("guardrailIdentifier")
+    version = guardrail_config.get("guardrailVersion")
+    if not identifier or not version:
+        msg = (
+            "guardrail_config requires both 'guardrailIdentifier' and "
+            "'guardrailVersion'."
+        )
+        raise ValueError(msg)
+    headers: dict[str, str] = {
+        "X-Amzn-Bedrock-GuardrailIdentifier": str(identifier),
+        "X-Amzn-Bedrock-GuardrailVersion": str(version),
+    }
+    if trace := guardrail_config.get("trace"):
+        headers["X-Amzn-Bedrock-Trace"] = str(trace).upper()
+    return headers
+
+
 class ChatAnthropicBedrock(ChatAnthropic):
     """Anthropic Claude via AWS Bedrock.
 
@@ -110,6 +149,25 @@
     If not provided, will be read from 'AWS_SESSION_TOKEN' environment 
variable.
     """
 
+    guardrail_config: dict[str, Any] | None = Field(default=None, 
alias="guardrails")
+    """Configuration for an Amazon Bedrock Guardrail.
+
+    The native Bedrock ``InvokeModel`` APIs used by the Anthropic SDK attach
+    guardrails as HTTP request headers rather than a request body field, so
+    this config is translated into ``X-Amzn-Bedrock-GuardrailIdentifier``,
+    ``X-Amzn-Bedrock-GuardrailVersion`` and ``X-Amzn-Bedrock-Trace`` headers
+    injected per-request via the SDK's ``extra_headers`` parameter.
+
+    When set at construction, applies to every request as the default.
+    Can be overridden per-request by passing ``guardrail_config=`` as an
+    invoke kwarg (mirroring ``ChatBedrockConverse`` behaviour)::
+
+        model.invoke("hello", guardrail_config={
+            "guardrailIdentifier": "gr-other",
+            "guardrailVersion": "2",
+        })
+    """
+
     @property
     def _llm_type(self) -> str:
         """Return type of chat model."""
@@ -135,6 +193,30 @@
         """
         return ["langchain", "chat_models", "anthropic_bedrock"]
 
+    def _get_request_payload(
+        self,
+        input_: Any,
+        *,
+        stop: list[str] | None = None,
+        **kwargs: Any,
+    ) -> dict:
+        """Override to inject additional Bedrock configs via 
``extra_headers``."""
+
+        req_guardrail = kwargs.pop("guardrail_config", None)
+        guardrail = req_guardrail or self.guardrail_config
+
+        payload = super()._get_request_payload(input_, stop=stop, **kwargs)
+
+        if guardrail:
+            guardrail_headers = _guardrail_config_to_headers(guardrail)
+            existing_extra = payload.get("extra_headers") or {}
+            payload["extra_headers"] = {
+                **existing_extra,
+                **guardrail_headers,
+            }
+
+        return payload
+
     @cached_property
     def _client_params(self) -> dict[str, Any]:
         """Get client parameters for AnthropicBedrock."""
@@ -196,6 +278,8 @@
         if self.profile is None:
             model = re.sub(r"^[A-Za-z]{2}\.", "", self.model)
             self.profile = _get_default_model_profile(model)
+        if self.guardrail_config:
+            _guardrail_config_to_headers(self.guardrail_config)
         _add_langchain_aws_version(self)
         return self
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_aws-1.6.3/langchain_aws/chat_models/bedrock_converse.py 
new/langchain_aws-1.6.4/langchain_aws/chat_models/bedrock_converse.py
--- old/langchain_aws-1.6.3/langchain_aws/chat_models/bedrock_converse.py       
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_aws-1.6.4/langchain_aws/chat_models/bedrock_converse.py       
2020-02-02 01:00:00.000000000 +0100
@@ -806,6 +806,7 @@
                         "claude-opus-4",
                         "claude-haiku-4",
                         "claude-fable-5",
+                        "claude-opus-5",
                         "claude-sonnet-5",
                     ]
                 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_aws-1.6.3/langchain_aws/data/_profiles.py 
new/langchain_aws-1.6.4/langchain_aws/data/_profiles.py
--- old/langchain_aws-1.6.3/langchain_aws/data/_profiles.py     2020-02-02 
01:00:00.000000000 +0100
+++ new/langchain_aws-1.6.4/langchain_aws/data/_profiles.py     2020-02-02 
01:00:00.000000000 +0100
@@ -163,6 +163,7 @@
     },
     "anthropic.claude-opus-4-1-20250805-v1:0": {
         "name": "Claude Opus 4.1",
+        "status": "deprecated",
         "release_date": "2025-08-05",
         "last_updated": "2025-08-05",
         "open_weights": False,
@@ -283,6 +284,30 @@
         "pdf_tool_message": True,
         "image_tool_message": True,
     },
+    "anthropic.claude-opus-5": {
+        "name": "Claude Opus 5",
+        "release_date": "2026-07-24",
+        "last_updated": "2026-07-24",
+        "open_weights": False,
+        "max_input_tokens": 1000000,
+        "max_output_tokens": 128000,
+        "text_inputs": True,
+        "image_inputs": True,
+        "audio_inputs": False,
+        "pdf_inputs": True,
+        "video_inputs": False,
+        "text_outputs": True,
+        "image_outputs": False,
+        "audio_outputs": False,
+        "video_outputs": False,
+        "reasoning_output": True,
+        "tool_calling": True,
+        "attachment": True,
+        "temperature": False,
+        "image_url_inputs": True,
+        "pdf_tool_message": True,
+        "image_tool_message": True,
+    },
     "anthropic.claude-sonnet-4-5-20250929-v1:0": {
         "name": "Claude Sonnet 4.5",
         "release_date": "2025-09-29",
@@ -432,6 +457,30 @@
         "pdf_tool_message": True,
         "image_tool_message": True,
     },
+    "au.anthropic.claude-opus-5": {
+        "name": "Claude Opus 5 (AU)",
+        "release_date": "2026-07-24",
+        "last_updated": "2026-07-24",
+        "open_weights": False,
+        "max_input_tokens": 1000000,
+        "max_output_tokens": 128000,
+        "text_inputs": True,
+        "image_inputs": True,
+        "audio_inputs": False,
+        "pdf_inputs": True,
+        "video_inputs": False,
+        "text_outputs": True,
+        "image_outputs": False,
+        "audio_outputs": False,
+        "video_outputs": False,
+        "reasoning_output": True,
+        "tool_calling": True,
+        "attachment": True,
+        "temperature": False,
+        "image_url_inputs": True,
+        "pdf_tool_message": True,
+        "image_tool_message": True,
+    },
     "au.anthropic.claude-sonnet-4-5-20250929-v1:0": {
         "name": "Claude Sonnet 4.5 (AU)",
         "release_date": "2025-09-29",
@@ -728,6 +777,30 @@
         "pdf_tool_message": True,
         "image_tool_message": True,
     },
+    "eu.anthropic.claude-opus-5": {
+        "name": "Claude Opus 5 (EU)",
+        "release_date": "2026-07-24",
+        "last_updated": "2026-07-24",
+        "open_weights": False,
+        "max_input_tokens": 1000000,
+        "max_output_tokens": 128000,
+        "text_inputs": True,
+        "image_inputs": True,
+        "audio_inputs": False,
+        "pdf_inputs": True,
+        "video_inputs": False,
+        "text_outputs": True,
+        "image_outputs": False,
+        "audio_outputs": False,
+        "video_outputs": False,
+        "reasoning_output": True,
+        "tool_calling": True,
+        "attachment": True,
+        "temperature": False,
+        "image_url_inputs": True,
+        "pdf_tool_message": True,
+        "image_tool_message": True,
+    },
     "eu.anthropic.claude-sonnet-4-5-20250929-v1:0": {
         "name": "Claude Sonnet 4.5 (EU)",
         "release_date": "2025-09-29",
@@ -950,6 +1023,30 @@
         "pdf_tool_message": True,
         "image_tool_message": True,
     },
+    "global.anthropic.claude-opus-5": {
+        "name": "Claude Opus 5 (Global)",
+        "release_date": "2026-07-24",
+        "last_updated": "2026-07-24",
+        "open_weights": False,
+        "max_input_tokens": 1000000,
+        "max_output_tokens": 128000,
+        "text_inputs": True,
+        "image_inputs": True,
+        "audio_inputs": False,
+        "pdf_inputs": True,
+        "video_inputs": False,
+        "text_outputs": True,
+        "image_outputs": False,
+        "audio_outputs": False,
+        "video_outputs": False,
+        "reasoning_output": True,
+        "tool_calling": True,
+        "attachment": True,
+        "temperature": False,
+        "image_url_inputs": True,
+        "pdf_tool_message": True,
+        "image_tool_message": True,
+    },
     "global.anthropic.claude-sonnet-4-5-20250929-v1:0": {
         "name": "Claude Sonnet 4.5 (Global)",
         "release_date": "2025-09-29",
@@ -1172,6 +1269,30 @@
         "pdf_tool_message": True,
         "image_tool_message": True,
     },
+    "jp.anthropic.claude-opus-5": {
+        "name": "Claude Opus 5 (JP)",
+        "release_date": "2026-07-24",
+        "last_updated": "2026-07-24",
+        "open_weights": False,
+        "max_input_tokens": 1000000,
+        "max_output_tokens": 128000,
+        "text_inputs": True,
+        "image_inputs": True,
+        "audio_inputs": False,
+        "pdf_inputs": True,
+        "video_inputs": False,
+        "text_outputs": True,
+        "image_outputs": False,
+        "audio_outputs": False,
+        "video_outputs": False,
+        "reasoning_output": True,
+        "tool_calling": True,
+        "attachment": True,
+        "temperature": False,
+        "image_url_inputs": True,
+        "pdf_tool_message": True,
+        "image_tool_message": True,
+    },
     "jp.anthropic.claude-sonnet-4-5-20250929-v1:0": {
         "name": "Claude Sonnet 4.5 (JP)",
         "release_date": "2025-09-29",
@@ -2317,6 +2438,7 @@
     },
     "us.anthropic.claude-opus-4-1-20250805-v1:0": {
         "name": "Claude Opus 4.1 (US)",
+        "status": "deprecated",
         "release_date": "2025-08-05",
         "last_updated": "2025-08-05",
         "open_weights": False,
@@ -2420,6 +2542,30 @@
         "open_weights": False,
         "max_input_tokens": 1000000,
         "max_output_tokens": 128000,
+        "text_inputs": True,
+        "image_inputs": True,
+        "audio_inputs": False,
+        "pdf_inputs": True,
+        "video_inputs": False,
+        "text_outputs": True,
+        "image_outputs": False,
+        "audio_outputs": False,
+        "video_outputs": False,
+        "reasoning_output": True,
+        "tool_calling": True,
+        "attachment": True,
+        "temperature": False,
+        "image_url_inputs": True,
+        "pdf_tool_message": True,
+        "image_tool_message": True,
+    },
+    "us.anthropic.claude-opus-5": {
+        "name": "Claude Opus 5 (US)",
+        "release_date": "2026-07-24",
+        "last_updated": "2026-07-24",
+        "open_weights": False,
+        "max_input_tokens": 1000000,
+        "max_output_tokens": 128000,
         "text_inputs": True,
         "image_inputs": True,
         "audio_inputs": False,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_aws-1.6.3/langchain_aws/utils.py 
new/langchain_aws-1.6.4/langchain_aws/utils.py
--- old/langchain_aws-1.6.3/langchain_aws/utils.py      2020-02-02 
01:00:00.000000000 +0100
+++ new/langchain_aws-1.6.4/langchain_aws/utils.py      2020-02-02 
01:00:00.000000000 +0100
@@ -489,7 +489,9 @@
 
 def thinking_on_by_default(model: str) -> bool:
     """Check if the model runs adaptive thinking without a thinking 
parameter."""
-    return any(x in model for x in ("claude-sonnet-5", "claude-fable-5"))
+    return any(
+        x in model for x in ("claude-sonnet-5", "claude-opus-5", 
"claude-fable-5")
+    )
 
 
 def thinking_forced_tool_use_unsupported(model: str) -> bool:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_aws-1.6.3/pyproject.toml 
new/langchain_aws-1.6.4/pyproject.toml
--- old/langchain_aws-1.6.3/pyproject.toml      2020-02-02 01:00:00.000000000 
+0100
+++ new/langchain_aws-1.6.4/pyproject.toml      2020-02-02 01:00:00.000000000 
+0100
@@ -9,7 +9,7 @@
 readme = "README.md"
 authors = []
 
-version = "1.6.3"
+version = "1.6.4"
 requires-python = ">=3.10"
 dependencies = [
     "langchain-core>=1.4.7",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_aws-1.6.3/tests/integration_tests/chat_models/test_bedrock.py 
new/langchain_aws-1.6.4/tests/integration_tests/chat_models/test_bedrock.py
--- old/langchain_aws-1.6.3/tests/integration_tests/chat_models/test_bedrock.py 
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_aws-1.6.4/tests/integration_tests/chat_models/test_bedrock.py 
2020-02-02 01:00:00.000000000 +0100
@@ -242,6 +242,7 @@
     "model,model_kwargs",
     [
         ("us.anthropic.claude-sonnet-5", {"thinking": {"type": "disabled"}}),
+        ("us.anthropic.claude-opus-5", {"thinking": {"type": "disabled"}}),
         ("mistral.mistral-7b-instruct-v0:2", {}),
     ],
 )
@@ -267,6 +268,7 @@
     "model,model_kwargs",
     [
         ("us.anthropic.claude-sonnet-5", {"thinking": {"type": "disabled"}}),
+        ("us.anthropic.claude-opus-5", {"thinking": {"type": "disabled"}}),
         ("mistral.mistral-7b-instruct-v0:2", {}),
     ],
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_aws-1.6.3/tests/unit_tests/chat_models/__snapshots__/test_anthropic.ambr
 
new/langchain_aws-1.6.4/tests/unit_tests/chat_models/__snapshots__/test_anthropic.ambr
--- 
old/langchain_aws-1.6.3/tests/unit_tests/chat_models/__snapshots__/test_anthropic.ambr
      2020-02-02 01:00:00.000000000 +0100
+++ 
new/langchain_aws-1.6.4/tests/unit_tests/chat_models/__snapshots__/test_anthropic.ambr
      2020-02-02 01:00:00.000000000 +0100
@@ -8,13 +8,6 @@
       'ChatAnthropicBedrock',
     ]),
     'kwargs': dict({
-      'anthropic_api_key': dict({
-        'id': list([
-          'ANTHROPIC_API_KEY',
-        ]),
-        'lc': 1,
-        'type': 'secret',
-      }),
       'anthropic_api_url': 'https://api.anthropic.com',
       'anthropic_proxy': None,
       'aws_access_key_id': dict({
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_aws-1.6.3/tests/unit_tests/chat_models/test_anthropic.py 
new/langchain_aws-1.6.4/tests/unit_tests/chat_models/test_anthropic.py
--- old/langchain_aws-1.6.3/tests/unit_tests/chat_models/test_anthropic.py      
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_aws-1.6.4/tests/unit_tests/chat_models/test_anthropic.py      
2020-02-02 01:00:00.000000000 +0100
@@ -291,3 +291,151 @@
     )
     assert model.profile
     assert "max_input_tokens" in model.profile
+
+
+def test_chat_anthropic_bedrock_guardrail_config_sets_headers() -> None:
+    """Test guardrail_config is translated into extra_headers in the 
payload."""
+    model = ChatAnthropicBedrock(  # type: ignore[call-arg]
+        model=BEDROCK_MODEL_NAME,
+        region_name="us-east-1",
+        guardrail_config={
+            "guardrailIdentifier": "gr-abc123",
+            "guardrailVersion": "1",
+            "trace": "enabled",
+        },
+    )
+    payload = model._get_request_payload([HumanMessage(content="hello")], 
stop=None)
+    headers = payload["extra_headers"]
+    assert headers["X-Amzn-Bedrock-GuardrailIdentifier"] == "gr-abc123"
+    assert headers["X-Amzn-Bedrock-GuardrailVersion"] == "1"
+    assert headers["X-Amzn-Bedrock-Trace"] == "ENABLED"
+
+
+def test_chat_anthropic_bedrock_guardrail_config_without_trace() -> None:
+    """Test the trace header is omitted when `trace` is not configured."""
+    model = ChatAnthropicBedrock(  # type: ignore[call-arg]
+        model=BEDROCK_MODEL_NAME,
+        region_name="us-east-1",
+        guardrail_config={
+            "guardrailIdentifier": "gr-abc123",
+            "guardrailVersion": "2",
+        },
+    )
+    payload = model._get_request_payload([HumanMessage(content="hello")], 
stop=None)
+    headers = payload["extra_headers"]
+    assert headers["X-Amzn-Bedrock-GuardrailVersion"] == "2"
+    assert "X-Amzn-Bedrock-Trace" not in headers
+
+
+def test_chat_anthropic_bedrock_no_guardrail_config_no_headers() -> None:
+    """Test that without guardrail_config no extra_headers are added."""
+    model = ChatAnthropicBedrock(  # type: ignore[call-arg]
+        model=BEDROCK_MODEL_NAME,
+        region_name="us-east-1",
+    )
+    payload = model._get_request_payload([HumanMessage(content="hello")], 
stop=None)
+    assert "extra_headers" not in payload
+
+
+def test_chat_anthropic_bedrock_guardrail_config_merges_default_headers() -> 
None:
+    """Test guardrail headers merge with existing extra_headers."""
+    model = ChatAnthropicBedrock(  # type: ignore[call-arg]
+        model=BEDROCK_MODEL_NAME,
+        region_name="us-east-1",
+        guardrail_config={
+            "guardrailIdentifier": "gr-abc123",
+            "guardrailVersion": "3",
+        },
+    )
+    payload = model._get_request_payload(
+        [HumanMessage(content="hello")],
+        stop=None,
+        extra_headers={"X-Custom": "keep-me"},
+    )
+    headers = payload["extra_headers"]
+    assert headers["X-Custom"] == "keep-me"
+    assert headers["X-Amzn-Bedrock-GuardrailIdentifier"] == "gr-abc123"
+    assert headers["X-Amzn-Bedrock-GuardrailVersion"] == "3"
+
+
+def test_chat_anthropic_bedrock_guardrail_config_requires_both_keys() -> None:
+    """Test incomplete guardrail_config fails eagerly at construction."""
+    with pytest.raises(ValueError, match="guardrailVersion"):
+        ChatAnthropicBedrock(  # type: ignore[call-arg]
+            model=BEDROCK_MODEL_NAME,
+            region_name="us-east-1",
+            guardrail_config={"guardrailIdentifier": "gr-abc123"},
+        )
+
+
+def test_chat_anthropic_bedrock_guardrails_alias() -> None:
+    """Test the `guardrails` alias for parity with `ChatBedrockConverse`."""
+    model = ChatAnthropicBedrock(  # type: ignore[call-arg]
+        model=BEDROCK_MODEL_NAME,
+        region_name="us-east-1",
+        guardrails={
+            "guardrailIdentifier": "gr-abc123",
+            "guardrailVersion": "1",
+        },
+    )
+    assert model.guardrail_config is not None
+    payload = model._get_request_payload([HumanMessage(content="hello")], 
stop=None)
+    assert payload["extra_headers"]["X-Amzn-Bedrock-GuardrailIdentifier"] == 
"gr-abc123"
+
+
+def test_chat_anthropic_bedrock_per_request_guardrail_override() -> None:
+    """Test invoke-level guardrail_config overrides the instance default."""
+    model = ChatAnthropicBedrock(  # type: ignore[call-arg]
+        model=BEDROCK_MODEL_NAME,
+        region_name="us-east-1",
+        guardrail_config={
+            "guardrailIdentifier": "gr-default",
+            "guardrailVersion": "1",
+        },
+    )
+    payload = model._get_request_payload(
+        [HumanMessage(content="hello")],
+        stop=None,
+        guardrail_config={
+            "guardrailIdentifier": "gr-override",
+            "guardrailVersion": "5",
+            "trace": "disabled",
+        },
+    )
+    headers = payload["extra_headers"]
+    assert headers["X-Amzn-Bedrock-GuardrailIdentifier"] == "gr-override"
+    assert headers["X-Amzn-Bedrock-GuardrailVersion"] == "5"
+    assert headers["X-Amzn-Bedrock-Trace"] == "DISABLED"
+
+
+def test_chat_anthropic_bedrock_per_request_guardrail_no_default() -> None:
+    """Test per-request guardrail works without an instance-level default."""
+    model = ChatAnthropicBedrock(  # type: ignore[call-arg]
+        model=BEDROCK_MODEL_NAME,
+        region_name="us-east-1",
+    )
+    payload = model._get_request_payload(
+        [HumanMessage(content="hello")],
+        stop=None,
+        guardrail_config={
+            "guardrailIdentifier": "gr-adhoc",
+            "guardrailVersion": "3",
+        },
+    )
+    headers = payload["extra_headers"]
+    assert headers["X-Amzn-Bedrock-GuardrailIdentifier"] == "gr-adhoc"
+    assert headers["X-Amzn-Bedrock-GuardrailVersion"] == "3"
+
+
+def test_chat_anthropic_bedrock_per_request_guardrail_validates() -> None:
+    """Test incomplete per-request guardrail_config raises ValueError."""
+    model = ChatAnthropicBedrock(  # type: ignore[call-arg]
+        model=BEDROCK_MODEL_NAME,
+        region_name="us-east-1",
+    )
+    with pytest.raises(ValueError, match="guardrailVersion"):
+        model._get_request_payload(
+            [HumanMessage(content="hello")],
+            stop=None,
+            guardrail_config={"guardrailIdentifier": "gr-abc123"},
+        )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_aws-1.6.3/tests/unit_tests/chat_models/test_bedrock.py 
new/langchain_aws-1.6.4/tests/unit_tests/chat_models/test_bedrock.py
--- old/langchain_aws-1.6.3/tests/unit_tests/chat_models/test_bedrock.py        
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_aws-1.6.4/tests/unit_tests/chat_models/test_bedrock.py        
2020-02-02 01:00:00.000000000 +0100
@@ -2148,8 +2148,16 @@
     assert isinstance(body["system"], str)
 
 
-def test_stream_thinking_on_by_default_returns_block_content() -> None:
-    """Sonnet/Fable 5 streams should not mix string and block content."""
[email protected](
+    "model_id",
+    [
+        "us.anthropic.claude-sonnet-5",
+        "global.anthropic.claude-opus-5",
+        "global.anthropic.claude-fable-5",
+    ],
+)
+def test_stream_thinking_on_by_default_returns_block_content(model_id: str) -> 
None:
+    """Default-thinking Claude streams must not mix string and block 
content."""
     mock_client = MagicMock()
 
     def stream_gen():
@@ -2181,7 +2189,7 @@
 
     llm = ChatBedrock(
         client=mock_client,
-        model="us.anthropic.claude-sonnet-5",
+        model=model_id,
         region="us-west-2",
     )
     full = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_aws-1.6.3/tests/unit_tests/chat_models/test_bedrock_converse.py 
new/langchain_aws-1.6.4/tests/unit_tests/chat_models/test_bedrock_converse.py
--- 
old/langchain_aws-1.6.3/tests/unit_tests/chat_models/test_bedrock_converse.py   
    2020-02-02 01:00:00.000000000 +0100
+++ 
new/langchain_aws-1.6.4/tests/unit_tests/chat_models/test_bedrock_converse.py   
    2020-02-02 01:00:00.000000000 +0100
@@ -797,6 +797,7 @@
         ("us.anthropic.claude-sonnet-4-20250514-v1:0", False),
         ("us.anthropic.claude-opus-4-20250514-v1:0", False),
         ("us.anthropic.claude-sonnet-4-5-20250929-v1:0", False),
+        ("global.anthropic.claude-opus-5", False),
         ("us.anthropic.claude-sonnet-5", False),
         ("us.anthropic.claude-fable-5", False),
         ("us.anthropic.claude-3-haiku-20240307-v1:0", False),
@@ -2479,6 +2480,12 @@
             "anthropic",
             False,
         ),
+        (
+            
"arn:aws:bedrock:us-west-2:123456789012:application-inference-profile/my-profile",
+            "anthropic.claude-opus-5",
+            "anthropic",
+            False,
+        ),
         (
             
"arn:aws:bedrock:us-west-2:123456789012:application-inference-profile/my-profile",
             "anthropic.claude-sonnet-5",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_aws-1.6.3/tests/unit_tests/test_utils.py 
new/langchain_aws-1.6.4/tests/unit_tests/test_utils.py
--- old/langchain_aws-1.6.3/tests/unit_tests/test_utils.py      2020-02-02 
01:00:00.000000000 +0100
+++ new/langchain_aws-1.6.4/tests/unit_tests/test_utils.py      2020-02-02 
01:00:00.000000000 +0100
@@ -453,6 +453,7 @@
         ("us.anthropic.claude-3-5-sonnet-20240620-v1:0", True),
         ("us.anthropic.claude-fable-5", False),
         ("us.anthropic.claude-sonnet-5", False),
+        ("global.anthropic.claude-opus-5", False),
         ("us.anthropic.claude-3-sonnet-20240229-v1:0", False),
         ("us.meta.llama4-scout-17b-instruct-v1:0", False),
         ("us.amazon.nova-pro-v1:0", False),
@@ -479,6 +480,7 @@
         ("us.anthropic.claude-haiku-4-5-20251001-v1:0", True),
         ("global.anthropic.claude-opus-4-8", False),
         ("us.anthropic.claude-sonnet-5", False),
+        ("global.anthropic.claude-opus-5", False),
         ("global.anthropic.claude-fable-5", False),
     ],
 )
@@ -492,6 +494,7 @@
     "model_id,expected_result",
     [
         ("us.anthropic.claude-sonnet-5", True),
+        ("global.anthropic.claude-opus-5", True),
         ("global.anthropic.claude-fable-5", True),
         ("global.anthropic.claude-opus-4-8", False),
         ("anthropic.claude-sonnet-4-6", False),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_aws-1.6.3/uv.lock 
new/langchain_aws-1.6.4/uv.lock
--- old/langchain_aws-1.6.3/uv.lock     2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_aws-1.6.4/uv.lock     2020-02-02 01:00:00.000000000 +0100
@@ -23,16 +23,16 @@
 
 [[package]]
 name = "annotated-types"
-version = "0.7.0"
+version = "0.8.0"
 source = { registry = "https://pypi.org/simple"; }
-sdist = { url = 
"https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz";,
 hash = 
"sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size 
= 16081, upload-time = "2024-05-20T21:33:25.928Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/5f/56/a8120250d128bed162cd73c76d45f6ef9991f3e068f62a8ee060afa3104a/annotated_types-0.8.0.tar.gz";,
 hash = 
"sha256:13b2beaad985e05e2d6407ee4c4f35590b11f8d693a258a561055cac8f64cab7", size 
= 15893, upload-time = "2026-07-23T20:16:13.995Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl";,
 hash = 
"sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size 
= 13643, upload-time = "2024-05-20T21:33:24.1Z" },
+    { url = 
"https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl";,
 hash = 
"sha256:f072f4d804ea359e4eaf198b1af7a8b0943881a87f31bb764f8bf219bb9419e0", size 
= 13427, upload-time = "2026-07-23T20:16:12.938Z" },
 ]
 
 [[package]]
 name = "anthropic"
-version = "0.118.0"
+version = "0.120.0"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
     { name = "anyio" },
@@ -44,9 +44,9 @@
     { name = "sniffio" },
     { name = "typing-extensions" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/07/ff/bbad57650babf07ae9761f1d974fcee73430387b5d3aa0ddb395234906e8/anthropic-0.118.0.tar.gz";,
 hash = 
"sha256:acb3c43b7e7592cf635fa21930e67a99d32641d68ccd53f625b52f71d7870d55", size 
= 994705, upload-time = "2026-07-22T16:43:57.019Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/92/5c/3331da4fc009d448008a50c78d86cc929e8c937cd1442245ce3f80561c4e/anthropic-0.120.0.tar.gz";,
 hash = 
"sha256:6ba6007dc9b00365b20f6101a6618f5196ac1ceef81512e4b5cc0e7436d4975d", size 
= 1008042, upload-time = "2026-07-24T16:32:52.384Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/91/9f/d46e77054d7efb61c85ef5e8c7e95927cc89988b6491b46d22af60d63bda/anthropic-0.118.0-py3-none-any.whl";,
 hash = 
"sha256:524d835869b8e374510b3bcc552e28dbdafc035a61d63fc0088c4035286ef8fe", size 
= 1010922, upload-time = "2026-07-22T16:43:55.461Z" },
+    { url = 
"https://files.pythonhosted.org/packages/1b/8a/8522bdf809e1f95f0d9c936540987a3f6afba01d2921a2bf488dedf836a8/anthropic-0.120.0-py3-none-any.whl";,
 hash = 
"sha256:591bd531563ec7b63a1e138f5c11f14cb94edda99623b349c2ce2ece8e08b8a5", size 
= 1022602, upload-time = "2026-07-24T16:32:50.506Z" },
 ]
 
 [package.optional-dependencies]
@@ -226,30 +226,30 @@
 
 [[package]]
 name = "boto3"
-version = "1.43.53"
+version = "1.43.57"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
     { name = "botocore" },
     { name = "jmespath" },
     { name = "s3transfer" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/6c/da/0e90eab875f2eb4b8708fef2c198f2559ed1e451a1016f1cd4fcdcfbfbe3/boto3-1.43.53.tar.gz";,
 hash = 
"sha256:c80425acab314d7af09609562053f565139e1fe49108eacfcc1601ebfaee235b", size 
= 112678, upload-time = "2026-07-21T19:28:53.002Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/c7/30/324319a914752e4021358ccf8252c04364eb8358f9d41d9c3f021959b363/boto3-1.43.57.tar.gz";,
 hash = 
"sha256:549c95e45f9b04cf0c69727632dbdda23b84dcd3d0ed7981c6aaff72ef9cb5af", size 
= 112690, upload-time = "2026-07-27T19:31:09.32Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/45/27/7e72d25fdde77668b7bd4fa47381192dd2aa64fb77265e4bab786fd9fe2a/boto3-1.43.53-py3-none-any.whl";,
 hash = 
"sha256:5383e705d8a976a14f23bb8c113c07a396931a019db98fce4cdc68650ec6e4d8", size 
= 140025, upload-time = "2026-07-21T19:28:50.957Z" },
+    { url = 
"https://files.pythonhosted.org/packages/80/a4/2c4ee25556a997a81ea01073962cf8351da3707412c584d053b3861d09e8/boto3-1.43.57-py3-none-any.whl";,
 hash = 
"sha256:115ed9cac409d9b57e2437b52fdb4286660d12a2bd44a0f48d530e68623d09a7", size 
= 140028, upload-time = "2026-07-27T19:31:07.226Z" },
 ]
 
 [[package]]
 name = "boto3-stubs"
-version = "1.43.53"
+version = "1.43.57"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
     { name = "botocore-stubs" },
     { name = "types-s3transfer" },
     { name = "typing-extensions", marker = "python_full_version < '3.12'" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/fb/40/5f28d471d6f59b0649bea6a5885185a5e388dfafc0e8117ee97b34eef509/boto3_stubs-1.43.53.tar.gz";,
 hash = 
"sha256:28229c6a08adbc2edc6138d0b08f22d199ad46c655e448aafc6593f857d1031f", size 
= 103236, upload-time = "2026-07-21T19:52:37.138Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/68/9d/0a25b4b93aa0ae8e88adbf116117c8b5f705563f3122f5aa9b011bebf8db/boto3_stubs-1.43.57.tar.gz";,
 hash = 
"sha256:a957410d83b78c5abe4fd7778f4b2dcd7e8f0d92de69edb6cbae50390b333a6a", size 
= 103242, upload-time = "2026-07-27T20:44:38.435Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/a2/0e/2e88a58746e16d186aef25763e8838b2a6f1c91229e31a85be49b84df536/boto3_stubs-1.43.53-py3-none-any.whl";,
 hash = 
"sha256:7a2c6ccd457bc1651d3fc0f45d8d8e14d209f36867879cbd70a01ba6b336feca", size 
= 70962, upload-time = "2026-07-21T19:52:33.371Z" },
+    { url = 
"https://files.pythonhosted.org/packages/ca/db/45751b2ed0466b58b967a0e0058ebaf7f8608da0cd80e91247e13e3b6348/boto3_stubs-1.43.57-py3-none-any.whl";,
 hash = 
"sha256:36053e8243a8d45aab013f1f6e4176a86d3b9195872df87c97ef7c42ff04159e", size 
= 70961, upload-time = "2026-07-27T20:44:31.942Z" },
 ]
 
 [package.optional-dependencies]
@@ -265,16 +265,16 @@
 
 [[package]]
 name = "botocore"
-version = "1.43.53"
+version = "1.43.57"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
     { name = "jmespath" },
     { name = "python-dateutil" },
     { name = "urllib3" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/db/6b/ebcefacc4de3cd4f1c449540d86877f76c2f5e586a620831012decbb2b2c/botocore-1.43.53.tar.gz";,
 hash = 
"sha256:36d93dd8db68ee75f6b61ca9f775161b8168844e4601698701530e6efdded141", size 
= 15720336, upload-time = "2026-07-21T19:28:41.547Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/0b/92/1f8a454cf90bcb0c0e32a25817441cb7f3702fdd76710d7018abad12a2fc/botocore-1.43.57.tar.gz";,
 hash = 
"sha256:001a5653bebc03b862bde2da63bad4adb0b30072a3f247aba4daae5aa097b546", size 
= 15739550, upload-time = "2026-07-27T19:30:57.916Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/dc/e5/1b60e394f0fff97ee70dd16913382b7dffda85b98e639c0c9e8ff56cfaa7/botocore-1.43.53-py3-none-any.whl";,
 hash = 
"sha256:b7ee9a70d187e5348883c820990ccd9436ab14e2bd6622741fc96fe561e816b8", size 
= 15404628, upload-time = "2026-07-21T19:28:37.475Z" },
+    { url = 
"https://files.pythonhosted.org/packages/41/7a/1cfe9c296df0fa6e0143c8622b10f21fa8fb9cce25450e9a8e5cf6523e4b/botocore-1.43.57-py3-none-any.whl";,
 hash = 
"sha256:319c6d79f66c3f3f2b538f7dcdc90e410a15a7bfced1db06479134947e629482", size 
= 15424433, upload-time = "2026-07-27T19:30:55.08Z" },
 ]
 
 [[package]]
@@ -1030,21 +1030,21 @@
 
 [[package]]
 name = "langchain-anthropic"
-version = "1.5.0"
+version = "1.5.2"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
     { name = "anthropic" },
     { name = "langchain-core" },
     { name = "pydantic" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/b2/99/b0fc215bb552a9e94af78f583334ad16a561bca3c771dbd6cbaa67f92a77/langchain_anthropic-1.5.0.tar.gz";,
 hash = 
"sha256:c36f195fd73455d820f4e7cf7220d652858d707b67bce70f3fe0f57227ec6c81", size 
= 711155, upload-time = "2026-07-21T18:17:10.143Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/46/be/07f180f98cee1826c31fd194bd676a43c0e99cdc746966eb61c0e30044a6/langchain_anthropic-1.5.2.tar.gz";,
 hash = 
"sha256:11cda4fac1129f229022a5c7a9be47156dea02ecf6e666acbb050943eb2df613", size 
= 712706, upload-time = "2026-07-24T19:08:09.637Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/0b/bd/a612fbafa1def5ff41a72080e430a310bc08f6fce34d4fc803fb9c00f632/langchain_anthropic-1.5.0-py3-none-any.whl";,
 hash = 
"sha256:b341c0fa197e7d55555a228377e66214af8cb77631ca633f8bd58655d10103ac", size 
= 53083, upload-time = "2026-07-21T18:17:08.955Z" },
+    { url = 
"https://files.pythonhosted.org/packages/7d/1f/554cdfcacec55ea00bbefa5d25c80bd3870f0509b532c89e26fffd25f56b/langchain_anthropic-1.5.2-py3-none-any.whl";,
 hash = 
"sha256:49f94c4daccde31fd06bee70a1a0d00a0b9a91dda10fe1115495e63c9c2f90da", size 
= 53898, upload-time = "2026-07-24T19:08:08.517Z" },
 ]
 
 [[package]]
 name = "langchain-aws"
-version = "1.6.3"
+version = "1.6.4"
 source = { editable = "." }
 dependencies = [
     { name = "boto3" },
@@ -1179,7 +1179,7 @@
 
 [[package]]
 name = "langchain-core"
-version = "1.5.0"
+version = "1.5.1"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
     { name = "jsonpatch" },
@@ -1192,9 +1192,9 @@
     { name = "typing-extensions" },
     { name = "uuid-utils" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/5c/05/986c4bb148285791eb59994e0b28947bed96cac7f24467079e4274952a37/langchain_core-1.5.0.tar.gz";,
 hash = 
"sha256:e1fa09d55b354192c8f60dade06a55bd6add2318c822a684555b8d4a30a16143", size 
= 967401, upload-time = "2026-07-21T03:37:26.48Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/a7/fc/84e23e8adff5adcd7792273ad610c4972ec534658a52698fb8db6defa87a/langchain_core-1.5.1.tar.gz";,
 hash = 
"sha256:b0df382704c6403c1e0c9603415bce09290455d4aeeb38f350d15f78ca597483", size 
= 972219, upload-time = "2026-07-23T20:13:22.282Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/29/56/5ef7ba14bac95b0344da18c6e8ec108dce0baf5fc054d1117702f92af29d/langchain_core-1.5.0-py3-none-any.whl";,
 hash = 
"sha256:f122efee35446632b38687119fca33711abbf3b6b555e31156762298fbe78a65", size 
= 558510, upload-time = "2026-07-21T03:37:24.423Z" },
+    { url = 
"https://files.pythonhosted.org/packages/55/1e/1eb8833dc59b9c1f49da89a4a1ad7510440c9eb57fb539ea2203294a1acd/langchain_core-1.5.1-py3-none-any.whl";,
 hash = 
"sha256:c5ec8f51dd05124f950c9afd0fd8bb3f7be4e405eeb868d481b2f8ff652cb9d2", size 
= 561634, upload-time = "2026-07-23T20:13:20.717Z" },
 ]
 
 [[package]]
@@ -1305,7 +1305,7 @@
 
 [[package]]
 name = "langsmith"
-version = "0.10.9"
+version = "0.10.10"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
     { name = "anyio" },
@@ -1323,9 +1323,9 @@
     { name = "xxhash" },
     { name = "zstandard" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/ed/6d/9ad4427662ef131878f0f928d5a9e9913e0dda4b6511bb03e8722f1dee8a/langsmith-0.10.9.tar.gz";,
 hash = 
"sha256:195bc67c964a6370cb91742ce9fa07ce69bfae47977f0fb3f41d125b3435d03a", size 
= 4736750, upload-time = "2026-07-20T21:27:13.738Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/10/38/c709ff119172e490a8e8bccd10deeda8da239f15f11521009a58c7b904ac/langsmith-0.10.10.tar.gz";,
 hash = 
"sha256:e0e175e9dd8de6d96dbb55244482e20590a2691ec7c5e087afc1f302e33d98fe", size 
= 4739726, upload-time = "2026-07-23T04:18:56.246Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/ed/54/509a1eb6b9e5572a4f3f4b087779d240c6b69f3d5247ffa21314f66155d9/langsmith-0.10.9-py3-none-any.whl";,
 hash = 
"sha256:5e0e8ab0f8df05710809919184495e33c2a7c9a9a5e8861d63dd12c1226d9c79", size 
= 673326, upload-time = "2026-07-20T21:27:11.889Z" },
+    { url = 
"https://files.pythonhosted.org/packages/3e/ec/0b2348bea502e07cb3c2a6e5109423debd82aef9fcef6f807c159ceb5297/langsmith-0.10.10-py3-none-any.whl";,
 hash = 
"sha256:eb5e9da635f5853fc657cddd1c27f40a8e8b2f00c38051555d608c8e57eb605d", size 
= 675232, upload-time = "2026-07-23T04:18:54.399Z" },
 ]
 
 [[package]]
@@ -2324,39 +2324,39 @@
 
 [[package]]
 name = "ruff"
-version = "0.15.22"
+version = "0.16.0"
 source = { registry = "https://pypi.org/simple"; }
-sdist = { url = 
"https://files.pythonhosted.org/packages/3a/06/ae069393fc66e8ff33036d4b368003833bf6e88ccf182e17e7a2f1c754fd/ruff-0.15.22.tar.gz";,
 hash = 
"sha256:3f15175b1fb580126f58285a5dae6b2ea89000136d980c64499211f116b54809", size 
= 4785063, upload-time = "2026-07-16T15:14:13.244Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/4d/94/1e5e4967626faf12fa56999cd6222dff6992ceb086ad7945756baf70c7a7/ruff-0.16.0.tar.gz";,
 hash = 
"sha256:e460aafd5495ec89efaa6ced2e4a9a581116451e1c88b9d37ef497e0f8e93982", size 
= 4790557, upload-time = "2026-07-23T19:11:30.981Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/23/18/ee54b7ae1e121be7a28ea6da4b67564ebb0530e183a54415ab7e3bcd2c4e/ruff-0.15.22-py3-none-linux_armv6l.whl";,
 hash = 
"sha256:44423e73493737f5e7c5b41d475483898ff37afcdae38bc3da5085e29af1c2d8", size 
= 10781258, upload-time = "2026-07-16T15:13:19.452Z" },
-    { url = 
"https://files.pythonhosted.org/packages/2f/d2/2520cb14761ddbeaf57642a76942fc36adcbdbe53b4532241995f6fc485c/ruff-0.15.22-py3-none-macosx_10_12_x86_64.whl";,
 hash = 
"sha256:b82c6482946e9eda7ff2e091d25b8bad3f718684e1916d41bd56873cee05b697", size 
= 10999477, upload-time = "2026-07-16T15:13:23.318Z" },
-    { url = 
"https://files.pythonhosted.org/packages/c9/10/74e53572aa758dfaa678c2a2646b5c5515d884b7ca56be4d2ce03ca4b560/ruff-0.15.22-py3-none-macosx_11_0_arm64.whl";,
 hash = 
"sha256:11c1c715af53a09f714e011106bffc419751ec8232fcb5da42173284ea3fec6f", size 
= 10466716, upload-time = "2026-07-16T15:13:26.162Z" },
-    { url = 
"https://files.pythonhosted.org/packages/1e/cc/44eaaf0844e028182f2d0a8f2190d0f359159aed0a9e5ab861d892f1ae2a/ruff-0.15.22-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";,
 hash = 
"sha256:742a29cf29bddb7c8327895d6a10e0e6c5b38a96dd407af9b5d0857f809c0576", size 
= 10892644, upload-time = "2026-07-16T15:13:29.229Z" },
-    { url = 
"https://files.pythonhosted.org/packages/9f/21/8edf559014d2b0f82beea19cfb713993ad802ccda16868769979c6090a84/ruff-0.15.22-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl";,
 hash = 
"sha256:72af58b951b0ae395935ae79763dc349bc0eb706319d28f7a33ad2cfb3cfc178", size 
= 10576719, upload-time = "2026-07-16T15:13:32.35Z" },
-    { url = 
"https://files.pythonhosted.org/packages/bf/1e/3a13abd392a3b50b62e5938a831f9ab6e588358cacad5c18545b716d2182/ruff-0.15.22-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl";,
 hash = 
"sha256:62d425005c1835eb24e2ee4161cb90e8db263415f4a71c8c72c33abaa6c0c224", size 
= 11376494, upload-time = "2026-07-16T15:13:35.958Z" },
-    { url = 
"https://files.pythonhosted.org/packages/bf/3e/422d3d95bcf04dd78e1aeac22184d4f9a8fb2c01865d39d44618484a0317/ruff-0.15.22-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl";,
 hash = 
"sha256:e8b9b3f8779a4f08c969defc3c8c35abffaa757e601ed5ae66d6d1db6519969a", size 
= 12208370, upload-time = "2026-07-16T15:13:39.185Z" },
-    { url = 
"https://files.pythonhosted.org/packages/1e/91/5d065a0e0a02bf4813f5119ad278462eed081d2b832eb7c021ade0ec9e65/ruff-0.15.22-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl";,
 hash = 
"sha256:1e0dd1b2e4d3d585f897a0d137cbf4eaf6223bef4e8ce34d6bb12556c5f9249e", size 
= 11581098, upload-time = "2026-07-16T15:13:42.132Z" },
-    { url = 
"https://files.pythonhosted.org/packages/f6/f9/a0d4871d12fae702eb1f41b686caf05f1f8b124dc6db6f784f53d74918fa/ruff-0.15.22-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";,
 hash = 
"sha256:365523eb91d9224e1bcb03b022fbf0facb8f9e23792a2c53d9d4b3924bdbdebb", size 
= 11399422, upload-time = "2026-07-16T15:13:45.2Z" },
-    { url = 
"https://files.pythonhosted.org/packages/18/80/c843a5176cddbceb0b7e8dd41cf9993490796c1c469348d384f5a5c13c56/ruff-0.15.22-py3-none-manylinux_2_31_riscv64.whl";,
 hash = 
"sha256:fabfd168afdf29fee5be98b831efa9683c94d7c5a3b58b9ce5a2e38444589a74", size 
= 11381683, upload-time = "2026-07-16T15:13:48.46Z" },
-    { url = 
"https://files.pythonhosted.org/packages/d4/00/8485de0ae92239438a36cfc51350db9b9e85c9ebdfaea91b18e422706662/ruff-0.15.22-py3-none-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:225dbf095a87f1d9f90f5fd7924d2613ee452a75a4308c63a8f50f761787aa7c", size 
= 10850295, upload-time = "2026-07-16T15:13:51.655Z" },
-    { url = 
"https://files.pythonhosted.org/packages/fa/91/24977ec2ec72eaf15e4394ace2959fdff2dd1e14f03e005e838023407169/ruff-0.15.22-py3-none-musllinux_1_2_armv7l.whl";,
 hash = 
"sha256:1877d63b9d24ed278744f1523fd11b85540566d54641f97c566d7d9dc5ca5296", size 
= 10579640, upload-time = "2026-07-16T15:13:54.79Z" },
-    { url = 
"https://files.pythonhosted.org/packages/9c/47/9b51216951974df1f263ac19da550d34252e0ed7218c25f10c5ef9ed7517/ruff-0.15.22-py3-none-musllinux_1_2_i686.whl";,
 hash = 
"sha256:a1606c510bd7215680d32efab38965f7cdec3ef69f5170a3f4791404ffdd5262", size 
= 11105077, upload-time = "2026-07-16T15:13:57.915Z" },
-    { url = 
"https://files.pythonhosted.org/packages/c2/47/20e9d4a3b8016778acea5fc32bb50d35d207500a17ddb529ffa6996feef8/ruff-0.15.22-py3-none-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:630479b18625f5ffc373f77603a22a9f8ac0acd7ff0501178b5db28ec71e9c64", size 
= 11490980, upload-time = "2026-07-16T15:14:01.032Z" },
-    { url = 
"https://files.pythonhosted.org/packages/4d/76/3f72d8fc38c1cb77b38c56a70da9d0c17700cc1cc50f9649c9d3c8f5ba71/ruff-0.15.22-py3-none-win32.whl";,
 hash = 
"sha256:e5ba0e4a13fd14abbed2a77b517a3911290c6c6c59ef67784328d1668fab76cf", size 
= 10789165, upload-time = "2026-07-16T15:14:04.16Z" },
-    { url = 
"https://files.pythonhosted.org/packages/cb/46/4965251734c2b6fcdca1b1b187d20bcac3af0ee5b083b89c910bb961ce3a/ruff-0.15.22-py3-none-win_amd64.whl";,
 hash = 
"sha256:9be63ba1eb936acd2d1342fb8337c356353706fce233b2a15a09a97037e6acde", size 
= 11938297, upload-time = "2026-07-16T15:14:07.316Z" },
-    { url = 
"https://files.pythonhosted.org/packages/57/c9/e69b1ff4c8b69093ef08b8919ab767af0569666865b39c30a8795d88d3c6/ruff-0.15.22-py3-none-win_arm64.whl";,
 hash = 
"sha256:e1168075b72158510839f250027659cdd78476f40507dd517892304c41318661", size 
= 11298172, upload-time = "2026-07-16T15:14:10.51Z" },
+    { url = 
"https://files.pythonhosted.org/packages/4b/81/1c8818fee7ce1a04cd7d1b3172e0a8f8e4f1dc4feb7fc390e16daa8af323/ruff-0.16.0-py3-none-linux_armv6l.whl";,
 hash = 
"sha256:e5115729eb08c585e5121978ba5d5b60caeae394ce21b9fb5e6cd33a1c6c9b1e", size 
= 10754633, upload-time = "2026-07-23T19:10:46.415Z" },
+    { url = 
"https://files.pythonhosted.org/packages/23/df/beaf59c09d68db84304d555f188b276a77132a5d5b0b67a5c762aa143628/ruff-0.16.0-py3-none-macosx_10_12_x86_64.whl";,
 hash = 
"sha256:3c954b1d580bfa035b41654f7858cc7e71d5fc3ac5b723dd62bd9133830ed522", size 
= 10969164, upload-time = "2026-07-23T19:10:50.271Z" },
+    { url = 
"https://files.pythonhosted.org/packages/42/ce/741cd197496a1abbf51352710fd15ed995d2a2be87189c1da26a450d6e83/ruff-0.16.0-py3-none-macosx_11_0_arm64.whl";,
 hash = 
"sha256:e01c21d10eb1b29f47b7454e1f4056db9a3f0260c646aa88457c610291db9f81", size 
= 10488846, upload-time = "2026-07-23T19:10:52.639Z" },
+    { url = 
"https://files.pythonhosted.org/packages/52/2a/a2db8e88cade358f5cdcb05674a917751074109315d014eb6352d9a893f7/ruff-0.16.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";,
 hash = 
"sha256:6e364e5ed22ed8dc05082fd78e35308618260907ac2d3c1d637b2e682415b6c9", size 
= 10889729, upload-time = "2026-07-23T19:10:54.89Z" },
+    { url = 
"https://files.pythonhosted.org/packages/42/65/62a771694ebd63029dc953e27dbad40e1588bd4860ff9fe881018fddaa49/ruff-0.16.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl";,
 hash = 
"sha256:d327b8fc113a1d4421a04f3839d3752057c8dd1ee320223a6f3f52d04ada462a", size 
= 10568275, upload-time = "2026-07-23T19:10:56.993Z" },
+    { url = 
"https://files.pythonhosted.org/packages/3f/e2/ced249fe8af5f086c5c58cc21cc3356d50f32f7401c5df87050c999620a7/ruff-0.16.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl";,
 hash = 
"sha256:a9b50c55e263103586b3dcf5f73d479eb8cb5fdb6098fec59a62891dab653717", size 
= 11385112, upload-time = "2026-07-23T19:10:59.615Z" },
+    { url = 
"https://files.pythonhosted.org/packages/87/0b/05154977a8fd69eeb6c103271f55403bfd8711f5c0f8ed07489d95a504e7/ruff-0.16.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl";,
 hash = 
"sha256:0ff4a79ce3ec0172f3241943835de1c4cb4e2dcd07f0f8c2d02603dbbbee4b17", size 
= 12207008, upload-time = "2026-07-23T19:11:02.154Z" },
+    { url = 
"https://files.pythonhosted.org/packages/fb/29/98225831a3a1eab0e02f4acc6ca6559a98611dcc68b6965ff4b7234627c1/ruff-0.16.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl";,
 hash = 
"sha256:e95c448fca1fb2a18372a9440926c5a6ee789639bb975c72e7ae6d0b04218ab4", size 
= 11650842, upload-time = "2026-07-23T19:11:04.557Z" },
+    { url = 
"https://files.pythonhosted.org/packages/91/66/6bd3cf90500653d55dc0ffc8507aa8300bd49d0214b2e8cb4d3fef2943ba/ruff-0.16.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";,
 hash = 
"sha256:4f11a8d11010301d0a398a2fdef67691feca7294da6aef55e2150e8fa2cd520b", size 
= 11400718, upload-time = "2026-07-23T19:11:09.233Z" },
+    { url = 
"https://files.pythonhosted.org/packages/8e/a2/a54eb4eae05d66364050a5d3b8a9c5ef88196531b3cbe7109d873f87f819/ruff-0.16.0-py3-none-manylinux_2_31_riscv64.whl";,
 hash = 
"sha256:48044c678e9cb8698246c99b14aaccfa6601dea7379eb48a6f8f73f7a6d86cd0", size 
= 11426177, upload-time = "2026-07-23T19:11:11.994Z" },
+    { url = 
"https://files.pythonhosted.org/packages/1a/be/16e3eea4b2a478a496919f5e36f17c4559e54620bd3bbac5d6affa068006/ruff-0.16.0-py3-none-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:7aa0959bad8eb8bef50340154fc9b58678dae31fa4293afa38b44b6e552c0213", size 
= 10856126, upload-time = "2026-07-23T19:11:14.221Z" },
+    { url = 
"https://files.pythonhosted.org/packages/a2/84/252eb8b868a16eec7257c14f504f77537e734b2d69c762e639e588e304a3/ruff-0.16.0-py3-none-musllinux_1_2_armv7l.whl";,
 hash = 
"sha256:28ea2b7df8ebf7f9da6b7d47b230ab48f387c0a29be3b474c4d0740e197bb9af", size 
= 10571208, upload-time = "2026-07-23T19:11:16.378Z" },
+    { url = 
"https://files.pythonhosted.org/packages/21/09/817a482f542f7570cbb4554b26e896610c7114f539b1d9e2d2145bf6bef6/ruff-0.16.0-py3-none-musllinux_1_2_i686.whl";,
 hash = 
"sha256:33a3dfac8c35f81498dea9181bccc2f4c4bc8f1521a1dd9406e77643e0f0fb09", size 
= 11063329, upload-time = "2026-07-23T19:11:19.173Z" },
+    { url = 
"https://files.pythonhosted.org/packages/2e/23/9403c180ca1cb9b1f7335f5c3e5305c09d49ea5b345196682a36028bde4a/ruff-0.16.0-py3-none-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:a5237a0bda500d30d81b8e07a6973a5cbc772864cbf746ae2f4e8a2e01c9f4ed", size 
= 11489751, upload-time = "2026-07-23T19:11:21.74Z" },
+    { url = 
"https://files.pythonhosted.org/packages/b2/1d/1b2ef7bcde851c78d7f17f1cca13fd6dc695fc4b3d6197941e72cae5b132/ruff-0.16.0-py3-none-win32.whl";,
 hash = 
"sha256:7fab76fa065c873f41ff744347c6e77bcc3dfec4bcc754dc26b63d23c0f7f5fb", size 
= 10785885, upload-time = "2026-07-23T19:11:23.947Z" },
+    { url = 
"https://files.pythonhosted.org/packages/b2/a3/d5e4ef7a56be3f928ffb90b94c25ba7d3cb9c7fe0736aeaaedf361770712/ruff-0.16.0-py3-none-win_amd64.whl";,
 hash = 
"sha256:429c117f022bf481fabd9d551e7a3952b24c65e6ef44337ea09d90bebef14472", size 
= 11923141, upload-time = "2026-07-23T19:11:26.409Z" },
+    { url = 
"https://files.pythonhosted.org/packages/cb/9a/8415f2657cbe200f41a4531ccededf135505a92d4a012229121f885b26f9/ruff-0.16.0-py3-none-win_arm64.whl";,
 hash = 
"sha256:14296fedcd2705c77ab8235439278bbb38f285cf7da5528b00b3e330c3d4872d", size 
= 11273407, upload-time = "2026-07-23T19:11:28.705Z" },
 ]
 
 [[package]]
 name = "s3transfer"
-version = "0.19.1"
+version = "0.19.2"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
     { name = "botocore" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/65/da/4bef7ce7bb989b222aa4785a413896dbec53306dfc59c6ce7d16a7ffbd6a/s3transfer-0.19.1.tar.gz";,
 hash = 
"sha256:d3d6371dc3f1e5c5427b2b457bcf13bcf87bec334c95aed18642eae61f6926f3", size 
= 165354, upload-time = "2026-07-10T19:32:04.849Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/76/43/35e4d8aa320bffe8287fe8f65f578fa2d2db0a64212f0e710dce58267854/s3transfer-0.19.2.tar.gz";,
 hash = 
"sha256:ba0309fd86be3c27dbf78cdd813c13c5e1df16e5874b99d2535ebbdfb9892993", size 
= 165592, upload-time = "2026-07-22T19:30:44.432Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/24/23/e84c64ad0e8bc59cd1b2ef98def848deff0ef3456c542afe74d51e9e8c85/s3transfer-0.19.1-py3-none-any.whl";,
 hash = 
"sha256:d5fd7005ee39307455ad5f310b5ea67f4b1960d7fed5b3671ee50c249de675de", size 
= 90072, upload-time = "2026-07-10T19:32:03.673Z" },
+    { url = 
"https://files.pythonhosted.org/packages/bc/e7/5c595c75e9f41a44f30e526eda465ea0b4eec93470e074e4a111b253f13a/s3transfer-0.19.2-py3-none-any.whl";,
 hash = 
"sha256:d8168eccca828cbb2cd573675333f3bddd254313a9c42494b84c76b539e8ba25", size 
= 90216, upload-time = "2026-07-22T19:30:43.251Z" },
 ]
 
 [[package]]

Reply via email to