Generic, converting, dict-to-dict proxy.
| 1693 | |
| 1694 | |
| 1695 | class _AssociationDict(_AssociationCollection[_VT], MutableMapping[_KT, _VT]): |
| 1696 | """Generic, converting, dict-to-dict proxy.""" |
| 1697 | |
| 1698 | setter: _DictSetterProtocol[_VT] |
| 1699 | creator: _KeyCreatorProtocol[_VT] |
| 1700 | col: MutableMapping[_KT, Optional[_VT]] |
| 1701 | |
| 1702 | def _create(self, key: _KT, value: Optional[_VT]) -> Any: |
| 1703 | return self.creator(key, value) |
| 1704 | |
| 1705 | def _get(self, object_: Any) -> _VT: |
| 1706 | return self.getter(object_) |
| 1707 | |
| 1708 | def _set(self, object_: Any, key: _KT, value: _VT) -> None: |
| 1709 | return self.setter(object_, key, value) |
| 1710 | |
| 1711 | def __getitem__(self, key: _KT) -> _VT: |
| 1712 | return self._get(self.col[key]) |
| 1713 | |
| 1714 | def __setitem__(self, key: _KT, value: _VT) -> None: |
| 1715 | if key in self.col: |
| 1716 | self._set(self.col[key], key, value) |
| 1717 | else: |
| 1718 | self.col[key] = self._create(key, value) |
| 1719 | |
| 1720 | def __delitem__(self, key: _KT) -> None: |
| 1721 | del self.col[key] |
| 1722 | |
| 1723 | def __contains__(self, key: object) -> bool: |
| 1724 | return key in self.col |
| 1725 | |
| 1726 | def __iter__(self) -> Iterator[_KT]: |
| 1727 | return iter(self.col.keys()) |
| 1728 | |
| 1729 | def clear(self) -> None: |
| 1730 | self.col.clear() |
| 1731 | |
| 1732 | def __eq__(self, other: object) -> bool: |
| 1733 | return dict(self) == other |
| 1734 | |
| 1735 | def __ne__(self, other: object) -> bool: |
| 1736 | return dict(self) != other |
| 1737 | |
| 1738 | def __repr__(self) -> str: |
| 1739 | return repr(dict(self)) |
| 1740 | |
| 1741 | @overload |
| 1742 | def get(self, __key: _KT, /) -> Optional[_VT]: ... |
| 1743 | |
| 1744 | @overload |
| 1745 | def get( |
| 1746 | self, __key: _KT, /, default: Union[_VT, _T] |
| 1747 | ) -> Union[_VT, _T]: ... |
| 1748 | |
| 1749 | def get( |
| 1750 | self, __key: _KT, /, default: Optional[Union[_VT, _T]] = None |
| 1751 | ) -> Union[_VT, _T, None]: |
| 1752 | try: |