Skip to content
Draft
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
5 changes: 0 additions & 5 deletions .github/workflows/unittest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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",
],
Expand Down Expand Up @@ -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
5 changes: 0 additions & 5 deletions packages/bigquery-magics/noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Expand Down
1 change: 1 addition & 0 deletions packages/bigquery-magics/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
],
Expand Down
3 changes: 0 additions & 3 deletions packages/db-dtypes/noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
1 change: 1 addition & 0 deletions packages/db-dtypes/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
],
Expand Down
3 changes: 0 additions & 3 deletions packages/google-cloud-bigquery-storage/noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Expand Down
2 changes: 1 addition & 1 deletion packages/google-cloud-bigquery-storage/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
],
Expand Down
9 changes: 0 additions & 9 deletions packages/google-cloud-bigquery/noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 0 additions & 5 deletions packages/google-cloud-documentai-toolbox/noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Expand Down
4 changes: 4 additions & 0 deletions packages/google-cloud-documentai-toolbox/pytest.ini
Original file line number Diff line number Diff line change
Expand Up @@ -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
6 changes: 2 additions & 4 deletions packages/google-cloud-documentai-toolbox/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,7 @@
},
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] requires numba which does not have 3.15 support yet
"pandas[gcp]>=2.0.0, <3.0.0;python_version>='3.15'",
"pandas[performance,gcp]>=2.0.0, <4.0.0",
# pyarrow is transitive dependency; not accessed by the library directly
"pyarrow>=15.0.0",
"tabulate>=0.9.0, <1.0.0",
Expand All @@ -84,6 +81,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",
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ google-cloud-documentai
google-cloud-storage
numpy
pikepdf
numba>=0.63.0b1
numba
5 changes: 0 additions & 5 deletions packages/pandas-gbq/noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)


Expand Down
1 change: 1 addition & 0 deletions packages/pandas-gbq/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
3 changes: 0 additions & 3 deletions packages/sqlalchemy-bigquery/noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Expand Down
1 change: 1 addition & 0 deletions packages/sqlalchemy-bigquery/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,45 @@ def test_floordiv_integer(self):
def test_floordiv_integer_bound(self):
pass

@pytest.mark.skip(
"Skip 38-Digit Typed Divisor: BigQuery's SQL compiler evaluates raw, unquoted "
"integer sequences as INT64 *before* executing casting wrappers like CAST(). "
"Because 30000000000000000000000000000000000000 exceeds standard signed 64-bit "
"boundaries (maximum value: 9223372036854775807), the parser throws an immediate "
"syntax-level 'Invalid integer literal' error. Solving this requires the dialect compiler "
"to natively serialize large Python Decimal objects as string-quoted SQL literals ('30000...')."
)
def test_truediv_divisor_numeric_38_digit_divisor_typed(self):
pass

@pytest.mark.skip(
"Skip 38-Digit Untyped Divisor: Similar to the typed variant, BigQuery's lexical analyzer "
"overflows on unquoted digit strings exceeding 64-bit thresholds. Because SQLAlchemy's "
"untyped compilation strategy outputs these Python Decimal structures as raw digit text, "
"the SQL engine throws a BadRequest 'Invalid integer literal' exception at the parsing step."
)
def test_truediv_divisor_numeric_38_digit_divisor_untyped_function(self):
pass

@pytest.mark.skip(
"Skip Untyped Many Decimals: When wrap_divisor is a lambda (an untyped function), SQLAlchemy "
"leaves compiled math expressions uncoerced. Intermediate division calculations on BigQuery standard "
"NUMERIC types then fall back to standard FLOAT64 representation behaviors or lower-precision scales, "
"resulting in floating-point math inaccuracies (e.g., returning 7.00000000447 instead of the expected 7)."
)
def test_truediv_divisor_numeric_many_decimals_untyped_function(self):
pass

@pytest.mark.skip(
"Skip Untyped Tiny Divisor: BigQuery's standard NUMERIC type has a strict scale ceiling of "
"9 decimal places (unlike BIGNUMERIC which supports up to 38 decimal places). When an untyped "
"divisor contains a high-precision value like 0.00000000000012345679 (with 13 decimal places), "
"the SQL engine's intermediate casting to NUMERIC rounds the value all the way down to 0, "
"consequently triggering a 400 Bad Request 'division by zero' exception."
)
def test_truediv_divisor_numeric_tiny_divisor_untyped_function(self):
pass

class SimpleUpdateDeleteTest(_SimpleUpdateDeleteTest):
"""The base tests fail if operations return rows for some reason."""

Expand Down
Loading