[issue44580] pprint does not work for typing.Mapping

2021-07-07 Thread Hayden Clark


Change by Hayden Clark :


--
components: Library (Lib)
nosy: hclark
priority: normal
severity: normal
status: open
title: pprint does not work for typing.Mapping
type: behavior
versions: Python 3.8

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue44580] pprint does not work for typing.Mapping

2021-07-07 Thread Hayden Clark


New submission from Hayden Clark :

If you make a user-defined type that inherits from typing.Mapping (which is an 
alias for collections.abc.Mapping), pprint does not dump the contents, it just 
treats it as an unknown class.
Examining the code, it is explicitly checking for "dict" type, even though it 
is only reading the data.

Here is a reproduction:
from typing import Mapping
from pprint import pprint


class MyMap(Mapping):
def __init__(self, **kwargs) -> None:
self.data = {
k:v for k, v in kwargs.items()
}

def __getitem__(self, k):
return self.data.get(k)

def __len__(self):
return self.data.__len__()

def __iter__(self):
return self.data.__iter__()


info = MyMap(
foo="bar",
baz=MyMap(bar="foo")
)

pprint(info)

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com