Skip to content

Add refresh auth headers (sync and async) as alternate approach to allow bearer tokens to be refreshed#17

Draft
johanste wants to merge 59 commits into
mainfrom
tokenprovider-openaiclient
Draft

Add refresh auth headers (sync and async) as alternate approach to allow bearer tokens to be refreshed#17
johanste wants to merge 59 commits into
mainfrom
tokenprovider-openaiclient

Conversation

@johanste

Copy link
Copy Markdown
Owner
  • I understand that this repository is auto-generated and my pull request may not be merged

Changes being requested

Provide callable to allow refresh of the bearer token. The callable must support IO calls being made and thus has to be async in an asynchronous context.

Additional context & links

stainless-app Bot and others added 30 commits June 20, 2025 11:44
* feat(api): make model and inputs not required to create response

* release: 1.90.0

---------

Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com>
* feat(api): update api shapes for usage and code interpreter

* release: 1.91.0

---------

Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com>
* chore(tests): skip some failing tests on the latest python versions

* chore(internal): add tests for breaking change detection

* move over parse and stream methods out of beta

* update docs

* update tests

* remove old beta files

* fix relative import

* fix(ci): release-doctor — report correct token name

* feat(api): webhook and deep research support

* release: 1.92.0

---------

Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com>
Co-authored-by: David Meadows <[email protected]>
* chore(api): remove unsupported property

* release: 1.92.2

---------

Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com>
Comment thread src/openai/_client.py

@override
def _prepare_options(self, options: FinalRequestOptions) -> FinalRequestOptions:
self.refresh_auth_headers()

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not great to. have to remember to call refresh_auth_headers before accessing them. But since the current implementation is a (sync) property, we have to somehow allow for async refresh.

We could do the refresh in the sync context, but I believe that the asymmetry between sync and async is worse than splitting it apart for both sync and async clients....

Comment thread src/openai/_client.py Outdated
Comment thread src/openai/_client.py Outdated
return Querystring(array_format="brackets")

def refresh_auth_headers(self):
bearer_token = self.bearer_token_provider() if self.bearer_token_provider else self.api_key

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have context for the change, but it looks like if the api_key or token is an empty string, they've updated the code to not send the header: https://github.com/openai/openai-python/blob/main/src/openai/_client.py#L286

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants