1.0beta3 release
diff --git a/docs/oauth2client.client.html b/docs/oauth2client.client.html
index fd34ab1..e3d266b 100644
--- a/docs/oauth2client.client.html
+++ b/docs/oauth2client.client.html
@@ -8,11 +8,10 @@
<td valign=bottom> <br>
<font color="#ffffff" face="helvetica, arial"> <br><big><big><strong><a href="oauth2client.html"><font color="#ffffff">oauth2client</font></a>.client</strong></big></big></font></td
><td align=right valign=bottom
-><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/jcgregorio/projects/google-api-python-client/oauth2client/client.py">/home/jcgregorio/projects/google-api-python-client/oauth2client/client.py</a></font></td></tr></table>
- <p><tt>An OAuth 2.0 client<br>
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/jcgregorio/projects/apiclient/oauth2client/client.py">/usr/local/google/home/jcgregorio/projects/apiclient/oauth2client/client.py</a></font></td></tr></table>
+ <p><tt>An OAuth 2.0 client.<br>
<br>
-Tools for interacting with OAuth 2.0 protected<br>
-resources.</tt></p>
+Tools for interacting with OAuth 2.0 protected resources.</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
@@ -80,14 +79,15 @@
<font color="#000000" face="helvetica, arial"><a name="AccessTokenCredentials">class <strong>AccessTokenCredentials</strong></a>(<a href="oauth2client.client.html#OAuth2Credentials">OAuth2Credentials</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
-<td colspan=2><tt><a href="#Credentials">Credentials</a> <a href="__builtin__.html#object">object</a> for OAuth 2.0<br>
+<td colspan=2><tt><a href="#Credentials">Credentials</a> <a href="__builtin__.html#object">object</a> for OAuth 2.0.<br>
<br>
-<a href="#Credentials">Credentials</a> can be applied to an httplib2.Http <a href="__builtin__.html#object">object</a> using the <a href="#AccessTokenCredentials-authorize">authorize</a>()<br>
-method, which then signs each request from that <a href="__builtin__.html#object">object</a> with the OAuth 2.0<br>
-access token. This set of credentials is for the use case where you have<br>
-acquired an OAuth 2.0 access_token from another place such as a JavaScript<br>
-client or another web application, and wish to use it from Python. Because<br>
-only the access_token is present it can not be refreshed and will in time<br>
+<a href="#Credentials">Credentials</a> can be applied to an httplib2.Http <a href="__builtin__.html#object">object</a> using the<br>
+<a href="#AccessTokenCredentials-authorize">authorize</a>() method, which then signs each request from that <a href="__builtin__.html#object">object</a><br>
+with the OAuth 2.0 access token. This set of credentials is for the<br>
+use case where you have acquired an OAuth 2.0 access_token from<br>
+another place such as a JavaScript client or another web<br>
+application, and wish to use it from Python. Because only the<br>
+access_token is present it can not be refreshed and will in time<br>
expire.<br>
<br>
<a href="#AccessTokenCredentials">AccessTokenCredentials</a> objects may be safely pickled and unpickled.<br>
@@ -124,6 +124,10 @@
will store the credential back to where it came from.</tt></dd></dl>
<hr>
+Class methods defined here:<br>
+<dl><dt><a name="AccessTokenCredentials-from_json"><strong>from_json</strong></a>(cls, s)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt></dl>
+
+<hr>
Methods inherited from <a href="oauth2client.client.html#OAuth2Credentials">OAuth2Credentials</a>:<br>
<dl><dt><a name="AccessTokenCredentials-__getstate__"><strong>__getstate__</strong></a>(self)</dt><dd><tt>Trim the state down to something that can be pickled.</tt></dd></dl>
@@ -143,28 +147,43 @@
h = httplib2.Http()<br>
h = credentials.<a href="#AccessTokenCredentials-authorize">authorize</a>(h)<br>
<br>
-You can't create a new OAuth<br>
-subclass of httplib2.Authenication because<br>
-it never gets passed the absolute URI, which is<br>
-needed for signing. So instead we have to overload<br>
-'request' with a closure that adds in the<br>
-Authorization header and then calls the original version<br>
-of 'request()'.</tt></dd></dl>
+You can't create a new OAuth subclass of httplib2.Authenication<br>
+because it never gets passed the absolute URI, which is needed for<br>
+signing. So instead we have to overload 'request' with a closure<br>
+that adds in the Authorization header and then calls the original<br>
+version of 'request()'.</tt></dd></dl>
-<dl><dt><a name="AccessTokenCredentials-set_store"><strong>set_store</strong></a>(self, store)</dt><dd><tt>Set the storage for the credential.<br>
+<dl><dt><a name="AccessTokenCredentials-set_store"><strong>set_store</strong></a>(self, store)</dt><dd><tt>Set the <a href="#Storage">Storage</a> for the credential.<br>
<br>
Args:<br>
- store: callable, a callable that when passed a Credential<br>
- will store the credential back to where it came from.<br>
+ store: <a href="#Storage">Storage</a>, an implementation of Stroage <a href="__builtin__.html#object">object</a>.<br>
This is needed to store the latest access_token if it<br>
- has expired and been refreshed.</tt></dd></dl>
+ has expired and been refreshed. This implementation uses<br>
+ locking to check for updates before updating the<br>
+ access_token.</tt></dd></dl>
+
+<dl><dt><a name="AccessTokenCredentials-to_json"><strong>to_json</strong></a>(self)</dt></dl>
<hr>
Data descriptors inherited from <a href="oauth2client.client.html#OAuth2Credentials">OAuth2Credentials</a>:<br>
-<dl><dt><strong>invalid</strong></dt>
-<dd><tt>True if the credentials are invalid, such as being revoked.</tt></dd>
+<dl><dt><strong>access_token_expired</strong></dt>
+<dd><tt>True if the credential is expired or invalid.<br>
+ <br>
+If the token_expiry isn't set, we assume the token doesn't expire.</tt></dd>
</dl>
<hr>
+Class methods inherited from <a href="oauth2client.client.html#Credentials">Credentials</a>:<br>
+<dl><dt><a name="AccessTokenCredentials-new_from_json"><strong>new_from_json</strong></a>(cls, s)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt><dd><tt>Utility class method to instantiate a <a href="#Credentials">Credentials</a> subclass from a JSON<br>
+representation produced by <a href="#AccessTokenCredentials-to_json">to_json</a>().<br>
+ <br>
+Args:<br>
+ s: string, JSON from <a href="#AccessTokenCredentials-to_json">to_json</a>().<br>
+ <br>
+Returns:<br>
+ An instance of the subclass of <a href="#Credentials">Credentials</a> that was serialized with<br>
+ <a href="#AccessTokenCredentials-to_json">to_json</a>().</tt></dd></dl>
+
+<hr>
Data descriptors inherited from <a href="oauth2client.client.html#Credentials">Credentials</a>:<br>
<dl><dt><strong>__dict__</strong></dt>
<dd><tt>dictionary for instance variables (if defined)</tt></dd>
@@ -172,6 +191,10 @@
<dl><dt><strong>__weakref__</strong></dt>
<dd><tt>list of weak references to the object (if defined)</tt></dd>
</dl>
+<hr>
+Data and other attributes inherited from <a href="oauth2client.client.html#Credentials">Credentials</a>:<br>
+<dl><dt><strong>NON_SERIALIZED_MEMBERS</strong> = ['store']</dl>
+
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
@@ -301,12 +324,12 @@
<font color="#000000" face="helvetica, arial"><a name="AssertionCredentials">class <strong>AssertionCredentials</strong></a>(<a href="oauth2client.client.html#OAuth2Credentials">OAuth2Credentials</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
-<td colspan=2><tt>Abstract <a href="#Credentials">Credentials</a> <a href="__builtin__.html#object">object</a> used for OAuth 2.0 assertion grants<br>
+<td colspan=2><tt>Abstract <a href="#Credentials">Credentials</a> <a href="__builtin__.html#object">object</a> used for OAuth 2.0 assertion grants.<br>
<br>
-This credential does not require a flow to instantiate because it represents<br>
-a two legged flow, and therefore has all of the required information to<br>
-generate and refresh its own access tokens. It must be subclassed to<br>
-generate the appropriate assertion string.<br>
+This credential does not require a flow to instantiate because it<br>
+represents a two legged flow, and therefore has all of the required<br>
+information to generate and refresh its own access tokens. It must<br>
+be subclassed to generate the appropriate assertion string.<br>
<br>
<a href="#AssertionCredentials">AssertionCredentials</a> objects may be safely pickled and unpickled.<br> </tt></td></tr>
<tr><td> </td>
@@ -318,7 +341,7 @@
</dl>
<hr>
Methods defined here:<br>
-<dl><dt><a name="AssertionCredentials-__init__"><strong>__init__</strong></a>(self, assertion_type, user_agent, token_uri<font color="#909090">='https://accounts.google.com/o/oauth2/token'</font>, **kwargs)</dt><dd><tt>Constructor for AssertionFlowCredentials<br>
+<dl><dt><a name="AssertionCredentials-__init__"><strong>__init__</strong></a>(self, assertion_type, user_agent, token_uri<font color="#909090">='https://accounts.google.com/o/oauth2/token'</font>, **unused_kwargs)</dt><dd><tt>Constructor for AssertionFlowCredentials.<br>
<br>
Args:<br>
assertion_type: string, assertion type that will be declared to the auth<br>
@@ -347,28 +370,54 @@
h = httplib2.Http()<br>
h = credentials.<a href="#AssertionCredentials-authorize">authorize</a>(h)<br>
<br>
-You can't create a new OAuth<br>
-subclass of httplib2.Authenication because<br>
-it never gets passed the absolute URI, which is<br>
-needed for signing. So instead we have to overload<br>
-'request' with a closure that adds in the<br>
-Authorization header and then calls the original version<br>
-of 'request()'.</tt></dd></dl>
+You can't create a new OAuth subclass of httplib2.Authenication<br>
+because it never gets passed the absolute URI, which is needed for<br>
+signing. So instead we have to overload 'request' with a closure<br>
+that adds in the Authorization header and then calls the original<br>
+version of 'request()'.</tt></dd></dl>
-<dl><dt><a name="AssertionCredentials-set_store"><strong>set_store</strong></a>(self, store)</dt><dd><tt>Set the storage for the credential.<br>
+<dl><dt><a name="AssertionCredentials-set_store"><strong>set_store</strong></a>(self, store)</dt><dd><tt>Set the <a href="#Storage">Storage</a> for the credential.<br>
<br>
Args:<br>
- store: callable, a callable that when passed a Credential<br>
- will store the credential back to where it came from.<br>
+ store: <a href="#Storage">Storage</a>, an implementation of Stroage <a href="__builtin__.html#object">object</a>.<br>
This is needed to store the latest access_token if it<br>
- has expired and been refreshed.</tt></dd></dl>
+ has expired and been refreshed. This implementation uses<br>
+ locking to check for updates before updating the<br>
+ access_token.</tt></dd></dl>
+
+<dl><dt><a name="AssertionCredentials-to_json"><strong>to_json</strong></a>(self)</dt></dl>
+
+<hr>
+Class methods inherited from <a href="oauth2client.client.html#OAuth2Credentials">OAuth2Credentials</a>:<br>
+<dl><dt><a name="AssertionCredentials-from_json"><strong>from_json</strong></a>(cls, s)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt><dd><tt>Instantiate a <a href="#Credentials">Credentials</a> <a href="__builtin__.html#object">object</a> from a JSON description of it. The JSON<br>
+should have been produced by calling .<a href="#AssertionCredentials-to_json">to_json</a>() on the <a href="__builtin__.html#object">object</a>.<br>
+ <br>
+Args:<br>
+ data: dict, A deserialized JSON <a href="__builtin__.html#object">object</a>.<br>
+ <br>
+Returns:<br>
+ An instance of a <a href="#Credentials">Credentials</a> subclass.</tt></dd></dl>
<hr>
Data descriptors inherited from <a href="oauth2client.client.html#OAuth2Credentials">OAuth2Credentials</a>:<br>
-<dl><dt><strong>invalid</strong></dt>
-<dd><tt>True if the credentials are invalid, such as being revoked.</tt></dd>
+<dl><dt><strong>access_token_expired</strong></dt>
+<dd><tt>True if the credential is expired or invalid.<br>
+ <br>
+If the token_expiry isn't set, we assume the token doesn't expire.</tt></dd>
</dl>
<hr>
+Class methods inherited from <a href="oauth2client.client.html#Credentials">Credentials</a>:<br>
+<dl><dt><a name="AssertionCredentials-new_from_json"><strong>new_from_json</strong></a>(cls, s)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt><dd><tt>Utility class method to instantiate a <a href="#Credentials">Credentials</a> subclass from a JSON<br>
+representation produced by <a href="#AssertionCredentials-to_json">to_json</a>().<br>
+ <br>
+Args:<br>
+ s: string, JSON from <a href="#AssertionCredentials-to_json">to_json</a>().<br>
+ <br>
+Returns:<br>
+ An instance of the subclass of <a href="#Credentials">Credentials</a> that was serialized with<br>
+ <a href="#AssertionCredentials-to_json">to_json</a>().</tt></dd></dl>
+
+<hr>
Data descriptors inherited from <a href="oauth2client.client.html#Credentials">Credentials</a>:<br>
<dl><dt><strong>__dict__</strong></dt>
<dd><tt>dictionary for instance variables (if defined)</tt></dd>
@@ -376,6 +425,10 @@
<dl><dt><strong>__weakref__</strong></dt>
<dd><tt>list of weak references to the object (if defined)</tt></dd>
</dl>
+<hr>
+Data and other attributes inherited from <a href="oauth2client.client.html#Credentials">Credentials</a>:<br>
+<dl><dt><strong>NON_SERIALIZED_MEMBERS</strong> = ['store']</dl>
+
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
@@ -385,8 +438,11 @@
<tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
<td colspan=2><tt>Base class for all <a href="#Credentials">Credentials</a> objects.<br>
<br>
-Subclasses must define an <a href="#Credentials-authorize">authorize</a>() method<br>
-that applies the credentials to an HTTP transport.<br> </tt></td></tr>
+Subclasses must define an <a href="#Credentials-authorize">authorize</a>() method that applies the credentials to<br>
+an HTTP transport.<br>
+ <br>
+Subclasses must also specify a classmethod named 'from_json' that takes a JSON<br>
+string as input and returns an instaniated Crentials <a href="__builtin__.html#object">object</a>.<br> </tt></td></tr>
<tr><td> </td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="Credentials-authorize"><strong>authorize</strong></a>(self, http)</dt><dd><tt>Take an httplib2.Http instance (or equivalent) and<br>
@@ -395,6 +451,24 @@
the appropriate headers and then delegates to the original<br>
Http.request() method.</tt></dd></dl>
+<dl><dt><a name="Credentials-to_json"><strong>to_json</strong></a>(self)</dt><dd><tt>Creating a JSON representation of an instance of <a href="#Credentials">Credentials</a>.<br>
+ <br>
+Returns:<br>
+ string, a JSON representation of this instance, suitable to pass to<br>
+ from_json().</tt></dd></dl>
+
+<hr>
+Class methods defined here:<br>
+<dl><dt><a name="Credentials-new_from_json"><strong>new_from_json</strong></a>(cls, s)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt><dd><tt>Utility class method to instantiate a <a href="#Credentials">Credentials</a> subclass from a JSON<br>
+representation produced by <a href="#Credentials-to_json">to_json</a>().<br>
+ <br>
+Args:<br>
+ s: string, JSON from <a href="#Credentials-to_json">to_json</a>().<br>
+ <br>
+Returns:<br>
+ An instance of the subclass of <a href="#Credentials">Credentials</a> that was serialized with<br>
+ <a href="#Credentials-to_json">to_json</a>().</tt></dd></dl>
+
<hr>
Data descriptors defined here:<br>
<dl><dt><strong>__dict__</strong></dt>
@@ -403,6 +477,10 @@
<dl><dt><strong>__weakref__</strong></dt>
<dd><tt>list of weak references to the object (if defined)</tt></dd>
</dl>
+<hr>
+Data and other attributes defined here:<br>
+<dl><dt><strong>NON_SERIALIZED_MEMBERS</strong> = ['store']</dl>
+
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
@@ -547,7 +625,7 @@
<font color="#000000" face="helvetica, arial"><a name="OAuth2Credentials">class <strong>OAuth2Credentials</strong></a>(<a href="oauth2client.client.html#Credentials">Credentials</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
-<td colspan=2><tt><a href="#Credentials">Credentials</a> <a href="__builtin__.html#object">object</a> for OAuth 2.0<br>
+<td colspan=2><tt><a href="#Credentials">Credentials</a> <a href="__builtin__.html#object">object</a> for OAuth 2.0.<br>
<br>
<a href="#Credentials">Credentials</a> can be applied to an httplib2.Http <a href="__builtin__.html#object">object</a> using the <a href="#OAuth2Credentials-authorize">authorize</a>()<br>
method, which then signs each request from that <a href="__builtin__.html#object">object</a> with the OAuth 2.0<br>
@@ -564,21 +642,20 @@
Methods defined here:<br>
<dl><dt><a name="OAuth2Credentials-__getstate__"><strong>__getstate__</strong></a>(self)</dt><dd><tt>Trim the state down to something that can be pickled.</tt></dd></dl>
-<dl><dt><a name="OAuth2Credentials-__init__"><strong>__init__</strong></a>(self, access_token, client_id, client_secret, refresh_token, token_expiry, token_uri, user_agent)</dt><dd><tt>Create an instance of <a href="#OAuth2Credentials">OAuth2Credentials</a><br>
+<dl><dt><a name="OAuth2Credentials-__init__"><strong>__init__</strong></a>(self, access_token, client_id, client_secret, refresh_token, token_expiry, token_uri, user_agent)</dt><dd><tt>Create an instance of <a href="#OAuth2Credentials">OAuth2Credentials</a>.<br>
<br>
This constructor is not usually called by the user, instead<br>
<a href="#OAuth2Credentials">OAuth2Credentials</a> objects are instantiated by the <a href="#OAuth2WebServerFlow">OAuth2WebServerFlow</a>.<br>
<br>
Args:<br>
- token_uri: string, URI of token endpoint.<br>
+ access_token: string, access token.<br>
client_id: string, client identifier.<br>
client_secret: string, client secret.<br>
- access_token: string, access token.<br>
- token_expiry: datetime, when the access_token expires.<br>
refresh_token: string, refresh token.<br>
+ token_expiry: datetime, when the access_token expires.<br>
+ token_uri: string, URI of token endpoint.<br>
user_agent: string, The HTTP User-Agent to provide for this application.<br>
<br>
- <br>
Notes:<br>
store: callable, a callable that when passed a Credential<br>
will store the credential back to where it came from.<br>
@@ -601,28 +678,54 @@
h = httplib2.Http()<br>
h = credentials.<a href="#OAuth2Credentials-authorize">authorize</a>(h)<br>
<br>
-You can't create a new OAuth<br>
-subclass of httplib2.Authenication because<br>
-it never gets passed the absolute URI, which is<br>
-needed for signing. So instead we have to overload<br>
-'request' with a closure that adds in the<br>
-Authorization header and then calls the original version<br>
-of 'request()'.</tt></dd></dl>
+You can't create a new OAuth subclass of httplib2.Authenication<br>
+because it never gets passed the absolute URI, which is needed for<br>
+signing. So instead we have to overload 'request' with a closure<br>
+that adds in the Authorization header and then calls the original<br>
+version of 'request()'.</tt></dd></dl>
-<dl><dt><a name="OAuth2Credentials-set_store"><strong>set_store</strong></a>(self, store)</dt><dd><tt>Set the storage for the credential.<br>
+<dl><dt><a name="OAuth2Credentials-set_store"><strong>set_store</strong></a>(self, store)</dt><dd><tt>Set the <a href="#Storage">Storage</a> for the credential.<br>
<br>
Args:<br>
- store: callable, a callable that when passed a Credential<br>
- will store the credential back to where it came from.<br>
+ store: <a href="#Storage">Storage</a>, an implementation of Stroage <a href="__builtin__.html#object">object</a>.<br>
This is needed to store the latest access_token if it<br>
- has expired and been refreshed.</tt></dd></dl>
+ has expired and been refreshed. This implementation uses<br>
+ locking to check for updates before updating the<br>
+ access_token.</tt></dd></dl>
+
+<dl><dt><a name="OAuth2Credentials-to_json"><strong>to_json</strong></a>(self)</dt></dl>
+
+<hr>
+Class methods defined here:<br>
+<dl><dt><a name="OAuth2Credentials-from_json"><strong>from_json</strong></a>(cls, s)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt><dd><tt>Instantiate a <a href="#Credentials">Credentials</a> <a href="__builtin__.html#object">object</a> from a JSON description of it. The JSON<br>
+should have been produced by calling .<a href="#OAuth2Credentials-to_json">to_json</a>() on the <a href="__builtin__.html#object">object</a>.<br>
+ <br>
+Args:<br>
+ data: dict, A deserialized JSON <a href="__builtin__.html#object">object</a>.<br>
+ <br>
+Returns:<br>
+ An instance of a <a href="#Credentials">Credentials</a> subclass.</tt></dd></dl>
<hr>
Data descriptors defined here:<br>
-<dl><dt><strong>invalid</strong></dt>
-<dd><tt>True if the credentials are invalid, such as being revoked.</tt></dd>
+<dl><dt><strong>access_token_expired</strong></dt>
+<dd><tt>True if the credential is expired or invalid.<br>
+ <br>
+If the token_expiry isn't set, we assume the token doesn't expire.</tt></dd>
</dl>
<hr>
+Class methods inherited from <a href="oauth2client.client.html#Credentials">Credentials</a>:<br>
+<dl><dt><a name="OAuth2Credentials-new_from_json"><strong>new_from_json</strong></a>(cls, s)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt><dd><tt>Utility class method to instantiate a <a href="#Credentials">Credentials</a> subclass from a JSON<br>
+representation produced by <a href="#OAuth2Credentials-to_json">to_json</a>().<br>
+ <br>
+Args:<br>
+ s: string, JSON from <a href="#OAuth2Credentials-to_json">to_json</a>().<br>
+ <br>
+Returns:<br>
+ An instance of the subclass of <a href="#Credentials">Credentials</a> that was serialized with<br>
+ <a href="#OAuth2Credentials-to_json">to_json</a>().</tt></dd></dl>
+
+<hr>
Data descriptors inherited from <a href="oauth2client.client.html#Credentials">Credentials</a>:<br>
<dl><dt><strong>__dict__</strong></dt>
<dd><tt>dictionary for instance variables (if defined)</tt></dd>
@@ -630,6 +733,10 @@
<dl><dt><strong>__weakref__</strong></dt>
<dd><tt>list of weak references to the object (if defined)</tt></dd>
</dl>
+<hr>
+Data and other attributes inherited from <a href="oauth2client.client.html#Credentials">Credentials</a>:<br>
+<dl><dt><strong>NON_SERIALIZED_MEMBERS</strong> = ['store']</dl>
+
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
@@ -648,7 +755,7 @@
</dl>
<hr>
Methods defined here:<br>
-<dl><dt><a name="OAuth2WebServerFlow-__init__"><strong>__init__</strong></a>(self, client_id, client_secret, scope, user_agent, auth_uri<font color="#909090">='https://accounts.google.com/o/oauth2/auth'</font>, token_uri<font color="#909090">='https://accounts.google.com/o/oauth2/token'</font>, **kwargs)</dt><dd><tt>Constructor for <a href="#OAuth2WebServerFlow">OAuth2WebServerFlow</a><br>
+<dl><dt><a name="OAuth2WebServerFlow-__init__"><strong>__init__</strong></a>(self, client_id, client_secret, scope, user_agent, auth_uri<font color="#909090">='https://accounts.google.com/o/oauth2/auth'</font>, token_uri<font color="#909090">='https://accounts.google.com/o/oauth2/token'</font>, **kwargs)</dt><dd><tt>Constructor for <a href="#OAuth2WebServerFlow">OAuth2WebServerFlow</a>.<br>
<br>
Args:<br>
client_id: string, client identifier.<br>
@@ -699,19 +806,48 @@
<tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
<td colspan=2><tt>Base class for all <a href="#Storage">Storage</a> objects.<br>
<br>
-Store and retrieve a single credential.<br> </tt></td></tr>
+Store and retrieve a single credential. This class supports locking<br>
+such that multiple processes and threads can operate on a single<br>
+store.<br> </tt></td></tr>
<tr><td> </td>
<td width="100%">Methods defined here:<br>
+<dl><dt><a name="Storage-acquire_lock"><strong>acquire_lock</strong></a>(self)</dt><dd><tt>Acquires any lock necessary to access this <a href="#Storage">Storage</a>.<br>
+ <br>
+This lock is not reentrant.</tt></dd></dl>
+
<dl><dt><a name="Storage-get"><strong>get</strong></a>(self)</dt><dd><tt>Retrieve credential.<br>
<br>
+The <a href="#Storage">Storage</a> lock must *not* be held when this is called.<br>
+ <br>
Returns:<br>
oauth2client.client.<a href="#Credentials">Credentials</a></tt></dd></dl>
-<dl><dt><a name="Storage-put"><strong>put</strong></a>(self, credentials)</dt><dd><tt>Write a credential.<br>
+<dl><dt><a name="Storage-locked_get"><strong>locked_get</strong></a>(self)</dt><dd><tt>Retrieve credential.<br>
+ <br>
+The <a href="#Storage">Storage</a> lock must be held when this is called.<br>
+ <br>
+Returns:<br>
+ oauth2client.client.<a href="#Credentials">Credentials</a></tt></dd></dl>
+
+<dl><dt><a name="Storage-locked_put"><strong>locked_put</strong></a>(self, credentials)</dt><dd><tt>Write a credential.<br>
+ <br>
+The <a href="#Storage">Storage</a> lock must be held when this is called.<br>
<br>
Args:<br>
credentials: <a href="#Credentials">Credentials</a>, the credentials to store.</tt></dd></dl>
+<dl><dt><a name="Storage-put"><strong>put</strong></a>(self, credentials)</dt><dd><tt>Write a credential.<br>
+ <br>
+The <a href="#Storage">Storage</a> lock must be held when this is called.<br>
+ <br>
+Args:<br>
+ credentials: <a href="#Credentials">Credentials</a>, the credentials to store.</tt></dd></dl>
+
+<dl><dt><a name="Storage-release_lock"><strong>release_lock</strong></a>(self)</dt><dd><tt>Release the <a href="#Storage">Storage</a> lock.<br>
+ <br>
+Trying to release a lock that isn't held will result in a<br>
+RuntimeError.</tt></dd></dl>
+
<hr>
Data descriptors defined here:<br>
<dl><dt><strong>__dict__</strong></dt>
@@ -727,7 +863,9 @@
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt> </tt></td><td> </td>
-<td width="100%"><strong>__author__</strong> = 'jcgregorio@google.com (Joe Gregorio)'</td></tr></table><p>
+<td width="100%"><strong>EXPIRY_FORMAT</strong> = '%Y-%m-%dT%H:%M:%S.%fZ'<br>
+<strong>__author__</strong> = 'jcgregorio@google.com (Joe Gregorio)'<br>
+<strong>logger</strong> = <logging.Logger instance></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#7799ee">
<td colspan=3 valign=bottom> <br>