|
29 | 29 | from __future__ import unicode_literals
|
30 | 30 |
|
31 | 31 | from collections import namedtuple
|
32 |
| -from collections import OrderedDict |
33 | 32 | import string
|
34 | 33 |
|
35 | 34 | # Python 2 and 3 support
|
@@ -155,9 +154,11 @@ def normalize_qualifiers(qualifiers, encode=True): # NOQA
|
155 | 154 | """
|
156 | 155 | Return normalized `qualifiers` as a mapping (or as a string if `encode` is
|
157 | 156 | True). The `qualifiers` arg is either a mapping or a string.
|
| 157 | + Always return a mapping if decode is True (and never None). |
| 158 | + Raise ValueError on errors. |
158 | 159 | """
|
159 | 160 | if not qualifiers:
|
160 |
| - return |
| 161 | + return None if encode else {} |
161 | 162 |
|
162 | 163 | if isinstance(qualifiers, basestring):
|
163 | 164 | if not isinstance(qualifiers, unicode):
|
@@ -203,8 +204,9 @@ def normalize_qualifiers(qualifiers, encode=True): # NOQA
|
203 | 204 | qualifiers = sorted(qualifiers.items())
|
204 | 205 | qualifiers = ['{}={}'.format(k, v) for k, v in qualifiers]
|
205 | 206 | qualifiers = '&'.join(qualifiers)
|
206 |
| - |
207 |
| - return qualifiers or None |
| 207 | + return qualifiers or None |
| 208 | + else: |
| 209 | + return qualifiers or {} |
208 | 210 |
|
209 | 211 |
|
210 | 212 | def normalize_subpath(subpath, encode=True): # NOQA
|
@@ -260,7 +262,7 @@ def __new__(self, type=None, namespace=None, name=None, # NOQA
|
260 | 262 | raise ValueError('Invalid purl: {} argument must be a string: {}.'
|
261 | 263 | .format(key, repr(value)))
|
262 | 264 |
|
263 |
| - if qualifiers and not isinstance(qualifiers, (basestring, dict, OrderedDict,)): |
| 265 | + if qualifiers and not isinstance(qualifiers, (basestring, dict,)): |
264 | 266 | raise ValueError('Invalid purl: {} argument must be a dict or a string: {}.'
|
265 | 267 | .format('qualifiers', repr(qualifiers)))
|
266 | 268 |
|
|
0 commit comments