Skip to content

chore(deps): bump litellm from 1.96.2 to 1.100.4 in the pip group across 1 directory - #62

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/pip-8867e606dd
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/pip-8867e606dd

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Nov 1, 2026

Copy link
Copy Markdown
Contributor

Bumps the pip group with 1 update in the / directory: litellm.

Updates litellm from 1.96.2 to 1.100.4

Release notes

Sourced from litellm's releases.

v1.100.4

Verify Docker Image Signature

All LiteLLM Docker images are signed with cosign. Every release is signed with the same key introduced in commit 0112e53.

Verify using the pinned commit hash (recommended):

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.100.4

Verify using the release tag (convenience):

Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.100.4/cosign.pub \
  ghcr.io/berriai/litellm:v1.100.4

Expected output:

The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key

Full Changelog: BerriAI/litellm@v1.100.3...v1.100.4

v1.100.3

Verify Docker Image Signature

All LiteLLM Docker images are signed with cosign. Every release is signed with the same key introduced in commit 0112e53.

Verify using the pinned commit hash (recommended):

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.100.3

... (truncated)

Commits
  • 883282f Merge pull request #10 from BerriAI/litellm_session_token_1_100_x
  • 241abae chore(lint): scope a TRY004 suppression to the bearer-token salt key check
  • f7cd90f refactor(auth): bind UI/CLI session tokens to their own AES-GCM context
  • bdff5cb Merge pull request #9 from BerriAI/litellm_bump_1_100_4
  • cd6eb10 bump: litellm 1.100.3 -> 1.100.4
  • 385266c Merge pull request #43132 from BerriAI/litellm_backport_1_100_x_gpt6_budget_0924
  • 04fcee8 chore: refresh uv.lock for 1.100.3
  • 5651c5a bump: version 1.100.2 → 1.100.3
  • 78be1b7 chore(deps): bump soupsieve to 2.9
  • 559dce5 chore(deps): bump pypdf to 6.16.1
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
    You can disable automated security fix PRs for this repo from the Security Alerts page.

