Closed frankie567 closed 6 months ago
I can reproduce. I will look into this problem.
The problem also happens when http_cache=False
, and the clients used to request api are not the same.
It seems the TokenAuthStrategy
auth flow is not called.
it is caused by namespace caching in https://github.com/yanyongyu/githubkit/blob/8a381cba793b1f0a3d4ea0aee816336f40f7331f/githubkit/versions/rest.py#L54-L55
The cache is used without considering the github instance 😂
Oh, that's a nasty one! Glad you were able to track it down 😉
It seems the code you provide has some small mistakes. The Authorization
header is in the response.raw_request.headers
not response.headers
.
It seems the code you provide has some small mistakes. The
Authorization
header is in theresponse.raw_request.headers
notresponse.headers
.
Oh yeah, of course. But you got the idea 😅 Glad you were able to solve it, thanks 🙏
I have just released 0.11.0a3, with this issue fixed. 😄
I discovered a strange behavior while testing out version v0.11.0a2. It seems that if you create several
GitHub
client in the same process/thread, they reuse the underlying HTTPX client, including the auth flow.It's a problem if you need to have several clients with different kind of authentications running in your process.
Reproducible example
Additional context
I suspect it's because
ContextVar
is used to retain the HTTPX client:https://github.com/yanyongyu/githubkit/blob/8a381cba793b1f0a3d4ea0aee816336f40f7331f/githubkit/core.py#L147-L152
However, what I can't explain is that the same code works correctly in version 0.10.7, while
ContextVar
were already there. Maybe a side effect of https://github.com/yanyongyu/githubkit/commit/d005552425a75e2312fec5ba77f446fed1063d29?