Pydantic and code generation both had friction points that didn't fit our situation, so we ended up with a ~435-line framework that makes the client read like a mini-ORM.
The post walks through our implementation. While it worked well for us (so far), it may not be right for everyone. And we miss out on the ecosystem around OpenAPI etc. Not having Swagger definitely stings.
I'd love to hear whether others are still building REST clients by hand, or is everything auto-generated from OpenAPI specs these days?