Data does not need to be a Mapping[str, Any] but just object with keys and __getitem__
This make it possible to use some dict-like object, for example asyncpg.Record without typing error.
for example, asyncpg.Record has keys() -> Iterable[str] bot not keys() -> KeysView[str], and we convert keys to set so it also doesn't need keys to return KeysView
Data
does not need to be aMapping[str, Any]
but just object withkeys
and__getitem__
This make it possible to use some dict-like object, for example
asyncpg.Record
without typing error.for example,
asyncpg.Record
haskeys() -> Iterable[str]
bot notkeys() -> KeysView[str]
, and we convert keys to set so it also doesn't need keys to returnKeysView
before: