blob: 409916c0a1da61ef2c11819123430cceeb931aa5 [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">
249 <a name="__email__"></a><span class="summary-name">__email__</span> = <code title="'joe@bitworking.org'"><code class="variable-quote">'</code><code class="variable-string">joe@bitworking.org</code><code class="variable-quote">'</code></code>
250 </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">
256 <a name="__credits__"></a><span class="summary-name">__credits__</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code>
257 </td>
258 </tr>
259<tr>
260 <td width="15%" align="right" valign="top" class="summary">
261 <span class="summary-type">&nbsp;</span>
262 </td><td class="summary">
263 <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="None">None</code>
264 </td>
265 </tr>
266</table>
267<!-- ==================== FUNCTION DETAILS ==================== -->
268<a name="section-FunctionDetails"></a>
269<table class="details" border="1" cellpadding="3"
270 cellspacing="0" width="100%" bgcolor="white">
271<tr bgcolor="#70b0f0" class="table-header">
272 <td colspan="2" class="table-header">
273 <table border="0" cellpadding="0" cellspacing="0" width="100%">
274 <tr valign="top">
275 <td align="left"><span class="table-header">Function Details</span></td>
276 <td align="right" valign="top"
277 ><span class="options">[<a href="#section-FunctionDetails"
278 class="privatelink" onclick="toggle_private();"
279 >hide private</a>]</span></td>
280 </tr>
281 </table>
282 </td>
283</tr>
284</table>
285<a name="parse_mime_type"></a>
286<div>
287<table class="details" border="1" cellpadding="3"
288 cellspacing="0" width="100%" bgcolor="white">
289<tr><td>
290 <table width="100%" cellpadding="0" cellspacing="0" border="0">
291 <tr valign="top"><td>
292 <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_mime_type</span>(<span class="sig-arg">mime_type</span>)</span>
293 </h3>
294 </td><td align="right" valign="top"
295 ><span class="codelink"><a href="apiclient.mimeparse-pysrc.html#parse_mime_type">source&nbsp;code</a></span>&nbsp;
296 </td>
297 </tr></table>
298
299 <pre class="literalblock">
300Parses a mime-type into its component parts.
301
302Carves up a mime-type and returns a tuple of the (type, subtype, params)
303where 'params' is a dictionary of all the parameters for the media range.
304For example, the media range 'application/xhtml;q=0.5' would get parsed
305into:
306
307 ('application', 'xhtml', {'q', '0.5'})
308
309
310</pre>
311 <dl class="fields">
312 </dl>
313</td></tr></table>
314</div>
315<a name="parse_media_range"></a>
316<div>
317<table class="details" border="1" cellpadding="3"
318 cellspacing="0" width="100%" bgcolor="white">
319<tr><td>
320 <table width="100%" cellpadding="0" cellspacing="0" border="0">
321 <tr valign="top"><td>
322 <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_media_range</span>(<span class="sig-arg">range</span>)</span>
323 </h3>
324 </td><td align="right" valign="top"
325 ><span class="codelink"><a href="apiclient.mimeparse-pysrc.html#parse_media_range">source&nbsp;code</a></span>&nbsp;
326 </td>
327 </tr></table>
328
329 <pre class="literalblock">
330Parse a media-range into its component parts.
331
332Carves up a media range and returns a tuple of the (type, subtype,
333params) where 'params' is a dictionary of all the parameters for the media
334range. For example, the media range 'application/*;q=0.5' would get parsed
335into:
336
337 ('application', '*', {'q', '0.5'})
338
339In addition this function also guarantees that there is a value for 'q'
340in the params dictionary, filling it in with a proper default if
341necessary.
342
343</pre>
344 <dl class="fields">
345 </dl>
346</td></tr></table>
347</div>
348<a name="fitness_and_quality_parsed"></a>
349<div>
350<table class="details" border="1" cellpadding="3"
351 cellspacing="0" width="100%" bgcolor="white">
352<tr><td>
353 <table width="100%" cellpadding="0" cellspacing="0" border="0">
354 <tr valign="top"><td>
355 <h3 class="epydoc"><span class="sig"><span class="sig-name">fitness_and_quality_parsed</span>(<span class="sig-arg">mime_type</span>,
356 <span class="sig-arg">parsed_ranges</span>)</span>
357 </h3>
358 </td><td align="right" valign="top"
359 ><span class="codelink"><a href="apiclient.mimeparse-pysrc.html#fitness_and_quality_parsed">source&nbsp;code</a></span>&nbsp;
360 </td>
361 </tr></table>
362
363 <pre class="literalblock">
364Find the best match for a mime-type amongst parsed media-ranges.
365
366Find the best match for a given mime-type against a list of media_ranges
367that have already been parsed by parse_media_range(). Returns a tuple of
368the fitness value and the value of the 'q' quality parameter of the best
369match, or (-1, 0) if no match was found. Just as for quality_parsed(),
370'parsed_ranges' must be a list of parsed media ranges.
371
372</pre>
373 <dl class="fields">
374 </dl>
375</td></tr></table>
376</div>
377<a name="quality_parsed"></a>
378<div>
379<table class="details" border="1" cellpadding="3"
380 cellspacing="0" width="100%" bgcolor="white">
381<tr><td>
382 <table width="100%" cellpadding="0" cellspacing="0" border="0">
383 <tr valign="top"><td>
384 <h3 class="epydoc"><span class="sig"><span class="sig-name">quality_parsed</span>(<span class="sig-arg">mime_type</span>,
385 <span class="sig-arg">parsed_ranges</span>)</span>
386 </h3>
387 </td><td align="right" valign="top"
388 ><span class="codelink"><a href="apiclient.mimeparse-pysrc.html#quality_parsed">source&nbsp;code</a></span>&nbsp;
389 </td>
390 </tr></table>
391
392 <pre class="literalblock">
393Find the best match for a mime-type amongst parsed media-ranges.
394
395Find the best match for a given mime-type against a list of media_ranges
396that have already been parsed by parse_media_range(). Returns the 'q'
397quality parameter of the best match, 0 if no match was found. This function
398bahaves the same as quality() except that 'parsed_ranges' must be a list of
399parsed media ranges.
400
401</pre>
402 <dl class="fields">
403 </dl>
404</td></tr></table>
405</div>
406<a name="quality"></a>
407<div>
408<table class="details" border="1" cellpadding="3"
409 cellspacing="0" width="100%" bgcolor="white">
410<tr><td>
411 <table width="100%" cellpadding="0" cellspacing="0" border="0">
412 <tr valign="top"><td>
413 <h3 class="epydoc"><span class="sig"><span class="sig-name">quality</span>(<span class="sig-arg">mime_type</span>,
414 <span class="sig-arg">ranges</span>)</span>
415 </h3>
416 </td><td align="right" valign="top"
417 ><span class="codelink"><a href="apiclient.mimeparse-pysrc.html#quality">source&nbsp;code</a></span>&nbsp;
418 </td>
419 </tr></table>
420
421 <pre class="literalblock">
422Return the quality ('q') of a mime-type against a list of media-ranges.
423
424Returns the quality 'q' of a mime-type when compared against the
425media-ranges in ranges. For example:
426
427&gt;&gt;&gt; quality('text/html','text/*;q=0.3, text/html;q=0.7,
428 text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5')
4290.7
430
431</pre>
432 <dl class="fields">
433 </dl>
434</td></tr></table>
435</div>
436<a name="best_match"></a>
437<div>
438<table class="details" border="1" cellpadding="3"
439 cellspacing="0" width="100%" bgcolor="white">
440<tr><td>
441 <table width="100%" cellpadding="0" cellspacing="0" border="0">
442 <tr valign="top"><td>
443 <h3 class="epydoc"><span class="sig"><span class="sig-name">best_match</span>(<span class="sig-arg">supported</span>,
444 <span class="sig-arg">header</span>)</span>
445 </h3>
446 </td><td align="right" valign="top"
447 ><span class="codelink"><a href="apiclient.mimeparse-pysrc.html#best_match">source&nbsp;code</a></span>&nbsp;
448 </td>
449 </tr></table>
450
451 <pre class="literalblock">
452Return mime-type with the highest quality ('q') from list of candidates.
453
454Takes a list of supported mime-types and finds the best match for all the
455media-ranges listed in header. The value of header must be a string that
456conforms to the format of the HTTP Accept: header. The value of 'supported'
457is a list of mime-types. The list of supported mime-types should be sorted
458in order of increasing desirability, in case of a situation where there is
459a tie.
460
461&gt;&gt;&gt; best_match(['application/xbel+xml', 'text/xml'],
462 'text/*;q=0.5,*/*; q=0.1')
463'text/xml'
464
465</pre>
466 <dl class="fields">
467 </dl>
468</td></tr></table>
469</div>
470<br />
471<!-- ==================== NAVIGATION BAR ==================== -->
472<table class="navbar" border="0" width="100%" cellpadding="0"
473 bgcolor="#a0c0ff" cellspacing="0">
474 <tr valign="middle">
475
476 <!-- Tree link -->
477 <th>&nbsp;&nbsp;&nbsp;<a
478 href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
479
480 <!-- Index link -->
481 <th>&nbsp;&nbsp;&nbsp;<a
482 href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
483
484 <!-- Help link -->
485 <th>&nbsp;&nbsp;&nbsp;<a
486 href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
487
488 <th class="navbar" width="100%"></th>
489 </tr>
490</table>
491<table border="0" cellpadding="0" cellspacing="0" width="100%%">
492 <tr>
493 <td align="left" class="footer">
Joe Gregorio0cd347a2012-08-30 08:22:27 -0400494 Generated by Epydoc 3.0.1 on Thu Aug 30 07:12:42 2012
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400495 </td>
496 <td align="right" class="footer">
497 <a target="mainFrame" href="http://epydoc.sourceforge.net"
498 >http://epydoc.sourceforge.net</a>
499 </td>
500 </tr>
501</table>
502
503<script type="text/javascript">
504 <!--
505 // Private objects are initially displayed (because if
506 // javascript is turned off then we want them to be
507 // visible); but by default, we want to hide them. So hide
508 // them unless we have a cookie that says to show them.
509 checkCookie();
510 // -->
511</script>
512</body>
513</html>