On this page · 10 sections
Summary. Version 1.0.0 of the anthropic Python package was published to PyPI on 20 August 2026 at 19:58 UTC. It requires Python 3.10 or later, up from 3.9, and pins httpx2>=2.0.0,<3 in place of httpx. Three of the four mocking and tracing libraries teams use around the Claude API have not followed: respx 0.23.1 still requires httpx>=0.25.0, and pytest-httpx 0.36.2 hard-pins httpx==0.28.*. Neither of them knows what httpx2 is. The upgrade therefore does not fail loudly. It installs, your type checker complains about a handful of removed arguments, you fix those, and your HTTP mocks quietly stop matching any request the SDK sends. Anthropic's own migration guide names this risk and prescribes one fix, httpx2.alias_httpx(). For OpenTelemetry users that prescription is now out of date: version 0.65b0 of opentelemetry-instrumentation-httpx ships a separate HTTPX2ClientInstrumentor that needs no process-global patch at all. Getting that distinction wrong is the difference between a five-line change and an application entry point you can no longer safely reorder.
What actually changed on 20 August
The anthropic package changelog lists exactly one breaking change for 1.0.0, dated 2026-08-20: "upgrade to httpx2 and some minor breaking changes." The "minor" list is longer than that phrasing suggests. From the v1 migration guide and the Claude Platform release notes:
- The minimum Python version rises from 3.9 to 3.10. Pydantic v1 and v2 both stay supported.
httpxobjects passed into the client now raise aTypeErrorat construction. That one is loud, and deliberately so.
temperature,top_pandtop_kare removed frommessages.create(),messages.stream(),messages.parse(), theirbeta.messagescounterparts,beta.messages.tool_runner(), and the per-requestparamsofmessages.batches.create().
- The legacy Text Completions API is gone:
client.completions.create(), theCompletiontypes, and theanthropic.HUMAN_PROMPT/anthropic.AI_PROMPTconstants.
- On the async client,
.with_raw_responseresults needawait response.parse()..textand.contentbecame methods on both clients.
AnthropicBedrock()raises aValueErrorwhen no AWS region resolves, instead of logging a warning and defaulting tous-east-1.
tool_runner(compaction_control=...)is removed in favour of server-side compaction, whose trigger threshold must be at least 50,000 input tokens per the compaction docs.
None of that is hidden. A type checker flags almost all of it, which is the guide's own recommended checklist. The problem is the part a type checker cannot see.
The silent failure: your HTTP mocks
httpx2 is a fork of httpx maintained by the Pydantic team. Its README explains the handover in the project's own words: "With HTTPX itself seeing limited activity recently, Pydantic is picking up stewardship under the HTTPX2 name so that users have a reliably maintained path forward - including timely security updates for a library that sits in the critical path of so many production systems."
The activity claim checks out. The last httpx release on PyPI is 0.28.1, uploaded 6 December 2024. As of 23 August 2026 that is roughly twenty months without a release, while httpx2 is already at 2.12.0.
Because httpx2 is a separate distribution with a separate import name, anything that instruments or stubs HTTP traffic by patching the httpx module keeps patching a module the SDK no longer uses. Nothing errors. The mock simply never matches, and the test either hits the live Claude API with a real key or fails on an assertion far from the cause.
Here is where each library actually stands, read from its current PyPI metadata on 23 August 2026:
| Library | Current version | Declared HTTP dependency | What you must do |
|---|---|---|---|
respx |
0.23.1 | httpx>=0.25.0 |
No httpx2 support. Call httpx2.alias_httpx() at start-up. |
pytest-httpx |
0.36.2 | httpx==0.28.* |
Hard pin, no httpx2 path. Same alias workaround. |
vcrpy |
8.3.0 | httpx2 present in the tests extra |
Some httpx2 awareness already landed. Verify against your cassettes. |
opentelemetry-instrumentation-httpx |
0.65b0 | both httpx>=0.18.0 and httpx2>=2.0.0 under instruments-any |
Switch instrumentor class. No alias needed. |
The two hard cases are respx and pytest-httpx. pytest-httpx is the sharper one: an exact-match pin on httpx==0.28.* means it cannot be satisfied by a httpx2 release at all, so the alias route is the only route.
Where the migration guide and OpenTelemetry disagree
Anthropic's quick-reference table lists "respx / pytest-httpx / vcrpy, or OpenTelemetry / Sentry httpx instrumentation" in a single row, with a single remedy: run httpx2.alias_httpx() before anything imports httpx.
That remedy is correct for the mocking libraries. For OpenTelemetry it is no longer the best answer, and the OpenTelemetry project's own documentation says so. The instrumentation README states that the library "allows tracing HTTP requests made by the httpx and httpx2 libraries", and that "If both libraries are installed, use HTTPXClientInstrumentor for httpx clients and HTTPX2ClientInstrumentor for httpx2 clients. The instrumentors can be enabled independently."
That matters because alias_httpx() is not a small change. By the guide's own description it makes import httpx and import httpcore resolve to httpx2 and httpcore2 for the whole process, it raises a RuntimeError if anything has already imported httpx, and it "is meant for applications: a library should never call it on behalf of its users." So the alias buys you working mocks at the cost of an import order you now have to defend forever, in the first lines of your entry point, against every future refactor and every plugin that imports early.
If OpenTelemetry tracing was your only reason to reach for it, you do not need it. Enable HTTPX2ClientInstrumentor and leave the process alone. If respx or pytest-httpx is in your test suite, you still do, but scope it to the test session rather than the production entry point where you can.
The order to work in is: switch the tracing instrumentor first, because it needs no global change and it is what tells you whether the alias is still required. Then decide about the mocks.
The two changes most likely to reach production
Everything above is a development-time problem. Two items on the list can reach a running service.
Bedrock without a region. AnthropicBedrock() used to warn and fall back to us-east-1. In 1.0 it raises a ValueError at construction time. The region now resolves from aws_region=, then AWS_REGION or AWS_DEFAULT_REGION, then the boto3 session for the given aws_profile — and the migration guide notes that the profile argument was previously ignored for region lookup. A container that relied on the implicit default will now fail to start rather than call the wrong region. That is the better failure, but it is a failure, and it happens on deploy rather than in CI. Teams running Claude through Amazon Bedrock alongside a direct API path should check every image that constructs the client from environment alone.
Sampling parameters. Passing temperature= is now a TypeError rather than a silently honoured argument. The guide is explicit that the parameters are gone from the method signatures, not from the API: models that predate the change still honour them, and you can pass them through extra_body={"temperature": 0.2} if you are pinned to such a model. Anything that built request kwargs dynamically from a config file will pass a type check and fail at call time, because the key never appears in the source. Grep your config schemas, not just your Python.
Bedrock streaming has a smaller change worth noting: unknown streaming events are now skipped rather than yielded, and the migration guide names amazon-bedrock-invocationMetrics as the only known case. If you were parsing that event for per-request token accounting, it stops arriving.
Two SDKs, one process
The version that makes this worth planning rather than patching: the openai package is on the same path. Version 3.3.1 on PyPI declares httpx2<3,>=2.7.0, and anthropic 1.0.0 declares httpx2<3,>=2.0.0. The ranges overlap, so a service that calls both models resolves cleanly to one httpx2 and needs no pin gymnastics. eCorpIT covered the OpenAI side of this move in our note on the OpenAI Python 3.0 httpx2 and certifi container breakage.
What does not compose is the alias. alias_httpx() is process-global and must run before any import of httpx, so in a dual-vendor service exactly one place may call it, and that place is the application entry point rather than either vendor's wrapper module. If two internal libraries each try to be helpful, the second one raises RuntimeError. The real cost here is usually the import graph, not the code.
If you already run model evaluations in CI, that harness is the right place to catch a mock that has stopped matching, provided at least one assertion checks a response body rather than only a status. Teams tracking the wider Python floor should also read this alongside the Python 3.15 upgrade path, since the 3.10 minimum removes the last common reason to stay on 3.9. For the model-selection layer above the SDK, our frontier model comparison for 2026 covers which vendor you would be pinning to in the first place.
India-specific considerations
For teams in India running Claude on Amazon Bedrock, the region change is the one to plan around first, because the implicit us-east-1 fallback that 1.0 removes was also a quiet data-path decision. A service that never set AWS_REGION and never noticed was sending inference to Northern Virginia. Under the Digital Personal Data Protection Act 2023, where personal data goes is a question you should be able to answer from configuration rather than from an SDK default, so treat the new ValueError as a prompt to write the region down explicitly in every deployment manifest.
Cost planning is unchanged by 1.0. Claude Sonnet 5 stayed at $2 per million input tokens and $10 per million output tokens after Anthropic confirmed on 10 August 2026 that the scheduled 1 September increase to $3 and $15 will not happen, and Claude Opus 5 launched on 24 July 2026 at $5 and $25 per million tokens. Those are the same list rates before and after the SDK change.
What is still unknown
Neither respx nor pytest-httpx has published an httpx2-compatible release as of 23 August 2026, and neither project's PyPI metadata indicates a date. Until one appears, the alias is the only supported route for those two, and teams that adopt it should plan to remove it later rather than treat it as permanent. Whether Anthropic updates the quick-reference row to distinguish OpenTelemetry from the mocking libraries is also open; the row as written on 23 August 2026 still groups them.
How eCorpIT can help
eCorpIT runs Python and Claude API upgrades for teams that cannot take a silent test-suite failure, including dual-vendor services that call both the Anthropic and OpenAI SDKs from one process. We are CMMI Level 5 and ISO 27001:2022 certified, and we work from the dependency graph outward rather than from the changelog down. If a 1.0 upgrade is on your sprint board, book an SDK migration review and we will start with your mocks and your Bedrock region configuration.
FAQ
References
Last updated: 23 August 2026.