blob: a97b71cf05f33eee1af7af6c6d176a59890e8e6e [file] [log] [blame]
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -04001<?xml version="1.0" encoding="ascii"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3 "DTD/xhtml1-transitional.dtd">
4<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5<head>
6 <title>apiclient.mimeparse</title>
7 <link rel="stylesheet" href="epydoc.css" type="text/css" />
8 <script type="text/javascript" src="epydoc.js"></script>
9</head>
10
11<body bgcolor="white" text="black" link="blue" vlink="#204080"
12 alink="#204080">
13<!-- ==================== NAVIGATION BAR ==================== -->
14<table class="navbar" border="0" width="100%" cellpadding="0"
15 bgcolor="#a0c0ff" cellspacing="0">
16 <tr valign="middle">
17
18 <!-- Tree link -->
19 <th>&nbsp;&nbsp;&nbsp;<a
20 href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
21
22 <!-- Index link -->
23 <th>&nbsp;&nbsp;&nbsp;<a
24 href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
25
26 <!-- Help link -->
27 <th>&nbsp;&nbsp;&nbsp;<a
28 href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
29
30 <th class="navbar" width="100%"></th>
31 </tr>
32</table>
33<table width="100%" cellpadding="0" cellspacing="0">
34 <tr valign="top">
35 <td width="100%">
36 <span class="breadcrumbs">
37 <a href="apiclient-module.html">Package&nbsp;apiclient</a> ::
38 Module&nbsp;mimeparse
39 </span>
40 </td>
41 <td>
42 <table cellpadding="0" cellspacing="0">
43 <!-- hide/show private -->
44 <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
45 onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
46 <tr><td align="right"><span class="options"
47 >[<a href="frames.html" target="_top">frames</a
48 >]&nbsp;|&nbsp;<a href="apiclient.mimeparse-module.html"
49 target="_top">no&nbsp;frames</a>]</span></td></tr>
50 </table>
51 </td>
52 </tr>
53</table>
54<!-- ==================== MODULE DESCRIPTION ==================== -->
55<h1 class="epydoc">Module mimeparse</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.mimeparse-pysrc.html">source&nbsp;code</a></span></p>
56<pre class="literalblock">
57MIME-Type Parser
58
59This module provides basic functions for handling mime-types. It can handle
60matching mime-types against a list of media-ranges. See section 14.1 of the
61HTTP specification [RFC 2616] for a complete explanation.
62
63 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
64
65Contents:
66 - parse_mime_type(): Parses a mime-type into its component parts.
67 - parse_media_range(): Media-ranges are mime-types with wild-cards and a 'q'
68 quality parameter.
69 - quality(): Determines the quality ('q') of a mime-type when
70 compared against a list of media-ranges.
71 - quality_parsed(): Just like quality() except the second parameter must be
72 pre-parsed.
73 - best_match(): Choose the mime-type with the highest quality ('q')
74 from a list of candidates.
75
76</pre>
77
78<hr />
79<div class="fields"> <p><strong>Version:</strong>
80 0.1.3
81 </p>
82 <p><strong>Author:</strong>
83 Joe Gregorio
84 </p>
85 <p><strong>License:</strong>
86 MIT License
87 </p>
88</div><!-- ==================== FUNCTIONS ==================== -->
89<a name="section-Functions"></a>
90<table class="summary" border="1" cellpadding="3"
91 cellspacing="0" width="100%" bgcolor="white">
92<tr bgcolor="#70b0f0" class="table-header">
93 <td colspan="2" class="table-header">
94 <table border="0" cellpadding="0" cellspacing="0" width="100%">
95 <tr valign="top">
96 <td align="left"><span class="table-header">Functions</span></td>
97 <td align="right" valign="top"
98 ><span class="options">[<a href="#section-Functions"
99 class="privatelink" onclick="toggle_private();"
100 >hide private</a>]</span></td>
101 </tr>
102 </table>
103 </td>
104</tr>
105<tr>
106 <td width="15%" align="right" valign="top" class="summary">
107 <span class="summary-type">&nbsp;</span>
108 </td><td class="summary">
109 <table width="100%" cellpadding="0" cellspacing="0" border="0">
110 <tr>
111 <td><span class="summary-sig"><a href="apiclient.mimeparse-module.html#parse_mime_type" class="summary-sig-name">parse_mime_type</a>(<span class="summary-sig-arg">mime_type</span>)</span><br />
112 Parses a mime-type into its component parts.</td>
113 <td align="right" valign="top">
114 <span class="codelink"><a href="apiclient.mimeparse-pysrc.html#parse_mime_type">source&nbsp;code</a></span>
115
116 </td>
117 </tr>
118 </table>
119
120 </td>
121 </tr>
122<tr>
123 <td width="15%" align="right" valign="top" class="summary">
124 <span class="summary-type">&nbsp;</span>
125 </td><td class="summary">
126 <table width="100%" cellpadding="0" cellspacing="0" border="0">
127 <tr>
128 <td><span class="summary-sig"><a href="apiclient.mimeparse-module.html#parse_media_range" class="summary-sig-name">parse_media_range</a>(<span class="summary-sig-arg">range</span>)</span><br />
129 Parse a media-range into its component parts.</td>
130 <td align="right" valign="top">
131 <span class="codelink"><a href="apiclient.mimeparse-pysrc.html#parse_media_range">source&nbsp;code</a></span>
132
133 </td>
134 </tr>
135 </table>
136
137 </td>
138 </tr>
139<tr>
140 <td width="15%" align="right" valign="top" class="summary">
141 <span class="summary-type">&nbsp;</span>
142 </td><td class="summary">
143 <table width="100%" cellpadding="0" cellspacing="0" border="0">
144 <tr>
145 <td><span class="summary-sig"><a href="apiclient.mimeparse-module.html#fitness_and_quality_parsed" class="summary-sig-name">fitness_and_quality_parsed</a>(<span class="summary-sig-arg">mime_type</span>,
146 <span class="summary-sig-arg">parsed_ranges</span>)</span><br />
147 Find the best match for a mime-type amongst parsed media-ranges.</td>
148 <td align="right" valign="top">
149 <span class="codelink"><a href="apiclient.mimeparse-pysrc.html#fitness_and_quality_parsed">source&nbsp;code</a></span>
150
151 </td>
152 </tr>
153 </table>
154
155 </td>
156 </tr>
157<tr>
158 <td width="15%" align="right" valign="top" class="summary">
159 <span class="summary-type">&nbsp;</span>
160 </td><td class="summary">
161 <table width="100%" cellpadding="0" cellspacing="0" border="0">
162 <tr>
163 <td><span class="summary-sig"><a href="apiclient.mimeparse-module.html#quality_parsed" class="summary-sig-name">quality_parsed</a>(<span class="summary-sig-arg">mime_type</span>,
164 <span class="summary-sig-arg">parsed_ranges</span>)</span><br />
165 Find the best match for a mime-type amongst parsed media-ranges.</td>
166 <td align="right" valign="top">
167 <span class="codelink"><a href="apiclient.mimeparse-pysrc.html#quality_parsed">source&nbsp;code</a></span>
168
169 </td>
170 </tr>
171 </table>
172
173 </td>
174 </tr>
175<tr>
176 <td width="15%" align="right" valign="top" class="summary">
177 <span class="summary-type">&nbsp;</span>
178 </td><td class="summary">
179 <table width="100%" cellpadding="0" cellspacing="0" border="0">
180 <tr>
181 <td><span class="summary-sig"><a href="apiclient.mimeparse-module.html#quality" class="summary-sig-name">quality</a>(<span class="summary-sig-arg">mime_type</span>,
182 <span class="summary-sig-arg">ranges</span>)</span><br />
183 Return the quality ('q') of a mime-type against a list of media-ranges.</td>
184 <td align="right" valign="top">
185 <span class="codelink"><a href="apiclient.mimeparse-pysrc.html#quality">source&nbsp;code</a></span>
186
187 </td>
188 </tr>
189 </table>
190
191 </td>
192 </tr>
193<tr>
194 <td width="15%" align="right" valign="top" class="summary">
195 <span class="summary-type">&nbsp;</span>
196 </td><td class="summary">
197 <table width="100%" cellpadding="0" cellspacing="0" border="0">
198 <tr>
199 <td><span class="summary-sig"><a href="apiclient.mimeparse-module.html#best_match" class="summary-sig-name">best_match</a>(<span class="summary-sig-arg">supported</span>,
200 <span class="summary-sig-arg">header</span>)</span><br />
201 Return mime-type with the highest quality ('q') from list of candidates.</td>
202 <td align="right" valign="top">
203 <span class="codelink"><a href="apiclient.mimeparse-pysrc.html#best_match">source&nbsp;code</a></span>
204
205 </td>
206 </tr>
207 </table>
208
209 </td>
210 </tr>
211<tr class="private">
212 <td width="15%" align="right" valign="top" class="summary">
213 <span class="summary-type">&nbsp;</span>
214 </td><td class="summary">
215 <table width="100%" cellpadding="0" cellspacing="0" border="0">
216 <tr>
217 <td><span class="summary-sig"><a name="_filter_blank"></a><span class="summary-sig-name">_filter_blank</span>(<span class="summary-sig-arg">i</span>)</span></td>
218 <td align="right" valign="top">
219 <span class="codelink"><a href="apiclient.mimeparse-pysrc.html#_filter_blank">source&nbsp;code</a></span>
220
221 </td>
222 </tr>
223 </table>
224
225 </td>
226 </tr>
227</table>
228<!-- ==================== VARIABLES ==================== -->
229<a name="section-Variables"></a>
230<table class="summary" border="1" cellpadding="3"
231 cellspacing="0" width="100%" bgcolor="white">
232<tr bgcolor="#70b0f0" class="table-header">
233 <td colspan="2" class="table-header">
234 <table border="0" cellpadding="0" cellspacing="0" width="100%">
235 <tr valign="top">
236 <td align="left"><span class="table-header">Variables</span></td>
237 <td align="right" valign="top"
238 ><span class="options">[<a href="#section-Variables"
239 class="privatelink" onclick="toggle_private();"
240 >hide private</a>]</span></td>
241 </tr>
242 </table>
243 </td>
244</tr>
245<tr>
246 <td width="15%" align="right" valign="top" class="summary">
247 <span class="summary-type">&nbsp;</span>
248 </td><td class="summary">
Joe Gregoriof4839b02012-09-06 13:47:24 -0400249 <a name="__email__"></a><span class="summary-name">__email__</span> = <code title="'joe@bitworking.org'">'joe@bitworking.org'</code>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400250 </td>
251 </tr>
252<tr>
253 <td width="15%" align="right" valign="top" class="summary">
254 <span class="summary-type">&nbsp;</span>
255 </td><td class="summary">
Joe Gregoriof4839b02012-09-06 13:47:24 -0400256 <a name="__credits__"></a><span class="summary-name">__credits__</span> = <code title="''">''</code>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400257 </td>
258 </tr>
259</table>
260<!-- ==================== FUNCTION DETAILS ==================== -->
261<a name="section-FunctionDetails"></a>
262<table class="details" border="1" cellpadding="3"
263 cellspacing="0" width="100%" bgcolor="white">
264<tr bgcolor="#70b0f0" class="table-header">
265 <td colspan="2" class="table-header">
266 <table border="0" cellpadding="0" cellspacing="0" width="100%">
267 <tr valign="top">
268 <td align="left"><span class="table-header">Function Details</span></td>
269 <td align="right" valign="top"
270 ><span class="options">[<a href="#section-FunctionDetails"
271 class="privatelink" onclick="toggle_private();"
272 >hide private</a>]</span></td>
273 </tr>
274 </table>
275 </td>
276</tr>
277</table>
278<a name="parse_mime_type"></a>
279<div>
280<table class="details" border="1" cellpadding="3"
281 cellspacing="0" width="100%" bgcolor="white">
282<tr><td>
283 <table width="100%" cellpadding="0" cellspacing="0" border="0">
284 <tr valign="top"><td>
285 <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_mime_type</span>(<span class="sig-arg">mime_type</span>)</span>
286 </h3>
287 </td><td align="right" valign="top"
288 ><span class="codelink"><a href="apiclient.mimeparse-pysrc.html#parse_mime_type">source&nbsp;code</a></span>&nbsp;
289 </td>
290 </tr></table>
291
292 <pre class="literalblock">
293Parses a mime-type into its component parts.
294
295Carves up a mime-type and returns a tuple of the (type, subtype, params)
296where 'params' is a dictionary of all the parameters for the media range.
297For example, the media range 'application/xhtml;q=0.5' would get parsed
298into:
299
300 ('application', 'xhtml', {'q', '0.5'})
301
302
303</pre>
304 <dl class="fields">
305 </dl>
306</td></tr></table>
307</div>
308<a name="parse_media_range"></a>
309<div>
310<table class="details" border="1" cellpadding="3"
311 cellspacing="0" width="100%" bgcolor="white">
312<tr><td>
313 <table width="100%" cellpadding="0" cellspacing="0" border="0">
314 <tr valign="top"><td>
315 <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_media_range</span>(<span class="sig-arg">range</span>)</span>
316 </h3>
317 </td><td align="right" valign="top"
318 ><span class="codelink"><a href="apiclient.mimeparse-pysrc.html#parse_media_range">source&nbsp;code</a></span>&nbsp;
319 </td>
320 </tr></table>
321
322 <pre class="literalblock">
323Parse a media-range into its component parts.
324
325Carves up a media range and returns a tuple of the (type, subtype,
326params) where 'params' is a dictionary of all the parameters for the media
327range. For example, the media range 'application/*;q=0.5' would get parsed
328into:
329
330 ('application', '*', {'q', '0.5'})
331
332In addition this function also guarantees that there is a value for 'q'
333in the params dictionary, filling it in with a proper default if
334necessary.
335
336</pre>
337 <dl class="fields">
338 </dl>
339</td></tr></table>
340</div>
341<a name="fitness_and_quality_parsed"></a>
342<div>
343<table class="details" border="1" cellpadding="3"
344 cellspacing="0" width="100%" bgcolor="white">
345<tr><td>
346 <table width="100%" cellpadding="0" cellspacing="0" border="0">
347 <tr valign="top"><td>
348 <h3 class="epydoc"><span class="sig"><span class="sig-name">fitness_and_quality_parsed</span>(<span class="sig-arg">mime_type</span>,
349 <span class="sig-arg">parsed_ranges</span>)</span>
350 </h3>
351 </td><td align="right" valign="top"
352 ><span class="codelink"><a href="apiclient.mimeparse-pysrc.html#fitness_and_quality_parsed">source&nbsp;code</a></span>&nbsp;
353 </td>
354 </tr></table>
355
356 <pre class="literalblock">
357Find the best match for a mime-type amongst parsed media-ranges.
358
359Find the best match for a given mime-type against a list of media_ranges
360that have already been parsed by parse_media_range(). Returns a tuple of
361the fitness value and the value of the 'q' quality parameter of the best
362match, or (-1, 0) if no match was found. Just as for quality_parsed(),
363'parsed_ranges' must be a list of parsed media ranges.
364
365</pre>
366 <dl class="fields">
367 </dl>
368</td></tr></table>
369</div>
370<a name="quality_parsed"></a>
371<div>
372<table class="details" border="1" cellpadding="3"
373 cellspacing="0" width="100%" bgcolor="white">
374<tr><td>
375 <table width="100%" cellpadding="0" cellspacing="0" border="0">
376 <tr valign="top"><td>
377 <h3 class="epydoc"><span class="sig"><span class="sig-name">quality_parsed</span>(<span class="sig-arg">mime_type</span>,
378 <span class="sig-arg">parsed_ranges</span>)</span>
379 </h3>
380 </td><td align="right" valign="top"
381 ><span class="codelink"><a href="apiclient.mimeparse-pysrc.html#quality_parsed">source&nbsp;code</a></span>&nbsp;
382 </td>
383 </tr></table>
384
385 <pre class="literalblock">
386Find the best match for a mime-type amongst parsed media-ranges.
387
388Find the best match for a given mime-type against a list of media_ranges
389that have already been parsed by parse_media_range(). Returns the 'q'
390quality parameter of the best match, 0 if no match was found. This function
391bahaves the same as quality() except that 'parsed_ranges' must be a list of
392parsed media ranges.
393
394</pre>
395 <dl class="fields">
396 </dl>
397</td></tr></table>
398</div>
399<a name="quality"></a>
400<div>
401<table class="details" border="1" cellpadding="3"
402 cellspacing="0" width="100%" bgcolor="white">
403<tr><td>
404 <table width="100%" cellpadding="0" cellspacing="0" border="0">
405 <tr valign="top"><td>
406 <h3 class="epydoc"><span class="sig"><span class="sig-name">quality</span>(<span class="sig-arg">mime_type</span>,
407 <span class="sig-arg">ranges</span>)</span>
408 </h3>
409 </td><td align="right" valign="top"
410 ><span class="codelink"><a href="apiclient.mimeparse-pysrc.html#quality">source&nbsp;code</a></span>&nbsp;
411 </td>
412 </tr></table>
413
414 <pre class="literalblock">
415Return the quality ('q') of a mime-type against a list of media-ranges.
416
417Returns the quality 'q' of a mime-type when compared against the
418media-ranges in ranges. For example:
419
420&gt;&gt;&gt; quality('text/html','text/*;q=0.3, text/html;q=0.7,
421 text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5')
4220.7
423
424</pre>
425 <dl class="fields">
426 </dl>
427</td></tr></table>
428</div>
429<a name="best_match"></a>
430<div>
431<table class="details" border="1" cellpadding="3"
432 cellspacing="0" width="100%" bgcolor="white">
433<tr><td>
434 <table width="100%" cellpadding="0" cellspacing="0" border="0">
435 <tr valign="top"><td>
436 <h3 class="epydoc"><span class="sig"><span class="sig-name">best_match</span>(<span class="sig-arg">supported</span>,
437 <span class="sig-arg">header</span>)</span>
438 </h3>
439 </td><td align="right" valign="top"
440 ><span class="codelink"><a href="apiclient.mimeparse-pysrc.html#best_match">source&nbsp;code</a></span>&nbsp;
441 </td>
442 </tr></table>
443
444 <pre class="literalblock">
445Return mime-type with the highest quality ('q') from list of candidates.
446
447Takes a list of supported mime-types and finds the best match for all the
448media-ranges listed in header. The value of header must be a string that
449conforms to the format of the HTTP Accept: header. The value of 'supported'
450is a list of mime-types. The list of supported mime-types should be sorted
451in order of increasing desirability, in case of a situation where there is
452a tie.
453
454&gt;&gt;&gt; best_match(['application/xbel+xml', 'text/xml'],
455 'text/*;q=0.5,*/*; q=0.1')
456'text/xml'
457
458</pre>
459 <dl class="fields">
460 </dl>
461</td></tr></table>
462</div>
463<br />
464<!-- ==================== NAVIGATION BAR ==================== -->
465<table class="navbar" border="0" width="100%" cellpadding="0"
466 bgcolor="#a0c0ff" cellspacing="0">
467 <tr valign="middle">
468
469 <!-- Tree link -->
470 <th>&nbsp;&nbsp;&nbsp;<a
471 href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
472
473 <!-- Index link -->
474 <th>&nbsp;&nbsp;&nbsp;<a
475 href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
476
477 <!-- Help link -->
478 <th>&nbsp;&nbsp;&nbsp;<a
479 href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
480
481 <th class="navbar" width="100%"></th>
482 </tr>
483</table>
484<table border="0" cellpadding="0" cellspacing="0" width="100%%">
485 <tr>
486 <td align="left" class="footer">
Joe Gregoriof4839b02012-09-06 13:47:24 -0400487 Generated by Epydoc 3.0.1 on Thu Sep 6 13:36:11 2012
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400488 </td>
489 <td align="right" class="footer">
490 <a target="mainFrame" href="http://epydoc.sourceforge.net"
491 >http://epydoc.sourceforge.net</a>
492 </td>
493 </tr>
494</table>
495
496<script type="text/javascript">
497 <!--
498 // Private objects are initially displayed (because if
499 // javascript is turned off then we want them to be
500 // visible); but by default, we want to hide them. So hide
501 // them unless we have a cookie that says to show them.
502 checkCookie();
503 // -->
504</script>
505</body>
506</html>