The problem with httpx as a dependency is that it's currently working towards a 1.0 release which will be full of breaking changes.
The httpx2 project is essentially a fork that promises not to break the existing API, which makes it a more stable dependency to build against.
I wrote a pretty long comment about my concerns for the breaking 1.0 version last year - https://github.com/encode/httpx/discussions/3344#discussionc... - in that comment I recommended the HTTPX project release their 1.0 as a package called httpx2 instead, but a year later we now have an httpx2 (released by a different maintainer) that keeps the old API.
HTTPX stable hasn't had a release since December 2024, but there have been two dev releases of the 1.0 branch this month (after a gap since September 2025.)
Unfortunately that 1.0 work is happening in a private repository.
> Unfortunately that 1.0 work is happening in a private repository.
That’s even more reason to consider it non-viable.
There is no reason to encourage or support this type of behavior in a project. It is their right to do with it as they please, but I’m not interested in a project that functions like this. The forks are continuing to operate like true community projects.
For the users of the project, the reasons don’t matter. They’re free to do as they want for any reason they choose.
Users of the project can (and have been) moving to forks that are operated as open, community projects in the continued spirit of the project’s original intention.
For what it’s worth, the maintainer has stated their reasons and they are not related to AI or scraper bots.
> I don't want to continue allowing an online environment with such an absurdly skewed gender representation. I find it intensely unwelcoming, and it's not reflective of the type of working environments I value.
I have no idea what that means other this person might not be the easier to work with, or get along with.
That is a legitimate feeling, but to spite the trillion dollars company he also hurts thousands of regular developers.
He doesn't owe those developers anything, of course, but likewise they do not owe him loyalty and thus since an open fork exists, his project will die.
Killing the project is also his right, but people also have a right to be upset by his passive aggressive behavior. Just announce that you're shutting down the project and move on, don't waste our time.
unbelievable, how can a single person affect negatively FOSS so much?
I mean really, closing repos? excluding maintainers? committing only on private repos?
This type of behavior should be moderated and banned from any FOSS activity to avoid exactly this situation of becoming a liability.
I've never seen a open source project page without a github link or a git clone ref like this https://www.encode.io/hx/ it is so ridiculous, wasn't that stuff on github? and isn't it anyway there due to over 1k forks?
what's the advantage of having this behavior? I see it only damaging towards the person, the project and the community.
> how can a single person affect negatively FOSS so much?
FOSS is not affected negatively.
First because FOSS is not en entity in the first place. There is no "community" per se but a muriad of softwares choosing open source licences for various reasons.
Second because the choices of one project maintainer is negligible.
> This type of behavior should be moderated and banned from any FOSS activity
Banned by who and where?
> I've never seen a open source project page without a github link or a git clone ref
Now I understand. You must be new. How old are you? 10? FOSS has existed way before github and will probably still exist when github will be forgotten. There are still many open source projects not using github, some do not even use git.
> what's the advantage of having this behavior?
Not having to deal with external input, PRs, bug reports seems to be a good example.
> I see it only damaging towards the person
Which person? The maintainer? I highly doubt so.
> the project
The project will be fine as long as the maintainer wants it to be active. This is the only thing that counts.
> and the community.
Which community? Other devs? They can (and do) fork when they wish to do so.
> how can a single person affect negatively FOSS so much?
FOSS is not affected negatively.
First because FOSS is not en entity in the first place. There is no "community" per se but a muriad of softwares choosing open source licences for various reasons.
Second because the choices of one project maintainer is negligible.
> I've never seen a open source project page without a github link or a git clone ref
Now I understand. You must be new. How old are you? 10? FOSS has existed way before github and will probably still exist when github will be forgotten. There are still many open source projects not using github, some do not even use git.
> what's the advantage of having this behavior?
Not having to deal with external input, PRs, bug reports for example.
> I see it only damaging towards the person
Which person? The maintainer? I highly doubt so.
> the project
The project will be fine as long as long as the maintainer wants it to be active. This is the only thing that counts.
> and the community.
Which community? Other devs? They can (and do) fork when they wish to do so.
This level of entitlement is the reason that FOSS has a maintenance / support epidemic. Maintainers don't owe you anything. They put the work in, not you.
That's easily the strangest self-destruction I've ever seen. "Skewed gender representation"? Not sure how that matters or what the intended effect of salting the earth here was.
It’s a complex topic that’s usually treated with a lot of bias and very little nuance. Most mental health issues tend to be treated as something to be removed whereas in the case of gender dysphoria, the empirically proven treatment is (of course treated case-by-case) to transition. Similarly, dysphoria (when being trans, most commonly) is often treated as some form of perversion or threat. It’s complicated.
people think other people are 'toxic' for the silliest of things most times; and this person is saying some maintainer is toxic to put it out there but provides no information as to why.. so i figured my context is as good as theirs
We started this fork because there was no activity on HTTPX, a very popular Python HTTP library.
A few weeks later, Pydantic started their own fork called HTTPX2. We decided to embrace this and support HTTPX2. We're upstreaming our fixes to HTTPX2 and in our opinion it should be the "blessed" fork. Pydantic can make this more successful than we ever can.
"I recommended the HTTPX project release their 1.0 as a package called httpx2 instead, but a year later we now have an httpx2 (released by a different maintainer) that keeps the old API"
I mean, obviously Python 2.7 is newer than Python 3.1
I remember swearing I would never migrate to python3 but here we are, I migrated without even feeling it or realizing when (But I do remember django played a big role).
There are a lot of large projects where X.1 is newer than Y.0. You release a new major version for breaking changes, but you backport security changes to previous major releases as well.
Minors and hotfixes allow you to release a new version for an older release (like if you released 3.7 but you found a bug present in 3.4, you can release 3.4.1 which would be newer than 3.7), making it possible to have multiple supported versions at the same time.
Same! Recently ported some code from httpx -> niquests and the experience has been good, although admittedly the governance of the project seems a little unclear.
I (ok, Qwen 3.7 27B) wrote some benchmarking code to compare throughput, and niquests seems to be substantially more performant for traffic that doesn't need to traverse the public web, e.g. intra cluster service to service communication:
I opened an issue some time ago about them monkey patching urllib3, it was fixed than but I now see the issue has been outright deleted.
Oh and now I see there is a URLLIB3_NO_OVERRIDE thing... I would not recommend this project.
> I've closed off access to issues and discussions.
> I don't want to continue allowing an online environment with such an absurdly skewed gender representation. I find it intensely unwelcoming, and it's not reflective of the type of working environments I value.
unbelievable, how can a single person affect negatively FOSS so much?
I mean really, closing repos? excluding maintainers? committing only on private repos?
This type of behavior should be moderated and banned from any FOSS activity to avoid exactly this situation of becoming a liability.
I've never seen a open source project page without a github link or a git clone ref like this https://www.encode.io/hx/ it is so ridiculous, wasn't that stuff on github? and isn't it anyway there due to over 1k forks?
what's the advantage of having this behaviour? I see it only damaging towards the person, the project and the community.
A network error occurred. Please check your connection and try again. If this issue persists please contact us through our help center at help.openai.com.
Ugh. certifi the most annoying thing ever. It snuck into numerous python dependencies, never made anything better, and confuses all the junior devs when their venvs/containers etc can't access internal CA signed resources. Probably have explained what to do over 9,000 times. And for what? "To provide updated root CAs". Meh. I don't need daily CA trust store updates. If your CA roots are that new, I want nothing to do with it. Cert issuers (cough sectigo and their amateur hour CA root rotation recently, not even Mozilla had it).
we have recently switched from httpx for the same reason but instead went with the Rust-based pyqwest (runs on Hyper) it has also a drop-in httpx-compatible transport so migration was easy and also it supports http2 trailers
that's not really much of an argument, almost all reasonable libraries wrap the functionality.and if a provider doesn't want to support http3 then the library will fallback, and then the laggards should pay the slow tax.
Async. And it comes with WSGI and ASGI transport adapters [1], which are amazing for testing/debugging with the client and server in a single process. And I personally find the httpx API is much cleaner and more composable, but ymmv.
I'd second this question. And I really mean that in a sincere way. Why is the choice of a random HTTP library in an SDK such an engaging topic of discussion here? Is there some context I'm missing?
When I first read the title, I assumed this was some fancy new protocol that extends HTTP or something. But it's just about an SDK switching one transitive dependency with a fork? And arguably one that should just have its functionality be part of stdlib?
The requests packages fundamental API is good enough and is now maintained by the PSF. I don't understand why OpenAI and Anthropic don't just throw some $$$ to the PSF for focused improvements and expansion of it.
The maintainers of requests have made it pretty clear that they consider that package feature complete, and have not showed interest in adding native async support to the core.
Anthropic made the same change a few weeks after OpenAI did: https://github.com/anthropics/anthropic-sdk-python/releases/...
The problem with httpx as a dependency is that it's currently working towards a 1.0 release which will be full of breaking changes.
The httpx2 project is essentially a fork that promises not to break the existing API, which makes it a more stable dependency to build against.
I wrote a pretty long comment about my concerns for the breaking 1.0 version last year - https://github.com/encode/httpx/discussions/3344#discussionc... - in that comment I recommended the HTTPX project release their 1.0 as a package called httpx2 instead, but a year later we now have an httpx2 (released by a different maintainer) that keeps the old API.
> The problem with httpx as a dependency is that it's currently working towards a 1.0 release which will be full of breaking changes.
The httpx maintainer closed off access to issues and discussions on the repo, has been ignoring PRs, and hasn’t updated it in a half a year.
I don’t think there is any reason to consider httpx as a viable project any more. The Pydantic httpx fork has taken its place.
HTTPX stable hasn't had a release since December 2024, but there have been two dev releases of the 1.0 branch this month (after a gap since September 2025.)
Unfortunately that 1.0 work is happening in a private repository.
https://pypi.org/project/httpx/#history
> Unfortunately that 1.0 work is happening in a private repository.
That’s even more reason to consider it non-viable.
There is no reason to encourage or support this type of behavior in a project. It is their right to do with it as they please, but I’m not interested in a project that functions like this. The forks are continuing to operate like true community projects.
Maybe they don't feel like sharing their work with the AI bot scrapers until the work is complete.
For the users of the project, the reasons don’t matter. They’re free to do as they want for any reason they choose.
Users of the project can (and have been) moving to forks that are operated as open, community projects in the continued spirit of the project’s original intention.
For what it’s worth, the maintainer has stated their reasons and they are not related to AI or scraper bots.
> I don't want to continue allowing an online environment with such an absurdly skewed gender representation. I find it intensely unwelcoming, and it's not reflective of the type of working environments I value.
I have no idea what that means other this person might not be the easier to work with, or get along with.
Probably means the attacks on them, mentioning gender, were increasing.
Some people get spam. Some people get spam about vulnerabilities that don't exist. And some people get threats.
That is a legitimate feeling, but to spite the trillion dollars company he also hurts thousands of regular developers.
He doesn't owe those developers anything, of course, but likewise they do not owe him loyalty and thus since an open fork exists, his project will die.
Killing the project is also his right, but people also have a right to be upset by his passive aggressive behavior. Just announce that you're shutting down the project and move on, don't waste our time.
unbelievable, how can a single person affect negatively FOSS so much?
I mean really, closing repos? excluding maintainers? committing only on private repos?
This type of behavior should be moderated and banned from any FOSS activity to avoid exactly this situation of becoming a liability.
I've never seen a open source project page without a github link or a git clone ref like this https://www.encode.io/hx/ it is so ridiculous, wasn't that stuff on github? and isn't it anyway there due to over 1k forks?
what's the advantage of having this behavior? I see it only damaging towards the person, the project and the community.
> how can a single person affect negatively FOSS so much?
FOSS is not affected negatively.
First because FOSS is not en entity in the first place. There is no "community" per se but a muriad of softwares choosing open source licences for various reasons.
Second because the choices of one project maintainer is negligible.
> This type of behavior should be moderated and banned from any FOSS activity
Banned by who and where?
> I've never seen a open source project page without a github link or a git clone ref
Now I understand. You must be new. How old are you? 10? FOSS has existed way before github and will probably still exist when github will be forgotten. There are still many open source projects not using github, some do not even use git.
> what's the advantage of having this behavior?
Not having to deal with external input, PRs, bug reports seems to be a good example.
> I see it only damaging towards the person
Which person? The maintainer? I highly doubt so.
> the project
The project will be fine as long as the maintainer wants it to be active. This is the only thing that counts.
> and the community.
Which community? Other devs? They can (and do) fork when they wish to do so.
> how can a single person affect negatively FOSS so much?
FOSS is not affected negatively.
First because FOSS is not en entity in the first place. There is no "community" per se but a muriad of softwares choosing open source licences for various reasons.
Second because the choices of one project maintainer is negligible.
> I've never seen a open source project page without a github link or a git clone ref
Now I understand. You must be new. How old are you? 10? FOSS has existed way before github and will probably still exist when github will be forgotten. There are still many open source projects not using github, some do not even use git.
> what's the advantage of having this behavior?
Not having to deal with external input, PRs, bug reports for example.
> I see it only damaging towards the person
Which person? The maintainer? I highly doubt so.
> the project
The project will be fine as long as long as the maintainer wants it to be active. This is the only thing that counts.
> and the community.
Which community? Other devs? They can (and do) fork when they wish to do so.
This level of entitlement is the reason that FOSS has a maintenance / support epidemic. Maintainers don't owe you anything. They put the work in, not you.
Maybe mental health issues? We aren't entitled to indefinite maintenance of free software
The issue with httpx is that it has an obnoxious and toxic maintainer.
What happened?
Read for yourself: https://github.com/encode/httpx/discussions/3784
They also effectively killed off MkDocs: https://github.com/mkdocs/mkdocs/discussions/3677
That's easily the strangest self-destruction I've ever seen. "Skewed gender representation"? Not sure how that matters or what the intended effect of salting the earth here was.
I feel like that hardly answers anything
[flagged]
It’s a complex topic that’s usually treated with a lot of bias and very little nuance. Most mental health issues tend to be treated as something to be removed whereas in the case of gender dysphoria, the empirically proven treatment is (of course treated case-by-case) to transition. Similarly, dysphoria (when being trans, most commonly) is often treated as some form of perversion or threat. It’s complicated.
was probably chewing bubble gum on the wrong sidewalk
this made me laugh even though i dont think i even get it. can you explain this please lol
people think other people are 'toxic' for the silliest of things most times; and this person is saying some maintainer is toxic to put it out there but provides no information as to why.. so i figured my context is as good as theirs
> people think other people are 'toxic' for the silliest of things most times
Do they?
So I guess HTTPX2 (https://github.com/pydantic/httpx2) is winning out over HTTPXYZ (https://codeberg.org/httpxyz/httpxyz)? I didn't switch to HTTPXYZ after the fork but have been watching it. (What I did was use urllib.request more and bite the Rust bullet with wreq, https://github.com/0x676e67/wreq-python, where it wasn't enough.)
in their README >Important
We started this fork because there was no activity on HTTPX, a very popular Python HTTP library.
A few weeks later, Pydantic started their own fork called HTTPX2. We decided to embrace this and support HTTPX2. We're upstreaming our fixes to HTTPX2 and in our opinion it should be the "blessed" fork. Pydantic can make this more successful than we ever can.
See also https://tildeweb.nl/~michiel/httpx2.html
Thanks for all your support!
Sander & Michiel
It is too bad because httpxyz is absolutely the better name.
httpx2 is sponsored by Pydantic and has involvement from the new maintainer of Starlette, so it's off to a very strong start.
Kludex is a really good dev
He's a freaking GOD
"I recommended the HTTPX project release their 1.0 as a package called httpx2 instead, but a year later we now have an httpx2 (released by a different maintainer) that keeps the old API"
wtf is going on
Open Source disputes.
A bit strange considering "coding is solved".
But seriously, migrating between different libs should be ~free for both Anthropic and OpenAI.
A migration document like this one is how you get that ~free upgrade - it's something you can point an agent at.
[dead]
[flagged]
The Python community loves confusing versioning.
I mean, obviously Python 2.7 is newer than Python 3.1
I remember swearing I would never migrate to python3 but here we are, I migrated without even feeling it or realizing when (But I do remember django played a big role).
That isn't confusing at all, if you know how maintained stable releases work.
Happens with the Linux kernel as well.
There are a lot of large projects where X.1 is newer than Y.0. You release a new major version for breaking changes, but you backport security changes to previous major releases as well.
Just read https://semver.org/
Isn't that whole point of semantic release?
Minors and hotfixes allow you to release a new version for an older release (like if you released 3.7 but you found a bug present in 3.4, you can release 3.4.1 which would be newer than 3.7), making it possible to have multiple supported versions at the same time.
Tangibly related, did you know that odd versions of node don't get LTS, I found it odd at first
That’s probably the worst example you could have chosen.
You shouldn’t assume anything about relative date of 2.7 and 3.1.
Wonder if they evaluated httpx2 vs niquests: https://github.com/jawah/niquests
Same! Recently ported some code from httpx -> niquests and the experience has been good, although admittedly the governance of the project seems a little unclear.
I (ok, Qwen 3.7 27B) wrote some benchmarking code to compare throughput, and niquests seems to be substantially more performant for traffic that doesn't need to traverse the public web, e.g. intra cluster service to service communication:
https://gist.github.com/jtbaker/61061d27949ef48ac31e85ff28c2...
uv run scripts/bench_http.py --count 1000 Benchmarking 1000 requests to http://localhost:8000/health (concurrency=16, timeout=30.0s) Date: 2026-08-28T10:18:34.480111
Running httpx... Running httpx2... Running niquests...
Metric httpx httpx2 niquests ------------------------------------------------------- mean 17.8ms 4.6ms 3.3ms min 3.2ms 1.5ms 1.2ms max 632.4ms 11.1ms 10.8ms p50 15.9ms 4.2ms 3.0ms p95 32.4ms 7.4ms 5.6ms p99 52.1ms 8.5ms 8.4ms total 1.15s 315.5ms 239.7ms throughput 869.2 req/s 3170.0 req/s 4171.1 req/s
Winner: niquests (4.8x faster by wall clock)
I opened an issue some time ago about them monkey patching urllib3, it was fixed than but I now see the issue has been outright deleted. Oh and now I see there is a URLLIB3_NO_OVERRIDE thing... I would not recommend this project.
[dead]
There seems to be a bunch of downsides mentioned...
But what are the upsides of this change?
You no longer need to jump through the hoops in order to support your own root CA
https://github.com/encode/httpx/discussions/3784
> I've closed off access to issues and discussions.
> I don't want to continue allowing an online environment with such an absurdly skewed gender representation. I find it intensely unwelcoming, and it's not reflective of the type of working environments I value.
https://www.reddit.com/r/Python/comments/1rl5kuq/anyone_know...
It's like that time I started a primary school and then closed it because I hated that the overwhelming majority of employees were women.
Did this move improve the ratio of gender representation in the software development community?
[flagged]
This has happened in many packages contributed to by this person. Mkdocs e.g
Oh boy, no wonder MkDocs became an absolute shit-show that fucked everyone over... https://github.com/mkdocs/mkdocs/discussions/4077#discussion...
unbelievable, how can a single person affect negatively FOSS so much?
I mean really, closing repos? excluding maintainers? committing only on private repos?
This type of behavior should be moderated and banned from any FOSS activity to avoid exactly this situation of becoming a liability.
I've never seen a open source project page without a github link or a git clone ref like this https://www.encode.io/hx/ it is so ridiculous, wasn't that stuff on github? and isn't it anyway there due to over 1k forks?
what's the advantage of having this behaviour? I see it only damaging towards the person, the project and the community.
That’s fair, good for the maintainer to consider his personal values with regards to projects he wants to spend his time on
A network error occurred. Please check your connection and try again. If this issue persists please contact us through our help center at help.openai.com.
yeah nice engineering clowns
nb: operating system TLS trust store is used now (instead of certifi)
This could be a breaking change (for some corporate network environments).
Ugh. certifi the most annoying thing ever. It snuck into numerous python dependencies, never made anything better, and confuses all the junior devs when their venvs/containers etc can't access internal CA signed resources. Probably have explained what to do over 9,000 times. And for what? "To provide updated root CAs". Meh. I don't need daily CA trust store updates. If your CA roots are that new, I want nothing to do with it. Cert issuers (cough sectigo and their amateur hour CA root rotation recently, not even Mozilla had it).
what's `nb` ?
https://en.wikipedia.org/wiki/Nota_bene
Thank you! :)
we have recently switched from httpx for the same reason but instead went with the Rust-based pyqwest (runs on Hyper) it has also a drop-in httpx-compatible transport so migration was easy and also it supports http2 trailers
https://pyqwest.dev
Why not pyreqwest?
Why is everyone so slow to move to http3?
HTTPX2 isn't about the protocol version, it's the name of a python library to make http requests.
But yes, it doesn't support HTTP3. Here's the related issue: https://github.com/pydantic/httpx2/issues/92
because its over QUIC, which is different enough to be a pain.
Not that there is anything wrong with QUIC, at least its built by someone who knows what they are doing, unlike HTTP2
that's not really much of an argument, almost all reasonable libraries wrap the functionality.and if a provider doesn't want to support http3 then the library will fallback, and then the laggards should pay the slow tax.
No as in the infra between you and the end user is less developed.
Nobody is going to get fired for using http1.1
if you move to http3 and a bunch of clients cant use your site, then you're gonna get yelled at.
Why would you assume that we have to move from techX to techX+1? If I release http4 would you assume that you have to migrate to http4 at some point?
Oh, well... It was bound to happen eventually. I suppose there must be some advantages to such a solution.
Why would you want to use HTTPX2 over say requests?
Async. And it comes with WSGI and ASGI transport adapters [1], which are amazing for testing/debugging with the client and server in a single process. And I personally find the httpx API is much cleaner and more composable, but ymmv.
[1] https://www.python-httpx.org/advanced/transports/#wsgi-trans...
Since it clearly intends to satisfy the async use case, I wish you'd've phrased this as "over aiohttp".
You probably want to use pretty much anything over requests for performance reasons.
async
i assume this is largely about the cybersecurity blitz, to ensure hot-path code is secure?
[flagged]
[flagged]
Why this is in the frontpage?
I'd second this question. And I really mean that in a sincere way. Why is the choice of a random HTTP library in an SDK such an engaging topic of discussion here? Is there some context I'm missing?
When I first read the title, I assumed this was some fancy new protocol that extends HTTP or something. But it's just about an SDK switching one transitive dependency with a fork? And arguably one that should just have its functionality be part of stdlib?
[dead]
[flagged]
[dead]
[dead]
[dead]
[flagged]
Better migrate to https://zapros.dev from httpx maintainer
Seems like the point is that the httpx maintainer is a bad maintainer.
That project looks owned by https://github.com/karpetrosyan who has contributed to httpx but is not the owner / maintainer in question
The requests packages fundamental API is good enough and is now maintained by the PSF. I don't understand why OpenAI and Anthropic don't just throw some $$$ to the PSF for focused improvements and expansion of it.
The maintainers of requests have made it pretty clear that they consider that package feature complete, and have not showed interest in adding native async support to the core.
requests is great and all, but you can just use sockets and send raw http strings. Don't treat it like some impenetrable huge OS project.
Unless OpenAI deprecates the HTTP endpoint, you can pretty much ignore the whole SDK packages.