Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/daily_jupyter_nb_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.9
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand Down Expand Up @@ -78,7 +78,7 @@ jobs:
download_name: macos
- image_name: windows-latest
download_name: windows
python-version: ["3.9", "3.10", "3.11"]
python-version: ["3.10", "3.11"]
# FINANCIAL__ECONOMIC_ESSENTIALS database unavailable in gcp, azure
cloud-provider: [aws]
steps:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is copied from original daily_precommit.yml with one change: only run Snowpark pandas tests

name: Daily Snowpark pandas API test with Py3.9 and Py3.10
name: Daily Snowpark pandas API test with Py3.10
on:
schedule:
# 12 AM UTC
Expand Down Expand Up @@ -50,7 +50,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.9
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand Down Expand Up @@ -80,7 +80,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand All @@ -105,7 +105,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand Down Expand Up @@ -136,7 +136,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand Down Expand Up @@ -171,7 +171,7 @@ jobs:
download_name: macos
- image_name: windows-latest-64-cores
download_name: windows
python-version: ["3.9", "3.10"]
python-version: ["3.10"]
cloud-provider: [aws, azure, gcp]
steps:
- name: Checkout Code
Expand Down Expand Up @@ -418,7 +418,7 @@ jobs:
python-version: "3.10"
cloud-provider: gcp
- os: ubuntu-latest-64-cores
python-version: "3.9"
python-version: "3.10"
cloud-provider: aws
steps:
- name: Checkout Code
Expand Down Expand Up @@ -509,7 +509,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand Down Expand Up @@ -564,7 +564,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/daily_modin_precommit_py311_py312.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.9
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand Down Expand Up @@ -184,7 +184,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand Down
32 changes: 14 additions & 18 deletions .github/workflows/daily_precommit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand All @@ -76,7 +76,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.9
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand Down Expand Up @@ -105,23 +105,20 @@ jobs:
matrix:
include:
# Ubuntu + rotating cloud providers
- { os: {image_name: ubuntu-latest-64-cores, download_name: linux}, python-version: "3.9", cloud-provider: aws }
- { os: {image_name: ubuntu-latest-64-cores, download_name: linux}, python-version: "3.10", cloud-provider: azure }
- { os: {image_name: ubuntu-latest-64-cores, download_name: linux}, python-version: "3.11", cloud-provider: gcp }
- { os: {image_name: ubuntu-latest-64-cores, download_name: linux}, python-version: "3.12", cloud-provider: aws }
- { os: {image_name: ubuntu-latest-64-cores, download_name: linux}, python-version: "3.13", cloud-provider: azure }
- { os: {image_name: ubuntu-latest-64-cores, download_name: linux}, python-version: "3.14", cloud-provider: gcp }

# macOS + rotating cloud providers
- { os: {image_name: macos-latest, download_name: macos}, python-version: "3.9", cloud-provider: gcp }
- { os: {image_name: macos-latest, download_name: macos}, python-version: "3.10", cloud-provider: aws }
- { os: {image_name: macos-latest, download_name: macos}, python-version: "3.11", cloud-provider: azure }
- { os: {image_name: macos-latest, download_name: macos}, python-version: "3.12", cloud-provider: gcp }
- { os: {image_name: macos-latest, download_name: macos}, python-version: "3.13", cloud-provider: aws }
- { os: {image_name: macos-latest, download_name: macos}, python-version: "3.14", cloud-provider: azure }

# Windows + rotating cloud providers
- { os: {image_name: windows-latest-64-cores, download_name: windows}, python-version: "3.9", cloud-provider: azure }
- { os: {image_name: windows-latest-64-cores, download_name: windows}, python-version: "3.10", cloud-provider: gcp }
- { os: {image_name: windows-latest-64-cores, download_name: windows}, python-version: "3.11", cloud-provider: aws }
- { os: {image_name: windows-latest-64-cores, download_name: windows}, python-version: "3.12", cloud-provider: azure }
Expand Down Expand Up @@ -210,9 +207,8 @@ jobs:
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18 unixodbc-dev
shell: bash
- name: Run data source tests
# psycopg2 is not supported on macos 3.9
# TODO: enable datasource tests for 3.14
if: ${{ !(contains('macos', matrix.os.download_name) && matrix.python-version == '3.9') && !(matrix.python-version == '3.14') }}
if: ${{ !(matrix.python-version == '3.14') }}
run: python -m tox -e datasource
env:
PYTHON_VERSION: ${{ matrix.python-version }}
Expand All @@ -234,7 +230,7 @@ jobs:
.tox/coverage.xml

