Michael Smith <mich...@smith-li.com> added the comment:

OK, I appreciate the response. The MappingProxy objects I am working with are 
in a nested data structure, so accessing them to coerce them directly isn't 
feasible. I created 

class MappingProxyEncoder(JSONEncoder):
  def default(self, obj):
    if isinstance(obj, MappingProxyType):
      return obj.copy()
    return JSONEncoder.default(self, obj)

and using that works fine for json.dumps (passes all my tests, at least). But I 
suspect that obj.copy() is more expensive than the code I'm replacing, which is 
a local implementation of ImmutableDict I was trying to do away with, following 
a readthrough of PEP 416. I wonder if there's a cheaper way to get at the 
underlying dictionary.

I suspect I'm not the only python user who foolishly expected MappingProxy to 
be a drop-in replacement for local ImmutableDict implementations. Maybe this 
ticket will be useful for others to read.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue34858>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to