diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2023-03-04 20:42:35 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2023-03-04 20:42:35 +0000 |
| commit | 0465ea082c17b95fea2b6c6c9c1bcc7a34ea8f45 (patch) | |
| tree | ad35ce498eef2bf18a0a57765ba507fe3390b111 /lib | |
| parent | 6dd0b182c79b96d74e7bc48d602ee71babe9e16a (diff) | |
| parent | 80b7c608835f1be5418d8ed567664654e8b583e3 (diff) | |
| download | sqlalchemy-0465ea082c17b95fea2b6c6c9c1bcc7a34ea8f45.tar.gz | |
Merge "restore old *args approach for MutableDict.pop()" into main
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sqlalchemy/ext/mutable.py | 65 |
1 files changed, 35 insertions, 30 deletions
diff --git a/lib/sqlalchemy/ext/mutable.py b/lib/sqlalchemy/ext/mutable.py index 07f357bd6..940d62b0a 100644 --- a/lib/sqlalchemy/ext/mutable.py +++ b/lib/sqlalchemy/ext/mutable.py @@ -369,6 +369,7 @@ from typing import Optional from typing import overload from typing import Set from typing import Tuple +from typing import TYPE_CHECKING from typing import TypeVar from typing import Union import weakref @@ -781,27 +782,25 @@ class MutableDict(Mutable, Dict[_KT, _VT]): super().__setitem__(key, value) self.changed() - def _exists(self, value: _T | None) -> TypeGuard[_T]: - return value is not None + if TYPE_CHECKING: - def _is_none(self, value: _T | None) -> TypeGuard[None]: - return value is None + @overload + def setdefault(self, key: _KT) -> _VT | None: + ... - @overload - def setdefault(self, key: _KT) -> _VT | None: - ... + @overload + def setdefault(self, key: _KT, value: _VT) -> _VT: + ... - @overload - def setdefault(self, key: _KT, value: _VT) -> _VT: - ... + def setdefault(self, key: _KT, value: _VT | None = None) -> _VT | None: + ... - def setdefault(self, key: _KT, value: _VT | None = None) -> _VT | None: - if self._exists(value): - result = super().setdefault(key, value) - else: - result = super().setdefault(key) # type: ignore[call-arg] - self.changed() - return result + else: + + def setdefault(self, *arg): # noqa: F811 + result = super().setdefault(*arg) + self.changed() + return result def __delitem__(self, key: _KT) -> None: """Detect dictionary del events and emit change events.""" @@ -812,21 +811,27 @@ class MutableDict(Mutable, Dict[_KT, _VT]): super().update(*a, **kw) self.changed() - @overload - def pop(self, __key: _KT) -> _VT: - ... + if TYPE_CHECKING: - @overload - def pop(self, __key: _KT, __default: _VT | _T) -> _VT | _T: - ... + @overload + def pop(self, __key: _KT) -> _VT: + ... - def pop(self, __key: _KT, __default: _VT | _T | None = None) -> _VT | _T: - if self._exists(__default): - result = super().pop(__key, __default) - else: - result = super().pop(__key) - self.changed() - return result + @overload + def pop(self, __key: _KT, __default: _VT | _T) -> _VT | _T: + ... + + def pop( + self, __key: _KT, __default: _VT | _T | None = None + ) -> _VT | _T: + ... + + else: + + def pop(self, *arg): # noqa: F811 + result = super().pop(*arg) + self.changed() + return result def popitem(self) -> Tuple[_KT, _VT]: result = super().popitem() |