Bumps the pip group with 1 update in the / directory: [litellm](https://github.com/BerriAI/litellm).


Updates `litellm` from 1.96.2 to 1.100.4
- [Release notes](https://github.com/BerriAI/litellm/releases)
- [Commits](BerriAI/litellm@v1.96.2...v1.100.4)

---
updated-dependencies:
- dependency-name: litellm
  dependency-version: 1.100.4
  dependency-type: direct:production
  dependency-group: pip
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update python code labels Nov 1, 2026
@codecov

codecov Bot commented Nov 1, 2026

Copy link
Copy Markdown

❌ 18 Tests Failed:

Tests completed Failed Passed Skipped
358 18 340 0
View the top 3 failed test(s) by shortest run time
tests/test_indexing_embeddings.py::test_concurrent_sync_file_does_not_overlap_aembed
Stack Traces | 0.095s run time
@pytest.mark.asyncio
    async def test_concurrent_sync_file_does_not_overlap_aembed():
        import asyncio as aio
        from unittest.mock import patch
    
        from code_rag.intelligence.openai_embedder import OpenAICompatEmbedder
    
        storage = MagicMock()
        storage.embedding_model_dirty = False
        storage.get_unit = AsyncMock(return_value=None)
        storage.has_embedding = AsyncMock(return_value=False)
        storage.upsert_unit = AsyncMock()
        storage.delete_stale_units = AsyncMock()
    
        real = OpenAICompatEmbedder(api_base="http://e", model="m")
        real.bind_dimension(2)
        in_flight = 0
        max_in_flight = 0
    
        async def fake(**kwargs):
            nonlocal in_flight, max_in_flight
            in_flight += 1
            max_in_flight = max(max_in_flight, in_flight)
            await aio.sleep(0.05)
            in_flight -= 1
            item = MagicMock()
            item.embedding = [1.0, 0.0]
            resp = MagicMock()
            resp.data = [item]
            return resp
    
        storage.embedder = real
        intel = MagicMock()
        intel.summarize = AsyncMock(return_value="sum")
        parser = MagicMock()
    
        async def distill(path):
            return [_unit(id=path, metadata={"raw_code": "x"})]
    
        parser.distill_file = AsyncMock(side_effect=distill)
>       with patch("litellm.aembedding", new=fake):

tests/test_indexing_embeddings.py:215: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_openai_embedder.py::test_unbound_probe_does_not_check_length_and_defines_via_bind
Stack Traces | 0.095s run time
@pytest.mark.asyncio
    async def test_unbound_probe_does_not_check_length_and_defines_via_bind():
        embedder = OpenAICompatEmbedder(
            api_base="http://e", model="emb-3", api_key="secret"
        )
>       with patch(
            "litellm.aembedding",
            new=AsyncMock(return_value=_resp([[3.0, 4.0, 0.0]])),
        ) as mock_emb:

tests/test_openai_embedder.py:28: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_openai_embedder.py::test_timeout_and_auth_become_intelligence_error
Stack Traces | 0.121s run time
@pytest.mark.asyncio
    async def test_timeout_and_auth_become_intelligence_error():
        embedder = OpenAICompatEmbedder(api_base="http://e", model="m", api_key="k")
>       with patch(
            "litellm.aembedding",
            new=AsyncMock(side_effect=TimeoutError("timed out")),
        ):

tests/test_openai_embedder.py:100: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_distiller.py::TestDistiller::test_summarize_uses_configured_timeout
Stack Traces | 0.122s run time
self = <tests.test_distiller.TestDistiller object at 0x7f2d2efdb0d0>

    @pytest.mark.asyncio
    async def test_summarize_uses_configured_timeout(self):
        """Test summarization forwards custom timeout from DistillerConfig."""
        config = DistillerConfig(
            model="gpt-4",
            provider="openai",
            api_base="https://api.openai.com/v1",
            timeout=450,
        )
        distiller = Distiller(config)
    
>       with patch("litellm.acompletion") as mock_comp:

tests/test_distiller.py:143: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_openai_embedder.py::test_aembed_flattens_nested_embedding_vector
Stack Traces | 0.123s run time
@pytest.mark.asyncio
    async def test_aembed_flattens_nested_embedding_vector():
        embedder = OpenAICompatEmbedder(api_base="http://e", model="m")
        embedder.bind_dimension(2)
        resp = MagicMock()
        resp.data = [{"embedding": [[1.0, 0.0]]}]
>       with patch(
            "litellm.aembedding",
            new=AsyncMock(return_value=resp),
        ):

tests/test_openai_embedder.py:179: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_openai_embedder.py::test_aembed_rejects_unparseable_response
Stack Traces | 0.123s run time
@pytest.mark.asyncio
    async def test_aembed_rejects_unparseable_response():
        embedder = OpenAICompatEmbedder(api_base="http://e", model="m")
        embedder.bind_dimension(2)
        resp = MagicMock()
        resp.data = [object()]
>       with patch(
            "litellm.aembedding",
            new=AsyncMock(return_value=resp),
        ):

tests/test_openai_embedder.py:193: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_distiller.py::TestDistiller::test_summarize_success
Stack Traces | 0.124s run time
self = <tests.test_distiller.TestDistiller object at 0x7f2d2efd8940>

    @pytest.mark.asyncio
    async def test_summarize_success(self):
        """Test successful summarization."""
        config = DistillerConfig(
            model="gpt-4",
            provider="openai",
            api_base="https://api.openai.com/v1",
        )
        distiller = Distiller(config)
    
>       with patch("litellm.acompletion") as mock_comp:

tests/test_distiller.py:99: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_openai_embedder.py::test_aembed_accepts_litellm_dict_items
Stack Traces | 0.124s run time
@pytest.mark.asyncio
    async def test_aembed_accepts_litellm_dict_items():
        embedder = OpenAICompatEmbedder(api_base="http://e", model="m")
        resp = MagicMock()
        resp.data = [{"embedding": [3.0, 4.0, 0.0], "index": 0, "object": "embedding"}]
>       with patch(
            "litellm.aembedding",
            new=AsyncMock(return_value=resp),
        ):

tests/test_openai_embedder.py:164: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_openai_embedder.py::test_provider_omitted_when_unset
Stack Traces | 0.125s run time
@pytest.mark.asyncio
    async def test_provider_omitted_when_unset():
        embedder = OpenAICompatEmbedder(api_base="http://e", model="m")
>       with patch(
            "litellm.aembedding",
            new=AsyncMock(return_value=_resp([[1.0]])),
        ) as mock_emb:

tests/test_openai_embedder.py:89: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_openai_embedder.py::test_aembed_count_mismatch
Stack Traces | 0.126s run time
@pytest.mark.asyncio
    async def test_aembed_count_mismatch():
        embedder = OpenAICompatEmbedder(api_base="http://e", model="m")
        embedder.bind_dimension(2)
>       with patch(
            "litellm.aembedding",
            new=AsyncMock(return_value=_resp([[1.0, 0.0], [0.0, 1.0]])),
        ):

tests/test_openai_embedder.py:205: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_distiller_extra.py::TestDistillerExtra::test_summarize_error_handling
Stack Traces | 0.127s run time
self = <tests.test_distiller_extra.TestDistillerExtra object at 0x7f2d2ee02e30>

    @pytest.mark.asyncio
    async def test_summarize_error_handling(self):
        config = DistillerConfig(
            api_key="test",
            model="test",
            provider="openai",
            api_base="http://localhost:8081/v1",
        )
        distiller = Distiller(config)
    
        # Match litellm error behavior
>       with patch("litellm.acompletion", side_effect=Exception("Connection error")):

tests/test_distiller_extra.py:20: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_openai_embedder.py::test_bound_length_mismatch_raises
Stack Traces | 0.127s run time
@pytest.mark.asyncio
    async def test_bound_length_mismatch_raises():
        embedder = OpenAICompatEmbedder(api_base="http://e", model="m")
        embedder.bind_dimension(2)
>       with patch(
            "litellm.aembedding",
            new=AsyncMock(return_value=_resp([[1.0, 0.0, 0.0]])),
        ):

tests/test_openai_embedder.py:49: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_openai_embedder.py::test_semaphore_serializes_aembed
Stack Traces | 0.127s run time
@pytest.mark.asyncio
    async def test_semaphore_serializes_aembed():
        embedder = OpenAICompatEmbedder(api_base="http://e", model="m")
        in_flight = 0
        max_in_flight = 0
    
        async def fake_aembedding(**kwargs):
            nonlocal in_flight, max_in_flight
            in_flight += 1
            max_in_flight = max(max_in_flight, in_flight)
            await asyncio.sleep(0.05)
            in_flight -= 1
            return _resp([[1.0, 0.0]])
    
>       with patch(
            "litellm.aembedding",
            new=fake_aembedding,
        ):

tests/test_openai_embedder.py:128: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_openai_embedder.py::test_order_preserved_one_to_one
Stack Traces | 0.128s run time
@pytest.mark.asyncio
    async def test_order_preserved_one_to_one():
        embedder = OpenAICompatEmbedder(api_base="http://e", model="m")
        embedder.bind_dimension(2)
>       with patch(
            "litellm.aembedding",
            new=AsyncMock(return_value=_resp([[1.0, 0.0], [0.0, 1.0], [1.0, 1.0]])),
        ):

tests/test_openai_embedder.py:61: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_distiller.py::TestDistiller::test_summarize_with_ollama_provider
Stack Traces | 0.13s run time
self = <tests.test_distiller.TestDistiller object at 0x7f2d2efdaef0>

    @pytest.mark.asyncio
    async def test_summarize_with_ollama_provider(self):
        """Test summarization with Ollama provider."""
        config = DistillerConfig(
            model="llama3",
            provider="ollama",
            api_base="http://localhost:11434",
        )
        distiller = Distiller(config)
    
>       with patch("litellm.acompletion") as mock_comp:

tests/test_distiller.py:120: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_openai_embedder.py::test_ollama_prefix_and_custom_provider
Stack Traces | 0.131s run time
@pytest.mark.asyncio
    async def test_ollama_prefix_and_custom_provider():
        embedder = OpenAICompatEmbedder(
            api_base="http://ollama", model="nomic", provider="ollama"
        )
        assert embedder.model_id == "ollama/nomic"
>       with patch(
            "litellm.aembedding",
            new=AsyncMock(return_value=_resp([[1.0]])),
        ) as mock_emb:

tests/test_openai_embedder.py:77: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError
tests/test_migration_cli_e2e.py::test_cli_search_before_and_after_migration
Stack Traces | 3.01s run time
tmp_path = PosixPath('.../pytest-of-runner/pytest-0/test_cli_search_before_and_aft0')

    @pytest.mark.asyncio
    async def test_cli_search_before_and_after_migration(tmp_path: Path):
        project = tmp_path / "proj"
        source = project / "src" / "a.py"
        source.parent.mkdir(parents=True)
        source.write_text(SOURCE, encoding="utf-8")
        old = str((tmp_path / "old" / "src" / "a.py").resolve())
        home = tmp_path / "home"
        server = EmbeddingServer()
        server.start()
        try:
            with isolated_home_at(home):
                write_embedding_config(home, server.base_url)
                await seed_parsed_units(
                    project / ".coderag.db",
                    StubEmbedder(dim=8, model_id=MODEL_ID),
                    [(source, old, "kept")],
                )
                before = run_cli(["search", "alpha"], cwd=project, home=home)
>               assert before.returncode == 0, before.stderr
E               AssertionError: ERROR:code_rag.entry.cli:Search failed: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22........./x64/lib/python3.10/typing.py)
E                 Error: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22........./x64/lib/python3.10/typing.py)
E                 
E               assert 1 == 0
E                +  where 1 = CompletedProcess(args=['.../hostedtoolcache/Python/3.10.22.../x64/bin/agent-coderag', 'search', 'alpha'], returncode=1, ...: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22........./x64/lib/python3.10/typing.py)\n").returncode

