Conversation
There was a problem hiding this comment.
Pull request overview
This PR reduces import ydb time by deferring optional/heavy IAM-related dependencies until they’re actually needed, avoiding unconditional imports of the requests/PyJWT stacks.
Changes:
- Lazy-import
ydb.iamincredentials_from_env_variables()instead of importing it atydb.drivermodule import time. - Move
requestsandjwtimports inydb.iam.authfrom module scope into the specific functions/methods that require them.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
ydb/iam/auth.py |
Lazily imports jwt/requests in IAM credential helpers to avoid loading optional deps at import time. |
ydb/driver.py |
Defers importing ydb.iam until metadata credentials are selected, reducing baseline module import overhead. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
a9f4e54 to
5e8573b
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reduce
import ydbtime by ~36% (158ms → 101ms) by deferring heavyoptional dependencies that were loaded unconditionally at import time.
Changes:
driver.py: lazy-importydb.iaminsidecredentials_from_env_variables()instead of at module level
iam/auth.py: moveimport requestsandimport jwtfrom module levelinto the functions that actually use them (
MetadataUrlCredentials.__init__,_make_token_request,get_jwt)Neither
requestsnorjwtis needed unless the user explicitly createsMetadataUrlCredentialsor callsget_jwt. Previously they were importedon every
import ydb, pulling in the fullrequests/charset-normalizer/urllib3/PyJWT/cryptographystack (~60ms) even for users who never useIAM auth.
Pull request type
Please check the type of change your PR introduces:
What is the current behavior?
Issue Number: N/A
What is the new behavior?
Other information