Skip to content

Commit 3cb332e

Browse files
committed
Merge pull request #16 from scop/q
q value handling improvements
2 parents c1e94e2 + 64a64e3 commit 3cb332e

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

mimeparse.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,11 @@ def parse_media_range(range):
7272
necessary.
7373
"""
7474
(type, subtype, params) = parse_mime_type(range)
75-
if 'q' not in params or not params['q'] or \
76-
float(params['q']) > 1 or float(params['q']) < 0:
75+
params.setdefault('q', params.pop('Q', None)) # q is case insensitive
76+
try:
77+
if not params['q'] or not 0 <= float(params['q']) <= 1:
78+
params['q'] = '1'
79+
except ValueError: # from float()
7780
params['q'] = '1'
7881

7982
return (type, subtype, params)

testdata.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44
["application/xml", ["application", "xml", {"q": "1"}]],
55
["application/xml;q=",["application", "xml", {"q": "1"}]],
66
["application/xml ;q=",["application", "xml", {"q": "1"}]],
7+
["application/xml ;q=-1",["application", "xml", {"q": "1"}]],
78
["application/xml ; q=1;b=other",["application", "xml", {"q": "1", "b":"other"}]],
89
["application/xml ; q=2;b=other",["application", "xml", {"q": "1", "b":"other"}]],
910
["application/xml ; q=0",["application", "xml", {"q": "0"}]],
11+
["application/xml ; q=foo", ["application", "xml", {"q": "1"}]],
12+
["application/xml ; Q=0.6", ["application", "xml", {"q": "0.6"}]],
1013
[" *; q=.2",["*", "*", {"q": ".2"}]]
1114
],
1215

0 commit comments

Comments
 (0)