tests/test_migration_cli_e2e.py:84: AssertionError
tests/test_distiller.py::TestDistiller::test_summarize_skips_llm_when_unconfigured
Stack Traces | 3.16s run time
self = <tests.test_distiller.TestDistiller object at 0x7f2d2efdbb80>

    @pytest.mark.asyncio
    async def test_summarize_skips_llm_when_unconfigured(self):
        """Offline mode: no LiteLLM call without explicit LLM config."""
        config = DistillerConfig()
        distiller = Distiller(config)
    
>       with patch("litellm.acompletion") as mock_comp:

tests/test_distiller.py:84: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1431: in __enter__
    self.target = self.getter()
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1618: in <lambda>
    getter = lambda: _importer(target)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/unittest/mock.py:1257: in _importer
    thing = __import__(import_path)
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../site-packages/litellm/__init__.py:1376: in <module>
    from .llms.anthropic.experimental_pass_through.messages.handler import *
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/messages/handler.py:36: in <module>
    from ..adapters.handler import LiteLLMMessagesToCompletionTransformationHandler
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/__init__.py:1: in <module>
    from .transformation import LiteLLMAnthropicMessagesAdapter
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/adapters/transformation.py:96: in <module>
    from litellm.llms.anthropic.experimental_pass_through.context_management import (
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/__init__.py:2: in <module>
    from .dispatcher import apply_context_management
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../experimental_pass_through/context_management/dispatcher.py:11: in <module>
    from .editors import apply_clear_tool_uses_20250919, apply_compact_20260112
.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/__init__.py:2: in <module>
    from .compact import apply_compact_20260112
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    """``compact_20260112`` polyfill (server-side context compaction).
    
    Mirrors Anthropic's native ``compact_20260112`` for non-Anthropic providers:
    
    - Scans the message history for an existing ``compaction`` block; everything
      before it is dropped (slice).
    - If still over the configured trigger, calls a separately-configured
      summarization model and synthesizes a fresh ``compaction`` block.
    - The summary is injected as a system-message prefix on the downstream call
      (the user/assistant log carries no ``compaction`` block downstream).
    - The synthesized ``compaction`` block is returned via ``PolyfillResult`` so
      the response adapter can prepend it to the response ``content`` array.
    """
    
    import re
    from collections.abc import Mapping, Sequence
>   from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, Optional, TypedDict, Union, cast
E   ImportError: cannot import name 'NotRequired' from 'typing' (.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10/typing.py)

.../hostedtoolcache/Python/3.10.22..................................../x64/lib/python3.10.../context_management/editors/compact.py:17: ImportError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants