blob: 0a821caa9a166dfc97ed728a2cd425d2df734011 [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>oauth2client.appengine</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;appengine
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.appengine-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 appengine</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html">source&nbsp;code</a></span></p>
56<pre class="literalblock">
57Utilities for Google App Engine
58
59Utilities for making it easier to use OAuth 2.0 on Google App Engine.
60
61</pre>
62
63<hr />
64<div class="fields"> <p><strong>Author:</strong>
65 jcgregorio@google.com (Joe Gregorio)
66 </p>
67</div><!-- ==================== CLASSES ==================== -->
68<a name="section-Classes"></a>
69<table class="summary" border="1" cellpadding="3"
70 cellspacing="0" width="100%" bgcolor="white">
71<tr bgcolor="#70b0f0" class="table-header">
72 <td colspan="2" class="table-header">
73 <table border="0" cellpadding="0" cellspacing="0" width="100%">
74 <tr valign="top">
75 <td align="left"><span class="table-header">Classes</span></td>
76 <td align="right" valign="top"
77 ><span class="options">[<a href="#section-Classes"
78 class="privatelink" onclick="toggle_private();"
79 >hide private</a>]</span></td>
80 </tr>
81 </table>
82 </td>
83</tr>
84<tr>
85 <td width="15%" align="right" valign="top" class="summary">
86 <span class="summary-type">&nbsp;</span>
87 </td><td class="summary">
88 <a href="oauth2client.appengine.InvalidClientSecretsError-class.html" class="summary-name">InvalidClientSecretsError</a><br />
89 The client_secrets.json file is malformed or missing required fields.
90 </td>
91 </tr>
92<tr>
93 <td width="15%" align="right" valign="top" class="summary">
94 <span class="summary-type">&nbsp;</span>
95 </td><td class="summary">
Joe Gregorio1b425aa2012-08-24 12:04:34 -040096 <a href="oauth2client.appengine.InvalidXsrfTokenError-class.html" class="summary-name">InvalidXsrfTokenError</a><br />
97 The XSRF token is invalid or expired.
98 </td>
99 </tr>
100<tr>
101 <td width="15%" align="right" valign="top" class="summary">
102 <span class="summary-type">&nbsp;</span>
103 </td><td class="summary">
104 <a href="oauth2client.appengine.SiteXsrfSecretKey-class.html" class="summary-name">SiteXsrfSecretKey</a><br />
105 Storage for the sites XSRF secret key.
106 </td>
107 </tr>
108<tr>
109 <td width="15%" align="right" valign="top" class="summary">
110 <span class="summary-type">&nbsp;</span>
111 </td><td class="summary">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400112 <a href="oauth2client.appengine.AppAssertionCredentials-class.html" class="summary-name">AppAssertionCredentials</a><br />
113 Credentials object for App Engine Assertion Grants
114 </td>
115 </tr>
116<tr>
117 <td width="15%" align="right" valign="top" class="summary">
118 <span class="summary-type">&nbsp;</span>
119 </td><td class="summary">
120 <a href="oauth2client.appengine.FlowProperty-class.html" class="summary-name">FlowProperty</a><br />
121 App Engine datastore Property for Flow.
122 </td>
123 </tr>
124<tr>
125 <td width="15%" align="right" valign="top" class="summary">
126 <span class="summary-type">&nbsp;</span>
127 </td><td class="summary">
128 <a href="oauth2client.appengine.CredentialsProperty-class.html" class="summary-name">CredentialsProperty</a><br />
129 App Engine datastore Property for Credentials.
130 </td>
131 </tr>
132<tr>
133 <td width="15%" align="right" valign="top" class="summary">
134 <span class="summary-type">&nbsp;</span>
135 </td><td class="summary">
136 <a href="oauth2client.appengine.StorageByKeyName-class.html" class="summary-name">StorageByKeyName</a><br />
137 Store and retrieve a single credential to and from
138the App Engine datastore.
139 </td>
140 </tr>
141<tr>
142 <td width="15%" align="right" valign="top" class="summary">
143 <span class="summary-type">&nbsp;</span>
144 </td><td class="summary">
145 <a href="oauth2client.appengine.CredentialsModel-class.html" class="summary-name">CredentialsModel</a><br />
146 Storage for OAuth 2.0 Credentials
147 </td>
148 </tr>
149<tr>
150 <td width="15%" align="right" valign="top" class="summary">
151 <span class="summary-type">&nbsp;</span>
152 </td><td class="summary">
153 <a href="oauth2client.appengine.OAuth2Decorator-class.html" class="summary-name">OAuth2Decorator</a><br />
154 Utility for making OAuth 2.0 easier.
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 <a href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html" class="summary-name">OAuth2DecoratorFromClientSecrets</a><br />
162 An OAuth2Decorator that builds from a clientsecrets file.
163 </td>
164 </tr>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400165</table>
166<!-- ==================== FUNCTIONS ==================== -->
167<a name="section-Functions"></a>
168<table class="summary" border="1" cellpadding="3"
169 cellspacing="0" width="100%" bgcolor="white">
170<tr bgcolor="#70b0f0" class="table-header">
171 <td colspan="2" class="table-header">
172 <table border="0" cellpadding="0" cellspacing="0" width="100%">
173 <tr valign="top">
174 <td align="left"><span class="table-header">Functions</span></td>
175 <td align="right" valign="top"
176 ><span class="options">[<a href="#section-Functions"
177 class="privatelink" onclick="toggle_private();"
178 >hide private</a>]</span></td>
179 </tr>
180 </table>
181 </td>
182</tr>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400183<tr class="private">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400184 <td width="15%" align="right" valign="top" class="summary">
185 <span class="summary-type">&nbsp;</span>
186 </td><td class="summary">
187 <table width="100%" cellpadding="0" cellspacing="0" border="0">
188 <tr>
Joe Gregorio0cd347a2012-08-30 08:22:27 -0400189 <td><span class="summary-sig"><a href="oauth2client.appengine-module.html#_safe_html" class="summary-sig-name" onclick="show_private();">_safe_html</a>(<span class="summary-sig-arg">s</span>)</span><br />
190 Escape text to make it safe to display.</td>
191 <td align="right" valign="top">
192 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#_safe_html">source&nbsp;code</a></span>
193
194 </td>
195 </tr>
196 </table>
197
198 </td>
199 </tr>
200<tr class="private">
201 <td width="15%" align="right" valign="top" class="summary">
202 <span class="summary-type">&nbsp;</span>
203 </td><td class="summary">
204 <table width="100%" cellpadding="0" cellspacing="0" border="0">
205 <tr>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400206 <td><span class="summary-sig"><a name="_generate_new_xsrf_secret_key"></a><span class="summary-sig-name">_generate_new_xsrf_secret_key</span>()</span><br />
207 Returns a random XSRF secret key.</td>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400208 <td align="right" valign="top">
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400209 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#_generate_new_xsrf_secret_key">source&nbsp;code</a></span>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400210
211 </td>
212 </tr>
213 </table>
214
215 </td>
216 </tr>
217<tr>
218 <td width="15%" align="right" valign="top" class="summary">
219 <span class="summary-type">&nbsp;</span>
220 </td><td class="summary">
221 <table width="100%" cellpadding="0" cellspacing="0" border="0">
222 <tr>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400223 <td><span class="summary-sig"><a href="oauth2client.appengine-module.html#xsrf_secret_key" class="summary-sig-name">xsrf_secret_key</a>()</span><br />
224 Return the secret key for use for XSRF protection.</td>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400225 <td align="right" valign="top">
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400226 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#xsrf_secret_key">source&nbsp;code</a></span>
227
228 </td>
229 </tr>
230 </table>
231
232 </td>
233 </tr>
234<tr class="private">
235 <td width="15%" align="right" valign="top" class="summary">
236 <span class="summary-type">&nbsp;</span>
237 </td><td class="summary">
238 <table width="100%" cellpadding="0" cellspacing="0" border="0">
239 <tr>
240 <td><span class="summary-sig"><a href="oauth2client.appengine-module.html#_build_state_value" class="summary-sig-name" onclick="show_private();">_build_state_value</a>(<span class="summary-sig-arg">request_handler</span>,
241 <span class="summary-sig-arg">user</span>)</span><br />
242 Composes the value for the 'state' parameter.</td>
243 <td align="right" valign="top">
244 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#_build_state_value">source&nbsp;code</a></span>
245
246 </td>
247 </tr>
248 </table>
249
250 </td>
251 </tr>
252<tr class="private">
253 <td width="15%" align="right" valign="top" class="summary">
254 <span class="summary-type">&nbsp;</span>
255 </td><td class="summary">
256 <table width="100%" cellpadding="0" cellspacing="0" border="0">
257 <tr>
258 <td><span class="summary-sig"><a href="oauth2client.appengine-module.html#_parse_state_value" class="summary-sig-name" onclick="show_private();">_parse_state_value</a>(<span class="summary-sig-arg">state</span>,
259 <span class="summary-sig-arg">user</span>)</span><br />
260 Parse the value of the 'state' parameter.</td>
261 <td align="right" valign="top">
262 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#_parse_state_value">source&nbsp;code</a></span>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400263
264 </td>
265 </tr>
266 </table>
267
268 </td>
269 </tr>
Joe Gregoriof4839b02012-09-06 13:47:24 -0400270<tr>
271 <td width="15%" align="right" valign="top" class="summary">
272 <span class="summary-type">&nbsp;</span>
273 </td><td class="summary">
274 <table width="100%" cellpadding="0" cellspacing="0" border="0">
275 <tr>
276 <td><span class="summary-sig"><a href="oauth2client.appengine-module.html#oauth2decorator_from_clientsecrets" class="summary-sig-name">oauth2decorator_from_clientsecrets</a>(<span class="summary-sig-arg">filename</span>,
277 <span class="summary-sig-arg">scope</span>,
278 <span class="summary-sig-arg">message</span>=<span class="summary-sig-default">None</span>,
279 <span class="summary-sig-arg">cache</span>=<span class="summary-sig-default">None</span>)</span><br />
280 Creates an OAuth2Decorator populated from a clientsecrets file.</td>
281 <td align="right" valign="top">
282 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#oauth2decorator_from_clientsecrets">source&nbsp;code</a></span>
283
284 </td>
285 </tr>
286 </table>
287
288 </td>
289 </tr>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400290</table>
291<!-- ==================== VARIABLES ==================== -->
292<a name="section-Variables"></a>
293<table class="summary" border="1" cellpadding="3"
294 cellspacing="0" width="100%" bgcolor="white">
295<tr bgcolor="#70b0f0" class="table-header">
296 <td colspan="2" class="table-header">
297 <table border="0" cellpadding="0" cellspacing="0" width="100%">
298 <tr valign="top">
299 <td align="left"><span class="table-header">Variables</span></td>
300 <td align="right" valign="top"
301 ><span class="options">[<a href="#section-Variables"
302 class="privatelink" onclick="toggle_private();"
303 >hide private</a>]</span></td>
304 </tr>
305 </table>
306 </td>
307</tr>
308<tr>
309 <td width="15%" align="right" valign="top" class="summary">
310 <span class="summary-type">&nbsp;</span>
311 </td><td class="summary">
Joe Gregorioe7a0c472012-07-12 11:46:04 -0400312 <a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code>
313 </td>
314 </tr>
315<tr>
316 <td width="15%" align="right" valign="top" class="summary">
317 <span class="summary-type">&nbsp;</span>
318 </td><td class="summary">
Joe Gregoriof4839b02012-09-06 13:47:24 -0400319 <a name="OAUTH2CLIENT_NAMESPACE"></a><span class="summary-name">OAUTH2CLIENT_NAMESPACE</span> = <code title="'oauth2client#ns'">'oauth2client#ns'</code>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400320 </td>
321 </tr>
322<tr>
323 <td width="15%" align="right" valign="top" class="summary">
324 <span class="summary-type">&nbsp;</span>
325 </td><td class="summary">
Joe Gregoriof4839b02012-09-06 13:47:24 -0400326 <a name="XSRF_MEMCACHE_ID"></a><span class="summary-name">XSRF_MEMCACHE_ID</span> = <code title="'xsrf_secret_key'">'xsrf_secret_key'</code>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400327 </td>
328 </tr>
329</table>
330<!-- ==================== FUNCTION DETAILS ==================== -->
331<a name="section-FunctionDetails"></a>
332<table class="details" border="1" cellpadding="3"
333 cellspacing="0" width="100%" bgcolor="white">
334<tr bgcolor="#70b0f0" class="table-header">
335 <td colspan="2" class="table-header">
336 <table border="0" cellpadding="0" cellspacing="0" width="100%">
337 <tr valign="top">
338 <td align="left"><span class="table-header">Function Details</span></td>
339 <td align="right" valign="top"
340 ><span class="options">[<a href="#section-FunctionDetails"
341 class="privatelink" onclick="toggle_private();"
342 >hide private</a>]</span></td>
343 </tr>
344 </table>
345 </td>
346</tr>
347</table>
Joe Gregorio0cd347a2012-08-30 08:22:27 -0400348<a name="_safe_html"></a>
349<div class="private">
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">_safe_html</span>(<span class="sig-arg">s</span>)</span>
356 </h3>
357 </td><td align="right" valign="top"
358 ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#_safe_html">source&nbsp;code</a></span>&nbsp;
359 </td>
360 </tr></table>
361
362 <pre class="literalblock">
363Escape text to make it safe to display.
364
365Args:
366 s: string, The text to escape.
367
368Returns:
369 The escaped text as a string.
370
371</pre>
372 <dl class="fields">
373 </dl>
374</td></tr></table>
375</div>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400376<a name="xsrf_secret_key"></a>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400377<div>
378<table class="details" border="1" cellpadding="3"
379 cellspacing="0" width="100%" bgcolor="white">
380<tr><td>
381 <table width="100%" cellpadding="0" cellspacing="0" border="0">
382 <tr valign="top"><td>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400383 <h3 class="epydoc"><span class="sig"><span class="sig-name">xsrf_secret_key</span>()</span>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400384 </h3>
385 </td><td align="right" valign="top"
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400386 ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#xsrf_secret_key">source&nbsp;code</a></span>&nbsp;
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400387 </td>
388 </tr></table>
389
390 <pre class="literalblock">
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400391Return the secret key for use for XSRF protection.
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400392
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400393If the Site entity does not have a secret key, this method will also create
394one and persist it.
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400395
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400396Returns:
397 The secret key.
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400398
399</pre>
400 <dl class="fields">
401 </dl>
402</td></tr></table>
403</div>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400404<a name="_build_state_value"></a>
405<div class="private">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400406<table class="details" border="1" cellpadding="3"
407 cellspacing="0" width="100%" bgcolor="white">
408<tr><td>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400409 <table width="100%" cellpadding="0" cellspacing="0" border="0">
410 <tr valign="top"><td>
411 <h3 class="epydoc"><span class="sig"><span class="sig-name">_build_state_value</span>(<span class="sig-arg">request_handler</span>,
412 <span class="sig-arg">user</span>)</span>
413 </h3>
414 </td><td align="right" valign="top"
415 ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#_build_state_value">source&nbsp;code</a></span>&nbsp;
416 </td>
417 </tr></table>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400418
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400419 <pre class="literalblock">
420Composes the value for the 'state' parameter.
421
422Packs the current request URI and an XSRF token into an opaque string that
423can be passed to the authentication server via the 'state' parameter.
424
425Args:
426 request_handler: webapp.RequestHandler, The request.
427 user: google.appengine.api.users.User, The current user.
428
429Returns:
430 The state value as a string.
431
432</pre>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400433 <dl class="fields">
434 </dl>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400435</td></tr></table>
436</div>
437<a name="_parse_state_value"></a>
438<div class="private">
439<table class="details" border="1" cellpadding="3"
440 cellspacing="0" width="100%" bgcolor="white">
441<tr><td>
442 <table width="100%" cellpadding="0" cellspacing="0" border="0">
443 <tr valign="top"><td>
444 <h3 class="epydoc"><span class="sig"><span class="sig-name">_parse_state_value</span>(<span class="sig-arg">state</span>,
445 <span class="sig-arg">user</span>)</span>
446 </h3>
447 </td><td align="right" valign="top"
448 ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#_parse_state_value">source&nbsp;code</a></span>&nbsp;
449 </td>
450 </tr></table>
451
452 <pre class="literalblock">
453Parse the value of the 'state' parameter.
454
455Parses the value and validates the XSRF token in the state parameter.
456
457Args:
458 state: string, The value of the state parameter.
459 user: google.appengine.api.users.User, The current user.
460
461Raises:
462 InvalidXsrfTokenError: if the XSRF token is invalid.
463
464Returns:
465 The redirect URI.
466
467</pre>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400468 <dl class="fields">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400469 </dl>
470</td></tr></table>
471</div>
Joe Gregoriof4839b02012-09-06 13:47:24 -0400472<a name="oauth2decorator_from_clientsecrets"></a>
473<div>
474<table class="details" border="1" cellpadding="3"
475 cellspacing="0" width="100%" bgcolor="white">
476<tr><td>
477 <table width="100%" cellpadding="0" cellspacing="0" border="0">
478 <tr valign="top"><td>
479 <h3 class="epydoc"><span class="sig"><span class="sig-name">oauth2decorator_from_clientsecrets</span>(<span class="sig-arg">filename</span>,
480 <span class="sig-arg">scope</span>,
481 <span class="sig-arg">message</span>=<span class="sig-default">None</span>,
482 <span class="sig-arg">cache</span>=<span class="sig-default">None</span>)</span>
483 </h3>
484 </td><td align="right" valign="top"
485 ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#oauth2decorator_from_clientsecrets">source&nbsp;code</a></span>&nbsp;
486 </td>
487 </tr></table>
488
489 <pre class="literalblock">
490Creates an OAuth2Decorator populated from a clientsecrets file.
491
492Args:
493 filename: string, File name of client secrets.
494 scope: string or list of strings, scope(s) of the credentials being
495 requested.
496 message: string, A friendly string to display to the user if the
497 clientsecrets file is missing or invalid. The message may contain HTML and
498 will be presented on the web interface for any method that uses the
499 decorator.
500 cache: An optional cache service client that implements get() and set()
501 methods. See clientsecrets.loadfile() for details.
502
503Returns: An OAuth2Decorator
504
505</pre>
506 <dl class="fields">
507 <dt>Decorators:</dt>
508 <dd><ul class="nomargin-top">
509 <li><code>@util.positional(2)</code></li>
510 </ul></dd>
511 </dl>
512</td></tr></table>
513</div>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400514<br />
515<!-- ==================== NAVIGATION BAR ==================== -->
516<table class="navbar" border="0" width="100%" cellpadding="0"
517 bgcolor="#a0c0ff" cellspacing="0">
518 <tr valign="middle">
519
520 <!-- Tree link -->
521 <th>&nbsp;&nbsp;&nbsp;<a
522 href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
523
524 <!-- Index link -->
525 <th>&nbsp;&nbsp;&nbsp;<a
526 href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
527
528 <!-- Help link -->
529 <th>&nbsp;&nbsp;&nbsp;<a
530 href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
531
532 <th class="navbar" width="100%"></th>
533 </tr>
534</table>
535<table border="0" cellpadding="0" cellspacing="0" width="100%%">
536 <tr>
537 <td align="left" class="footer">
Joe Gregorio7578da52012-11-01 14:20:00 -0400538 Generated by Epydoc 3.0.1 on Tue Oct 30 14:36:16 2012
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400539 </td>
540 <td align="right" class="footer">
541 <a target="mainFrame" href="http://epydoc.sourceforge.net"
542 >http://epydoc.sourceforge.net</a>
543 </td>
544 </tr>
545</table>
546
547<script type="text/javascript">
548 <!--
549 // Private objects are initially displayed (because if
550 // javascript is turned off then we want them to be
551 // visible); but by default, we want to hide them. So hide
552 // them unless we have a cookie that says to show them.
553 checkCookie();
554 // -->
555</script>
556</body>
557</html>