From 086356ef5e5d936ff5408e78d46fca14124252fb Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Mon, 29 Jun 2026 19:40:09 +0000 Subject: [PATCH 1/3] fix: avoid deprecated unitless operations for NumPy 2.5 compatibility --- packages/db-dtypes/db_dtypes/__init__.py | 14 +++++++++----- packages/db-dtypes/db_dtypes/core.py | 13 ++++++++++++- packages/db-dtypes/noxfile.py | 1 - packages/db-dtypes/tests/unit/test_dtypes.py | 19 +++++++++++++++++++ 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/packages/db-dtypes/db_dtypes/__init__.py b/packages/db-dtypes/db_dtypes/__init__.py index bdd8264df5dc..8a0dc8a9f024 100644 --- a/packages/db-dtypes/db_dtypes/__init__.py +++ b/packages/db-dtypes/db_dtypes/__init__.py @@ -34,7 +34,7 @@ date_dtype_name = "dbdate" time_dtype_name = "dbtime" _EPOCH = datetime.datetime(1970, 1, 1) -_NPEPOCH = numpy.datetime64(_EPOCH) +_NPEPOCH = numpy.datetime64(_EPOCH, "ns") _NP_DTYPE = "datetime64[ns]" # Numpy converts datetime64 scalars to datetime.datetime only if microsecond or @@ -119,7 +119,7 @@ def _datetime( ) if pandas.isna(scalar): - return numpy.datetime64("NaT") + return numpy.datetime64("NaT", "ns") if isinstance(scalar, datetime.time): return pandas.Timestamp( year=1970, @@ -172,7 +172,8 @@ def _box_func(self, x): __return_deltas = {"timedelta", "timedelta64", "timedelta64[ns]", " Date: Mon, 29 Jun 2026 16:06:04 -0400 Subject: [PATCH 2/3] Update packages/db-dtypes/db_dtypes/__init__.py Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- packages/db-dtypes/db_dtypes/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/db-dtypes/db_dtypes/__init__.py b/packages/db-dtypes/db_dtypes/__init__.py index 8a0dc8a9f024..77917fc953b4 100644 --- a/packages/db-dtypes/db_dtypes/__init__.py +++ b/packages/db-dtypes/db_dtypes/__init__.py @@ -176,6 +176,8 @@ def astype(self, dtype, copy=True): deltas = self._ndarray - matched_epoch stype = str(dtype) if stype in self.__return_deltas: + if "ns" in stype and "ns" not in str(deltas.dtype): + return deltas.astype("timedelta64[ns]") return deltas elif stype.startswith("timedelta64[") or stype.startswith(" Date: Mon, 29 Jun 2026 16:06:27 -0400 Subject: [PATCH 3/3] Update packages/db-dtypes/db_dtypes/core.py Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- packages/db-dtypes/db_dtypes/core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/db-dtypes/db_dtypes/core.py b/packages/db-dtypes/db_dtypes/core.py index da3170fc2b71..7f63a474d6e7 100644 --- a/packages/db-dtypes/db_dtypes/core.py +++ b/packages/db-dtypes/db_dtypes/core.py @@ -57,7 +57,7 @@ class BaseDatetimeArray(pandas_backports.OpsMixin, _mixins.NDArrayBackedExtensio def _internal_fill_value(self): ndarray = getattr(self, "_ndarray", None) if ndarray is not None: - unit = cast(Any, numpy.datetime_data(self._ndarray.dtype)[0]) + unit = cast(Any, numpy.datetime_data(ndarray.dtype)[0]) return numpy.datetime64("NaT", unit) return numpy.datetime64("NaT", "ns")