Add epydoc generated docs. Reviewed in http://codereview.appspot.com/6305043/
diff --git a/docs/epy/class-tree.html b/docs/epy/class-tree.html
new file mode 100644
index 0000000..cdb16ae
--- /dev/null
+++ b/docs/epy/class-tree.html
@@ -0,0 +1,412 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Class Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="class-tree.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Class Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink">SocketServer.BaseRequestHandler</strong>:
+      <em class="summary">Base class for request handler classes.</em>
+    <ul>
+    <li> <strong class="uidlink">SocketServer.StreamRequestHandler</strong>:
+      <em class="summary">Define self.rfile and self.wfile for stream sockets.</em>
+    <ul>
+    <li> <strong class="uidlink">BaseHTTPServer.BaseHTTPRequestHandler</strong>:
+      <em class="summary">HTTP request handler base class.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.tools.ClientRedirectHandler-class.html" onclick="show_private();">oauth2client.tools.ClientRedirectHandler</a></strong>:
+      <em class="summary">A handler for OAuth 2.0 redirects back to localhost.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">SocketServer.BaseServer</strong>:
+      <em class="summary">Base class for server classes.</em>
+    <ul>
+    <li> <strong class="uidlink">SocketServer.TCPServer</strong>:
+      <em class="summary">Base class for various socket-based server classes.</em>
+    <ul>
+    <li> <strong class="uidlink">BaseHTTPServer.HTTPServer</strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.tools.ClientRedirectServer-class.html" onclick="show_private();">oauth2client.tools.ClientRedirectServer</a></strong>:
+      <em class="summary">A server to handle OAuth 2.0 redirects back to localhost.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">rfc822.Message</strong>:
+      <em class="summary">Represents a single RFC 2822-compliant message.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="mimetools.Message-class.html">mimetools.Message</a></strong>:
+      <em class="summary">A derived class of rfc822.Message that knows about MIME headers and
+contains some hooks for decoding encoded and multipart messages.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">object</strong>:
+      <em class="summary">The most base type</em>
+    <ul>
+    <li> <strong class="uidlink">exceptions.BaseException</strong>:
+      <em class="summary">Common base class for all exceptions</em>
+    <ul>
+    <li> <strong class="uidlink">exceptions.Exception</strong>:
+      <em class="summary">Common base class for all non-exit exceptions.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.crypt.AppIdentityError-class.html">oauth2client.crypt.AppIdentityError</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.client.Error-class.html">oauth2client.client.Error</a></strong>:
+      <em class="summary">Base error for this module.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.client.AccessTokenCredentialsError-class.html">oauth2client.client.AccessTokenCredentialsError</a></strong>:
+      <em class="summary">Having only the access_token means no refresh is possible.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.client.AccessTokenRefreshError-class.html">oauth2client.client.AccessTokenRefreshError</a></strong>:
+      <em class="summary">Error trying to refresh an expired access token.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.client.FlowExchangeError-class.html">oauth2client.client.FlowExchangeError</a></strong>:
+      <em class="summary">Error trying to exchange an authorization grant for an access token.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.client.UnknownClientSecretsFlowError-class.html">oauth2client.client.UnknownClientSecretsFlowError</a></strong>:
+      <em class="summary">The client secrets file called for an unknown type of OAuth 2.0 flow.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.client.VerifyJwtTokenError-class.html">oauth2client.client.VerifyJwtTokenError</a></strong>:
+      <em class="summary">Could on retrieve certificates for validation.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.clientsecrets.Error-class.html">oauth2client.clientsecrets.Error</a></strong>:
+      <em class="summary">Base error for this module.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.clientsecrets.InvalidClientSecretsError-class.html">oauth2client.clientsecrets.InvalidClientSecretsError</a></strong>:
+      <em class="summary">Format of ClientSecrets file is invalid.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.multistore_file.Error-class.html">oauth2client.multistore_file.Error</a></strong>:
+      <em class="summary">Base error for this module.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.multistore_file.NewerCredentialStoreError-class.html">oauth2client.multistore_file.NewerCredentialStoreError</a></strong>:
+      <em class="summary">The credential store is a newer version that supported.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.errors.Error-class.html">apiclient.errors.Error</a></strong>:
+      <em class="summary">Base error for this module.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="apiclient.errors.HttpError-class.html">apiclient.errors.HttpError</a></strong>:
+      <em class="summary">HTTP data was invalid or unexpected.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="apiclient.errors.BatchError-class.html">apiclient.errors.BatchError</a></strong>:
+      <em class="summary">Error occured during batch operations.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.errors.InvalidJsonError-class.html">apiclient.errors.InvalidJsonError</a></strong>:
+      <em class="summary">The JSON returned could not be parsed.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.errors.MediaUploadSizeError-class.html">apiclient.errors.MediaUploadSizeError</a></strong>:
+      <em class="summary">Media is larger than the method can accept.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.errors.ResumableUploadError-class.html">apiclient.errors.ResumableUploadError</a></strong>:
+      <em class="summary">Error occured during resumable upload.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.errors.UnacceptableMimeTypeError-class.html">apiclient.errors.UnacceptableMimeTypeError</a></strong>:
+      <em class="summary">That is an unacceptable mimetype for this operation.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.errors.UnexpectedBodyError-class.html">apiclient.errors.UnexpectedBodyError</a></strong>:
+      <em class="summary">Exception raised by RequestMockBuilder on unexpected bodies.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.errors.UnexpectedMethodError-class.html">apiclient.errors.UnexpectedMethodError</a></strong>:
+      <em class="summary">Exception raised by RequestMockBuilder on unexpected calls.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.errors.UnknownApiNameOrVersion-class.html">apiclient.errors.UnknownApiNameOrVersion</a></strong>:
+      <em class="summary">No API with that name and version exists.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.errors.UnknownLinkType-class.html">apiclient.errors.UnknownLinkType</a></strong>:
+      <em class="summary">Link type unknown or unexpected.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.appengine.InvalidClientSecretsError-class.html">oauth2client.appengine.InvalidClientSecretsError</a></strong>:
+      <em class="summary">The client_secrets.json file is malformed or missing required fields.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.http.BatchHttpRequest-class.html">apiclient.http.BatchHttpRequest</a></strong>:
+      <em class="summary">Batches multiple HttpRequest objects into a single HTTP request.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.client.Credentials-class.html">oauth2client.client.Credentials</a></strong>:
+      <em class="summary">Base class for all Credentials objects.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.client.OAuth2Credentials-class.html">oauth2client.client.OAuth2Credentials</a></strong>:
+      <em class="summary">Credentials object for OAuth 2.0.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.client.AccessTokenCredentials-class.html">oauth2client.client.AccessTokenCredentials</a></strong>:
+      <em class="summary">Credentials object for OAuth 2.0.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.client.AssertionCredentials-class.html">oauth2client.client.AssertionCredentials</a></strong>:
+      <em class="summary">Abstract Credentials object used for OAuth 2.0 assertion grants.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.appengine.AppAssertionCredentials-class.html">oauth2client.appengine.AppAssertionCredentials</a></strong>:
+      <em class="summary">Credentials object for App Engine Assertion Grants</em>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">oauth2client.client.SignedJwtAssertionCredentials</a></strong>:
+      <em class="summary">Credentials object used for OAuth 2.0 Signed JWT assertion grants.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">django.db.models.fields.Field</strong>:
+      <em class="summary">Base class for all field types</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.django_orm.CredentialsField-class.html">oauth2client.django_orm.CredentialsField</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.django_orm.FlowField-class.html">oauth2client.django_orm.FlowField</a></strong>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.client.Flow-class.html">oauth2client.client.Flow</a></strong>:
+      <em class="summary">Base class for all Flow objects.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.client.OAuth2WebServerFlow-class.html">oauth2client.client.OAuth2WebServerFlow</a></strong>:
+      <em class="summary">Does the Web Server Flow for OAuth 2.0.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.http.HttpMock-class.html">apiclient.http.HttpMock</a></strong>:
+      <em class="summary">Mock of httplib2.Http</em>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.http.HttpMockSequence-class.html">apiclient.http.HttpMockSequence</a></strong>:
+      <em class="summary">Mock of httplib2.Http</em>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.http.HttpRequest-class.html">apiclient.http.HttpRequest</a></strong>:
+      <em class="summary">Encapsulates a single HTTP request.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.http.HttpRequestMock-class.html">apiclient.http.HttpRequestMock</a></strong>:
+      <em class="summary">Mock of HttpRequest.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.http.MediaUpload-class.html">apiclient.http.MediaUpload</a></strong>:
+      <em class="summary">Describes a media object to upload.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="apiclient.http.MediaFileUpload-class.html">apiclient.http.MediaFileUpload</a></strong>:
+      <em class="summary">A MediaUpload for a file.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.http.MediaInMemoryUpload-class.html">apiclient.http.MediaInMemoryUpload</a></strong>:
+      <em class="summary">MediaUpload for a chunk of bytes.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.http.MediaUploadProgress-class.html">apiclient.http.MediaUploadProgress</a></strong>:
+      <em class="summary">Status of a resumable upload.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.client.MemoryCache-class.html">oauth2client.client.MemoryCache</a></strong>:
+      <em class="summary">httplib2 Cache implementation which only caches locally.</em>
+    </li>
+    <li> <strong class="uidlink">google.appengine.ext.db.Model</strong>:
+      <em class="summary">Model is the superclass of all object entities in the datastore.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.appengine.CredentialsModel-class.html">oauth2client.appengine.CredentialsModel</a></strong>:
+      <em class="summary">Storage for OAuth 2.0 Credentials</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.model.Model-class.html">apiclient.model.Model</a></strong>:
+      <em class="summary">Model base class.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="apiclient.model.BaseModel-class.html">apiclient.model.BaseModel</a></strong>:
+      <em class="summary">Base model class.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="apiclient.model.JsonModel-class.html">apiclient.model.JsonModel</a></strong>:
+      <em class="summary">Model class for JSON.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="apiclient.model.RawModel-class.html">apiclient.model.RawModel</a></strong>:
+      <em class="summary">Model class for requests that don't return JSON.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.model.ProtocolBufferModel-class.html">apiclient.model.ProtocolBufferModel</a></strong>:
+      <em class="summary">Model class for protocol buffers.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.appengine.OAuth2Decorator-class.html">oauth2client.appengine.OAuth2Decorator</a></strong>:
+      <em class="summary">Utility for making OAuth 2.0 easier.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html">oauth2client.appengine.OAuth2DecoratorFromClientSecrets</a></strong>:
+      <em class="summary">An OAuth2Decorator that builds from a clientsecrets file.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">google.appengine.ext.db.Property</strong>:
+      <em class="summary">A Property is an attribute of a Model.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.appengine.CredentialsProperty-class.html">oauth2client.appengine.CredentialsProperty</a></strong>:
+      <em class="summary">App Engine datastore Property for Credentials.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.appengine.FlowProperty-class.html">oauth2client.appengine.FlowProperty</a></strong>:
+      <em class="summary">App Engine datastore Property for Flow.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">google.appengine.ext.webapp._webapp25.RequestHandler</strong>:
+      <em class="summary">Our base HTTP request handler.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.appengine.OAuth2Handler-class.html">oauth2client.appengine.OAuth2Handler</a></strong>:
+      <em class="summary">Handler for the redirect_uri of the OAuth 2.0 dance.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.http.RequestMockBuilder-class.html">apiclient.http.RequestMockBuilder</a></strong>:
+      <em class="summary">A simple mock of HttpRequest</em>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.schema.Schemas-class.html">apiclient.schema.Schemas</a></strong>:
+      <em class="summary">Schemas for an API.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.crypt.Signer-class.html">oauth2client.crypt.Signer</a></strong>:
+      <em class="summary">Signs messages with a private key.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.client.Storage-class.html">oauth2client.client.Storage</a></strong>:
+      <em class="summary">Base class for all Storage objects.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="oauth2client.file.Storage-class.html">oauth2client.file.Storage</a></strong>:
+      <em class="summary">Store and retrieve a single credential to and from a file.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.django_orm.Storage-class.html">oauth2client.django_orm.Storage</a></strong>:
+      <em class="summary">Store and retrieve a single credential to and from
+the datastore.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.appengine.StorageByKeyName-class.html">oauth2client.appengine.StorageByKeyName</a></strong>:
+      <em class="summary">Store and retrieve a single credential to and from
+the App Engine datastore.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.multistore_file._MultiStore._Storage-class.html" onclick="show_private();">oauth2client.multistore_file._MultiStore._Storage</a></strong>:
+      <em class="summary">A Storage object that knows how to read/write a single credential.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.crypt.Verifier-class.html">oauth2client.crypt.Verifier</a></strong>:
+      <em class="summary">Verifies the signature on a message.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">oauth2client.multistore_file._MultiStore</a></strong>:
+      <em class="summary">A file backed store for multiple credentials.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">apiclient.schema._SchemaToStruct</a></strong>:
+      <em class="summary">Convert schema to a prototype object.</em>
+    </li>
+    <li> <strong class="uidlink">type</strong>:
+      <em class="summary">type(object) -&gt; the object's type...</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="google.appengine.ext.db.PropertiedClass-class.html">google.appengine.ext.db.PropertiedClass</a></strong>:
+      <em class="summary">Meta-class for initializing Model classes properties.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="django.db.models.fields.subclassing.SubfieldBase-class.html">django.db.models.fields.subclassing.SubfieldBase</a></strong>:
+      <em class="summary">A metaclass for custom Field subclasses.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Tue Jun  5 09:03:04 2012
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>