* test(proxy/utils): pin PrismaClient and spend-update behavior
PR2 of the litellm/proxy/utils.py behavior-pinning plan
(https://www.notion.so/37343b8acdab81f68f39f66915f62bcf). Adds
tests/test_litellm/proxy/utils/prisma_and_spend/, with happy + error
pins for every symbol in the PR2 list: the config-param cache,
PrismaClient lifecycle/data ops/engine watcher/reconnect/health
clusters, the user-row cache and SMTP helper, password/token helpers,
ProxyUpdateSpend, and the module-level spend functions.
Tests run against fully-mocked Prisma stacks (patched ``Prisma`` /
``PrismaWrapper`` at fixture setup), with a fake SMTP transport and a
clock-driven asyncio.sleep for the monitor loop, so unit runs need no
DB or network. ``_pin_check.py`` enforces happy + error coverage for
every symbol; ``_coverage_check.py`` filters branch + line coverage to
the PR2 source range (lines 2,668-5,541) and prints PASS / FAIL with
no numbers. Workflow shard ``tests/test_litellm/proxy/utils`` is added
to the existing proxy-endpoints job.
* test(proxy/utils): commit pin list and drop dead exclusion line
Addresses Greptile review feedback on PR #29488:
- Check in ``.pin_list.txt`` (force-added, overriding the repo-wide
``.gitignore`` rule) so reviewers can reproduce the ``_pin_check.py``
PASS shown in the PR description without first regenerating the
file from Notion.
- Remove the unreachable ``_harness_smoke_test.py`` continue in
``_pin_check.py``: the surrounding ``test_*.py`` glob already
excludes underscore-prefixed files; rephrase the docstring instead.
* test(proxy/utils): shift PR2 coverage line range by +1 after merge
``litellm_internal_staging`` added one line in ``ProxyLogging`` at
``utils.py:645`` (PR1 territory, before the PR2 region). Bump the
``_PR2_LINE_START`` / ``_PR2_LINE_END`` constants accordingly so the
coverage gate keeps scoring the same source region after the merge.
* test(proxy/utils): drop committed pin-list and gate scripts
``_pin_check.py``, ``_coverage_check.py``, and ``.pin_list.txt`` are
local-only stopping signals: no workflow or pytest collection invokes
them, so committing them adds rot risk (line-range drift in the
coverage check, pin-list staleness) without any enforcement upside.
The pin-list contract lives in the Notion plan; the tests themselves
are the durable artifact.
---------
Co-authored-by: Claude <noreply@anthropic.com>