Default package source changes for Snowpark Python

Note

This change will be rolled out starting June 26, 2026.

This change affects the default package source used when creating or altering Python UDFs, UDTFs, UDAFs, and stored procedures. It applies to:

  • Python 3.14+ workloads in existing accounts
  • All Python workloads in accounts created after this change takes effect
Before the change:

For all Python runtimes, if you do not specify an ARTIFACT_REPOSITORY on a function or procedure and have no DEFAULT_PYTHON_ARTIFACT_REPOSITORY set at the schema, database, or account level, Snowflake resolves packages from Anaconda by default.

When a new account is created, no default Python artifact repository is set, so new accounts also default to Anaconda unless you configure a different repository.

After the change:

Existing accounts — Python 3.13 or lower: No change. Existing workloads and new workloads using Python 3.13 or lower continue to use Anaconda as the implicit default.

Existing accounts — Python 3.14 or higher: When you create or alter a function or stored procedure to use Python 3.14+, and you do not specify an ARTIFACT_REPOSITORY and have no DEFAULT_PYTHON_ARTIFACT_REPOSITORY set at the schema, database, or account level, Snowflake implicitly uses the shared PyPI repository (snowflake.snowpark.pypi_shared_repository) as the default source of packages instead of Anaconda.

New accounts: During account creation, Snowflake sets DEFAULT_PYTHON_ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository, so all Python runtimes in new accounts use the shared PyPI repository by default.

Explicit settings always take precedence. The package repository is resolved in the following order:

  1. Function- or procedure-level ARTIFACT_REPOSITORY
  2. DEFAULT_PYTHON_ARTIFACT_REPOSITORY at the schema, database, or account level
  3. The implicit shared PyPI repository (new default when no explicit setting exists)

What you need to do

If you are comfortable with PyPI as the default package source for Python 3.14+ workloads, no action is required. Your existing explicit defaults and function-level settings continue to work as they do today.

If you prefer Anaconda as the default, configure an explicit default before using Python 3.14+ or before creating new accounts.

For existing accounts — keep Anaconda as the default:

-- Set Anaconda as the account-level default
ALTER ACCOUNT SET DEFAULT_PYTHON_ARTIFACT_REPOSITORY =
  snowflake.snowpark.anaconda_shared_repository;

You can also set a custom default at the database, schema, or function level:

-- Database-level default
ALTER DATABASE my_db
  SET DEFAULT_PYTHON_ARTIFACT_REPOSITORY = my_db.my_schema.my_repo;

-- Function-level explicit repository
CREATE OR REPLACE FUNCTION my_func(x INT)
RETURNS INT
LANGUAGE PYTHON
RUNTIME_VERSION = '3.14'
ARTIFACT_REPOSITORY = my_db.my_schema.my_repo
AS $$
...
$$;

For new accounts created after this change takes effect:

After account creation, set the account-level default to Anaconda if preferred:

ALTER ACCOUNT SET DEFAULT_PYTHON_ARTIFACT_REPOSITORY =
  snowflake.snowpark.anaconda_shared_repository;

For more information on Python package management, see Using third-party packages.

Ref: 2325