diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index a7006861b623..07e54b3a717c 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -132,11 +132,6 @@ jobs: - name: Install nox and nox-uv run: | uv pip install --system nox nox-uv - # TODO(https://github.com/googleapis/google-cloud-python/issues/18532): - # Remove UV_PRERELEASE once Python 3.15 is officially released and upstream binary wheels are available. - - name: Enable prereleases for Python 3.15 - if: matrix.python == '3.15' - run: echo "UV_PRERELEASE=allow" >> $GITHUB_ENV - name: Run unit tests for ${{ matrix.package_shard.description }} env: BUILD_TYPE: presubmit diff --git a/.librarian/generator-input/client-post-processing/bigquery-storage-integration.yaml b/.librarian/generator-input/client-post-processing/bigquery-storage-integration.yaml index b0d7677af2cb..3a5ce0d79ba7 100644 --- a/.librarian/generator-input/client-post-processing/bigquery-storage-integration.yaml +++ b/.librarian/generator-input/client-post-processing/bigquery-storage-integration.yaml @@ -131,7 +131,7 @@ replacements: after: | extras = { "pandas": [ - "pandas >= 1.1.3, < 3.0.0", + "pandas >= 1.1.3, < 4.0.0", "pyarrow >= 3.0.0", "pandas-gbq >= 0.35.1, < 2.0.0", ], @@ -525,17 +525,3 @@ replacements: bigquery_storage_v1alpha/types_\n\n Changelog count: 1 - - paths: [ - packages/google-cloud-bigquery-storage/noxfile.py, - ] - before: | - # Install all test dependencies, then install this package in-place.\n - constraints_path = str\( - after: | - # Install all test dependencies, then install this package in-place. - - if session.python == "3.15": - session.skip("Skipping 3.15 until wheels are available for pyarrow.") - - constraints_path = str( - count: 1 diff --git a/packages/bigquery-magics/noxfile.py b/packages/bigquery-magics/noxfile.py index 1b6f820f1c03..19f9bc94a935 100644 --- a/packages/bigquery-magics/noxfile.py +++ b/packages/bigquery-magics/noxfile.py @@ -252,11 +252,6 @@ def install_unittest_dependencies(session, *constraints): @nox.session(python=UNIT_TEST_PYTHON_VERSIONS) def unit(session): # Install all test dependencies, then install this package in-place. - if session.python == "3.15": - session.skip( - "Skipping 3.15 until wheels are available for pyproj needed for dependency geopandas" - ) - constraints_path = str( CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt" ) diff --git a/packages/bigquery-magics/setup.py b/packages/bigquery-magics/setup.py index ae1caecf8a0e..e37dd60ec3e9 100644 --- a/packages/bigquery-magics/setup.py +++ b/packages/bigquery-magics/setup.py @@ -111,6 +111,7 @@ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Operating System :: OS Independent", "Topic :: Internet", ], diff --git a/packages/db-dtypes/noxfile.py b/packages/db-dtypes/noxfile.py index e4f43fa955f6..e60217dfe0fd 100644 --- a/packages/db-dtypes/noxfile.py +++ b/packages/db-dtypes/noxfile.py @@ -317,9 +317,6 @@ def prerelease(session, tests_path): @nox.parametrize("test_type", ["unit", "compliance"]) def unit(session, test_type): """Run the unit test suite.""" - if session.python == "3.15": - session.skip("Skipping 3.15 until wheels are available for pyarrow.") - # Compliance tests only run on the latest Python version if test_type == "compliance" and session.python != DEFAULT_PYTHON_VERSION: session.skip( diff --git a/packages/db-dtypes/setup.py b/packages/db-dtypes/setup.py index a6005a83303f..7b040d8e1e56 100644 --- a/packages/db-dtypes/setup.py +++ b/packages/db-dtypes/setup.py @@ -69,6 +69,7 @@ def readme(): "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Operating System :: OS Independent", "Topic :: Database :: Front-Ends", ], diff --git a/packages/google-cloud-bigquery-storage/noxfile.py b/packages/google-cloud-bigquery-storage/noxfile.py index 2d8a4115d9f6..b7bab49cb829 100644 --- a/packages/google-cloud-bigquery-storage/noxfile.py +++ b/packages/google-cloud-bigquery-storage/noxfile.py @@ -294,9 +294,6 @@ def install_unittest_dependencies(session, *constraints): def unit(session, protobuf_implementation): # Install all test dependencies, then install this package in-place. - if session.python == "3.15": - session.skip("Skipping 3.15 until wheels are available for pyarrow.") - constraints_path = str( CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt" ) diff --git a/packages/google-cloud-bigquery-storage/setup.py b/packages/google-cloud-bigquery-storage/setup.py index 14dd4c5dd0bc..2fd9cb456870 100644 --- a/packages/google-cloud-bigquery-storage/setup.py +++ b/packages/google-cloud-bigquery-storage/setup.py @@ -55,7 +55,7 @@ ] extras = { "pandas": [ - "pandas >= 1.1.3, < 3.0.0", + "pandas >= 1.1.3, < 4.0.0", "pyarrow >= 3.0.0", "pandas-gbq >= 0.35.1, < 2.0.0", ], diff --git a/packages/google-cloud-bigquery/noxfile.py b/packages/google-cloud-bigquery/noxfile.py index af201dfb8a05..88dc5bd2daf1 100644 --- a/packages/google-cloud-bigquery/noxfile.py +++ b/packages/google-cloud-bigquery/noxfile.py @@ -180,15 +180,6 @@ def default(session, install_extras=True): @_calculate_duration def unit(session, test_type): """Run the unit test suite.""" - # TODO(https://github.com/googleapis/google-cloud-python/issues/17741): - # remove this skip once the optional extras resolve on 3.15. - # `unit_noextras` can be tested on 3.15 - if session.python == "3.15" and test_type == "unit": - session.skip( - "Optional extras do not yet resolve on 3.15; " - "unit_noextras covers the core install." - ) - install_extras = True if test_type == "unit_noextras": # unit_noextras only runs on the oldest and newest Python versions diff --git a/packages/google-cloud-documentai-toolbox/noxfile.py b/packages/google-cloud-documentai-toolbox/noxfile.py index 90e8938fdaa6..e6ac183ea803 100644 --- a/packages/google-cloud-documentai-toolbox/noxfile.py +++ b/packages/google-cloud-documentai-toolbox/noxfile.py @@ -214,11 +214,6 @@ def install_unittest_dependencies(session, *constraints): ) def unit(session, protobuf_implementation): # Install all test dependencies, then install this package in-place. - if session.python == "3.15": - session.skip( - "Skipping 3.15 until wheels are available for 1. numba (from dependency pandas[performance]) 2. lxml (from dependency pikepdf) 3. pyarrow." - ) - constraints_path = str( CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt" ) diff --git a/packages/google-cloud-documentai-toolbox/pytest.ini b/packages/google-cloud-documentai-toolbox/pytest.ini index 8b8d46c08c6c..4c9881c039ca 100644 --- a/packages/google-cloud-documentai-toolbox/pytest.ini +++ b/packages/google-cloud-documentai-toolbox/pytest.ini @@ -14,3 +14,7 @@ filterwarnings = # This error is expected for python versions that approach EOL ignore:.*Please upgrade to the latest Python version.*:FutureWarning ignore:(?s).*using a Python version.*past its end of life.*:FutureWarning + + # Python 3.15 base64.urlsafe_b64decode emits FutureWarning when protobuf json_format + # decodes standard base64 bytes fields containing '+' or '/' + ignore:invalid character .* in URL-safe Base64 data will be discarded in future Python versions:FutureWarning diff --git a/packages/google-cloud-documentai-toolbox/setup.py b/packages/google-cloud-documentai-toolbox/setup.py index 5842ac56fbcf..b5c183716221 100644 --- a/packages/google-cloud-documentai-toolbox/setup.py +++ b/packages/google-cloud-documentai-toolbox/setup.py @@ -55,9 +55,9 @@ install_requires=( "google-api-core>=2.25.0, <3.0.0", # For Python < 3.15: Install with performance extras (which includes numba) - "pandas[performance,gcp]>=2.0.0, <3.0.0; python_version < '3.15'", + "pandas[performance,gcp]>=2.0.0, <4.0.0; python_version < '3.15'", # pandas[performance] requires numba which does not have 3.15 support yet - "pandas[gcp]>=2.0.0, <3.0.0;python_version>='3.15'", + "pandas[gcp]>=2.0.0, <4.0.0;python_version>='3.15'", # pyarrow is transitive dependency; not accessed by the library directly "pyarrow>=15.0.0", "tabulate>=0.9.0, <1.0.0", @@ -84,6 +84,7 @@ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Topic :: Internet", "Topic :: Software Development :: Libraries :: Python Modules", ], diff --git a/packages/google-cloud-documentai-toolbox/testing/constraints-3.15.txt b/packages/google-cloud-documentai-toolbox/testing/constraints-3.15.txt index af6f7f358d70..21e9b11b45f8 100644 --- a/packages/google-cloud-documentai-toolbox/testing/constraints-3.15.txt +++ b/packages/google-cloud-documentai-toolbox/testing/constraints-3.15.txt @@ -10,4 +10,4 @@ google-cloud-documentai google-cloud-storage numpy pikepdf -numba>=0.63.0b1 +numba diff --git a/packages/pandas-gbq/noxfile.py b/packages/pandas-gbq/noxfile.py index 55052afb13a4..4d9f7393da5c 100644 --- a/packages/pandas-gbq/noxfile.py +++ b/packages/pandas-gbq/noxfile.py @@ -268,11 +268,6 @@ def default(session): @_calculate_duration def unit(session): """Run the unit test suite.""" - if session.python == "3.15": - session.skip( - "Skipping 3.15 until wheels are available for pyarrow. Also pyproj wheels are needed for dependency geopandas." - ) - default(session) diff --git a/packages/pandas-gbq/setup.py b/packages/pandas-gbq/setup.py index 99e69c3e8192..1f26d9df0c8d 100644 --- a/packages/pandas-gbq/setup.py +++ b/packages/pandas-gbq/setup.py @@ -93,6 +93,7 @@ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Operating System :: OS Independent", "Topic :: Internet", "Topic :: Scientific/Engineering", diff --git a/packages/sqlalchemy-bigquery/noxfile.py b/packages/sqlalchemy-bigquery/noxfile.py index c99032072a4a..ccc59a494b32 100644 --- a/packages/sqlalchemy-bigquery/noxfile.py +++ b/packages/sqlalchemy-bigquery/noxfile.py @@ -303,9 +303,6 @@ def install_unittest_dependencies(session, *constraints): def unit(session, protobuf_implementation, install_extras=True): # Install all test dependencies, then install this package in-place. - if session.python == "3.15": - session.skip("Skipping 3.15 until wheels are available for pyarrow.") - constraints_path = str( CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt" ) diff --git a/packages/sqlalchemy-bigquery/setup.py b/packages/sqlalchemy-bigquery/setup.py index da3970b2a0b9..7ce867b7e264 100644 --- a/packages/sqlalchemy-bigquery/setup.py +++ b/packages/sqlalchemy-bigquery/setup.py @@ -105,6 +105,7 @@ def readme(): "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Operating System :: OS Independent", "Topic :: Database :: Front-Ends", ],