test-fips:
name: Test FIPS py-linux-3.9-${{ matrix.cloud-provider }}
name: Test FIPS py-linux-3.10-${{ matrix.cloud-provider }}
needs: build
runs-on: ubuntu-latest-64-cores
strategy:
Expand All @@ -261,15 +257,15 @@ jobs:
- name: Run tests
run: ./ci/test_fips_docker.sh
env:
PYTHON_VERSION: 3.9
PYTHON_VERSION: '3.10'
cloud_provider: ${{ matrix.cloud-provider }}
PYTEST_ADDOPTS: --color=yes --tb=short
TOX_PARALLEL_NO_SPINNER: 1
shell: bash
- uses: actions/upload-artifact@v4
with:
include-hidden-files: true
name: coverage_linux-fips-3.9-${{ matrix.cloud-provider }}
name: coverage_linux-fips-3.10-${{ matrix.cloud-provider }}
path: |
.coverage
coverage.xml
Expand All @@ -284,7 +280,7 @@ jobs:
os:
- image_name: macos-latest
download_name: macos # it includes doctest
python-version: ["3.9", "3.10", "3.11", "3.12"]
python-version: ["3.10", "3.11", "3.12"]
cloud-provider: [aws]
steps:
- name: Checkout Code
Expand Down Expand Up @@ -362,7 +358,7 @@ jobs:
os:
- image_name: macos-latest
download_name: macos
python-version: ["3.9"]
python-version: ["3.10"]
cloud-provider: [aws]
steps:
- name: Checkout Code
Expand Down Expand Up @@ -437,7 +433,7 @@ jobs:
image_name: windows-latest
- download_name: ubuntu
image_name: ubuntu-latest
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
cloud-provider: [azure]
steps:
- name: Checkout Code
Expand Down Expand Up @@ -507,7 +503,7 @@ jobs:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
python-version: ["3.9", "3.10", "3.11", "3.12", "3.14"] # SNOW-2230787 test failing on Python 3.13
python-version: ["3.10", "3.11", "3.12", "3.14"] # SNOW-2230787 test failing on Python 3.13
cloud-provider: [gcp]
protobuf-version: ["3.20.1", "4.25.3", "5.28.3"]
steps:
Expand Down Expand Up @@ -577,7 +573,7 @@ jobs:
os:
- image_name: macos-latest
download_name: macos # it includes doctest
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
cloud-provider: [azure]
steps:
- name: Checkout Code
Expand Down Expand Up @@ -655,7 +651,7 @@ jobs:
matrix:
include:
- os: macos-latest
python-version: "3.9"
python-version: "3.10"
cloud-provider: azure
- os: ubuntu-latest
python-version: "3.12"
Expand Down Expand Up @@ -747,7 +743,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand Down Expand Up @@ -802,7 +798,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand Down
21 changes: 8 additions & 13 deletions .github/workflows/precommit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand All @@ -78,7 +78,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.9
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand Down Expand Up @@ -108,10 +108,6 @@ jobs:
# matrix is empty for pre-commit, tests are only added
# through the include directive
include:
# only run py3.9 tests on ubuntu+aws to isolate 3.9 failures
- python-version: "3.9"
os: ubuntu-latest-64-cores
cloud-provider: aws
# only run azure tests with latest python and ubuntu
- cloud-provider: azure
python-version: "3.12"
Expand Down Expand Up @@ -212,8 +208,7 @@ jobs:
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18 unixodbc-dev
shell: bash
- name: Run data source tests
# psycopg2 is not supported on macos 3.9
if: ${{ !(matrix.os == 'macos-latest' && matrix.python-version == '3.9') }}
if: ${{ !(matrix.python-version == '3.14') }}
run: python -m tox -e datasource
env:
PYTHON_VERSION: ${{ matrix.python-version }}
Expand Down Expand Up @@ -392,7 +387,7 @@ jobs:
fail-fast: false
matrix:
os: [ macos-latest ]
python-version: [ "3.9"]
python-version: [ "3.10"]
cloud-provider: [ aws ]
steps:
- name: Checkout Code
Expand Down Expand Up @@ -520,7 +515,7 @@ jobs:
# version/cloud/OS permutation coverage.
include:
# The steps below are configured to run only doctests for macos-3.12-aws
- python-version: "3.9"
- python-version: "3.10"
os: macos-latest
cloud-provider: aws
- cloud-provider: gcp
Expand Down Expand Up @@ -625,7 +620,7 @@ jobs:
os:
- image_name: macos-latest
download_name: macos
python-version: ["3.9"]
python-version: ["3.10"]
cloud-provider: [aws]
steps:
- name: Checkout Code
Expand Down Expand Up @@ -701,7 +696,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand Down Expand Up @@ -763,7 +758,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
python-version: '3.10'
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@

