Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bug#1004929: python-orderedmultidict: fix collections import under py3.10

494 views
Skip to first unread message

Andreas Hasenack

unread,
Feb 3, 2022, 2:00:04 PM2/3/22
to
Package: python-orderedmultidict
Version: 1.0-4
Severity: normal

Dear Maintainer,

in python 3.10, "from collections import <thing>" doesn't work anymore
and should be imported from collections.abc.

$ sh debian/tests/unittest

[0/1942]
EE
======================================================================
ERROR: test_itemlist (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: test_itemlist
Traceback (most recent call last):
File "/usr/lib/python3.10/unittest/loader.py", line 154, in loadTestsFromName
module = __import__(module_name)
File "/home/ubuntu/git/packages/python-orderedmultidict/python-orderedmultidict/tests/test_itemlist.py",
line 18, in <module>
from orderedmultidict.itemlist import itemlist
File "/home/ubuntu/git/packages/python-orderedmultidict/python-orderedmultidict/orderedmultidict/__init__.py",
line 14, in <module>
from .orderedmultidict import * # noqa
File "/home/ubuntu/git/packages/python-orderedmultidict/python-orderedmultidict/orderedmultidict/orderedmultidict.py",
line 15, in <module>
from collections import MutableMapping
ImportError: cannot import name 'MutableMapping' from 'collections'
(/usr/lib/python3.10/collections/__init__.py)


======================================================================
ERROR: test_orderedmultidict (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: test_orderedmultidict
Traceback (most recent call last):
File "/usr/lib/python3.10/unittest/loader.py", line 154, in loadTestsFromName
module = __import__(module_name)
File "/home/ubuntu/git/packages/python-orderedmultidict/python-orderedmultidict/tests/test_orderedmultidict.py",
line 20, in <module>
from orderedmultidict.orderedmultidict import omdict
File "/home/ubuntu/git/packages/python-orderedmultidict/python-orderedmultidict/orderedmultidict/__init__.py",
line 14, in <module>
from .orderedmultidict import * # noqa
File "/home/ubuntu/git/packages/python-orderedmultidict/python-orderedmultidict/orderedmultidict/orderedmultidict.py",
line 15, in <module>
from collections import MutableMapping
ImportError: cannot import name 'MutableMapping' from 'collections'
(/usr/lib/python3.10/collections/__init__.py)


----------------------------------------------------------------------
Ran 2 tests in 0.000s


Upstream fixed it in
https://github.com/gruns/orderedmultidict/commit/154e2c52a0368715c22e856f0c135e9770365d4d
which is part of the 1.0.1 release:

From 2a3d04c5bbb28804320d7f457d65ead3bcc07c10 Mon Sep 17 00:00:00 2001
From: Simon Brunning <si...@brunningonline.net>
Date: Sat, 2 Feb 2019 09:13:36 +0000
Subject: [PATCH] Fix #19, warning importing from collections rather than
collections.abc.

---
orderedmultidict/orderedmultidict.py | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/orderedmultidict/orderedmultidict.py
b/orderedmultidict/orderedmultidict.py
index 2d21239..bcb6481 100644
--- a/orderedmultidict/orderedmultidict.py
+++ b/orderedmultidict/orderedmultidict.py
@@ -13,19 +13,23 @@
from __future__ import absolute_import

from itertools import chain
-from collections import MutableMapping

import six
from six.moves import map, zip_longest

from .itemlist import itemlist
+import sys
+
+if six.PY3:
+ from collections.abc import MutableMapping
+else:
+ from collections import MutableMapping

try:
from collections import OrderedDict as odict # Python 2.7 and later.
except ImportError:
from ordereddict import OrderedDict as odict # Python 2.6 and earlier.

-import sys
items_attr = 'items' if sys.version_info[0] >= 3 else 'iteritems'

_absent = object() # Marker that means no parameter was provided.

Andreas Hasenack

unread,
Feb 3, 2022, 2:30:04 PM2/3/22
to
0 new messages