-
Notifications
You must be signed in to change notification settings - Fork 543
Description
What is the current behavior?
SNOW-2107016: boto3 and botocore are unconditional dependencies in latest release 3.15.0 (#2323)
The implementation to avoid installing boto dependencies using the "SNOWFLAKE_NO_BOTO" environment variable does not work with package managers like "uv" and "poetry"
Commands to install package with uv: (also tested with poetry)
uv init
export SNOWFLAKE_NO_BOTO=true
uv add snowflake-connector-python
output (installs boto3 and botocore)
Initialized project `test`
Using CPython 3.12.11
Creating virtual environment at: .venv
Resolved 26 packages in 370ms
Prepared 10 packages in 426ms
Installed 25 packages in 30ms
+ asn1crypto==1.5.1
+ boto3==1.42.66
+ botocore==1.42.66
+ certifi==2026.2.25
+ cffi==2.0.0
+ charset-normalizer==3.4.5
+ cryptography==46.0.5
+ filelock==3.25.2
+ idna==3.11
+ jmespath==1.1.0
+ packaging==26.0
+ platformdirs==4.9.4
+ pycparser==3.0
+ pyjwt==2.11.0
+ pyopenssl==25.3.0
+ python-dateutil==2.9.0.post0
+ pytz==2026.1.post1
+ requests==2.32.5
+ s3transfer==0.16.0
+ six==1.17.0
+ snowflake-connector-python==4.3.0
+ sortedcontainers==2.4.0
+ tomlkit==0.14.0
+ typing-extensions==4.15.0
+ urllib3==2.6.3
What is the desired behavior?
Users of package managers like uv and poetry should be able to add the python snowflake connector without the additional boto dependencies.
This seems like the perfect use case for the "default extras" (PEP 771) proposal. However that is "draft" status only at the time of writing this ticket.
The boto library dependencies could be made optional extras in the next major release. But if only a small minority of users don't use AWS that may not be desirable.
How would this improve snowflake-connector-python?
Making these dependencies optional would avoid forcing users to install large SDKs they don't use and would allow for leaner deployments.
References and other background
No response