From f14861dac353f662b733c0a90991a47113ffea14 Mon Sep 17 00:00:00 2001 From: Sujit Nirmal Date: Mon, 19 Oct 2026 19:31:19 +0000 Subject: [PATCH 1/2] [google-cloud-ndb] Add set_if_not_exists to global caches --- stubs/google-cloud-ndb/google/cloud/ndb/global_cache.pyi | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/stubs/google-cloud-ndb/google/cloud/ndb/global_cache.pyi b/stubs/google-cloud-ndb/google/cloud/ndb/global_cache.pyi index 976003bf9711..0ea0cab408c4 100644 --- a/stubs/google-cloud-ndb/google/cloud/ndb/global_cache.pyi +++ b/stubs/google-cloud-ndb/google/cloud/ndb/global_cache.pyi @@ -1,5 +1,6 @@ import abc from _typeshed import Incomplete +from collections.abc import Mapping from typing_extensions import Self ConnectionError: Incomplete @@ -14,6 +15,8 @@ class GlobalCache(metaclass=abc.ABCMeta): @abc.abstractmethod def set(self, items, expires=None): ... @abc.abstractmethod + def set_if_not_exists(self, items: Mapping[bytes, bytes | None], expires: float | None = None) -> dict[bytes, bool]: ... + @abc.abstractmethod def delete(self, keys): ... @abc.abstractmethod def watch(self, items): ... @@ -29,6 +32,7 @@ class _InProcessGlobalCache(GlobalCache): def __init__(self) -> None: ... def get(self, keys): ... def set(self, items, expires=None) -> None: ... + def set_if_not_exists(self, items: Mapping[bytes, bytes | None], expires: float | None = None) -> dict[bytes, bool]: ... def delete(self, keys) -> None: ... def watch(self, items) -> None: ... def unwatch(self, keys) -> None: ... @@ -47,6 +51,7 @@ class RedisCache(GlobalCache): def pipes(self): ... def get(self, keys): ... def set(self, items, expires=None) -> None: ... + def set_if_not_exists(self, items: Mapping[bytes, bytes | None], expires: float | None = None) -> dict[bytes, bool]: ... def delete(self, keys) -> None: ... def watch(self, items) -> None: ... def unwatch(self, keys) -> None: ... @@ -70,6 +75,7 @@ class MemcacheCache(GlobalCache): def caskeys(self): ... def get(self, keys): ... def set(self, items, expires=None): ... + def set_if_not_exists(self, items: Mapping[bytes, bytes | None], expires: float | None = None) -> dict[bytes, bool]: ... def delete(self, keys) -> None: ... def watch(self, items) -> None: ... def unwatch(self, keys) -> None: ... From 2b76ba146a40eda4bf741d4ff7a16228830842eb Mon Sep 17 00:00:00 2001 From: Sujit Nirmal Date: Tue, 20 Oct 2026 15:18:59 +0000 Subject: [PATCH 2/2] Use SupportsItems for set_if_not_exists items --- .../google/cloud/ndb/global_cache.pyi | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/stubs/google-cloud-ndb/google/cloud/ndb/global_cache.pyi b/stubs/google-cloud-ndb/google/cloud/ndb/global_cache.pyi index 0ea0cab408c4..4811b9c67c01 100644 --- a/stubs/google-cloud-ndb/google/cloud/ndb/global_cache.pyi +++ b/stubs/google-cloud-ndb/google/cloud/ndb/global_cache.pyi @@ -1,6 +1,5 @@ import abc -from _typeshed import Incomplete -from collections.abc import Mapping +from _typeshed import Incomplete, SupportsItems from typing_extensions import Self ConnectionError: Incomplete @@ -15,7 +14,7 @@ class GlobalCache(metaclass=abc.ABCMeta): @abc.abstractmethod def set(self, items, expires=None): ... @abc.abstractmethod - def set_if_not_exists(self, items: Mapping[bytes, bytes | None], expires: float | None = None) -> dict[bytes, bool]: ... + def set_if_not_exists(self, items: SupportsItems[bytes, bytes | None], expires: float | None = None) -> dict[bytes, bool]: ... @abc.abstractmethod def delete(self, keys): ... @abc.abstractmethod @@ -32,7 +31,7 @@ class _InProcessGlobalCache(GlobalCache): def __init__(self) -> None: ... def get(self, keys): ... def set(self, items, expires=None) -> None: ... - def set_if_not_exists(self, items: Mapping[bytes, bytes | None], expires: float | None = None) -> dict[bytes, bool]: ... + def set_if_not_exists(self, items: SupportsItems[bytes, bytes | None], expires: float | None = None) -> dict[bytes, bool]: ... def delete(self, keys) -> None: ... def watch(self, items) -> None: ... def unwatch(self, keys) -> None: ... @@ -51,7 +50,7 @@ class RedisCache(GlobalCache): def pipes(self): ... def get(self, keys): ... def set(self, items, expires=None) -> None: ... - def set_if_not_exists(self, items: Mapping[bytes, bytes | None], expires: float | None = None) -> dict[bytes, bool]: ... + def set_if_not_exists(self, items: SupportsItems[bytes, bytes | None], expires: float | None = None) -> dict[bytes, bool]: ... def delete(self, keys) -> None: ... def watch(self, items) -> None: ... def unwatch(self, keys) -> None: ... @@ -75,7 +74,7 @@ class MemcacheCache(GlobalCache): def caskeys(self): ... def get(self, keys): ... def set(self, items, expires=None): ... - def set_if_not_exists(self, items: Mapping[bytes, bytes | None], expires: float | None = None) -> dict[bytes, bool]: ... + def set_if_not_exists(self, items: SupportsItems[bytes, bytes | None], expires: float | None = None) -> dict[bytes, bool]: ... def delete(self, keys) -> None: ... def watch(self, items) -> None: ... def unwatch(self, keys) -> None: ...