- Fixed a bug where calling `DataFrame.alias()` twice on the same DataFrame (e.g. for a self-join) caused both aliases to share the same internal column-mapping dictionary. This made `col("R", "col")` resolve to the same column as `col("L", "col")`, producing incorrect join conditions and filter expressions.

#### Deprecations

- Removed support for Python 3.9.

## 1.51.1 (2026-05-28)

#### Documentation
Expand Down
6 changes: 3 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ cd snowpark-python
#### Install the library in edit mode and install its dependencies

- Create a new Python virtual environment with any Python version that we support.
- The Snowpark Python API supports **Python 3.9, Python 3.10, Python 3.11, Python 3.12 and Python 3.13**.
- The Snowpark pandas API supports **Python 3.9, Python 3.10, and Python 3.11**. Additionally, Snowpark pandas requires **Modin 0.36.x or 0.37.x**, and **pandas 2.2.x or 2.3.x**.
- The Snowpark Python API supports **Python 3.10, Python 3.11, Python 3.12 and Python 3.13**.
- The Snowpark pandas API supports **Python 3.10 and Python 3.11**. Additionally, Snowpark pandas requires **Modin 0.36.x or 0.37.x**, and **pandas 2.2.x or 2.3.x**.

```bash
conda create --name snowpark-dev python=3.9
conda create --name snowpark-dev python=3.10
```

- Activate the new Python virtual environment. For example,
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ If you don't have a Snowflake account yet, you can [sign up for a 30-day free tr

### Create a Python virtual environment
You can use [miniconda][miniconda], [anaconda][anaconda], or [virtualenv][virtualenv]
to create a Python 3.9, 3.10, 3.11, 3.12 or 3.13 virtual environment.
to create a Python 3.10, 3.11, 3.12 or 3.13 virtual environment.

For Snowpark pandas, only Python 3.9, 3.10, or 3.11 is supported.
For Snowpark pandas, only Python 3.10 or 3.11 is supported.

To have the best experience when using it with UDFs, [creating a local conda environment with the Snowflake channel][use snowflake channel] is recommended.

Expand Down
2 changes: 1 addition & 1 deletion ci/docker/snowpark_test_fips/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo && \
RUN yum clean all && \
yum groupinstall -y "Development Tools" && \
yum install -y redhat-rpm-config gcc libffi-devel wget && \
yum install -y perl-IPC-Cmd perl-Digest-SHA perl-Test-Simple perl-Pod-Html python39 python39-devel && \
yum install -y perl-IPC-Cmd perl-Digest-SHA perl-Test-Simple perl-Pod-Html python310 python310-devel && \
yum clean all && \
rm -rf /var/cache/yum

Expand Down
Loading
Loading