[New-bugs-announce] [issue28912] collections.abc.OrderedMapping

Joshua Bronson report at bugs.python.org
Thu Dec 8 18:00:34 EST 2016


New submission from Joshua Bronson:

Since code can be clearer than prose, I just sketched this idea out in the attached patch. Please take a look at it as a minimum demonstration of the concept.

Rationale:

The Python standard library provides collections.OrderedDict, along with several ABCs which OrderedDict extends, such as collections.abc.Mapping and (as of 3.6) collections.abc.Reversible, to enable better composability and interoperability.

Currently there is no collections.abc.OrderedMapping ABC, but I wonder if there should be. OrderedMapping could provide a concrete, generic implementation of __eq__, that performed an order-sensitive comparison when passed another OrderedMapping, while performing an order-insensitive comparison when passed an unordered Mapping. Then OrderedDict could derive from OrderedMapping, inheriting its generic __eq__ implementation, rather than implementing its own __eq__ method. Currently, OrderedDict's own __eq__ implementation does ``isinstance(other, OrderedDict)`` to decide whether to perform an order-sensitive comparison, which thwarts interoperability. OrderedMapping could also derive from Reversible, signaling that classes that extend it implement __reversed__.

The interoperability gain here is not just theoretical. Several packages are published on PyPI which would be able to interoperate better if they could all extend a common OrderedMapping interface. Grant Jenks' sortedcontainers.SortedDict[1] and my own bidict.OrderedBidict[2] are two particularly popular examples.

Thanks for your consideration, and look forward to your feedback.

[1] http://www.grantjenks.com/docs/sortedcontainers/sorteddict.html
[2] https://bidict.readthedocs.io/en/dev/other-bidict-types.html#orderedbidict

----------
components: Library (Lib)
files: jab-orderedmapping-1.patch
keywords: patch
messages: 282742
nosy: gvanrossum, jab, rhettinger
priority: normal
severity: normal
status: open
title: collections.abc.OrderedMapping
type: enhancement
Added file: http://bugs.python.org/file45804/jab-orderedmapping-1.patch

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue28912>
_______________________________________


More information about the New-bugs-announce mailing list