blob: cfc9da8503dc8a07285bcaa3eca464e6d5e359dc [file] [log] [blame]
Joe Gregorioad8013f2012-08-03 08:44:02 -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>oauth2client.util</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="oauth2client-module.html">Package&nbsp;oauth2client</a> ::
38 Module&nbsp;util
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="oauth2client.util-module.html"
49 target="_top">no&nbsp;frames</a>]</span></td></tr>
50 </table>
51 </td>
52 </tr>
53</table>
54<!-- ==================== MODULE DESCRIPTION ==================== -->
Joe Gregorio1b425aa2012-08-24 12:04:34 -040055<h1 class="epydoc">Module util</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.util-pysrc.html">source&nbsp;code</a></span></p>
Joe Gregorioad8013f2012-08-03 08:44:02 -040056<pre class="literalblock">
57Common utility library.
58
59</pre>
60
61<hr />
62<div class="fields"> <dl><dt>Authors:</dt>
63 <dd>
64 rafek@google.com (Rafe Kaplan),
65 guido@google.com (Guido van Rossum)
66 </dd>
67 </dl>
68</div><!-- ==================== FUNCTIONS ==================== -->
69<a name="section-Functions"></a>
70<table class="summary" border="1" cellpadding="3"
71 cellspacing="0" width="100%" bgcolor="white">
72<tr bgcolor="#70b0f0" class="table-header">
73 <td colspan="2" class="table-header">
74 <table border="0" cellpadding="0" cellspacing="0" width="100%">
75 <tr valign="top">
76 <td align="left"><span class="table-header">Functions</span></td>
77 <td align="right" valign="top"
78 ><span class="options">[<a href="#section-Functions"
79 class="privatelink" onclick="toggle_private();"
80 >hide private</a>]</span></td>
81 </tr>
82 </table>
83 </td>
84</tr>
85<tr>
86 <td width="15%" align="right" valign="top" class="summary">
87 <span class="summary-type">&nbsp;</span>
88 </td><td class="summary">
89 <table width="100%" cellpadding="0" cellspacing="0" border="0">
90 <tr>
91 <td><span class="summary-sig"><a href="oauth2client.util-module.html#positional" class="summary-sig-name">positional</a>(<span class="summary-sig-arg">max_positional_args</span>)</span><br />
92 A decorator to declare that only the first N arguments my be positional.</td>
93 <td align="right" valign="top">
Joe Gregorio1b425aa2012-08-24 12:04:34 -040094 <span class="codelink"><a href="oauth2client.util-pysrc.html#positional">source&nbsp;code</a></span>
Joe Gregorioad8013f2012-08-03 08:44:02 -040095
96 </td>
97 </tr>
98 </table>
99
100 </td>
101 </tr>
Joe Gregorio52a5c532013-01-24 16:19:07 -0500102<tr class="private">
103 <td width="15%" align="right" valign="top" class="summary">
104 <span class="summary-type">&nbsp;</span>
105 </td><td class="summary">
106 <table width="100%" cellpadding="0" cellspacing="0" border="0">
107 <tr>
108 <td><span class="summary-sig"><a href="oauth2client.util-module.html#scopes_to_string" class="summary-sig-name" onclick="show_private();">scopes_to_string</a>(<span class="summary-sig-arg">scopes</span>)</span><br />
109 Converts scope value to a string.</td>
110 <td align="right" valign="top">
111 <span class="codelink"><a href="oauth2client.util-pysrc.html#scopes_to_string">source&nbsp;code</a></span>
112
113 </td>
114 </tr>
115 </table>
116
117 </td>
118 </tr>
119<tr class="private">
120 <td width="15%" align="right" valign="top" class="summary">
121 <span class="summary-type">&nbsp;</span>
122 </td><td class="summary">
123 <table width="100%" cellpadding="0" cellspacing="0" border="0">
124 <tr>
125 <td><span class="summary-sig"><a href="oauth2client.util-module.html#dict_to_tuple_key" class="summary-sig-name" onclick="show_private();">dict_to_tuple_key</a>(<span class="summary-sig-arg">dictionary</span>)</span><br />
126 Converts a dictionary to a tuple that can be used as an immutable key.</td>
127 <td align="right" valign="top">
128 <span class="codelink"><a href="oauth2client.util-pysrc.html#dict_to_tuple_key">source&nbsp;code</a></span>
129
130 </td>
131 </tr>
132 </table>
133
134 </td>
135 </tr>
Joe Gregorio41be8e82013-03-07 10:31:47 -0500136<tr class="private">
137 <td width="15%" align="right" valign="top" class="summary">
138 <span class="summary-type">&nbsp;</span>
139 </td><td class="summary">
140 <table width="100%" cellpadding="0" cellspacing="0" border="0">
141 <tr>
142 <td><span class="summary-sig"><a href="oauth2client.util-module.html#_add_query_parameter" class="summary-sig-name" onclick="show_private();">_add_query_parameter</a>(<span class="summary-sig-arg">url</span>,
143 <span class="summary-sig-arg">name</span>,
144 <span class="summary-sig-arg">value</span>)</span><br />
145 Adds a query parameter to a url.</td>
146 <td align="right" valign="top">
147 <span class="codelink"><a href="oauth2client.util-pysrc.html#_add_query_parameter">source&nbsp;code</a></span>
148
149 </td>
150 </tr>
151 </table>
152
153 </td>
154 </tr>
Joe Gregorioad8013f2012-08-03 08:44:02 -0400155</table>
156<!-- ==================== VARIABLES ==================== -->
157<a name="section-Variables"></a>
158<table class="summary" border="1" cellpadding="3"
159 cellspacing="0" width="100%" bgcolor="white">
160<tr bgcolor="#70b0f0" class="table-header">
161 <td colspan="2" class="table-header">
162 <table border="0" cellpadding="0" cellspacing="0" width="100%">
163 <tr valign="top">
164 <td align="left"><span class="table-header">Variables</span></td>
165 <td align="right" valign="top"
166 ><span class="options">[<a href="#section-Variables"
167 class="privatelink" onclick="toggle_private();"
168 >hide private</a>]</span></td>
169 </tr>
170 </table>
171 </td>
172</tr>
173<tr class="private">
174 <td width="15%" align="right" valign="top" class="summary">
175 <span class="summary-type">&nbsp;</span>
176 </td><td class="summary">
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400177 <a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code>
178 </td>
179 </tr>
Joe Gregorio37802c32013-08-06 12:24:05 -0400180<tr>
181 <td width="15%" align="right" valign="top" class="summary">
182 <span class="summary-type">&nbsp;</span>
183 </td><td class="summary">
184 <a name="POSITIONAL_WARNING"></a><span class="summary-name">POSITIONAL_WARNING</span> = <code title="'WARNING'">'WARNING'</code>
185 </td>
186 </tr>
187<tr>
188 <td width="15%" align="right" valign="top" class="summary">
189 <span class="summary-type">&nbsp;</span>
190 </td><td class="summary">
191 <a name="POSITIONAL_EXCEPTION"></a><span class="summary-name">POSITIONAL_EXCEPTION</span> = <code title="'EXCEPTION'">'EXCEPTION'</code>
192 </td>
193 </tr>
194<tr>
195 <td width="15%" align="right" valign="top" class="summary">
196 <span class="summary-type">&nbsp;</span>
197 </td><td class="summary">
198 <a name="POSITIONAL_IGNORE"></a><span class="summary-name">POSITIONAL_IGNORE</span> = <code title="'IGNORE'">'IGNORE'</code>
199 </td>
200 </tr>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400201<tr class="private">
202 <td width="15%" align="right" valign="top" class="summary">
203 <span class="summary-type">&nbsp;</span>
204 </td><td class="summary">
Joe Gregorio37802c32013-08-06 12:24:05 -0400205 <a href="oauth2client.util-module.html#POSITIONAL_SET" class="summary-name" onclick="show_private();">POSITIONAL_SET</a> = <code title="frozenset([POSITIONAL_WARNING, POSITIONAL_EXCEPTION, POSITIONAL_IGNORE\
206])">frozenset([POSITIONAL_WARNING, POSITIONAL_EXC<code class="variable-ellipsis">...</code></code>
207 </td>
208 </tr>
209<tr class="private">
210 <td width="15%" align="right" valign="top" class="summary">
211 <span class="summary-type">&nbsp;</span>
212 </td><td class="summary">
213 <a name="positional_parameters_enforcement"></a><span class="summary-name">positional_parameters_enforcement</span> = <code title="'WARNING'">'WARNING'</code>
Joe Gregorioad8013f2012-08-03 08:44:02 -0400214 </td>
215 </tr>
Joe Gregorioad8013f2012-08-03 08:44:02 -0400216</table>
217<!-- ==================== FUNCTION DETAILS ==================== -->
218<a name="section-FunctionDetails"></a>
219<table class="details" border="1" cellpadding="3"
220 cellspacing="0" width="100%" bgcolor="white">
221<tr bgcolor="#70b0f0" class="table-header">
222 <td colspan="2" class="table-header">
223 <table border="0" cellpadding="0" cellspacing="0" width="100%">
224 <tr valign="top">
225 <td align="left"><span class="table-header">Function Details</span></td>
226 <td align="right" valign="top"
227 ><span class="options">[<a href="#section-FunctionDetails"
228 class="privatelink" onclick="toggle_private();"
229 >hide private</a>]</span></td>
230 </tr>
231 </table>
232 </td>
233</tr>
234</table>
235<a name="positional"></a>
236<div>
237<table class="details" border="1" cellpadding="3"
238 cellspacing="0" width="100%" bgcolor="white">
239<tr><td>
240 <table width="100%" cellpadding="0" cellspacing="0" border="0">
241 <tr valign="top"><td>
242 <h3 class="epydoc"><span class="sig"><span class="sig-name">positional</span>(<span class="sig-arg">max_positional_args</span>)</span>
243 </h3>
244 </td><td align="right" valign="top"
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400245 ><span class="codelink"><a href="oauth2client.util-pysrc.html#positional">source&nbsp;code</a></span>&nbsp;
Joe Gregorioad8013f2012-08-03 08:44:02 -0400246 </td>
247 </tr></table>
248
249 <pre class="literalblock">
250A decorator to declare that only the first N arguments my be positional.
251
252This decorator makes it easy to support Python 3 style key-word only
Joe Gregorio52a5c532013-01-24 16:19:07 -0500253parameters. For example, in Python 3 it is possible to write:
Joe Gregorioad8013f2012-08-03 08:44:02 -0400254
255 def fn(pos1, *, kwonly1=None, kwonly1=None):
256 ...
257
258All named parameters after * must be a keyword:
259
260 fn(10, 'kw1', 'kw2') # Raises exception.
261 fn(10, kwonly1='kw1') # Ok.
262
263Example:
264 To define a function like above, do:
265
266 @positional(1)
267 def fn(pos1, kwonly1=None, kwonly2=None):
268 ...
269
270 If no default value is provided to a keyword argument, it becomes a required
271 keyword argument:
272
273 @positional(0)
274 def fn(required_kw):
275 ...
276
277 This must be called with the keyword parameter:
278
279 fn() # Raises exception.
280 fn(10) # Raises exception.
281 fn(required_kw=10) # Ok.
282
283 When defining instance or class methods always remember to account for
284 'self' and 'cls':
285
286 class MyClass(object):
287
288 @positional(2)
289 def my_method(self, pos1, kwonly1=None):
290 ...
291
292 @classmethod
293 @positional(2)
294 def my_method(cls, pos1, kwonly1=None):
295 ...
296
Joe Gregorio37802c32013-08-06 12:24:05 -0400297The positional decorator behavior is controlled by
298util.positional_parameters_enforcement, which may be set to
299POSITIONAL_EXCEPTION, POSITIONAL_WARNING or POSITIONAL_IGNORE to raise an
300exception, log a warning, or do nothing, respectively, if a declaration is
301violated.
Joe Gregorioad8013f2012-08-03 08:44:02 -0400302
303Args:
Joe Gregorio52a5c532013-01-24 16:19:07 -0500304 max_positional_arguments: Maximum number of positional arguments. All
Joe Gregorioad8013f2012-08-03 08:44:02 -0400305 parameters after the this index must be keyword only.
306
307Returns:
308 A decorator that prevents using arguments after max_positional_args from
309 being used as positional parameters.
310
311Raises:
Joe Gregorio37802c32013-08-06 12:24:05 -0400312 TypeError if a key-word only argument is provided as a positional
313 parameter, but only if util.positional_parameters_enforcement is set to
314 POSITIONAL_EXCEPTION.
Joe Gregorioad8013f2012-08-03 08:44:02 -0400315
316</pre>
317 <dl class="fields">
318 </dl>
319</td></tr></table>
320</div>
Joe Gregorio52a5c532013-01-24 16:19:07 -0500321<a name="scopes_to_string"></a>
322<div class="private">
323<table class="details" border="1" cellpadding="3"
324 cellspacing="0" width="100%" bgcolor="white">
325<tr><td>
326 <table width="100%" cellpadding="0" cellspacing="0" border="0">
327 <tr valign="top"><td>
328 <h3 class="epydoc"><span class="sig"><span class="sig-name">scopes_to_string</span>(<span class="sig-arg">scopes</span>)</span>
329 </h3>
330 </td><td align="right" valign="top"
331 ><span class="codelink"><a href="oauth2client.util-pysrc.html#scopes_to_string">source&nbsp;code</a></span>&nbsp;
332 </td>
333 </tr></table>
334
335 <pre class="literalblock">
336Converts scope value to a string.
337
338If scopes is a string then it is simply passed through. If scopes is an
339iterable then a string is returned that is all the individual scopes
340concatenated with spaces.
341
342Args:
343 scopes: string or iterable of strings, the scopes.
344
345Returns:
346 The scopes formatted as a single string.
347
348</pre>
349 <dl class="fields">
350 </dl>
351</td></tr></table>
352</div>
353<a name="dict_to_tuple_key"></a>
354<div class="private">
355<table class="details" border="1" cellpadding="3"
356 cellspacing="0" width="100%" bgcolor="white">
357<tr><td>
358 <table width="100%" cellpadding="0" cellspacing="0" border="0">
359 <tr valign="top"><td>
360 <h3 class="epydoc"><span class="sig"><span class="sig-name">dict_to_tuple_key</span>(<span class="sig-arg">dictionary</span>)</span>
361 </h3>
362 </td><td align="right" valign="top"
363 ><span class="codelink"><a href="oauth2client.util-pysrc.html#dict_to_tuple_key">source&nbsp;code</a></span>&nbsp;
364 </td>
365 </tr></table>
366
367 <pre class="literalblock">
368Converts a dictionary to a tuple that can be used as an immutable key.
369
370The resulting key is always sorted so that logically equivalent dictionaries
371always produce an identical tuple for a key.
372
373Args:
374 dictionary: the dictionary to use as the key.
375
376Returns:
377 A tuple representing the dictionary in it's naturally sorted ordering.
378
379</pre>
380 <dl class="fields">
381 </dl>
382</td></tr></table>
383</div>
Joe Gregorio41be8e82013-03-07 10:31:47 -0500384<a name="_add_query_parameter"></a>
385<div class="private">
386<table class="details" border="1" cellpadding="3"
387 cellspacing="0" width="100%" bgcolor="white">
388<tr><td>
389 <table width="100%" cellpadding="0" cellspacing="0" border="0">
390 <tr valign="top"><td>
391 <h3 class="epydoc"><span class="sig"><span class="sig-name">_add_query_parameter</span>(<span class="sig-arg">url</span>,
392 <span class="sig-arg">name</span>,
393 <span class="sig-arg">value</span>)</span>
394 </h3>
395 </td><td align="right" valign="top"
396 ><span class="codelink"><a href="oauth2client.util-pysrc.html#_add_query_parameter">source&nbsp;code</a></span>&nbsp;
397 </td>
398 </tr></table>
399
400 <pre class="literalblock">
401Adds a query parameter to a url.
402
403Replaces the current value if it already exists in the URL.
404
405Args:
406 url: string, url to add the query parameter to.
407 name: string, query parameter name.
408 value: string, query parameter value.
409
410Returns:
411 Updated query parameter. Does not update the url if value is None.
412
413</pre>
414 <dl class="fields">
415 </dl>
416</td></tr></table>
417</div>
Joe Gregorioad8013f2012-08-03 08:44:02 -0400418<br />
Joe Gregorio37802c32013-08-06 12:24:05 -0400419<!-- ==================== VARIABLES DETAILS ==================== -->
420<a name="section-VariablesDetails"></a>
421<table class="details" border="1" cellpadding="3"
422 cellspacing="0" width="100%" bgcolor="white">
423<tr bgcolor="#70b0f0" class="table-header">
424 <td colspan="2" class="table-header">
425 <table border="0" cellpadding="0" cellspacing="0" width="100%">
426 <tr valign="top">
427 <td align="left"><span class="table-header">Variables Details</span></td>
428 <td align="right" valign="top"
429 ><span class="options">[<a href="#section-VariablesDetails"
430 class="privatelink" onclick="toggle_private();"
431 >hide private</a>]</span></td>
432 </tr>
433 </table>
434 </td>
435</tr>
436</table>
437<a name="POSITIONAL_SET"></a>
438<div class="private">
439<table class="details" border="1" cellpadding="3"
440 cellspacing="0" width="100%" bgcolor="white">
441<tr><td>
442 <h3 class="epydoc">POSITIONAL_SET</h3>
443
444 <dl class="fields">
445 </dl>
446 <dl class="fields">
447 <dt>Value:</dt>
448 <dd><table><tr><td><pre class="variable">
449frozenset([POSITIONAL_WARNING, POSITIONAL_EXCEPTION, POSITIONAL_IGNORE<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
450])
451</pre></td></tr></table>
452</dd>
453 </dl>
454</td></tr></table>
455</div>
456<br />
Joe Gregorioad8013f2012-08-03 08:44:02 -0400457<!-- ==================== NAVIGATION BAR ==================== -->
458<table class="navbar" border="0" width="100%" cellpadding="0"
459 bgcolor="#a0c0ff" cellspacing="0">
460 <tr valign="middle">
461
462 <!-- Tree link -->
463 <th>&nbsp;&nbsp;&nbsp;<a
464 href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
465
466 <!-- Index link -->
467 <th>&nbsp;&nbsp;&nbsp;<a
468 href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
469
470 <!-- Help link -->
471 <th>&nbsp;&nbsp;&nbsp;<a
472 href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
473
474 <th class="navbar" width="100%"></th>
475 </tr>
476</table>
477<table border="0" cellpadding="0" cellspacing="0" width="100%%">
478 <tr>
479 <td align="left" class="footer">
Joe Gregorio37802c32013-08-06 12:24:05 -0400480 Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
Joe Gregorioad8013f2012-08-03 08:44:02 -0400481 </td>
482 <td align="right" class="footer">
483 <a target="mainFrame" href="http://epydoc.sourceforge.net"
484 >http://epydoc.sourceforge.net</a>
485 </td>
486 </tr>
487</table>
488
489<script type="text/javascript">
490 <!--
491 // Private objects are initially displayed (because if
492 // javascript is turned off then we want them to be
493 // visible); but by default, we want to hide them. So hide
494 // them unless we have a cookie that says to show them.
495 checkCookie();
496 // -->
497</script>
498</body>
499</html>