Skip to content

Commit 1f29348

Browse files
sfc-gh-pczajkasfc-gh-eworoshowsfc-gh-blisfc-gh-mkellergithub-actions
authored
Merge main to aio (#2680)
Co-authored-by: Eric Woroshow <eric.woroshow@snowflake.com> Co-authored-by: Bing Li <63471091+sfc-gh-bli@users.noreply.github.com> Co-authored-by: Mark Keller <mark.keller@snowflake.com> Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: Jakub Szczerbiński <jakub.szczerbinski@snowflake.com> Co-authored-by: Jamison <jamison.rose@snowflake.com> Co-authored-by: Adam Ling <adam.ling@snowflake.com> Co-authored-by: Yijun Xie <yijun.xie@snowflake.com> Co-authored-by: David Szmolka <69192509+sfc-gh-dszmolka@users.noreply.github.com> Co-authored-by: Pablo Nicolás Estevez <73709191+Polandia94@users.noreply.github.com> Co-authored-by: Richard Ebeling <richard.ebeling@snowflake.com> Co-authored-by: Mikołaj Kubik <mikolaj.kubik@snowflake.com> Co-authored-by: Filip Ochnik <filip.ochnik@snowflake.com> Co-authored-by: Piotr Bulawa <piotr.bulawa@snowflake.com> Co-authored-by: Zihan Li <63482288+sfc-gh-zli@users.noreply.github.com> Co-authored-by: Maxim Mishchenko <maxim.mishchenko@snowflake.com> Co-authored-by: Zexin Yao <103003040+sfc-gh-zyao@users.noreply.github.com> Co-authored-by: Thomas Kissinger <61704619+sfc-gh-tkissinger@users.noreply.github.com> Co-authored-by: Peter Mansour <peter.mansour@snowflake.com> Co-authored-by: Filip Pawłowski <filip.pawlowski@snowflake.com> Co-authored-by: Leonhard Spiegelberg <leonhard.spiegelberg@snowflake.com> Co-authored-by: Adam Kolodziejczyk <adam.kolodziejczyk@snowflake.com> Co-authored-by: Michał Hofman <michal.hofman@snowflake.com> Co-authored-by: Patryk Cyrek <patryk.cyrek@snowflake.com> Co-authored-by: Naresh Kumar <113932371+sfc-gh-nkumar@users.noreply.github.com> Co-authored-by: Rob Clevenger <rcleveng@users.noreply.github.com> Co-authored-by: Susheel Aroskar <susheel.aroskar@snowflake.com> Co-authored-by: Xiaohu Zhao <xiaohu.zhao@snowflake.com> Co-authored-by: Myles Borins <myles.borins@snowflake.com> Co-authored-by: Sanchit Karve <sanchit.karve@snowflake.com> Co-authored-by: Sid Shetkar <sid.shetkar@snowflake.com> Co-authored-by: Yuyang Wang <yuyang.wang@snowflake.com> Co-authored-by: Berkay Öztürk <info@berkayozturk.net> Co-authored-by: Julian <Argon-@users.noreply.github.com> Co-authored-by: Gleb Khmyznikov <gleb.khmyznikov@gmail.com> Co-authored-by: Harsh Pathak <harsh.pathak@snowflake.com> Co-authored-by: George Merticariu <103256710+sfc-gh-gmerticariu@users.noreply.github.com> Co-authored-by: Edward Qin <edward.qin@snowflake.com> Co-authored-by: Brandon Chinn <brandon.chinn@snowflake.com> Co-authored-by: jochenott <jochenott@users.noreply.github.com> Co-authored-by: Jochen Ott <Jochen.Ott@blueyonder.com> Co-authored-by: Sean Noonan <sean.noonan@snowflake.com> Co-authored-by: Naren Krishna <naren.krishna@snowflake.com> Co-authored-by: Eric Buehl <715650+ericbuehl@users.noreply.github.com> Co-authored-by: Mathias Florin <31008003+mathiasflorin@users.noreply.github.com> Co-authored-by: James Kasten <james.kasten@snowflake.com> Co-authored-by: Dawid Heyman <dawid.heyman@snowflake.com> Co-authored-by: HeroCC <2124489+HeroCC@users.noreply.github.com> Co-authored-by: Tomasz Urbaszek <tomasz.urbaszek@snowflake.com> Co-authored-by: Jakub Wilkowski <jakub.wilkowski@snowflake.com> Co-authored-by: Nikita Peshkov <nikita.peshkov@teampicnic.com>
1 parent 0b97e59 commit 1f29348

File tree

130 files changed

+12455
-6718
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

130 files changed

+12455
-6718
lines changed

.github/CODEOWNERS

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1-
@snowflakedb/snowpark-python-api
1+
* @snowflakedb/snow-drivers-warsaw
2+
/src/snowflake/connector/ocsp_* @snowflakedb/pki-oversight @snowflakedb/snow-drivers-warsaw
3+
/src/snowflake/connector/crl.py @snowflakedb/pki-oversight @snowflakedb/snow-drivers-warsaw
4+
/src/snowflake/connector/crl_cache.py @snowflakedb/pki-oversight @snowflakedb/snow-drivers-warsaw
5+
/src/snowflake/connector/ssl_wrap_socket.py @snowflakedb/pki-oversight @snowflakedb/snow-drivers-warsaw

.github/workflows/build_test.yml

Lines changed: 65 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,7 @@ jobs:
6363
runs-on: ubuntu-latest
6464
strategy:
6565
matrix:
66-
# TODO: temporarily reduce number of jobs: SNOW-2311643
67-
# python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
68-
python-version: ["3.9", "3.13"]
66+
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
6967
steps:
7068
- uses: actions/checkout@v4
7169
- name: Set up Python
@@ -96,9 +94,7 @@ jobs:
9694
id: macosx_x86_64
9795
- image: macos-latest
9896
id: macosx_arm64
99-
# TODO: temporarily reduce number of jobs: SNOW-2311643
100-
# python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
101-
python-version: ["3.9", "3.13"]
97+
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
10298
exclude:
10399
- os:
104100
image: windows-11-arm
@@ -158,9 +154,7 @@ jobs:
158154
download_name: win_amd64
159155
- image_name: windows-11-arm
160156
download_name: win_arm64
161-
# TODO: temporarily reduce number of jobs: SNOW-2311643
162-
# python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
163-
python-version: ["3.9", "3.13"]
157+
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
164158
cloud-provider: [aws, azure, gcp]
165159
exclude:
166160
- os:
@@ -211,9 +205,9 @@ jobs:
211205
- name: Setup private key file
212206
shell: bash
213207
env:
214-
PYTHON_PRIVATE_KEY_SECRET: ${{ secrets.PYTHON_PRIVATE_KEY_SECRET }}
208+
PARAMETERS_SECRET: ${{ secrets.PARAMETERS_SECRET }}
215209
run: |
216-
gpg --quiet --batch --yes --decrypt --passphrase="$PYTHON_PRIVATE_KEY_SECRET" \
210+
gpg --quiet --batch --yes --decrypt --passphrase="$PARAMETERS_SECRET" \
217211
.github/workflows/parameters/public/rsa_keys/rsa_key_python_${{ matrix.cloud-provider }}.p8.gpg > test/rsa_key_python_${{ matrix.cloud-provider }}.p8
218212
- name: Download wheel(s)
219213
uses: actions/download-artifact@v4
@@ -265,7 +259,7 @@ jobs:
265259
os:
266260
# Because old the version 3.0.2 of snowflake-connector-python depends on oscrypto which causes conflicts with higher versions of libssl
267261
# TODO: It can be changed to ubuntu-latest, when python sf connector version in tox is above 3.4.0
268-
- image_name: ubuntu-20.04
262+
- image_name: ubuntu-22.04
269263
download_name: linux
270264
python-version: [3.9]
271265
cloud-provider: [aws]
@@ -287,9 +281,9 @@ jobs:
287281
- name: Setup private key file
288282
shell: bash
289283
env:
290-
PYTHON_PRIVATE_KEY_SECRET: ${{ secrets.PYTHON_PRIVATE_KEY_SECRET }}
284+
PARAMETERS_SECRET: ${{ secrets.PARAMETERS_SECRET }}
291285
run: |
292-
gpg --quiet --batch --yes --decrypt --passphrase="$PYTHON_PRIVATE_KEY_SECRET" \
286+
gpg --quiet --batch --yes --decrypt --passphrase="$PARAMETERS_SECRET" \
293287
.github/workflows/parameters/public/rsa_keys/rsa_key_python_${{ matrix.cloud-provider }}.p8.gpg > test/rsa_key_python_${{ matrix.cloud-provider }}.p8
294288
- name: Upgrade setuptools, pip and wheel
295289
run: python -m pip install -U setuptools pip wheel
@@ -355,9 +349,9 @@ jobs:
355349
- name: Setup private key file
356350
shell: bash
357351
env:
358-
PYTHON_PRIVATE_KEY_SECRET: ${{ secrets.PYTHON_PRIVATE_KEY_SECRET }}
352+
PARAMETERS_SECRET: ${{ secrets.PARAMETERS_SECRET }}
359353
run: |
360-
gpg --quiet --batch --yes --decrypt --passphrase="$PYTHON_PRIVATE_KEY_SECRET" \
354+
gpg --quiet --batch --yes --decrypt --passphrase="$PARAMETERS_SECRET" \
361355
.github/workflows/parameters/public/rsa_keys/rsa_key_python_${{ matrix.cloud-provider }}.p8.gpg > test/rsa_key_python_${{ matrix.cloud-provider }}.p8
362356
- name: Download wheel(s)
363357
uses: actions/download-artifact@v4
@@ -398,9 +392,7 @@ jobs:
398392
strategy:
399393
fail-fast: false
400394
matrix:
401-
# TODO: temporarily reduce number of jobs: SNOW-2311643
402-
# python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
403-
python-version: ["3.9", "3.13"]
395+
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
404396
cloud-provider: [aws]
405397
steps:
406398
- name: Set shortver
@@ -419,9 +411,9 @@ jobs:
419411
- name: Setup private key file
420412
shell: bash
421413
env:
422-
PYTHON_PRIVATE_KEY_SECRET: ${{ secrets.PYTHON_PRIVATE_KEY_SECRET }}
414+
PARAMETERS_SECRET: ${{ secrets.PARAMETERS_SECRET }}
423415
run: |
424-
gpg --quiet --batch --yes --decrypt --passphrase="$PYTHON_PRIVATE_KEY_SECRET" \
416+
gpg --quiet --batch --yes --decrypt --passphrase="$PARAMETERS_SECRET" \
425417
.github/workflows/parameters/public/rsa_keys/rsa_key_python_${{ matrix.cloud-provider }}.p8.gpg > test/rsa_key_python_${{ matrix.cloud-provider }}.p8
426418
- name: Download wheel(s)
427419
uses: actions/download-artifact@v4
@@ -500,9 +492,9 @@ jobs:
500492
- name: Setup private key file
501493
shell: bash
502494
env:
503-
PYTHON_PRIVATE_KEY_SECRET: ${{ secrets.PYTHON_PRIVATE_KEY_SECRET }}
495+
PARAMETERS_SECRET: ${{ secrets.PARAMETERS_SECRET }}
504496
run: |
505-
gpg --quiet --batch --yes --decrypt --passphrase="$PYTHON_PRIVATE_KEY_SECRET" \
497+
gpg --quiet --batch --yes --decrypt --passphrase="$PARAMETERS_SECRET" \
506498
.github/workflows/parameters/public/rsa_keys/rsa_key_python_${{ matrix.cloud-provider }}.p8.gpg > test/rsa_key_python_${{ matrix.cloud-provider }}.p8
507499
- name: Download wheel(s)
508500
uses: actions/download-artifact@v4
@@ -523,7 +515,6 @@ jobs:
523515
cloud_provider: ${{ matrix.cloud-provider }}
524516
PYTEST_ADDOPTS: --color=yes --tb=short
525517
TOX_PARALLEL_NO_SPINNER: 1
526-
shell: bash
527518
- name: Combine coverages
528519
run: python -m tox run -e coverage --skip-missing-interpreters false
529520
shell: bash
@@ -566,6 +557,56 @@ jobs:
566557
TOX_PARALLEL_NO_SPINNER: 1
567558
shell: bash
568559

560+
test-rockylinux9:
561+
name: Test Rocky Linux 9 rockylinux9-${{ matrix.python-version }}-${{ matrix.cloud-provider }}
562+
needs: lint
563+
runs-on: ubuntu-latest
564+
strategy:
565+
fail-fast: false
566+
matrix:
567+
# Rocky Linux 9 has Python 3.9, 3.11, and 3.12 available
568+
python-version: ["3.9", "3.11", "3.12"]
569+
cloud-provider: [aws, azure, gcp]
570+
steps:
571+
- name: Set shortver
572+
run: echo "shortver=${longver//./}" >> $GITHUB_ENV
573+
env:
574+
longver: ${{ matrix.python-version }}
575+
shell: bash
576+
- uses: actions/checkout@v4
577+
- name: Build wheel for Rocky Linux
578+
uses: pypa/cibuildwheel@v2.21.3
579+
env:
580+
CIBW_BUILD: cp${{ env.shortver }}-manylinux_x86_64
581+
MACOSX_DEPLOYMENT_TARGET: 10.14
582+
with:
583+
output-dir: dist
584+
- name: Show wheels built
585+
run: ls -lh dist
586+
shell: bash
587+
- name: Setup parameters file
588+
shell: bash
589+
env:
590+
PARAMETERS_SECRET: ${{ secrets.PARAMETERS_SECRET }}
591+
run: |
592+
gpg --quiet --batch --yes --decrypt --passphrase="$PARAMETERS_SECRET" \
593+
.github/workflows/parameters/public/parameters_${{ matrix.cloud-provider }}.py.gpg > test/parameters.py
594+
- name: Setup private key file
595+
shell: bash
596+
env:
597+
PARAMETERS_SECRET: ${{ secrets.PARAMETERS_SECRET }}
598+
run: |
599+
gpg --quiet --batch --yes --decrypt --passphrase="$PARAMETERS_SECRET" \
600+
.github/workflows/parameters/public/rsa_keys/rsa_key_python_${{ matrix.cloud-provider }}.p8.gpg > test/rsa_key_python_${{ matrix.cloud-provider }}.p8
601+
- name: Run tests
602+
run: ./ci/test_rockylinux9_docker.sh ${PYTHON_VERSION}
603+
env:
604+
PYTHON_VERSION: ${{ matrix.python-version }}
605+
cloud_provider: ${{ matrix.cloud-provider }}
606+
PYTEST_ADDOPTS: --color=yes --tb=short
607+
TOX_PARALLEL_NO_SPINNER: 1
608+
shell: bash
609+
569610
combine-coverage:
570611
if: always()
571612
name: Combine coverage

.github/workflows/jira_issue.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
summary: '${{ github.event.issue.title }}'
3838
description: |
3939
${{ github.event.issue.body }} \\ \\ _Created from GitHub Action_ for ${{ github.event.issue.html_url }}
40-
fields: '{"customfield_11401":{"id":"14586"},"assignee":{"id":"61027a237ab143006ecfb9a2"},"components":[{"id":"16413"}]}'
40+
fields: '{"customfield_11401":{"id":"14723"},"assignee":{"id":"712020:e527ae71-55cc-4e02-9217-1ca4ca8028a2"},"components":[{"id":"16413"}], "labels": ["oss"], "priority": {"id": "10001"} }'
4141

4242
- name: Update GitHub Issue
4343
uses: ./jira/gajira-issue-update
Binary file not shown.
Binary file not shown.
Binary file not shown.

DESCRIPTION.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,16 @@ https://docs.snowflake.com/
77
Source code is also available at: https://github.com/snowflakedb/snowflake-connector-python
88

99
# Release Notes
10-
- v4.1.0(TBD)
10+
- v4.1.1(November 20,2025)
11+
- Added the `SNOWFLAKE_AUTH_FORCE_SERVER` environment variable to force the use of the local-listening server when using the `externalbrowser` auth method.
12+
- This allows headless environments (like Docker or Airflow) running locally to auth via a browser URL.
13+
- Fix compilation error when building from sources with libc++.
14+
- Pin lower versions of dependencies to oldest version without vulnerabilities.
15+
- Added no_proxy parameter for proxy configuration without using environmental variables.
16+
- Added OAUTH_AUTHORIZATION_CODE and OAUTH_CLIENT_CREDENTIALS to list of authenticators that don't require user to be set
17+
- Added `oauth_socket_uri` connection parameter allowing to separate server and redirect URIs for local OAuth server.
18+
- Made platform_detection logs silent and improved its timeout handling. Added support for ENV_VAR_DISABLE_PLATFORM_DETECTION environment variable.
19+
- Fixed FIPS environments md5 hash issues with multipart upload on Azure.
1120

1221
- v4.0.0(October 09,2025)
1322
- Added support for checking certificates revocation using revocation lists (CRLs)

Jenkinsfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ timestamps {
3333
string(name: 'client_git_commit', value: scmInfo.GIT_COMMIT),
3434
string(name: 'client_git_branch', value: scmInfo.GIT_BRANCH),
3535
string(name: 'parent_job', value: env.JOB_NAME),
36-
string(name: 'parent_build_number', value: env.BUILD_NUMBER)
36+
string(name: 'parent_build_number', value: env.BUILD_NUMBER),
37+
string(name: 'USE_PASSWORD', value: 'true')
3738
]
3839
parallel(
3940
'Test': {

MANIFEST.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ include LICENSE.txt
44
include NOTICE
55
include pyproject.toml
66
include src/snowflake/connector/nanoarrow_cpp/ArrowIterator/LICENSE.txt
7-
recursive-include src/snowflake/connector py.typed *.py *.pyx
7+
recursive-include src/snowflake/connector py.typed *.py *.pyx *.js
88
recursive-include src/snowflake/connector/vendored LICENSE*
99

1010
recursive-include src/snowflake/connector/nanoarrow_cpp *.cpp *.hpp

README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,3 +81,28 @@ conn = snowflake.connector.connect(
8181
)
8282
conn.telemetry_enabled = False
8383
```
84+
85+
## Verifying Package Signatures
86+
87+
To ensure the authenticity and integrity of the Python package, follow the steps below to verify the package signature using `cosign`.
88+
89+
**Steps to verify the signature:**
90+
- Install cosign:
91+
- This example is using golang installation: [installing-cosign-with-go](https://edu.chainguard.dev/open-source/sigstore/cosign/how-to-install-cosign/#installing-cosign-with-go)
92+
- Download the file from the repository like pypi:
93+
- https://pypi.org/project/snowflake-connector-python/#files
94+
- Download the signature files from the release tag, replace the version number with the version you are verifying:
95+
- https://github.com/snowflakedb/snowflake-connector-python/releases/tag/v3.12.2
96+
- Verify signature:
97+
````bash
98+
# replace the version number with the version you are verifying
99+
./cosign verify-blob snowflake_connector_python-3.12.2.tar.gz \
100+
--key snowflake-connector-python-v3.12.2.pub \
101+
--signature resources.linux.snowflake_connector_python-3.12.2.tar.gz.sig
102+
103+
Verified OK
104+
````
105+
106+
## NOTE
107+
108+
This library currently does not support GCP regional endpoints. Please ensure that any workloads using through this library do not require support for regional endpoints on GCP. If you have questions about this, please contact [Snowflake Support](https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge).

0 commit comments

Comments
 (0)