Refresh docs
diff --git a/docs/dyn/adexchangebuyer_v1_1.creatives.html b/docs/dyn/adexchangebuyer_v1_1.creatives.html
index af52403..4eb0f64 100644
--- a/docs/dyn/adexchangebuyer_v1_1.creatives.html
+++ b/docs/dyn/adexchangebuyer_v1_1.creatives.html
@@ -278,7 +278,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adexchangeseller_v1.adclients.html b/docs/dyn/adexchangeseller_v1.adclients.html
index d61d6e6..0fa196e 100644
--- a/docs/dyn/adexchangeseller_v1.adclients.html
+++ b/docs/dyn/adexchangeseller_v1.adclients.html
@@ -119,7 +119,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adexchangeseller_v1.adunits.customchannels.html b/docs/dyn/adexchangeseller_v1.adunits.customchannels.html
index 71350d1..23c42c7 100644
--- a/docs/dyn/adexchangeseller_v1.adunits.customchannels.html
+++ b/docs/dyn/adexchangeseller_v1.adunits.customchannels.html
@@ -126,7 +126,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adexchangeseller_v1.adunits.html b/docs/dyn/adexchangeseller_v1.adunits.html
index a26ddd1..103214d 100644
--- a/docs/dyn/adexchangeseller_v1.adunits.html
+++ b/docs/dyn/adexchangeseller_v1.adunits.html
@@ -159,7 +159,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adexchangeseller_v1.customchannels.adunits.html b/docs/dyn/adexchangeseller_v1.customchannels.adunits.html
index 35cf2f5..52f5a88 100644
--- a/docs/dyn/adexchangeseller_v1.customchannels.adunits.html
+++ b/docs/dyn/adexchangeseller_v1.customchannels.adunits.html
@@ -127,7 +127,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adexchangeseller_v1.customchannels.html b/docs/dyn/adexchangeseller_v1.customchannels.html
index 3deb77a..0d324f8 100644
--- a/docs/dyn/adexchangeseller_v1.customchannels.html
+++ b/docs/dyn/adexchangeseller_v1.customchannels.html
@@ -158,7 +158,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adexchangeseller_v1.reports.saved.html b/docs/dyn/adexchangeseller_v1.reports.saved.html
index b9bf723..33ec795 100644
--- a/docs/dyn/adexchangeseller_v1.reports.saved.html
+++ b/docs/dyn/adexchangeseller_v1.reports.saved.html
@@ -160,7 +160,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adexchangeseller_v1.urlchannels.html b/docs/dyn/adexchangeseller_v1.urlchannels.html
index 5e259c4..0e8b9b4 100644
--- a/docs/dyn/adexchangeseller_v1.urlchannels.html
+++ b/docs/dyn/adexchangeseller_v1.urlchannels.html
@@ -118,7 +118,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.accounts.adclients.html b/docs/dyn/adsense_v1_2.accounts.adclients.html
index 97af068..92ea18d 100644
--- a/docs/dyn/adsense_v1_2.accounts.adclients.html
+++ b/docs/dyn/adsense_v1_2.accounts.adclients.html
@@ -120,7 +120,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.accounts.adunits.customchannels.html b/docs/dyn/adsense_v1_2.accounts.adunits.customchannels.html
index bb0aa1d..ea80de0 100644
--- a/docs/dyn/adsense_v1_2.accounts.adunits.customchannels.html
+++ b/docs/dyn/adsense_v1_2.accounts.adunits.customchannels.html
@@ -127,7 +127,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.accounts.adunits.html b/docs/dyn/adsense_v1_2.accounts.adunits.html
index e4933c9..96e2499 100644
--- a/docs/dyn/adsense_v1_2.accounts.adunits.html
+++ b/docs/dyn/adsense_v1_2.accounts.adunits.html
@@ -235,7 +235,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.accounts.customchannels.adunits.html b/docs/dyn/adsense_v1_2.accounts.customchannels.adunits.html
index 25c1516..a23f5f4 100644
--- a/docs/dyn/adsense_v1_2.accounts.customchannels.adunits.html
+++ b/docs/dyn/adsense_v1_2.accounts.customchannels.adunits.html
@@ -165,7 +165,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.accounts.customchannels.html b/docs/dyn/adsense_v1_2.accounts.customchannels.html
index daf2c33..e22116f 100644
--- a/docs/dyn/adsense_v1_2.accounts.customchannels.html
+++ b/docs/dyn/adsense_v1_2.accounts.customchannels.html
@@ -160,7 +160,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.accounts.html b/docs/dyn/adsense_v1_2.accounts.html
index 324d813..db3d4f4 100644
--- a/docs/dyn/adsense_v1_2.accounts.html
+++ b/docs/dyn/adsense_v1_2.accounts.html
@@ -176,7 +176,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.accounts.reports.saved.html b/docs/dyn/adsense_v1_2.accounts.reports.saved.html
index 7ca3c28..d0f028f 100644
--- a/docs/dyn/adsense_v1_2.accounts.reports.saved.html
+++ b/docs/dyn/adsense_v1_2.accounts.reports.saved.html
@@ -162,7 +162,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.accounts.savedadstyles.html b/docs/dyn/adsense_v1_2.accounts.savedadstyles.html
index cccec34..2076d53 100644
--- a/docs/dyn/adsense_v1_2.accounts.savedadstyles.html
+++ b/docs/dyn/adsense_v1_2.accounts.savedadstyles.html
@@ -169,7 +169,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.accounts.urlchannels.html b/docs/dyn/adsense_v1_2.accounts.urlchannels.html
index 24f9997..a93f533 100644
--- a/docs/dyn/adsense_v1_2.accounts.urlchannels.html
+++ b/docs/dyn/adsense_v1_2.accounts.urlchannels.html
@@ -119,7 +119,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.adclients.html b/docs/dyn/adsense_v1_2.adclients.html
index a755817..e51338f 100644
--- a/docs/dyn/adsense_v1_2.adclients.html
+++ b/docs/dyn/adsense_v1_2.adclients.html
@@ -119,7 +119,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.adunits.customchannels.html b/docs/dyn/adsense_v1_2.adunits.customchannels.html
index b87fa0f..af00814 100644
--- a/docs/dyn/adsense_v1_2.adunits.customchannels.html
+++ b/docs/dyn/adsense_v1_2.adunits.customchannels.html
@@ -126,7 +126,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.adunits.html b/docs/dyn/adsense_v1_2.adunits.html
index 3965e74..21cfc74 100644
--- a/docs/dyn/adsense_v1_2.adunits.html
+++ b/docs/dyn/adsense_v1_2.adunits.html
@@ -233,7 +233,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.customchannels.adunits.html b/docs/dyn/adsense_v1_2.customchannels.adunits.html
index a63bb3e..f987595 100644
--- a/docs/dyn/adsense_v1_2.customchannels.adunits.html
+++ b/docs/dyn/adsense_v1_2.customchannels.adunits.html
@@ -164,7 +164,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.customchannels.html b/docs/dyn/adsense_v1_2.customchannels.html
index 6fc6074..daf3804 100644
--- a/docs/dyn/adsense_v1_2.customchannels.html
+++ b/docs/dyn/adsense_v1_2.customchannels.html
@@ -158,7 +158,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.reports.saved.html b/docs/dyn/adsense_v1_2.reports.saved.html
index 505ce17..301f525 100644
--- a/docs/dyn/adsense_v1_2.reports.saved.html
+++ b/docs/dyn/adsense_v1_2.reports.saved.html
@@ -160,7 +160,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.savedadstyles.html b/docs/dyn/adsense_v1_2.savedadstyles.html
index 38bc7dd..c8fdd89 100644
--- a/docs/dyn/adsense_v1_2.savedadstyles.html
+++ b/docs/dyn/adsense_v1_2.savedadstyles.html
@@ -167,7 +167,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_2.urlchannels.html b/docs/dyn/adsense_v1_2.urlchannels.html
index eeb9a41..9aa8cdd 100644
--- a/docs/dyn/adsense_v1_2.urlchannels.html
+++ b/docs/dyn/adsense_v1_2.urlchannels.html
@@ -118,7 +118,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsensehost_v4_1.accounts.adclients.html b/docs/dyn/adsensehost_v4_1.accounts.adclients.html
index 5ba3f51..9fb1929 100644
--- a/docs/dyn/adsensehost_v4_1.accounts.adclients.html
+++ b/docs/dyn/adsensehost_v4_1.accounts.adclients.html
@@ -143,7 +143,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsensehost_v4_1.accounts.adunits.html b/docs/dyn/adsensehost_v4_1.accounts.adunits.html
index 37a3659..167fa1e 100644
--- a/docs/dyn/adsensehost_v4_1.accounts.adunits.html
+++ b/docs/dyn/adsensehost_v4_1.accounts.adunits.html
@@ -122,13 +122,13 @@
       "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
       "name": "A String", # Name of this ad unit.
       "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC).
-        "type": "A String", # Type of this ad unit.
+        "type": "A String", # Type of this ad unit. Possible values are TEXT, TEXT_IMAGE, IMAGE and LINK.
         "backupOption": { # The backup option to be used in instances where no ad is available.
-          "color": "A String", # Color to use when type is set to COLOR.
+          "color": "A String", # Color to use when type is set to COLOR. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
           "url": "A String", # URL to use when type is set to URL.
           "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
         },
-        "size": "A String", # Size of this ad unit.
+        "size": "A String", # Size of this ad unit. Size values are in the form SIZE_{width}_{height}.
       },
       "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
       "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC).
@@ -138,7 +138,7 @@
         "size": "A String", # Size of this ad unit.
       },
       "customStyle": { # Custom style information specific to this ad unit.
-        "corners": "A String", # The style of the corners in the ad.
+        "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
         "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
           "url": "A String", # The color of the ad url.
           "text": "A String", # The color of the ad text.
@@ -147,8 +147,8 @@
           "title": "A String", # The color of the ad title.
         },
         "font": { # The font which is included in the style.
-          "family": "A String", # The family of the font.
-          "size": "A String", # The size of the font.
+          "family": "A String", # The family of the font. Possible values are: ACCOUNT_DEFAULT_FAMILY, ADSENSE_DEFAULT_FAMILY, ARIAL, TIMES and VERDANA.
+          "size": "A String", # The size of the font. Possible values are: ACCOUNT_DEFAULT_SIZE, ADSENSE_DEFAULT_SIZE, SMALL, MEDIUM and LARGE.
         },
         "kind": "adsensehost#adStyle", # Kind this is, in this case adsensehost#adStyle.
       },
@@ -178,13 +178,13 @@
       "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
       "name": "A String", # Name of this ad unit.
       "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC).
-        "type": "A String", # Type of this ad unit.
+        "type": "A String", # Type of this ad unit. Possible values are TEXT, TEXT_IMAGE, IMAGE and LINK.
         "backupOption": { # The backup option to be used in instances where no ad is available.
-          "color": "A String", # Color to use when type is set to COLOR.
+          "color": "A String", # Color to use when type is set to COLOR. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
           "url": "A String", # URL to use when type is set to URL.
           "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
         },
-        "size": "A String", # Size of this ad unit.
+        "size": "A String", # Size of this ad unit. Size values are in the form SIZE_{width}_{height}.
       },
       "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
       "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC).
@@ -194,7 +194,7 @@
         "size": "A String", # Size of this ad unit.
       },
       "customStyle": { # Custom style information specific to this ad unit.
-        "corners": "A String", # The style of the corners in the ad.
+        "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
         "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
           "url": "A String", # The color of the ad url.
           "text": "A String", # The color of the ad text.
@@ -203,8 +203,8 @@
           "title": "A String", # The color of the ad title.
         },
         "font": { # The font which is included in the style.
-          "family": "A String", # The family of the font.
-          "size": "A String", # The size of the font.
+          "family": "A String", # The family of the font. Possible values are: ACCOUNT_DEFAULT_FAMILY, ADSENSE_DEFAULT_FAMILY, ARIAL, TIMES and VERDANA.
+          "size": "A String", # The size of the font. Possible values are: ACCOUNT_DEFAULT_SIZE, ADSENSE_DEFAULT_SIZE, SMALL, MEDIUM and LARGE.
         },
         "kind": "adsensehost#adStyle", # Kind this is, in this case adsensehost#adStyle.
       },
@@ -251,13 +251,13 @@
     "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
     "name": "A String", # Name of this ad unit.
     "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC).
-      "type": "A String", # Type of this ad unit.
+      "type": "A String", # Type of this ad unit. Possible values are TEXT, TEXT_IMAGE, IMAGE and LINK.
       "backupOption": { # The backup option to be used in instances where no ad is available.
-        "color": "A String", # Color to use when type is set to COLOR.
+        "color": "A String", # Color to use when type is set to COLOR. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # URL to use when type is set to URL.
         "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
       },
-      "size": "A String", # Size of this ad unit.
+      "size": "A String", # Size of this ad unit. Size values are in the form SIZE_{width}_{height}.
     },
     "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
     "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC).
@@ -267,7 +267,7 @@
       "size": "A String", # Size of this ad unit.
     },
     "customStyle": { # Custom style information specific to this ad unit.
-      "corners": "A String", # The style of the corners in the ad.
+      "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
       "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # The color of the ad url.
         "text": "A String", # The color of the ad text.
@@ -276,8 +276,8 @@
         "title": "A String", # The color of the ad title.
       },
       "font": { # The font which is included in the style.
-        "family": "A String", # The family of the font.
-        "size": "A String", # The size of the font.
+        "family": "A String", # The family of the font. Possible values are: ACCOUNT_DEFAULT_FAMILY, ADSENSE_DEFAULT_FAMILY, ARIAL, TIMES and VERDANA.
+        "size": "A String", # The size of the font. Possible values are: ACCOUNT_DEFAULT_SIZE, ADSENSE_DEFAULT_SIZE, SMALL, MEDIUM and LARGE.
       },
       "kind": "adsensehost#adStyle", # Kind this is, in this case adsensehost#adStyle.
     },
@@ -298,13 +298,13 @@
       "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
       "name": "A String", # Name of this ad unit.
       "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC).
-        "type": "A String", # Type of this ad unit.
+        "type": "A String", # Type of this ad unit. Possible values are TEXT, TEXT_IMAGE, IMAGE and LINK.
         "backupOption": { # The backup option to be used in instances where no ad is available.
-          "color": "A String", # Color to use when type is set to COLOR.
+          "color": "A String", # Color to use when type is set to COLOR. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
           "url": "A String", # URL to use when type is set to URL.
           "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
         },
-        "size": "A String", # Size of this ad unit.
+        "size": "A String", # Size of this ad unit. Size values are in the form SIZE_{width}_{height}.
       },
       "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
       "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC).
@@ -314,7 +314,7 @@
         "size": "A String", # Size of this ad unit.
       },
       "customStyle": { # Custom style information specific to this ad unit.
-        "corners": "A String", # The style of the corners in the ad.
+        "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
         "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
           "url": "A String", # The color of the ad url.
           "text": "A String", # The color of the ad text.
@@ -323,8 +323,8 @@
           "title": "A String", # The color of the ad title.
         },
         "font": { # The font which is included in the style.
-          "family": "A String", # The family of the font.
-          "size": "A String", # The size of the font.
+          "family": "A String", # The family of the font. Possible values are: ACCOUNT_DEFAULT_FAMILY, ADSENSE_DEFAULT_FAMILY, ARIAL, TIMES and VERDANA.
+          "size": "A String", # The size of the font. Possible values are: ACCOUNT_DEFAULT_SIZE, ADSENSE_DEFAULT_SIZE, SMALL, MEDIUM and LARGE.
         },
         "kind": "adsensehost#adStyle", # Kind this is, in this case adsensehost#adStyle.
       },
@@ -359,13 +359,13 @@
           "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
           "name": "A String", # Name of this ad unit.
           "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC).
-            "type": "A String", # Type of this ad unit.
+            "type": "A String", # Type of this ad unit. Possible values are TEXT, TEXT_IMAGE, IMAGE and LINK.
             "backupOption": { # The backup option to be used in instances where no ad is available.
-              "color": "A String", # Color to use when type is set to COLOR.
+              "color": "A String", # Color to use when type is set to COLOR. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
               "url": "A String", # URL to use when type is set to URL.
               "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
             },
-            "size": "A String", # Size of this ad unit.
+            "size": "A String", # Size of this ad unit. Size values are in the form SIZE_{width}_{height}.
           },
           "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
           "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC).
@@ -375,7 +375,7 @@
             "size": "A String", # Size of this ad unit.
           },
           "customStyle": { # Custom style information specific to this ad unit.
-            "corners": "A String", # The style of the corners in the ad.
+            "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
             "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
               "url": "A String", # The color of the ad url.
               "text": "A String", # The color of the ad text.
@@ -384,8 +384,8 @@
               "title": "A String", # The color of the ad title.
             },
             "font": { # The font which is included in the style.
-              "family": "A String", # The family of the font.
-              "size": "A String", # The size of the font.
+              "family": "A String", # The family of the font. Possible values are: ACCOUNT_DEFAULT_FAMILY, ADSENSE_DEFAULT_FAMILY, ARIAL, TIMES and VERDANA.
+              "size": "A String", # The size of the font. Possible values are: ACCOUNT_DEFAULT_SIZE, ADSENSE_DEFAULT_SIZE, SMALL, MEDIUM and LARGE.
             },
             "kind": "adsensehost#adStyle", # Kind this is, in this case adsensehost#adStyle.
           },
@@ -407,7 +407,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
@@ -432,13 +432,13 @@
     "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
     "name": "A String", # Name of this ad unit.
     "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC).
-      "type": "A String", # Type of this ad unit.
+      "type": "A String", # Type of this ad unit. Possible values are TEXT, TEXT_IMAGE, IMAGE and LINK.
       "backupOption": { # The backup option to be used in instances where no ad is available.
-        "color": "A String", # Color to use when type is set to COLOR.
+        "color": "A String", # Color to use when type is set to COLOR. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # URL to use when type is set to URL.
         "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
       },
-      "size": "A String", # Size of this ad unit.
+      "size": "A String", # Size of this ad unit. Size values are in the form SIZE_{width}_{height}.
     },
     "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
     "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC).
@@ -448,7 +448,7 @@
       "size": "A String", # Size of this ad unit.
     },
     "customStyle": { # Custom style information specific to this ad unit.
-      "corners": "A String", # The style of the corners in the ad.
+      "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
       "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # The color of the ad url.
         "text": "A String", # The color of the ad text.
@@ -457,8 +457,8 @@
         "title": "A String", # The color of the ad title.
       },
       "font": { # The font which is included in the style.
-        "family": "A String", # The family of the font.
-        "size": "A String", # The size of the font.
+        "family": "A String", # The family of the font. Possible values are: ACCOUNT_DEFAULT_FAMILY, ADSENSE_DEFAULT_FAMILY, ARIAL, TIMES and VERDANA.
+        "size": "A String", # The size of the font. Possible values are: ACCOUNT_DEFAULT_SIZE, ADSENSE_DEFAULT_SIZE, SMALL, MEDIUM and LARGE.
       },
       "kind": "adsensehost#adStyle", # Kind this is, in this case adsensehost#adStyle.
     },
@@ -479,13 +479,13 @@
       "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
       "name": "A String", # Name of this ad unit.
       "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC).
-        "type": "A String", # Type of this ad unit.
+        "type": "A String", # Type of this ad unit. Possible values are TEXT, TEXT_IMAGE, IMAGE and LINK.
         "backupOption": { # The backup option to be used in instances where no ad is available.
-          "color": "A String", # Color to use when type is set to COLOR.
+          "color": "A String", # Color to use when type is set to COLOR. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
           "url": "A String", # URL to use when type is set to URL.
           "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
         },
-        "size": "A String", # Size of this ad unit.
+        "size": "A String", # Size of this ad unit. Size values are in the form SIZE_{width}_{height}.
       },
       "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
       "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC).
@@ -495,7 +495,7 @@
         "size": "A String", # Size of this ad unit.
       },
       "customStyle": { # Custom style information specific to this ad unit.
-        "corners": "A String", # The style of the corners in the ad.
+        "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
         "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
           "url": "A String", # The color of the ad url.
           "text": "A String", # The color of the ad text.
@@ -504,8 +504,8 @@
           "title": "A String", # The color of the ad title.
         },
         "font": { # The font which is included in the style.
-          "family": "A String", # The family of the font.
-          "size": "A String", # The size of the font.
+          "family": "A String", # The family of the font. Possible values are: ACCOUNT_DEFAULT_FAMILY, ADSENSE_DEFAULT_FAMILY, ARIAL, TIMES and VERDANA.
+          "size": "A String", # The size of the font. Possible values are: ACCOUNT_DEFAULT_SIZE, ADSENSE_DEFAULT_SIZE, SMALL, MEDIUM and LARGE.
         },
         "kind": "adsensehost#adStyle", # Kind this is, in this case adsensehost#adStyle.
       },
@@ -533,13 +533,13 @@
     "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
     "name": "A String", # Name of this ad unit.
     "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC).
-      "type": "A String", # Type of this ad unit.
+      "type": "A String", # Type of this ad unit. Possible values are TEXT, TEXT_IMAGE, IMAGE and LINK.
       "backupOption": { # The backup option to be used in instances where no ad is available.
-        "color": "A String", # Color to use when type is set to COLOR.
+        "color": "A String", # Color to use when type is set to COLOR. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # URL to use when type is set to URL.
         "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
       },
-      "size": "A String", # Size of this ad unit.
+      "size": "A String", # Size of this ad unit. Size values are in the form SIZE_{width}_{height}.
     },
     "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
     "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC).
@@ -549,7 +549,7 @@
       "size": "A String", # Size of this ad unit.
     },
     "customStyle": { # Custom style information specific to this ad unit.
-      "corners": "A String", # The style of the corners in the ad.
+      "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
       "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # The color of the ad url.
         "text": "A String", # The color of the ad text.
@@ -558,8 +558,8 @@
         "title": "A String", # The color of the ad title.
       },
       "font": { # The font which is included in the style.
-        "family": "A String", # The family of the font.
-        "size": "A String", # The size of the font.
+        "family": "A String", # The family of the font. Possible values are: ACCOUNT_DEFAULT_FAMILY, ADSENSE_DEFAULT_FAMILY, ARIAL, TIMES and VERDANA.
+        "size": "A String", # The size of the font. Possible values are: ACCOUNT_DEFAULT_SIZE, ADSENSE_DEFAULT_SIZE, SMALL, MEDIUM and LARGE.
       },
       "kind": "adsensehost#adStyle", # Kind this is, in this case adsensehost#adStyle.
     },
@@ -580,13 +580,13 @@
       "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
       "name": "A String", # Name of this ad unit.
       "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC).
-        "type": "A String", # Type of this ad unit.
+        "type": "A String", # Type of this ad unit. Possible values are TEXT, TEXT_IMAGE, IMAGE and LINK.
         "backupOption": { # The backup option to be used in instances where no ad is available.
-          "color": "A String", # Color to use when type is set to COLOR.
+          "color": "A String", # Color to use when type is set to COLOR. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
           "url": "A String", # URL to use when type is set to URL.
           "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
         },
-        "size": "A String", # Size of this ad unit.
+        "size": "A String", # Size of this ad unit. Size values are in the form SIZE_{width}_{height}.
       },
       "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
       "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC).
@@ -596,7 +596,7 @@
         "size": "A String", # Size of this ad unit.
       },
       "customStyle": { # Custom style information specific to this ad unit.
-        "corners": "A String", # The style of the corners in the ad.
+        "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
         "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
           "url": "A String", # The color of the ad url.
           "text": "A String", # The color of the ad text.
@@ -605,8 +605,8 @@
           "title": "A String", # The color of the ad title.
         },
         "font": { # The font which is included in the style.
-          "family": "A String", # The family of the font.
-          "size": "A String", # The size of the font.
+          "family": "A String", # The family of the font. Possible values are: ACCOUNT_DEFAULT_FAMILY, ADSENSE_DEFAULT_FAMILY, ARIAL, TIMES and VERDANA.
+          "size": "A String", # The size of the font. Possible values are: ACCOUNT_DEFAULT_SIZE, ADSENSE_DEFAULT_SIZE, SMALL, MEDIUM and LARGE.
         },
         "kind": "adsensehost#adStyle", # Kind this is, in this case adsensehost#adStyle.
       },
diff --git a/docs/dyn/adsensehost_v4_1.adclients.html b/docs/dyn/adsensehost_v4_1.adclients.html
index d266826..57422e4 100644
--- a/docs/dyn/adsensehost_v4_1.adclients.html
+++ b/docs/dyn/adsensehost_v4_1.adclients.html
@@ -141,7 +141,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsensehost_v4_1.customchannels.html b/docs/dyn/adsensehost_v4_1.customchannels.html
index 2981c32..a0cd089 100644
--- a/docs/dyn/adsensehost_v4_1.customchannels.html
+++ b/docs/dyn/adsensehost_v4_1.customchannels.html
@@ -200,7 +200,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/adsensehost_v4_1.urlchannels.html b/docs/dyn/adsensehost_v4_1.urlchannels.html
index 41f9945..fa85805 100644
--- a/docs/dyn/adsensehost_v4_1.urlchannels.html
+++ b/docs/dyn/adsensehost_v4_1.urlchannels.html
@@ -168,7 +168,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/analytics_v3.management.profiles.html b/docs/dyn/analytics_v3.management.profiles.html
index 7576293..3b58d47 100644
--- a/docs/dyn/analytics_v3.management.profiles.html
+++ b/docs/dyn/analytics_v3.management.profiles.html
@@ -118,6 +118,7 @@
           "href": "A String", # Link to the web property to which this profile belongs.
           "type": "analytics#webproperty", # Value is "analytics#webproperty".
         },
+        "type": "A String", # Profile type. Supported types: WEB or APP.
         "id": "A String", # Profile ID.
         "selfLink": "A String", # Link for this profile.
         "accountId": "A String", # Account ID to which this profile belongs.
diff --git a/docs/dyn/bigquery_v2.datasets.html b/docs/dyn/bigquery_v2.datasets.html
index 46edc17..50303a2 100644
--- a/docs/dyn/bigquery_v2.datasets.html
+++ b/docs/dyn/bigquery_v2.datasets.html
@@ -258,7 +258,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/bigquery_v2.jobs.html b/docs/dyn/bigquery_v2.jobs.html
index 0689f9c..70b0098 100644
--- a/docs/dyn/bigquery_v2.jobs.html
+++ b/docs/dyn/bigquery_v2.jobs.html
@@ -202,6 +202,7 @@
           "writeDisposition": "A String", # [Optional] Whether to overwrite an existing table (WRITE_TRUNCATE), append to an existing table (WRITE_APPEND), or require that the the table is empty (WRITE_EMPTY). Default is WRITE_EMPTY.
           "createDisposition": "A String", # [Optional] Whether to create the table if it doesn't already exist (CREATE_IF_NEEDED) or to require the table already exist (CREATE_NEVER). Default is CREATE_IF_NEEDED.
           "query": "A String", # [Required] BigQuery SQL query to execute.
+          "preserveNulls": True or False, # [Experimental] If set, preserve null values in table data, rather than mapping null values to the column's default value. This flag currently defaults to false, but the default will soon be changed to true. Shortly afterward, this flag will be removed completely. Please specify true if possible, and false only if you need to force the old behavior while updating client code.
         },
         "copy": { # [Pick one] Copies a table.
           "createDisposition": "A String", # [Optional] Whether or not to create a new table, if none exists.
@@ -391,6 +392,7 @@
         "writeDisposition": "A String", # [Optional] Whether to overwrite an existing table (WRITE_TRUNCATE), append to an existing table (WRITE_APPEND), or require that the the table is empty (WRITE_EMPTY). Default is WRITE_EMPTY.
         "createDisposition": "A String", # [Optional] Whether to create the table if it doesn't already exist (CREATE_IF_NEEDED) or to require the table already exist (CREATE_NEVER). Default is CREATE_IF_NEEDED.
         "query": "A String", # [Required] BigQuery SQL query to execute.
+        "preserveNulls": True or False, # [Experimental] If set, preserve null values in table data, rather than mapping null values to the column's default value. This flag currently defaults to false, but the default will soon be changed to true. Shortly afterward, this flag will be removed completely. Please specify true if possible, and false only if you need to force the old behavior while updating client code.
       },
       "copy": { # [Pick one] Copies a table.
         "createDisposition": "A String", # [Optional] Whether or not to create a new table, if none exists.
@@ -528,6 +530,7 @@
           "writeDisposition": "A String", # [Optional] Whether to overwrite an existing table (WRITE_TRUNCATE), append to an existing table (WRITE_APPEND), or require that the the table is empty (WRITE_EMPTY). Default is WRITE_EMPTY.
           "createDisposition": "A String", # [Optional] Whether to create the table if it doesn't already exist (CREATE_IF_NEEDED) or to require the table already exist (CREATE_NEVER). Default is CREATE_IF_NEEDED.
           "query": "A String", # [Required] BigQuery SQL query to execute.
+          "preserveNulls": True or False, # [Experimental] If set, preserve null values in table data, rather than mapping null values to the column's default value. This flag currently defaults to false, but the default will soon be changed to true. Shortly afterward, this flag will be removed completely. Please specify true if possible, and false only if you need to force the old behavior while updating client code.
         },
         "copy": { # [Pick one] Copies a table.
           "createDisposition": "A String", # [Optional] Whether or not to create a new table, if none exists.
@@ -689,6 +692,7 @@
             "writeDisposition": "A String", # [Optional] Whether to overwrite an existing table (WRITE_TRUNCATE), append to an existing table (WRITE_APPEND), or require that the the table is empty (WRITE_EMPTY). Default is WRITE_EMPTY.
             "createDisposition": "A String", # [Optional] Whether to create the table if it doesn't already exist (CREATE_IF_NEEDED) or to require the table already exist (CREATE_NEVER). Default is CREATE_IF_NEEDED.
             "query": "A String", # [Required] BigQuery SQL query to execute.
+            "preserveNulls": True or False, # [Experimental] If set, preserve null values in table data, rather than mapping null values to the column's default value. This flag currently defaults to false, but the default will soon be changed to true. Shortly afterward, this flag will be removed completely. Please specify true if possible, and false only if you need to force the old behavior while updating client code.
           },
           "copy": { # [Pick one] Copies a table.
             "createDisposition": "A String", # [Optional] Whether or not to create a new table, if none exists.
@@ -742,7 +746,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
@@ -764,6 +768,7 @@
     },
     "maxResults": 42, # [Optional] The maximum number of results to return per page of results. If the response list exceeds the maximum response size for a single response, you will have to page through the results. Default is to return the maximum response size.
     "query": "A String", # [Required] A query string, following the BigQuery query syntax of the query to execute. Table names should be qualified by dataset name in the format projectId:datasetId.tableId unless you specify the defaultDataset value. If the table is in the same project as the job, you can omit the project ID. Example: SELECT f1 FROM myProjectId:myDatasetId.myTableId.
+    "preserveNulls": True or False, # [Experimental] If set, preserve null values in table data, rather than mapping null values to the column's default value. This flag currently defaults to false, but the default will soon be changed to true. Shortly afterward, this flag will be removed completely. Please specify true if possible, and false only if you need to force the old behavior while updating client code.
   }
 
 
diff --git a/docs/dyn/bigquery_v2.projects.html b/docs/dyn/bigquery_v2.projects.html
index 0503e50..2f06826 100644
--- a/docs/dyn/bigquery_v2.projects.html
+++ b/docs/dyn/bigquery_v2.projects.html
@@ -121,7 +121,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/bigquery_v2.tables.html b/docs/dyn/bigquery_v2.tables.html
index 7667532..52bd8ed 100644
--- a/docs/dyn/bigquery_v2.tables.html
+++ b/docs/dyn/bigquery_v2.tables.html
@@ -272,7 +272,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/blogger_v3.comments.html b/docs/dyn/blogger_v3.comments.html
index ab28af7..6c8356a 100644
--- a/docs/dyn/blogger_v3.comments.html
+++ b/docs/dyn/blogger_v3.comments.html
@@ -184,7 +184,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/blogger_v3.posts.html b/docs/dyn/blogger_v3.posts.html
index ba38070..19d99be 100644
--- a/docs/dyn/blogger_v3.posts.html
+++ b/docs/dyn/blogger_v3.posts.html
@@ -502,7 +502,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/books_v1.bookshelves.volumes.html b/docs/dyn/books_v1.bookshelves.volumes.html
index 7a302a0..a5a30aa 100644
--- a/docs/dyn/books_v1.bookshelves.volumes.html
+++ b/docs/dyn/books_v1.bookshelves.volumes.html
@@ -151,39 +151,7 @@
           },
         },
         "etag": "A String", # Opaque identifier for a specific version of a volume resource. (In LITE projection)
-        "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
-          "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
-          "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
-          "review": { # This user's review of this volume, if one exists.
-            "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
-            "kind": "books#review", # Resource type for a review.
-            "author": { # Author of this review.
-              "displayName": "A String", # Name of this person.
-            },
-            "title": "A String", # Title for this review.
-            "volumeId": "A String", # Volume that this review is for.
-            "content": "A String", # Review text.
-            "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
-              "extraDescription": "A String", # Extra text about the source of the review.
-              "url": "A String", # URL of the source of the review.
-              "description": "A String", # Name of the source.
-            },
-            "date": "A String", # Date of this review.
-            "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
-            "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
-          },
-          "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
-          "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
-            "kind": "books#readingPosition", # Resource type for a reading position.
-            "gbImagePosition": "A String", # Position in a volume for image-based content.
-            "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
-            "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
-            "volumeId": "A String", # Volume id associated with this reading position.
-            "pdfPosition": "A String", # Position in a PDF file.
-            "gbTextPosition": "A String", # Position in a volume for text-based content.
-          },
-          "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
-        },
+        "selfLink": "A String", # URL to this resource. (In LITE projection.)
         "volumeInfo": { # General volume information.
           "publisher": "A String", # Publisher of this volume. (In LITE projection.)
           "subtitle": "A String", # Volume subtitle. (In LITE projection.)
@@ -226,8 +194,51 @@
           ],
           "averageRating": 3.14, # The mean review rating for this volume. (min = 1.0, max = 5.0)
         },
+        "recommendedInfo": { # Recommendation related information for this volume.
+          "explanation": "A String", # A text explaining why this volume is recommended.
+        },
         "id": "A String", # Unique identifier for a volume. (In LITE projection.)
-        "selfLink": "A String", # URL to this resource. (In LITE projection.)
+        "layerInfo": { # What layers exist in this volume and high level information about them.
+          "layers": [ # A layer should appear here if and only if the layer exists for this book.
+            {
+              "volumeAnnotationsVersion": "A String", # The current version of this layer's volume annotations. Note that this version applies only to the data in the books.layers.volumeAnnotations.* responses. The actual annotation data is versioned separately.
+              "layerId": "A String", # The layer id of this layer (e.g. "geo").
+            },
+          ],
+        },
+        "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
+          "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+          "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+          "review": { # This user's review of this volume, if one exists.
+            "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
+            "kind": "books#review", # Resource type for a review.
+            "author": { # Author of this review.
+              "displayName": "A String", # Name of this person.
+            },
+            "title": "A String", # Title for this review.
+            "volumeId": "A String", # Volume that this review is for.
+            "content": "A String", # Review text.
+            "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
+              "extraDescription": "A String", # Extra text about the source of the review.
+              "url": "A String", # URL of the source of the review.
+              "description": "A String", # Name of the source.
+            },
+            "date": "A String", # Date of this review.
+            "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
+            "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
+          },
+          "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+          "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+            "kind": "books#readingPosition", # Resource type for a reading position.
+            "gbImagePosition": "A String", # Position in a volume for image-based content.
+            "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+            "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+            "volumeId": "A String", # Volume id associated with this reading position.
+            "pdfPosition": "A String", # Position in a PDF file.
+            "gbTextPosition": "A String", # Position in a volume for text-based content.
+          },
+          "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+        },
       },
     ],
     "kind": "books#volumes", # Resource type.
diff --git a/docs/dyn/books_v1.layers.annotationData.html b/docs/dyn/books_v1.layers.annotationData.html
index 2e83b0e..e0772aa 100644
--- a/docs/dyn/books_v1.layers.annotationData.html
+++ b/docs/dyn/books_v1.layers.annotationData.html
@@ -168,7 +168,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/books_v1.layers.html b/docs/dyn/books_v1.layers.html
index 717951e..df07137 100644
--- a/docs/dyn/books_v1.layers.html
+++ b/docs/dyn/books_v1.layers.html
@@ -117,6 +117,7 @@
     ],
     "contentVersion": "A String", # The content version this resource is for.
     "layerId": "A String", # The layer id for this summary.
+    "volumeAnnotationsVersion": "A String", # The current version of this layer's volume annotations. Note that this version applies only to the data in the books.layers.volumeAnnotations.* responses. The actual annotation data is versioned separately.
     "annotationsDataLink": "A String", # Link to get data for this annotation.
     "selfLink": "A String", # URL to this resource.
   }</pre>
@@ -152,6 +153,7 @@
         ],
         "contentVersion": "A String", # The content version this resource is for.
         "layerId": "A String", # The layer id for this summary.
+        "volumeAnnotationsVersion": "A String", # The current version of this layer's volume annotations. Note that this version applies only to the data in the books.layers.volumeAnnotations.* responses. The actual annotation data is versioned separately.
         "annotationsDataLink": "A String", # Link to get data for this annotation.
         "selfLink": "A String", # URL to this resource.
       },
diff --git a/docs/dyn/books_v1.layers.volumeAnnotations.html b/docs/dyn/books_v1.layers.volumeAnnotations.html
index 1f62c1c..72b7e34 100644
--- a/docs/dyn/books_v1.layers.volumeAnnotations.html
+++ b/docs/dyn/books_v1.layers.volumeAnnotations.html
@@ -78,7 +78,7 @@
   <code><a href="#get">get(volumeId, layerId, annotationId, source=None, locale=None)</a></code></p>
 <p class="firstline">Gets the volume annotation.</p>
 <p class="toc_element">
-  <code><a href="#list">list(volumeId, layerId, contentVersion, endPosition=None, locale=None, startOffset=None, pageToken=None, updatedMin=None, endOffset=None, showDeleted=None, updatedMax=None, maxResults=None, startPosition=None, source=None)</a></code></p>
+  <code><a href="#list">list(volumeId, layerId, contentVersion, endPosition=None, locale=None, startOffset=None, volumeAnnotationsVersion=None, pageToken=None, updatedMin=None, endOffset=None, showDeleted=None, updatedMax=None, maxResults=None, startPosition=None, source=None)</a></code></p>
 <p class="firstline">Gets the volume annotations for a volume and layer.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -139,7 +139,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(volumeId, layerId, contentVersion, endPosition=None, locale=None, startOffset=None, pageToken=None, updatedMin=None, endOffset=None, showDeleted=None, updatedMax=None, maxResults=None, startPosition=None, source=None)</code>
+    <code class="details" id="list">list(volumeId, layerId, contentVersion, endPosition=None, locale=None, startOffset=None, volumeAnnotationsVersion=None, pageToken=None, updatedMin=None, endOffset=None, showDeleted=None, updatedMax=None, maxResults=None, startPosition=None, source=None)</code>
   <pre>Gets the volume annotations for a volume and layer.
 
 Args:
@@ -149,6 +149,7 @@
   endPosition: string, The end position to end retrieving data from.
   locale: string, The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'.
   startOffset: string, The start offset to start retrieving data from.
+  volumeAnnotationsVersion: string, The version of the volume annotations that you are requesting.
   pageToken: string, The value of the nextToken from the previous page.
   updatedMin: string, RFC 3339 timestamp to restrict to items updated since this timestamp (inclusive).
   endOffset: string, The end offset to end retrieving data from.
@@ -204,6 +205,7 @@
       },
     ],
     "kind": "books#volumeannotations", # Resource type
+    "version": "A String", # The version string for all of the volume annotations in this layer (not just the ones in this response). Note: the version string doesn't apply to the annotation data, just the information in this response (e.g. the location of annotations in the book).
     "totalItems": 42, # The total number of volume annotations found.
   }</pre>
 </div>
@@ -219,7 +221,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/books_v1.myconfig.html b/docs/dyn/books_v1.myconfig.html
index 4b99081..f81aacd 100644
--- a/docs/dyn/books_v1.myconfig.html
+++ b/docs/dyn/books_v1.myconfig.html
@@ -237,39 +237,7 @@
           },
         },
         "etag": "A String", # Opaque identifier for a specific version of a volume resource. (In LITE projection)
-        "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
-          "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
-          "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
-          "review": { # This user's review of this volume, if one exists.
-            "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
-            "kind": "books#review", # Resource type for a review.
-            "author": { # Author of this review.
-              "displayName": "A String", # Name of this person.
-            },
-            "title": "A String", # Title for this review.
-            "volumeId": "A String", # Volume that this review is for.
-            "content": "A String", # Review text.
-            "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
-              "extraDescription": "A String", # Extra text about the source of the review.
-              "url": "A String", # URL of the source of the review.
-              "description": "A String", # Name of the source.
-            },
-            "date": "A String", # Date of this review.
-            "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
-            "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
-          },
-          "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
-          "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
-            "kind": "books#readingPosition", # Resource type for a reading position.
-            "gbImagePosition": "A String", # Position in a volume for image-based content.
-            "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
-            "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
-            "volumeId": "A String", # Volume id associated with this reading position.
-            "pdfPosition": "A String", # Position in a PDF file.
-            "gbTextPosition": "A String", # Position in a volume for text-based content.
-          },
-          "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
-        },
+        "selfLink": "A String", # URL to this resource. (In LITE projection.)
         "volumeInfo": { # General volume information.
           "publisher": "A String", # Publisher of this volume. (In LITE projection.)
           "subtitle": "A String", # Volume subtitle. (In LITE projection.)
@@ -312,8 +280,51 @@
           ],
           "averageRating": 3.14, # The mean review rating for this volume. (min = 1.0, max = 5.0)
         },
+        "recommendedInfo": { # Recommendation related information for this volume.
+          "explanation": "A String", # A text explaining why this volume is recommended.
+        },
         "id": "A String", # Unique identifier for a volume. (In LITE projection.)
-        "selfLink": "A String", # URL to this resource. (In LITE projection.)
+        "layerInfo": { # What layers exist in this volume and high level information about them.
+          "layers": [ # A layer should appear here if and only if the layer exists for this book.
+            {
+              "volumeAnnotationsVersion": "A String", # The current version of this layer's volume annotations. Note that this version applies only to the data in the books.layers.volumeAnnotations.* responses. The actual annotation data is versioned separately.
+              "layerId": "A String", # The layer id of this layer (e.g. "geo").
+            },
+          ],
+        },
+        "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
+          "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+          "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+          "review": { # This user's review of this volume, if one exists.
+            "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
+            "kind": "books#review", # Resource type for a review.
+            "author": { # Author of this review.
+              "displayName": "A String", # Name of this person.
+            },
+            "title": "A String", # Title for this review.
+            "volumeId": "A String", # Volume that this review is for.
+            "content": "A String", # Review text.
+            "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
+              "extraDescription": "A String", # Extra text about the source of the review.
+              "url": "A String", # URL of the source of the review.
+              "description": "A String", # Name of the source.
+            },
+            "date": "A String", # Date of this review.
+            "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
+            "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
+          },
+          "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+          "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+            "kind": "books#readingPosition", # Resource type for a reading position.
+            "gbImagePosition": "A String", # Position in a volume for image-based content.
+            "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+            "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+            "volumeId": "A String", # Volume id associated with this reading position.
+            "pdfPosition": "A String", # Position in a PDF file.
+            "gbTextPosition": "A String", # Position in a volume for text-based content.
+          },
+          "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+        },
       },
     ],
     "kind": "books#volumes", # Resource type.
diff --git a/docs/dyn/books_v1.mylibrary.annotations.html b/docs/dyn/books_v1.mylibrary.annotations.html
index a85df74..69c36a7 100644
--- a/docs/dyn/books_v1.mylibrary.annotations.html
+++ b/docs/dyn/books_v1.mylibrary.annotations.html
@@ -411,7 +411,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/books_v1.mylibrary.bookshelves.volumes.html b/docs/dyn/books_v1.mylibrary.bookshelves.volumes.html
index db3529e..2d3d5a3 100644
--- a/docs/dyn/books_v1.mylibrary.bookshelves.volumes.html
+++ b/docs/dyn/books_v1.mylibrary.bookshelves.volumes.html
@@ -156,39 +156,7 @@
           },
         },
         "etag": "A String", # Opaque identifier for a specific version of a volume resource. (In LITE projection)
-        "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
-          "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
-          "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
-          "review": { # This user's review of this volume, if one exists.
-            "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
-            "kind": "books#review", # Resource type for a review.
-            "author": { # Author of this review.
-              "displayName": "A String", # Name of this person.
-            },
-            "title": "A String", # Title for this review.
-            "volumeId": "A String", # Volume that this review is for.
-            "content": "A String", # Review text.
-            "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
-              "extraDescription": "A String", # Extra text about the source of the review.
-              "url": "A String", # URL of the source of the review.
-              "description": "A String", # Name of the source.
-            },
-            "date": "A String", # Date of this review.
-            "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
-            "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
-          },
-          "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
-          "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
-            "kind": "books#readingPosition", # Resource type for a reading position.
-            "gbImagePosition": "A String", # Position in a volume for image-based content.
-            "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
-            "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
-            "volumeId": "A String", # Volume id associated with this reading position.
-            "pdfPosition": "A String", # Position in a PDF file.
-            "gbTextPosition": "A String", # Position in a volume for text-based content.
-          },
-          "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
-        },
+        "selfLink": "A String", # URL to this resource. (In LITE projection.)
         "volumeInfo": { # General volume information.
           "publisher": "A String", # Publisher of this volume. (In LITE projection.)
           "subtitle": "A String", # Volume subtitle. (In LITE projection.)
@@ -231,8 +199,51 @@
           ],
           "averageRating": 3.14, # The mean review rating for this volume. (min = 1.0, max = 5.0)
         },
+        "recommendedInfo": { # Recommendation related information for this volume.
+          "explanation": "A String", # A text explaining why this volume is recommended.
+        },
         "id": "A String", # Unique identifier for a volume. (In LITE projection.)
-        "selfLink": "A String", # URL to this resource. (In LITE projection.)
+        "layerInfo": { # What layers exist in this volume and high level information about them.
+          "layers": [ # A layer should appear here if and only if the layer exists for this book.
+            {
+              "volumeAnnotationsVersion": "A String", # The current version of this layer's volume annotations. Note that this version applies only to the data in the books.layers.volumeAnnotations.* responses. The actual annotation data is versioned separately.
+              "layerId": "A String", # The layer id of this layer (e.g. "geo").
+            },
+          ],
+        },
+        "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
+          "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+          "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+          "review": { # This user's review of this volume, if one exists.
+            "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
+            "kind": "books#review", # Resource type for a review.
+            "author": { # Author of this review.
+              "displayName": "A String", # Name of this person.
+            },
+            "title": "A String", # Title for this review.
+            "volumeId": "A String", # Volume that this review is for.
+            "content": "A String", # Review text.
+            "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
+              "extraDescription": "A String", # Extra text about the source of the review.
+              "url": "A String", # URL of the source of the review.
+              "description": "A String", # Name of the source.
+            },
+            "date": "A String", # Date of this review.
+            "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
+            "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
+          },
+          "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+          "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+            "kind": "books#readingPosition", # Resource type for a reading position.
+            "gbImagePosition": "A String", # Position in a volume for image-based content.
+            "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+            "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+            "volumeId": "A String", # Volume id associated with this reading position.
+            "pdfPosition": "A String", # Position in a PDF file.
+            "gbTextPosition": "A String", # Position in a volume for text-based content.
+          },
+          "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+        },
       },
     ],
     "kind": "books#volumes", # Resource type.
diff --git a/docs/dyn/books_v1.mylibrary.readingpositions.html b/docs/dyn/books_v1.mylibrary.readingpositions.html
index d32d978..af47982 100644
--- a/docs/dyn/books_v1.mylibrary.readingpositions.html
+++ b/docs/dyn/books_v1.mylibrary.readingpositions.html
@@ -78,7 +78,7 @@
   <code><a href="#get">get(volumeId, source=None, contentVersion=None)</a></code></p>
 <p class="firstline">Retrieves my reading position information for a volume.</p>
 <p class="toc_element">
-  <code><a href="#setPosition">setPosition(volumeId, timestamp, position, source=None, contentVersion=None, action=None)</a></code></p>
+  <code><a href="#setPosition">setPosition(volumeId, timestamp, position, deviceCookie=None, source=None, contentVersion=None, action=None)</a></code></p>
 <p class="firstline">Sets my reading position information for a volume.</p>
 <h3>Method Details</h3>
 <div class="method">
@@ -105,13 +105,14 @@
 </div>
 
 <div class="method">
-    <code class="details" id="setPosition">setPosition(volumeId, timestamp, position, source=None, contentVersion=None, action=None)</code>
+    <code class="details" id="setPosition">setPosition(volumeId, timestamp, position, deviceCookie=None, source=None, contentVersion=None, action=None)</code>
   <pre>Sets my reading position information for a volume.
 
 Args:
   volumeId: string, ID of volume for which to update the reading position. (required)
   timestamp: string, RFC 3339 UTC format timestamp associated with this reading position. (required)
   position: string, Position string for the new volume reading position. (required)
+  deviceCookie: string, Random persistent device cookie optional on set position.
   source: string, String to identify the originator of this request.
   contentVersion: string, Volume content version for which this reading position applies.
   action: string, Action that caused this reading position to be set.
diff --git a/docs/dyn/books_v1.volumes.associated.html b/docs/dyn/books_v1.volumes.associated.html
index cca8e96..3305ed9 100644
--- a/docs/dyn/books_v1.volumes.associated.html
+++ b/docs/dyn/books_v1.volumes.associated.html
@@ -152,39 +152,7 @@
           },
         },
         "etag": "A String", # Opaque identifier for a specific version of a volume resource. (In LITE projection)
-        "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
-          "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
-          "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
-          "review": { # This user's review of this volume, if one exists.
-            "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
-            "kind": "books#review", # Resource type for a review.
-            "author": { # Author of this review.
-              "displayName": "A String", # Name of this person.
-            },
-            "title": "A String", # Title for this review.
-            "volumeId": "A String", # Volume that this review is for.
-            "content": "A String", # Review text.
-            "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
-              "extraDescription": "A String", # Extra text about the source of the review.
-              "url": "A String", # URL of the source of the review.
-              "description": "A String", # Name of the source.
-            },
-            "date": "A String", # Date of this review.
-            "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
-            "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
-          },
-          "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
-          "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
-            "kind": "books#readingPosition", # Resource type for a reading position.
-            "gbImagePosition": "A String", # Position in a volume for image-based content.
-            "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
-            "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
-            "volumeId": "A String", # Volume id associated with this reading position.
-            "pdfPosition": "A String", # Position in a PDF file.
-            "gbTextPosition": "A String", # Position in a volume for text-based content.
-          },
-          "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
-        },
+        "selfLink": "A String", # URL to this resource. (In LITE projection.)
         "volumeInfo": { # General volume information.
           "publisher": "A String", # Publisher of this volume. (In LITE projection.)
           "subtitle": "A String", # Volume subtitle. (In LITE projection.)
@@ -227,8 +195,51 @@
           ],
           "averageRating": 3.14, # The mean review rating for this volume. (min = 1.0, max = 5.0)
         },
+        "recommendedInfo": { # Recommendation related information for this volume.
+          "explanation": "A String", # A text explaining why this volume is recommended.
+        },
         "id": "A String", # Unique identifier for a volume. (In LITE projection.)
-        "selfLink": "A String", # URL to this resource. (In LITE projection.)
+        "layerInfo": { # What layers exist in this volume and high level information about them.
+          "layers": [ # A layer should appear here if and only if the layer exists for this book.
+            {
+              "volumeAnnotationsVersion": "A String", # The current version of this layer's volume annotations. Note that this version applies only to the data in the books.layers.volumeAnnotations.* responses. The actual annotation data is versioned separately.
+              "layerId": "A String", # The layer id of this layer (e.g. "geo").
+            },
+          ],
+        },
+        "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
+          "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+          "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+          "review": { # This user's review of this volume, if one exists.
+            "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
+            "kind": "books#review", # Resource type for a review.
+            "author": { # Author of this review.
+              "displayName": "A String", # Name of this person.
+            },
+            "title": "A String", # Title for this review.
+            "volumeId": "A String", # Volume that this review is for.
+            "content": "A String", # Review text.
+            "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
+              "extraDescription": "A String", # Extra text about the source of the review.
+              "url": "A String", # URL of the source of the review.
+              "description": "A String", # Name of the source.
+            },
+            "date": "A String", # Date of this review.
+            "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
+            "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
+          },
+          "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+          "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+            "kind": "books#readingPosition", # Resource type for a reading position.
+            "gbImagePosition": "A String", # Position in a volume for image-based content.
+            "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+            "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+            "volumeId": "A String", # Volume id associated with this reading position.
+            "pdfPosition": "A String", # Position in a PDF file.
+            "gbTextPosition": "A String", # Position in a volume for text-based content.
+          },
+          "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+        },
       },
     ],
     "kind": "books#volumes", # Resource type.
diff --git a/docs/dyn/books_v1.volumes.html b/docs/dyn/books_v1.volumes.html
index 527ceb3..a23eea2 100644
--- a/docs/dyn/books_v1.volumes.html
+++ b/docs/dyn/books_v1.volumes.html
@@ -80,6 +80,11 @@
 <p class="firstline">Returns the associated Resource.</p>
 
 <p class="toc_element">
+  <code><a href="books_v1.volumes.recommended.html">recommended()</a></code>
+</p>
+<p class="firstline">Returns the recommended Resource.</p>
+
+<p class="toc_element">
   <code><a href="#get">get(volumeId, projection=None, source=None, country=None, partner=None)</a></code></p>
 <p class="firstline">Gets volume information for a single volume.</p>
 <p class="toc_element">
@@ -158,39 +163,7 @@
       },
     },
     "etag": "A String", # Opaque identifier for a specific version of a volume resource. (In LITE projection)
-    "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
-      "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
-      "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
-      "review": { # This user's review of this volume, if one exists.
-        "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
-        "kind": "books#review", # Resource type for a review.
-        "author": { # Author of this review.
-          "displayName": "A String", # Name of this person.
-        },
-        "title": "A String", # Title for this review.
-        "volumeId": "A String", # Volume that this review is for.
-        "content": "A String", # Review text.
-        "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
-          "extraDescription": "A String", # Extra text about the source of the review.
-          "url": "A String", # URL of the source of the review.
-          "description": "A String", # Name of the source.
-        },
-        "date": "A String", # Date of this review.
-        "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
-        "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
-      },
-      "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
-      "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
-        "kind": "books#readingPosition", # Resource type for a reading position.
-        "gbImagePosition": "A String", # Position in a volume for image-based content.
-        "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
-        "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
-        "volumeId": "A String", # Volume id associated with this reading position.
-        "pdfPosition": "A String", # Position in a PDF file.
-        "gbTextPosition": "A String", # Position in a volume for text-based content.
-      },
-      "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
-    },
+    "selfLink": "A String", # URL to this resource. (In LITE projection.)
     "volumeInfo": { # General volume information.
       "publisher": "A String", # Publisher of this volume. (In LITE projection.)
       "subtitle": "A String", # Volume subtitle. (In LITE projection.)
@@ -233,8 +206,51 @@
       ],
       "averageRating": 3.14, # The mean review rating for this volume. (min = 1.0, max = 5.0)
     },
+    "recommendedInfo": { # Recommendation related information for this volume.
+      "explanation": "A String", # A text explaining why this volume is recommended.
+    },
     "id": "A String", # Unique identifier for a volume. (In LITE projection.)
-    "selfLink": "A String", # URL to this resource. (In LITE projection.)
+    "layerInfo": { # What layers exist in this volume and high level information about them.
+      "layers": [ # A layer should appear here if and only if the layer exists for this book.
+        {
+          "volumeAnnotationsVersion": "A String", # The current version of this layer's volume annotations. Note that this version applies only to the data in the books.layers.volumeAnnotations.* responses. The actual annotation data is versioned separately.
+          "layerId": "A String", # The layer id of this layer (e.g. "geo").
+        },
+      ],
+    },
+    "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
+      "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+      "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+      "review": { # This user's review of this volume, if one exists.
+        "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
+        "kind": "books#review", # Resource type for a review.
+        "author": { # Author of this review.
+          "displayName": "A String", # Name of this person.
+        },
+        "title": "A String", # Title for this review.
+        "volumeId": "A String", # Volume that this review is for.
+        "content": "A String", # Review text.
+        "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
+          "extraDescription": "A String", # Extra text about the source of the review.
+          "url": "A String", # URL of the source of the review.
+          "description": "A String", # Name of the source.
+        },
+        "date": "A String", # Date of this review.
+        "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
+        "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
+      },
+      "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+      "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+        "kind": "books#readingPosition", # Resource type for a reading position.
+        "gbImagePosition": "A String", # Position in a volume for image-based content.
+        "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+        "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+        "volumeId": "A String", # Volume id associated with this reading position.
+        "pdfPosition": "A String", # Position in a PDF file.
+        "gbTextPosition": "A String", # Position in a volume for text-based content.
+      },
+      "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+    },
   }</pre>
 </div>
 
@@ -339,39 +355,7 @@
           },
         },
         "etag": "A String", # Opaque identifier for a specific version of a volume resource. (In LITE projection)
-        "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
-          "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
-          "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
-          "review": { # This user's review of this volume, if one exists.
-            "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
-            "kind": "books#review", # Resource type for a review.
-            "author": { # Author of this review.
-              "displayName": "A String", # Name of this person.
-            },
-            "title": "A String", # Title for this review.
-            "volumeId": "A String", # Volume that this review is for.
-            "content": "A String", # Review text.
-            "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
-              "extraDescription": "A String", # Extra text about the source of the review.
-              "url": "A String", # URL of the source of the review.
-              "description": "A String", # Name of the source.
-            },
-            "date": "A String", # Date of this review.
-            "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
-            "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
-          },
-          "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
-          "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
-            "kind": "books#readingPosition", # Resource type for a reading position.
-            "gbImagePosition": "A String", # Position in a volume for image-based content.
-            "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
-            "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
-            "volumeId": "A String", # Volume id associated with this reading position.
-            "pdfPosition": "A String", # Position in a PDF file.
-            "gbTextPosition": "A String", # Position in a volume for text-based content.
-          },
-          "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
-        },
+        "selfLink": "A String", # URL to this resource. (In LITE projection.)
         "volumeInfo": { # General volume information.
           "publisher": "A String", # Publisher of this volume. (In LITE projection.)
           "subtitle": "A String", # Volume subtitle. (In LITE projection.)
@@ -414,8 +398,51 @@
           ],
           "averageRating": 3.14, # The mean review rating for this volume. (min = 1.0, max = 5.0)
         },
+        "recommendedInfo": { # Recommendation related information for this volume.
+          "explanation": "A String", # A text explaining why this volume is recommended.
+        },
         "id": "A String", # Unique identifier for a volume. (In LITE projection.)
-        "selfLink": "A String", # URL to this resource. (In LITE projection.)
+        "layerInfo": { # What layers exist in this volume and high level information about them.
+          "layers": [ # A layer should appear here if and only if the layer exists for this book.
+            {
+              "volumeAnnotationsVersion": "A String", # The current version of this layer's volume annotations. Note that this version applies only to the data in the books.layers.volumeAnnotations.* responses. The actual annotation data is versioned separately.
+              "layerId": "A String", # The layer id of this layer (e.g. "geo").
+            },
+          ],
+        },
+        "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
+          "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+          "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+          "review": { # This user's review of this volume, if one exists.
+            "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
+            "kind": "books#review", # Resource type for a review.
+            "author": { # Author of this review.
+              "displayName": "A String", # Name of this person.
+            },
+            "title": "A String", # Title for this review.
+            "volumeId": "A String", # Volume that this review is for.
+            "content": "A String", # Review text.
+            "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
+              "extraDescription": "A String", # Extra text about the source of the review.
+              "url": "A String", # URL of the source of the review.
+              "description": "A String", # Name of the source.
+            },
+            "date": "A String", # Date of this review.
+            "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
+            "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
+          },
+          "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+          "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+            "kind": "books#readingPosition", # Resource type for a reading position.
+            "gbImagePosition": "A String", # Position in a volume for image-based content.
+            "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+            "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+            "volumeId": "A String", # Volume id associated with this reading position.
+            "pdfPosition": "A String", # Position in a PDF file.
+            "gbTextPosition": "A String", # Position in a volume for text-based content.
+          },
+          "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+        },
       },
     ],
     "kind": "books#volumes", # Resource type.
diff --git a/docs/dyn/books_v1.volumes.recommended.html b/docs/dyn/books_v1.volumes.recommended.html
new file mode 100644
index 0000000..05b76be
--- /dev/null
+++ b/docs/dyn/books_v1.volumes.recommended.html
@@ -0,0 +1,244 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="books_v1.html">Books API</a> . <a href="books_v1.volumes.html">volumes</a> . <a href="books_v1.volumes.recommended.html">recommended</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#list">list(source=None, locale=None)</a></code></p>
+<p class="firstline">Return a list of recommended books for the current user.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="list">list(source=None, locale=None)</code>
+  <pre>Return a list of recommended books for the current user.
+
+Args:
+  source: string, String to identify the originator of this request.
+  locale: string, ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. Used for generating recommendations.
+
+Returns:
+  An object of the form:
+
+    {
+    "totalItems": 42, # Total number of volumes found. This might be greater than the number of volumes returned in this response if results have been paginated.
+    "items": [ # A list of volumes.
+      {
+        "kind": "books#volume", # Resource type for a volume. (In LITE projection.)
+        "accessInfo": { # Any information about a volume related to reading or obtaining that volume text. This information can depend on country (books may be public domain in one country but not in another, e.g.).
+          "webReaderLink": "A String", # URL to read this volume on the Google Books site. Link will not allow users to read non-viewable volumes.
+          "publicDomain": True or False, # Whether or not this book is public domain in the country listed above.
+          "embeddable": True or False, # Whether this volume can be embedded in a viewport using the Embedded Viewer API.
+          "downloadAccess": { # Information about a volume's download license access restrictions.
+            "nonce": "A String", # Client nonce for verification. Download access and client-validation only.
+            "kind": "books#downloadAccessRestriction", # Resource type.
+            "justAcquired": True or False, # If deviceAllowed, whether access was just acquired with this request.
+            "maxDownloadDevices": 42, # If restricted, the maximum number of content download licenses for this volume.
+            "downloadsAcquired": 42, # If restricted, the number of content download licenses already acquired (including the requesting client, if licensed).
+            "signature": "A String", # Response signature.
+            "volumeId": "A String", # Identifies the volume for which this entry applies.
+            "deviceAllowed": True or False, # If restricted, whether access is granted for this (user, device, volume).
+            "source": "A String", # Client app identifier for verification. Download access and client-validation only.
+            "restricted": True or False, # Whether this volume has any download access restrictions.
+            "reasonCode": "A String", # Error/warning reason code. Additional codes may be added in the future. 0 OK 100 ACCESS_DENIED_PUBLISHER_LIMIT 101 ACCESS_DENIED_LIMIT 200 WARNING_USED_LAST_ACCESS
+            "message": "A String", # Error/warning message.
+          },
+          "country": "A String", # The two-letter ISO_3166-1 country code for which this access information is valid. (In LITE projection.)
+          "viewOrderUrl": "A String", # For ordered but not yet processed orders, we give a URL that can be used to go to the appropriate Google Wallet page.
+          "textToSpeechPermission": "A String", # Whether text-to-speech is permitted for this volume. Values can be ALLOWED, ALLOWED_FOR_ACCESSIBILITY, or NOT_ALLOWED.
+          "pdf": { # Information about pdf content. (In LITE projection.)
+            "isAvailable": True or False, # Is a scanned image pdf available either as public domain or for purchase. (In LITE projection.)
+            "downloadLink": "A String", # URL to download pdf. (In LITE projection.)
+            "acsTokenLink": "A String", # URL to retrieve ACS token for pdf download. (In LITE projection.)
+          },
+          "viewability": "A String", # The read access of a volume. Possible values are PARTIAL, ALL_PAGES, NO_PAGES or UNKNOWN. This value depends on the country listed above. A value of PARTIAL means that the publisher has allowed some portion of the volume to be viewed publicly, without purchase. This can apply to eBooks as well as non-eBooks. Public domain books will always have a value of ALL_PAGES.
+          "epub": { # Information about epub content. (In LITE projection.)
+            "isAvailable": True or False, # Is a flowing text epub available either as public domain or for purchase. (In LITE projection.)
+            "downloadLink": "A String", # URL to download epub. (In LITE projection.)
+            "acsTokenLink": "A String", # URL to retrieve ACS token for epub download. (In LITE projection.)
+          },
+          "accessViewStatus": "A String", # Combines the access and viewability of this volume into a single status field for this user. Values can be FULL_PURCHASED, FULL_PUBLIC_DOMAIN, SAMPLE or NONE. (In LITE projection.)
+        },
+        "searchInfo": { # Search result information related to this volume.
+          "textSnippet": "A String", # A text snippet containing the search query.
+        },
+        "saleInfo": { # Any information about a volume related to the eBookstore and/or purchaseability. This information can depend on the country where the request originates from (i.e. books may not be for sale in certain countries).
+          "country": "A String", # The two-letter ISO_3166-1 country code for which this sale information is valid. (In LITE projection.)
+          "retailPrice": { # The actual selling price of the book. This is the same as the suggested retail or list price unless there are offers or discounts on this volume. (In LITE projection.)
+            "amount": 3.14, # Amount in the currency listed below. (In LITE projection.)
+            "currencyCode": "A String", # An ISO 4217, three-letter currency code. (In LITE projection.)
+          },
+          "isEbook": True or False, # Whether or not this volume is an eBook (can be added to the My eBooks shelf).
+          "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FREE, NOT_FOR_SALE, or FOR_PREORDER.
+          "buyLink": "A String", # URL to purchase this volume on the Google Books site. (In LITE projection)
+          "onSaleDate": "A String", # The date on which this book is available for sale.
+          "listPrice": { # Suggested retail price. (In LITE projection.)
+            "amount": 3.14, # Amount in the currency listed below. (In LITE projection.)
+            "currencyCode": "A String", # An ISO 4217, three-letter currency code. (In LITE projection.)
+          },
+        },
+        "etag": "A String", # Opaque identifier for a specific version of a volume resource. (In LITE projection)
+        "selfLink": "A String", # URL to this resource. (In LITE projection.)
+        "volumeInfo": { # General volume information.
+          "publisher": "A String", # Publisher of this volume. (In LITE projection.)
+          "subtitle": "A String", # Volume subtitle. (In LITE projection.)
+          "description": "A String", # A synopsis of the volume. The text of the description is formatted in HTML and includes simple formatting elements, such as b, i, and br tags. (In LITE projection.)
+          "language": "A String", # Best language for this volume (based on content). It is the two-letter ISO 639-1 code such as 'fr', 'en', etc.
+          "pageCount": 42, # Total number of pages.
+          "imageLinks": { # A list of image links for all the sizes that are available. (In LITE projection.)
+            "medium": "A String", # Image link for medium size (width of ~575 pixels). (In LITE projection)
+            "smallThumbnail": "A String", # Image link for small thumbnail size (width of ~80 pixels). (In LITE projection)
+            "large": "A String", # Image link for large size (width of ~800 pixels). (In LITE projection)
+            "extraLarge": "A String", # Image link for extra large size (width of ~1280 pixels). (In LITE projection)
+            "small": "A String", # Image link for small size (width of ~300 pixels). (In LITE projection)
+            "thumbnail": "A String", # Image link for thumbnail size (width of ~128 pixels). (In LITE projection)
+          },
+          "publishedDate": "A String", # Date of publication. (In LITE projection.)
+          "previewLink": "A String", # URL to preview this volume on the Google Books site.
+          "printType": "A String", # Type of publication of this volume. Possible values are BOOK or MAGAZINE.
+          "ratingsCount": 42, # The number of review ratings for this volume.
+          "mainCategory": "A String", # The main category to which this volume belongs. It will be the category from the categories list returned below that has the highest weight.
+          "dimensions": { # Physical dimensions of this volume.
+            "width": "A String", # Width of this volume (in cm).
+            "thickness": "A String", # Thickness of this volume (in cm).
+            "height": "A String", # Height or length of this volume (in cm).
+          },
+          "contentVersion": "A String", # An identifier for the version of the volume content (text & images). (In LITE projection)
+          "industryIdentifiers": [ # Industry standard identifiers for this volume.
+            {
+              "identifier": "A String", # Industry specific volume identifier.
+              "type": "A String", # Identifier type. Possible values are ISBN_10, ISBN_13, ISSN and OTHER.
+            },
+          ],
+          "authors": [ # The names of the authors and/or editors for this volume. (In LITE projection)
+            "A String",
+          ],
+          "title": "A String", # Volume title. (In LITE projection.)
+          "canonicalVolumeLink": "A String", # Canonical URL for a volume. (In LITE projection.)
+          "infoLink": "A String", # URL to view information about this volume on the Google Books site. (In LITE projection)
+          "categories": [ # A list of subject categories, such as "Fiction", "Suspense", etc.
+            "A String",
+          ],
+          "averageRating": 3.14, # The mean review rating for this volume. (min = 1.0, max = 5.0)
+        },
+        "recommendedInfo": { # Recommendation related information for this volume.
+          "explanation": "A String", # A text explaining why this volume is recommended.
+        },
+        "id": "A String", # Unique identifier for a volume. (In LITE projection.)
+        "layerInfo": { # What layers exist in this volume and high level information about them.
+          "layers": [ # A layer should appear here if and only if the layer exists for this book.
+            {
+              "volumeAnnotationsVersion": "A String", # The current version of this layer's volume annotations. Note that this version applies only to the data in the books.layers.volumeAnnotations.* responses. The actual annotation data is versioned separately.
+              "layerId": "A String", # The layer id of this layer (e.g. "geo").
+            },
+          ],
+        },
+        "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
+          "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+          "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+          "review": { # This user's review of this volume, if one exists.
+            "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
+            "kind": "books#review", # Resource type for a review.
+            "author": { # Author of this review.
+              "displayName": "A String", # Name of this person.
+            },
+            "title": "A String", # Title for this review.
+            "volumeId": "A String", # Volume that this review is for.
+            "content": "A String", # Review text.
+            "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
+              "extraDescription": "A String", # Extra text about the source of the review.
+              "url": "A String", # URL of the source of the review.
+              "description": "A String", # Name of the source.
+            },
+            "date": "A String", # Date of this review.
+            "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
+            "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
+          },
+          "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+          "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+            "kind": "books#readingPosition", # Resource type for a reading position.
+            "gbImagePosition": "A String", # Position in a volume for image-based content.
+            "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+            "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+            "volumeId": "A String", # Volume id associated with this reading position.
+            "pdfPosition": "A String", # Position in a PDF file.
+            "gbTextPosition": "A String", # Position in a volume for text-based content.
+          },
+          "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+        },
+      },
+    ],
+    "kind": "books#volumes", # Resource type.
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/calendar_v3.calendarList.html b/docs/dyn/calendar_v3.calendarList.html
index 77edf1d..0ab7cf8 100644
--- a/docs/dyn/calendar_v3.calendarList.html
+++ b/docs/dyn/calendar_v3.calendarList.html
@@ -184,7 +184,7 @@
     "id": "A String", # Identifier of the calendar.
   }
 
-  colorRgbFormat: boolean, Whether to use the 'frontendColor' and 'backgroundColor' fields to write the calendar colors (RGB). If this feature is used, the index-based 'color' field will be set to the best matching option automatically. Optional. The default is False.
+  colorRgbFormat: boolean, Whether to use the 'foregroundColor' and 'backgroundColor' fields to write the calendar colors (RGB). If this feature is used, the index-based 'colorId' field will be set to the best matching option automatically. Optional. The default is False.
 
 Returns:
   An object of the form:
@@ -287,7 +287,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
@@ -329,7 +329,7 @@
     "id": "A String", # Identifier of the calendar.
   }
 
-  colorRgbFormat: boolean, Whether to use the 'frontendColor' and 'backgroundColor' fields to write the calendar colors (RGB). If this feature is used, the index-based 'color' field will be set to the best matching option automatically. Optional. The default is False.
+  colorRgbFormat: boolean, Whether to use the 'foregroundColor' and 'backgroundColor' fields to write the calendar colors (RGB). If this feature is used, the index-based 'colorId' field will be set to the best matching option automatically. Optional. The default is False.
 
 Returns:
   An object of the form:
@@ -404,7 +404,7 @@
     "id": "A String", # Identifier of the calendar.
   }
 
-  colorRgbFormat: boolean, Whether to use the 'frontendColor' and 'backgroundColor' fields to write the calendar colors (RGB). If this feature is used, the index-based 'color' field will be set to the best matching option automatically. Optional. The default is False.
+  colorRgbFormat: boolean, Whether to use the 'foregroundColor' and 'backgroundColor' fields to write the calendar colors (RGB). If this feature is used, the index-based 'colorId' field will be set to the best matching option automatically. Optional. The default is False.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/calendar_v3.events.html b/docs/dyn/calendar_v3.events.html
index 4f37846..f96363d 100644
--- a/docs/dyn/calendar_v3.events.html
+++ b/docs/dyn/calendar_v3.events.html
@@ -87,7 +87,7 @@
   <code><a href="#insert">insert(calendarId, body, sendNotifications=None, maxAttendees=None)</a></code></p>
 <p class="firstline">Creates an event.</p>
 <p class="toc_element">
-  <code><a href="#instances">instances(calendarId, eventId, pageToken=None, alwaysIncludeEmail=None, maxResults=None, showDeleted=None, timeZone=None, originalStart=None, maxAttendees=None)</a></code></p>
+  <code><a href="#instances">instances(calendarId, eventId, timeMin=None, pageToken=None, alwaysIncludeEmail=None, showDeleted=None, maxAttendees=None, maxResults=None, timeMax=None, timeZone=None, originalStart=None)</a></code></p>
 <p class="firstline">Returns instances of the specified recurring event.</p>
 <p class="toc_element">
   <code><a href="#instances_next">instances_next(previous_request, previous_response)</a></code></p>
@@ -763,19 +763,21 @@
 </div>
 
 <div class="method">
-    <code class="details" id="instances">instances(calendarId, eventId, pageToken=None, alwaysIncludeEmail=None, maxResults=None, showDeleted=None, timeZone=None, originalStart=None, maxAttendees=None)</code>
+    <code class="details" id="instances">instances(calendarId, eventId, timeMin=None, pageToken=None, alwaysIncludeEmail=None, showDeleted=None, maxAttendees=None, maxResults=None, timeMax=None, timeZone=None, originalStart=None)</code>
   <pre>Returns instances of the specified recurring event.
 
 Args:
   calendarId: string, Calendar identifier. (required)
   eventId: string, Recurring event identifier. (required)
+  timeMin: string, Lower bound (inclusive) for an event's end time to filter by. Optional. The default is not to filter by end time.
   pageToken: string, Token specifying which result page to return. Optional.
   alwaysIncludeEmail: boolean, Whether to always include a value in the "email" field for the organizer, creator and attendees, even if no real email is available (i.e. a generated, non-working value will be provided). The use of this option is discouraged and should only be used by clients which cannot handle the absence of an email address value in the mentioned places. Optional. The default is False.
-  maxResults: integer, Maximum number of events returned on one result page. Optional.
   showDeleted: boolean, Whether to include deleted events (with 'eventStatus' equals 'cancelled') in the result. Optional. The default is False.
+  maxAttendees: integer, The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional.
+  maxResults: integer, Maximum number of events returned on one result page. Optional.
+  timeMax: string, Upper bound (exclusive) for an event's start time to filter by. Optional. The default is not to filter by start time.
   timeZone: string, Time zone used in the response. Optional. The default is the time zone of the calendar.
   originalStart: string, The original start time of the instance in the result. Optional.
-  maxAttendees: integer, The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional.
 
 Returns:
   An object of the form:
@@ -937,7 +939,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
@@ -1124,7 +1126,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/civicinfo_us_v1.elections.html b/docs/dyn/civicinfo_us_v1.elections.html
index 4058081..6b4b906 100644
--- a/docs/dyn/civicinfo_us_v1.elections.html
+++ b/docs/dyn/civicinfo_us_v1.elections.html
@@ -145,6 +145,7 @@
           "locationName": "A String", # The name of the location.
           "state": "A String", # The US two letter state abbreviation of the address.
         },
+        "id": "A String", # An ID for this object. IDs may change in future requests and should not be cached. Access to this field requires special access that can be requested from the Request more link on the Quotas page.
       },
     ],
     "kind": "civicinfo#voterInfoResponse", # The kind, fixed to "civicinfo#voterInfoResponse".
@@ -208,6 +209,7 @@
           },
         },
         "name": "A String", # The name of the jurisdiction.
+        "id": "A String", # An ID for this object. IDs may change in future requests and should not be cached. Access to this field requires special access that can be requested from the Request more link on the Quotas page.
       },
     ],
     "election": { # Information about the election that was queried. # The election that was queried.
@@ -238,6 +240,7 @@
           "locationName": "A String", # The name of the location.
           "state": "A String", # The US two letter state abbreviation of the address.
         },
+        "id": "A String", # An ID for this object. IDs may change in future requests and should not be cached. Access to this field requires special access that can be requested from the Request more link on the Quotas page.
       },
     ],
     "contests": [ # Contests that will appear on the voter's ballot
@@ -281,6 +284,7 @@
         "referendumUrl": "A String", # A link the referendum. This field is only populated for contests of type 'Referendum'.
         "electorateSpecifications": "A String", # A description of any additional eligibility requirements for voting in this contest.
         "referendumTitle": "A String", # The title of the referendum. (e.g. 'Proposition 42') This field is only populated for contests of type 'Referendum'.
+        "id": "A String", # An ID for this object. IDs may change in future requests and should not be cached. Access to this field requires special access that can be requested from the Request more link on the Quotas page.
         "special": "A String", # "Yes" or "No" depending on whether this a contest being held outside the normal election cycle.
       },
     ],
diff --git a/docs/dyn/compute_v1beta13.disks.html b/docs/dyn/compute_v1beta13.disks.html
new file mode 100644
index 0000000..fe02715
--- /dev/null
+++ b/docs/dyn/compute_v1beta13.disks.html
@@ -0,0 +1,272 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="compute_v1beta13.html">Compute Engine API</a> . <a href="compute_v1beta13.disks.html">disks</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(project, disk)</a></code></p>
+<p class="firstline">Deletes the specified persistent disk resource.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, disk)</a></code></p>
+<p class="firstline">Returns the specified persistent disk resource.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, body)</a></code></p>
+<p class="firstline">Creates a persistent disk resource in the specified project using the data included in the request.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of persistent disk resources contained within the specified project.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(project, disk)</code>
+  <pre>Deletes the specified persistent disk resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  disk: string, Name of the persistent disk resource to delete. (required)
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, disk)</code>
+  <pre>Returns the specified persistent disk resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  disk: string, Name of the persistent disk resource to return. (required)
+
+Returns:
+  An object of the form:
+
+    {
+      "status": "A String", # The status of disk creation (output only).
+      "sourceSnapshot": "A String", # The source snapshot used to create this disk. Once the source snapshot has been deleted from the system, this field will be cleared, and will not be set even if a snapshot with the same name has been re-created.
+      "kind": "compute#disk", # Type of the resource.
+      "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+      "sizeGb": "A String", # Size of the persistent disk, specified in GB.
+      "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+      "sourceSnapshotId": "A String", # The 'id' value of the snapshot used to create this disk. This value may be used to determine whether the disk was created from the current or a previous instance of a given disk snapshot.
+      "zone": "A String", # URL for the zone where the persistent disk resides; provided by the client when the disk is created. A persistent disk must reside in the same zone as the instance to which it is attached.
+      "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+      "options": "A String", # Internal use only.
+      "selfLink": "A String", # Server defined URL for the resource (output only).
+      "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, body)</code>
+  <pre>Creates a persistent disk resource in the specified project using the data included in the request.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "status": "A String", # The status of disk creation (output only).
+    "sourceSnapshot": "A String", # The source snapshot used to create this disk. Once the source snapshot has been deleted from the system, this field will be cleared, and will not be set even if a snapshot with the same name has been re-created.
+    "kind": "compute#disk", # Type of the resource.
+    "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+    "sizeGb": "A String", # Size of the persistent disk, specified in GB.
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "sourceSnapshotId": "A String", # The 'id' value of the snapshot used to create this disk. This value may be used to determine whether the disk was created from the current or a previous instance of a given disk snapshot.
+    "zone": "A String", # URL for the zone where the persistent disk resides; provided by the client when the disk is created. A persistent disk must reside in the same zone as the instance to which it is attached.
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "options": "A String", # Internal use only.
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+  }
+
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves the list of persistent disk resources contained within the specified project.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+  pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+  filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+  An object of the form:
+
+    {
+    "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+    "items": [ # The persistent disk resources.
+      {
+          "status": "A String", # The status of disk creation (output only).
+          "sourceSnapshot": "A String", # The source snapshot used to create this disk. Once the source snapshot has been deleted from the system, this field will be cleared, and will not be set even if a snapshot with the same name has been re-created.
+          "kind": "compute#disk", # Type of the resource.
+          "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+          "sizeGb": "A String", # Size of the persistent disk, specified in GB.
+          "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+          "sourceSnapshotId": "A String", # The 'id' value of the snapshot used to create this disk. This value may be used to determine whether the disk was created from the current or a previous instance of a given disk snapshot.
+          "zone": "A String", # URL for the zone where the persistent disk resides; provided by the client when the disk is created. A persistent disk must reside in the same zone as the instance to which it is attached.
+          "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+          "options": "A String", # Internal use only.
+          "selfLink": "A String", # Server defined URL for the resource (output only).
+          "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+        },
+    ],
+    "kind": "compute#diskList", # Type of resource.
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for this resource (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call 'execute()' on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta13.firewalls.html b/docs/dyn/compute_v1beta13.firewalls.html
new file mode 100644
index 0000000..efc64e9
--- /dev/null
+++ b/docs/dyn/compute_v1beta13.firewalls.html
@@ -0,0 +1,463 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="compute_v1beta13.html">Compute Engine API</a> . <a href="compute_v1beta13.firewalls.html">firewalls</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(project, firewall)</a></code></p>
+<p class="firstline">Deletes the specified firewall resource.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, firewall)</a></code></p>
+<p class="firstline">Returns the specified firewall resource.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, body)</a></code></p>
+<p class="firstline">Creates a firewall resource in the specified project using the data included in the request.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of firewall resources available to the specified project.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<p class="toc_element">
+  <code><a href="#patch">patch(project, firewall, body)</a></code></p>
+<p class="firstline">Updates the specified firewall resource with the data included in the request. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(project, firewall, body)</a></code></p>
+<p class="firstline">Updates the specified firewall resource with the data included in the request.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(project, firewall)</code>
+  <pre>Deletes the specified firewall resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  firewall: string, Name of the firewall resource to delete. (required)
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, firewall)</code>
+  <pre>Returns the specified firewall resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  firewall: string, Name of the firewall resource to return. (required)
+
+Returns:
+  An object of the form:
+
+    {
+      "kind": "compute#firewall", # Type of the resource.
+      "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+      "sourceTags": [ # A list of instance tags which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+        "A String",
+      ],
+      "sourceRanges": [ # A list of IP address blocks expressed in CIDR format which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+        "A String",
+      ],
+      "network": "A String", # URL of the network to which this firewall is applied; provided by the client when the firewall is created.
+      "targetTags": [ # A list of instance tags indicating sets of instances located on network which may make network connections as specified in allowed. If no targetTags are specified, the firewall rule applies to all instances on the specified network.
+        "A String",
+      ],
+      "allowed": [ # The list of rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+        {
+          "IPProtocol": "A String", # Required; this is the IP protocol that is allowed for this rule. This can either be a well known protocol string (tcp, udp or icmp) or the IP protocol number.
+          "ports": [ # An optional list of ports which are allowed. It is an error to specify this for any protocol that isn't UDP or TCP. Each entry must be either an integer or a range. If not specified, connections through any port are allowed.
+              # Example inputs include: ["22"], ["80,"443"] and ["12345-12349"].
+            "A String",
+          ],
+        },
+      ],
+      "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+      "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+      "selfLink": "A String", # Server defined URL for the resource (output only).
+      "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, body)</code>
+  <pre>Creates a firewall resource in the specified project using the data included in the request.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "kind": "compute#firewall", # Type of the resource.
+    "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+    "sourceTags": [ # A list of instance tags which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+      "A String",
+    ],
+    "sourceRanges": [ # A list of IP address blocks expressed in CIDR format which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+      "A String",
+    ],
+    "network": "A String", # URL of the network to which this firewall is applied; provided by the client when the firewall is created.
+    "targetTags": [ # A list of instance tags indicating sets of instances located on network which may make network connections as specified in allowed. If no targetTags are specified, the firewall rule applies to all instances on the specified network.
+      "A String",
+    ],
+    "allowed": [ # The list of rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+      {
+        "IPProtocol": "A String", # Required; this is the IP protocol that is allowed for this rule. This can either be a well known protocol string (tcp, udp or icmp) or the IP protocol number.
+        "ports": [ # An optional list of ports which are allowed. It is an error to specify this for any protocol that isn't UDP or TCP. Each entry must be either an integer or a range. If not specified, connections through any port are allowed.
+            # Example inputs include: ["22"], ["80,"443"] and ["12345-12349"].
+          "A String",
+        ],
+      },
+    ],
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+  }
+
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves the list of firewall resources available to the specified project.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+  pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+  filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+  An object of the form:
+
+    {
+    "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+    "items": [ # The firewall resources.
+      {
+          "kind": "compute#firewall", # Type of the resource.
+          "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+          "sourceTags": [ # A list of instance tags which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+            "A String",
+          ],
+          "sourceRanges": [ # A list of IP address blocks expressed in CIDR format which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+            "A String",
+          ],
+          "network": "A String", # URL of the network to which this firewall is applied; provided by the client when the firewall is created.
+          "targetTags": [ # A list of instance tags indicating sets of instances located on network which may make network connections as specified in allowed. If no targetTags are specified, the firewall rule applies to all instances on the specified network.
+            "A String",
+          ],
+          "allowed": [ # The list of rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+            {
+              "IPProtocol": "A String", # Required; this is the IP protocol that is allowed for this rule. This can either be a well known protocol string (tcp, udp or icmp) or the IP protocol number.
+              "ports": [ # An optional list of ports which are allowed. It is an error to specify this for any protocol that isn't UDP or TCP. Each entry must be either an integer or a range. If not specified, connections through any port are allowed.
+                  # Example inputs include: ["22"], ["80,"443"] and ["12345-12349"].
+                "A String",
+              ],
+            },
+          ],
+          "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+          "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+          "selfLink": "A String", # Server defined URL for the resource (output only).
+          "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+        },
+    ],
+    "kind": "compute#firewallList", # Type of resource.
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for this resource (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call 'execute()' on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+<div class="method">
+    <code class="details" id="patch">patch(project, firewall, body)</code>
+  <pre>Updates the specified firewall resource with the data included in the request. This method supports patch semantics.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  firewall: string, Name of the firewall resource to update. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "kind": "compute#firewall", # Type of the resource.
+    "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+    "sourceTags": [ # A list of instance tags which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+      "A String",
+    ],
+    "sourceRanges": [ # A list of IP address blocks expressed in CIDR format which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+      "A String",
+    ],
+    "network": "A String", # URL of the network to which this firewall is applied; provided by the client when the firewall is created.
+    "targetTags": [ # A list of instance tags indicating sets of instances located on network which may make network connections as specified in allowed. If no targetTags are specified, the firewall rule applies to all instances on the specified network.
+      "A String",
+    ],
+    "allowed": [ # The list of rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+      {
+        "IPProtocol": "A String", # Required; this is the IP protocol that is allowed for this rule. This can either be a well known protocol string (tcp, udp or icmp) or the IP protocol number.
+        "ports": [ # An optional list of ports which are allowed. It is an error to specify this for any protocol that isn't UDP or TCP. Each entry must be either an integer or a range. If not specified, connections through any port are allowed.
+            # Example inputs include: ["22"], ["80,"443"] and ["12345-12349"].
+          "A String",
+        ],
+      },
+    ],
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+  }
+
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(project, firewall, body)</code>
+  <pre>Updates the specified firewall resource with the data included in the request.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  firewall: string, Name of the firewall resource to update. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "kind": "compute#firewall", # Type of the resource.
+    "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+    "sourceTags": [ # A list of instance tags which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+      "A String",
+    ],
+    "sourceRanges": [ # A list of IP address blocks expressed in CIDR format which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+      "A String",
+    ],
+    "network": "A String", # URL of the network to which this firewall is applied; provided by the client when the firewall is created.
+    "targetTags": [ # A list of instance tags indicating sets of instances located on network which may make network connections as specified in allowed. If no targetTags are specified, the firewall rule applies to all instances on the specified network.
+      "A String",
+    ],
+    "allowed": [ # The list of rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+      {
+        "IPProtocol": "A String", # Required; this is the IP protocol that is allowed for this rule. This can either be a well known protocol string (tcp, udp or icmp) or the IP protocol number.
+        "ports": [ # An optional list of ports which are allowed. It is an error to specify this for any protocol that isn't UDP or TCP. Each entry must be either an integer or a range. If not specified, connections through any port are allowed.
+            # Example inputs include: ["22"], ["80,"443"] and ["12345-12349"].
+          "A String",
+        ],
+      },
+    ],
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+  }
+
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta13.html b/docs/dyn/compute_v1beta13.html
new file mode 100644
index 0000000..709b17a
--- /dev/null
+++ b/docs/dyn/compute_v1beta13.html
@@ -0,0 +1,132 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="compute_v1beta13.html">Compute Engine API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="compute_v1beta13.disks.html">disks()</a></code>
+</p>
+<p class="firstline">Returns the disks Resource.</p>
+
+<p class="toc_element">
+  <code><a href="compute_v1beta13.firewalls.html">firewalls()</a></code>
+</p>
+<p class="firstline">Returns the firewalls Resource.</p>
+
+<p class="toc_element">
+  <code><a href="compute_v1beta13.images.html">images()</a></code>
+</p>
+<p class="firstline">Returns the images Resource.</p>
+
+<p class="toc_element">
+  <code><a href="compute_v1beta13.instances.html">instances()</a></code>
+</p>
+<p class="firstline">Returns the instances Resource.</p>
+
+<p class="toc_element">
+  <code><a href="compute_v1beta13.kernels.html">kernels()</a></code>
+</p>
+<p class="firstline">Returns the kernels Resource.</p>
+
+<p class="toc_element">
+  <code><a href="compute_v1beta13.machineTypes.html">machineTypes()</a></code>
+</p>
+<p class="firstline">Returns the machineTypes Resource.</p>
+
+<p class="toc_element">
+  <code><a href="compute_v1beta13.networks.html">networks()</a></code>
+</p>
+<p class="firstline">Returns the networks Resource.</p>
+
+<p class="toc_element">
+  <code><a href="compute_v1beta13.operations.html">operations()</a></code>
+</p>
+<p class="firstline">Returns the operations Resource.</p>
+
+<p class="toc_element">
+  <code><a href="compute_v1beta13.projects.html">projects()</a></code>
+</p>
+<p class="firstline">Returns the projects Resource.</p>
+
+<p class="toc_element">
+  <code><a href="compute_v1beta13.snapshots.html">snapshots()</a></code>
+</p>
+<p class="firstline">Returns the snapshots Resource.</p>
+
+<p class="toc_element">
+  <code><a href="compute_v1beta13.zones.html">zones()</a></code>
+</p>
+<p class="firstline">Returns the zones Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta13.images.html b/docs/dyn/compute_v1beta13.images.html
new file mode 100644
index 0000000..938a946
--- /dev/null
+++ b/docs/dyn/compute_v1beta13.images.html
@@ -0,0 +1,284 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="compute_v1beta13.html">Compute Engine API</a> . <a href="compute_v1beta13.images.html">images</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(project, image)</a></code></p>
+<p class="firstline">Deletes the specified image resource.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, image)</a></code></p>
+<p class="firstline">Returns the specified image resource.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, body)</a></code></p>
+<p class="firstline">Creates an image resource in the specified project using the data included in the request.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of image resources available to the specified project.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(project, image)</code>
+  <pre>Deletes the specified image resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  image: string, Name of the image resource to delete. (required)
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, image)</code>
+  <pre>Returns the specified image resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  image: string, Name of the image resource to return. (required)
+
+Returns:
+  An object of the form:
+
+    {
+      "kind": "compute#image", # Type of the resource.
+      "description": "A String", # Textual description of the resource; provided by the client when the resource is created.
+      "rawDisk": { # The raw disk image parameters.
+        "containerType": "TAR", # The format used to encode and transmit the block device. Should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created.
+        "source": "A String", # The full Google Cloud Storage URL where the disk image is stored; provided by the client when the disk image is created.
+        "sha1Checksum": "A String", # An optional SHA1 checksum of the disk image before unpackaging; provided by the client when the disk image is created.
+      },
+      "preferredKernel": "A String", # An optional URL of the preferred kernel for use with this disk image. If not specified, a server defined default kernel will be used.
+      "diskSnapshot": { # Not yet implemented.
+        "source": "A String", # URL of the disk snapshot.
+      },
+      "sourceType": "RAW", # Must be "RAW"; provided by the client when the disk image is created.
+      "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+      "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+      "selfLink": "A String", # Server defined URL for the resource (output only).
+      "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, body)</code>
+  <pre>Creates an image resource in the specified project using the data included in the request.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "kind": "compute#image", # Type of the resource.
+    "description": "A String", # Textual description of the resource; provided by the client when the resource is created.
+    "rawDisk": { # The raw disk image parameters.
+      "containerType": "TAR", # The format used to encode and transmit the block device. Should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created.
+      "source": "A String", # The full Google Cloud Storage URL where the disk image is stored; provided by the client when the disk image is created.
+      "sha1Checksum": "A String", # An optional SHA1 checksum of the disk image before unpackaging; provided by the client when the disk image is created.
+    },
+    "preferredKernel": "A String", # An optional URL of the preferred kernel for use with this disk image. If not specified, a server defined default kernel will be used.
+    "diskSnapshot": { # Not yet implemented.
+      "source": "A String", # URL of the disk snapshot.
+    },
+    "sourceType": "RAW", # Must be "RAW"; provided by the client when the disk image is created.
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+  }
+
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves the list of image resources available to the specified project.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+  pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+  filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+  An object of the form:
+
+    {
+    "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+    "items": [ # The disk image resources.
+      {
+          "kind": "compute#image", # Type of the resource.
+          "description": "A String", # Textual description of the resource; provided by the client when the resource is created.
+          "rawDisk": { # The raw disk image parameters.
+            "containerType": "TAR", # The format used to encode and transmit the block device. Should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created.
+            "source": "A String", # The full Google Cloud Storage URL where the disk image is stored; provided by the client when the disk image is created.
+            "sha1Checksum": "A String", # An optional SHA1 checksum of the disk image before unpackaging; provided by the client when the disk image is created.
+          },
+          "preferredKernel": "A String", # An optional URL of the preferred kernel for use with this disk image. If not specified, a server defined default kernel will be used.
+          "diskSnapshot": { # Not yet implemented.
+            "source": "A String", # URL of the disk snapshot.
+          },
+          "sourceType": "RAW", # Must be "RAW"; provided by the client when the disk image is created.
+          "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+          "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+          "selfLink": "A String", # Server defined URL for the resource (output only).
+          "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+        },
+    ],
+    "kind": "compute#imageList", # Type of resource.
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for this resource (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call 'execute()' on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta13.instances.html b/docs/dyn/compute_v1beta13.instances.html
new file mode 100644
index 0000000..69782a2
--- /dev/null
+++ b/docs/dyn/compute_v1beta13.instances.html
@@ -0,0 +1,537 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="compute_v1beta13.html">Compute Engine API</a> . <a href="compute_v1beta13.instances.html">instances</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#addAccessConfig">addAccessConfig(project, instance, network_interface, body)</a></code></p>
+<p class="firstline">Adds an access config to an instance's network interface.</p>
+<p class="toc_element">
+  <code><a href="#delete">delete(project, instance)</a></code></p>
+<p class="firstline">Deletes the specified instance resource.</p>
+<p class="toc_element">
+  <code><a href="#deleteAccessConfig">deleteAccessConfig(project, instance, access_config, network_interface)</a></code></p>
+<p class="firstline">Deletes an access config from an instance's network interface.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, instance)</a></code></p>
+<p class="firstline">Returns the specified instance resource.</p>
+<p class="toc_element">
+  <code><a href="#getSerialPortOutput">getSerialPortOutput(project, instance)</a></code></p>
+<p class="firstline">Returns the specified instance's serial port output.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, body)</a></code></p>
+<p class="firstline">Creates an instance resource in the specified project using the data included in the request.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of instance resources contained within the specified project.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="addAccessConfig">addAccessConfig(project, instance, network_interface, body)</code>
+  <pre>Adds an access config to an instance's network interface.
+
+Args:
+  project: string, Project name. (required)
+  instance: string, Instance name. (required)
+  network_interface: string, Network interface name. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+  "kind": "compute#accessConfig", # Type of the resource.
+  "type": "ONE_TO_ONE_NAT", # Type of configuration. Must be set to "ONE_TO_ONE_NAT". This configures port-for-port NAT to the internet.
+  "name": "A String", # Name of this access configuration.
+  "natIP": "A String", # An external IP address associated with this instance. Specify an unused static IP address available to the project. If not specified, the external IP will be drawn from a shared ephemeral pool.
+}
+
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="delete">delete(project, instance)</code>
+  <pre>Deletes the specified instance resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  instance: string, Name of the instance resource to delete. (required)
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="deleteAccessConfig">deleteAccessConfig(project, instance, access_config, network_interface)</code>
+  <pre>Deletes an access config from an instance's network interface.
+
+Args:
+  project: string, Project name. (required)
+  instance: string, Instance name. (required)
+  access_config: string, Access config name. (required)
+  network_interface: string, Network interface name. (required)
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, instance)</code>
+  <pre>Returns the specified instance resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  instance: string, Name of the instance resource to return. (required)
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Instance status. One of the following values: "PROVISIONING", "STAGING", "RUNNING", "STOPPED", "TERMINATED", and "STOPPING" (output only).
+    "kind": "compute#instance", # Type of the resource.
+    "machineType": "A String", # URL of the machine type resource describing which machine type to use to host the instance; provided by the client when the instance is created.
+    "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+    "zone": "A String", # URL of the zone resource describing where this instance should be hosted; provided by the client when the instance is created.
+    "tags": [ # An optional set of tags applied to this instance. Used to identify valid sources or targets for network firewalls. Provided by the client when the instance is created. Each tag must be 1-63 characters long, and comply with RFC1035.
+      "A String",
+    ],
+    "image": "A String", # An optional URL of the disk image resource to be to be installed on this instance; provided by the client when the instance is created. If not specified, the server will choose a default image.
+    "disks": [ # Array of disks associated with this instance. Persistent disks must be created before you can assign them.
+      {
+        "deviceName": "A String", # Persistent disk only; must be unique within the instance when specified. This represents a unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, a default will be chosen by the system.
+        "kind": "compute#attachedDisk", # Type of the resource.
+        "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, the server will choose an appropriate value.
+        "source": "A String", # Persistent disk only; the URL of the persistent disk resource.
+        "mode": "A String", # The mode in which to attach this disk, either "READ_WRITE" or "READ_ONLY".
+        "deleteOnTerminate": True or False, # Persistent disk only; If true, delete the disk and all its data when the associated instance is deleted. This property defaults to false if not specified.
+        "type": "A String", # Type of the disk, either "EPHEMERAL" or "PERSISTENT". Note that persistent disks must be created before you can specify them here.
+      },
+    ],
+    "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+    "statusMessage": "A String", # An optional, human-readable explanation of the status (output only).
+    "serviceAccounts": [ # A list of service accounts each with specified scopes, for which access tokens are to be made available to the instance through metadata queries.
+      {
+        "scopes": [ # The list of scopes to be made available for this service account.
+          "A String",
+        ],
+        "kind": "compute#serviceAccount", # Type of the resource.
+        "email": "A String", # Email address of the service account.
+      },
+    ],
+    "networkInterfaces": [ # Array of configurations for this interface. This specifies how this interface is configured to interact with other network services, such as connecting to the internet. Currently, ONE_TO_ONE_NAT is the only access config supported. If there are no accessConfigs specified, then this instance will have no external internet access.
+      {
+        "network": "A String", # URL of the network resource attached to this interface.
+        "accessConfigs": [ # Array of configurations for this interface. This specifies how this interface is configured to interact with other network services, such as connecting to the internet. Currently, ONE_TO_ONE_NAT is the only access config supported. If there are no accessConfigs specified, then this instance will have no external internet access.
+          {
+            "kind": "compute#accessConfig", # Type of the resource.
+            "type": "ONE_TO_ONE_NAT", # Type of configuration. Must be set to "ONE_TO_ONE_NAT". This configures port-for-port NAT to the internet.
+            "name": "A String", # Name of this access configuration.
+            "natIP": "A String", # An external IP address associated with this instance. Specify an unused static IP address available to the project. If not specified, the external IP will be drawn from a shared ephemeral pool.
+          },
+        ],
+        "networkIP": "A String", # An optional IPV4 internal network address to assign to this instance. If not specified, one will be assigned from the available range.
+        "kind": "compute#networkInterface", # Type of the resource.
+        "name": "A String", # Name of the resource, determined by the server; for network devices, these are e.g. eth0, eth1, etc. (output only).
+      },
+    ],
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "metadata": { # Metadata key/value pairs assigned to this instance. Consists of custom metadata or predefined keys; see Instance documentation for more information.
+      "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
+        {
+          "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
+          "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
+        },
+      ],
+      "kind": "compute#metadata", # Type of the resource.
+    },
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="getSerialPortOutput">getSerialPortOutput(project, instance)</code>
+  <pre>Returns the specified instance's serial port output.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  instance: string, Name of the instance scoping this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # An instance serial console output.
+    "kind": "compute#serialPortOutput", # Type of the resource.
+    "selfLink": "A String", # Server defined URL for the resource.
+    "contents": "A String", # The contents of the console output.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, body)</code>
+  <pre>Creates an instance resource in the specified project using the data included in the request.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+  "status": "A String", # Instance status. One of the following values: "PROVISIONING", "STAGING", "RUNNING", "STOPPED", "TERMINATED", and "STOPPING" (output only).
+  "kind": "compute#instance", # Type of the resource.
+  "machineType": "A String", # URL of the machine type resource describing which machine type to use to host the instance; provided by the client when the instance is created.
+  "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+  "zone": "A String", # URL of the zone resource describing where this instance should be hosted; provided by the client when the instance is created.
+  "tags": [ # An optional set of tags applied to this instance. Used to identify valid sources or targets for network firewalls. Provided by the client when the instance is created. Each tag must be 1-63 characters long, and comply with RFC1035.
+    "A String",
+  ],
+  "image": "A String", # An optional URL of the disk image resource to be to be installed on this instance; provided by the client when the instance is created. If not specified, the server will choose a default image.
+  "disks": [ # Array of disks associated with this instance. Persistent disks must be created before you can assign them.
+    {
+      "deviceName": "A String", # Persistent disk only; must be unique within the instance when specified. This represents a unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, a default will be chosen by the system.
+      "kind": "compute#attachedDisk", # Type of the resource.
+      "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, the server will choose an appropriate value.
+      "source": "A String", # Persistent disk only; the URL of the persistent disk resource.
+      "mode": "A String", # The mode in which to attach this disk, either "READ_WRITE" or "READ_ONLY".
+      "deleteOnTerminate": True or False, # Persistent disk only; If true, delete the disk and all its data when the associated instance is deleted. This property defaults to false if not specified.
+      "type": "A String", # Type of the disk, either "EPHEMERAL" or "PERSISTENT". Note that persistent disks must be created before you can specify them here.
+    },
+  ],
+  "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+  "statusMessage": "A String", # An optional, human-readable explanation of the status (output only).
+  "serviceAccounts": [ # A list of service accounts each with specified scopes, for which access tokens are to be made available to the instance through metadata queries.
+    {
+      "scopes": [ # The list of scopes to be made available for this service account.
+        "A String",
+      ],
+      "kind": "compute#serviceAccount", # Type of the resource.
+      "email": "A String", # Email address of the service account.
+    },
+  ],
+  "networkInterfaces": [ # Array of configurations for this interface. This specifies how this interface is configured to interact with other network services, such as connecting to the internet. Currently, ONE_TO_ONE_NAT is the only access config supported. If there are no accessConfigs specified, then this instance will have no external internet access.
+    {
+      "network": "A String", # URL of the network resource attached to this interface.
+      "accessConfigs": [ # Array of configurations for this interface. This specifies how this interface is configured to interact with other network services, such as connecting to the internet. Currently, ONE_TO_ONE_NAT is the only access config supported. If there are no accessConfigs specified, then this instance will have no external internet access.
+        {
+          "kind": "compute#accessConfig", # Type of the resource.
+          "type": "ONE_TO_ONE_NAT", # Type of configuration. Must be set to "ONE_TO_ONE_NAT". This configures port-for-port NAT to the internet.
+          "name": "A String", # Name of this access configuration.
+          "natIP": "A String", # An external IP address associated with this instance. Specify an unused static IP address available to the project. If not specified, the external IP will be drawn from a shared ephemeral pool.
+        },
+      ],
+      "networkIP": "A String", # An optional IPV4 internal network address to assign to this instance. If not specified, one will be assigned from the available range.
+      "kind": "compute#networkInterface", # Type of the resource.
+      "name": "A String", # Name of the resource, determined by the server; for network devices, these are e.g. eth0, eth1, etc. (output only).
+    },
+  ],
+  "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+  "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+  "selfLink": "A String", # Server defined URL for the resource (output only).
+  "metadata": { # Metadata key/value pairs assigned to this instance. Consists of custom metadata or predefined keys; see Instance documentation for more information.
+    "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
+      {
+        "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
+        "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
+      },
+    ],
+    "kind": "compute#metadata", # Type of the resource.
+  },
+}
+
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves the list of instance resources contained within the specified project.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+  pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+  filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+  An object of the form:
+
+    {
+    "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+    "items": [ # A list of instance resources.
+      {
+        "status": "A String", # Instance status. One of the following values: "PROVISIONING", "STAGING", "RUNNING", "STOPPED", "TERMINATED", and "STOPPING" (output only).
+        "kind": "compute#instance", # Type of the resource.
+        "machineType": "A String", # URL of the machine type resource describing which machine type to use to host the instance; provided by the client when the instance is created.
+        "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+        "zone": "A String", # URL of the zone resource describing where this instance should be hosted; provided by the client when the instance is created.
+        "tags": [ # An optional set of tags applied to this instance. Used to identify valid sources or targets for network firewalls. Provided by the client when the instance is created. Each tag must be 1-63 characters long, and comply with RFC1035.
+          "A String",
+        ],
+        "image": "A String", # An optional URL of the disk image resource to be to be installed on this instance; provided by the client when the instance is created. If not specified, the server will choose a default image.
+        "disks": [ # Array of disks associated with this instance. Persistent disks must be created before you can assign them.
+          {
+            "deviceName": "A String", # Persistent disk only; must be unique within the instance when specified. This represents a unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, a default will be chosen by the system.
+            "kind": "compute#attachedDisk", # Type of the resource.
+            "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, the server will choose an appropriate value.
+            "source": "A String", # Persistent disk only; the URL of the persistent disk resource.
+            "mode": "A String", # The mode in which to attach this disk, either "READ_WRITE" or "READ_ONLY".
+            "deleteOnTerminate": True or False, # Persistent disk only; If true, delete the disk and all its data when the associated instance is deleted. This property defaults to false if not specified.
+            "type": "A String", # Type of the disk, either "EPHEMERAL" or "PERSISTENT". Note that persistent disks must be created before you can specify them here.
+          },
+        ],
+        "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+        "statusMessage": "A String", # An optional, human-readable explanation of the status (output only).
+        "serviceAccounts": [ # A list of service accounts each with specified scopes, for which access tokens are to be made available to the instance through metadata queries.
+          {
+            "scopes": [ # The list of scopes to be made available for this service account.
+              "A String",
+            ],
+            "kind": "compute#serviceAccount", # Type of the resource.
+            "email": "A String", # Email address of the service account.
+          },
+        ],
+        "networkInterfaces": [ # Array of configurations for this interface. This specifies how this interface is configured to interact with other network services, such as connecting to the internet. Currently, ONE_TO_ONE_NAT is the only access config supported. If there are no accessConfigs specified, then this instance will have no external internet access.
+          {
+            "network": "A String", # URL of the network resource attached to this interface.
+            "accessConfigs": [ # Array of configurations for this interface. This specifies how this interface is configured to interact with other network services, such as connecting to the internet. Currently, ONE_TO_ONE_NAT is the only access config supported. If there are no accessConfigs specified, then this instance will have no external internet access.
+              {
+                "kind": "compute#accessConfig", # Type of the resource.
+                "type": "ONE_TO_ONE_NAT", # Type of configuration. Must be set to "ONE_TO_ONE_NAT". This configures port-for-port NAT to the internet.
+                "name": "A String", # Name of this access configuration.
+                "natIP": "A String", # An external IP address associated with this instance. Specify an unused static IP address available to the project. If not specified, the external IP will be drawn from a shared ephemeral pool.
+              },
+            ],
+            "networkIP": "A String", # An optional IPV4 internal network address to assign to this instance. If not specified, one will be assigned from the available range.
+            "kind": "compute#networkInterface", # Type of the resource.
+            "name": "A String", # Name of the resource, determined by the server; for network devices, these are e.g. eth0, eth1, etc. (output only).
+          },
+        ],
+        "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+        "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+        "selfLink": "A String", # Server defined URL for the resource (output only).
+        "metadata": { # Metadata key/value pairs assigned to this instance. Consists of custom metadata or predefined keys; see Instance documentation for more information.
+          "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
+            {
+              "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
+              "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
+            },
+          ],
+          "kind": "compute#metadata", # Type of the resource.
+        },
+      },
+    ],
+    "kind": "compute#instanceList", # Type of resource.
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for this resource (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call 'execute()' on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta13.kernels.html b/docs/dyn/compute_v1beta13.kernels.html
new file mode 100644
index 0000000..705c8c2
--- /dev/null
+++ b/docs/dyn/compute_v1beta13.kernels.html
@@ -0,0 +1,153 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="compute_v1beta13.html">Compute Engine API</a> . <a href="compute_v1beta13.kernels.html">kernels</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(project, kernel)</a></code></p>
+<p class="firstline">Returns the specified kernel resource.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of kernel resources available to the specified project.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(project, kernel)</code>
+  <pre>Returns the specified kernel resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  kernel: string, Name of the kernel resource to return. (required)
+
+Returns:
+  An object of the form:
+
+    {
+    "kind": "compute#kernel", # Type of the resource.
+    "description": "A String", # An optional textual description of the resource.
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "name": "A String", # Name of the resource.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves the list of kernel resources available to the specified project.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+  pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+  filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+  An object of the form:
+
+    {
+    "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+    "items": [ # The kernel resources.
+      {
+        "kind": "compute#kernel", # Type of the resource.
+        "description": "A String", # An optional textual description of the resource.
+        "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+        "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+        "selfLink": "A String", # Server defined URL for the resource (output only).
+        "name": "A String", # Name of the resource.
+      },
+    ],
+    "kind": "compute#kernelList", # Type of resource.
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for this resource (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call 'execute()' on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta13.machineTypes.html b/docs/dyn/compute_v1beta13.machineTypes.html
new file mode 100644
index 0000000..7ca9042
--- /dev/null
+++ b/docs/dyn/compute_v1beta13.machineTypes.html
@@ -0,0 +1,179 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="compute_v1beta13.html">Compute Engine API</a> . <a href="compute_v1beta13.machineTypes.html">machineTypes</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(project, machineType)</a></code></p>
+<p class="firstline">Returns the specified machine type resource.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of machine type resources available to the specified project.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(project, machineType)</code>
+  <pre>Returns the specified machine type resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  machineType: string, Name of the machine type resource to return. (required)
+
+Returns:
+  An object of the form:
+
+    {
+    "guestCpus": 42, # Count of CPUs exposed to the instance.
+    "imageSpaceGb": 42, # Space allotted for the image, defined in GB.
+    "kind": "compute#machineType", # Type of the resource.
+    "ephemeralDisks": [ # List of extended ephemeral disks assigned to the instance.
+      {
+        "diskGb": 42, # Size of the ephemeral disk, defined in GB.
+      },
+    ],
+    "maximumPersistentDisksSizeGb": "A String", # Maximum total persistent disks size (GB) allowed.
+    "description": "A String", # An optional textual description of the resource.
+    "maximumPersistentDisks": 42, # Maximum persistent disks allowed.
+    "memoryMb": 42, # Physical memory assigned to the instance, defined in MB.
+    "availableZone": [ # The zones that this machine type can run in.
+      "A String",
+    ],
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "name": "A String", # Name of the resource.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves the list of machine type resources available to the specified project.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+  pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+  filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+  An object of the form:
+
+    {
+    "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+    "items": [ # The machine type resources.
+      {
+        "guestCpus": 42, # Count of CPUs exposed to the instance.
+        "imageSpaceGb": 42, # Space allotted for the image, defined in GB.
+        "kind": "compute#machineType", # Type of the resource.
+        "ephemeralDisks": [ # List of extended ephemeral disks assigned to the instance.
+          {
+            "diskGb": 42, # Size of the ephemeral disk, defined in GB.
+          },
+        ],
+        "maximumPersistentDisksSizeGb": "A String", # Maximum total persistent disks size (GB) allowed.
+        "description": "A String", # An optional textual description of the resource.
+        "maximumPersistentDisks": 42, # Maximum persistent disks allowed.
+        "memoryMb": 42, # Physical memory assigned to the instance, defined in MB.
+        "availableZone": [ # The zones that this machine type can run in.
+          "A String",
+        ],
+        "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+        "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+        "selfLink": "A String", # Server defined URL for the resource (output only).
+        "name": "A String", # Name of the resource.
+      },
+    ],
+    "kind": "compute#machineTypeList", # Type of resource.
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for this resource (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call 'execute()' on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta13.networks.html b/docs/dyn/compute_v1beta13.networks.html
new file mode 100644
index 0000000..18ba234
--- /dev/null
+++ b/docs/dyn/compute_v1beta13.networks.html
@@ -0,0 +1,260 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="compute_v1beta13.html">Compute Engine API</a> . <a href="compute_v1beta13.networks.html">networks</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(project, network)</a></code></p>
+<p class="firstline">Deletes the specified network resource.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, network)</a></code></p>
+<p class="firstline">Returns the specified network resource.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, body)</a></code></p>
+<p class="firstline">Creates a network resource in the specified project using the data included in the request.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of network resources available to the specified project.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(project, network)</code>
+  <pre>Deletes the specified network resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  network: string, Name of the network resource to delete. (required)
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, network)</code>
+  <pre>Returns the specified network resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  network: string, Name of the network resource to return. (required)
+
+Returns:
+  An object of the form:
+
+    {
+      "kind": "compute#network", # Type of the resource.
+      "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+      "IPv4Range": "A String", # Required; The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.
+      "gatewayIPv4": "A String", # An optional address that is used for default routing to other networks. This must be within the range specified by IPv4Range, and is typically the first usable address in that range. If not specified, the default value is the first usable address in IPv4Range.
+      "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+      "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+      "selfLink": "A String", # Server defined URL for the resource (output only).
+      "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, body)</code>
+  <pre>Creates a network resource in the specified project using the data included in the request.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "kind": "compute#network", # Type of the resource.
+    "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+    "IPv4Range": "A String", # Required; The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.
+    "gatewayIPv4": "A String", # An optional address that is used for default routing to other networks. This must be within the range specified by IPv4Range, and is typically the first usable address in that range. If not specified, the default value is the first usable address in IPv4Range.
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+  }
+
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves the list of network resources available to the specified project.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+  pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+  filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+  An object of the form:
+
+    {
+    "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+    "items": [ # The network resources.
+      {
+          "kind": "compute#network", # Type of the resource.
+          "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+          "IPv4Range": "A String", # Required; The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.
+          "gatewayIPv4": "A String", # An optional address that is used for default routing to other networks. This must be within the range specified by IPv4Range, and is typically the first usable address in that range. If not specified, the default value is the first usable address in IPv4Range.
+          "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+          "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+          "selfLink": "A String", # Server defined URL for the resource (output only).
+          "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+        },
+    ],
+    "kind": "compute#networkList", # Type of resource.
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for this resource (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call 'execute()' on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta13.operations.html b/docs/dyn/compute_v1beta13.operations.html
new file mode 100644
index 0000000..b76e938
--- /dev/null
+++ b/docs/dyn/compute_v1beta13.operations.html
@@ -0,0 +1,208 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="compute_v1beta13.html">Compute Engine API</a> . <a href="compute_v1beta13.operations.html">operations</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(project, operation)</a></code></p>
+<p class="firstline">Deletes the specified operation resource.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, operation)</a></code></p>
+<p class="firstline">Retrieves the specified operation resource.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of operation resources contained within the specified project.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(project, operation)</code>
+  <pre>Deletes the specified operation resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  operation: string, Name of the operation resource to delete. (required)
+</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, operation)</code>
+  <pre>Retrieves the specified operation resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  operation: string, Name of the operation resource to return. (required)
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves the list of operation resources contained within the specified project.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+  pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+  filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+  An object of the form:
+
+    {
+    "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+    "items": [ # The operation resources.
+      {
+        "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+        "kind": "compute#operation", # Type of the resource.
+        "name": "A String", # Name of the resource.
+        "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+        "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+        "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+        "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+          "errors": [ # The array of errors encountered while processing this operation.
+            {
+              "message": "A String", # An optional, human-readable error message.
+              "code": "A String", # The error type identifier for this error.
+              "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+            },
+          ],
+        },
+        "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+        "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+        "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+        "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+        "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+        "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+        "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+        "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+        "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+        "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+        "selfLink": "A String", # Server defined URL for the resource (output only).
+        "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+      },
+    ],
+    "kind": "compute#operationList", # Type of resource.
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for this resource (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call 'execute()' on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta13.projects.html b/docs/dyn/compute_v1beta13.projects.html
new file mode 100644
index 0000000..2def9ff
--- /dev/null
+++ b/docs/dyn/compute_v1beta13.projects.html
@@ -0,0 +1,177 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="compute_v1beta13.html">Compute Engine API</a> . <a href="compute_v1beta13.projects.html">projects</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(project)</a></code></p>
+<p class="firstline">Returns the specified project resource.</p>
+<p class="toc_element">
+  <code><a href="#setCommonInstanceMetadata">setCommonInstanceMetadata(project, body)</a></code></p>
+<p class="firstline">Sets metadata common to all instances within the specified project using the data included in the request.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(project)</code>
+  <pre>Returns the specified project resource.
+
+Args:
+  project: string, Name of the project resource to retrieve. (required)
+
+Returns:
+  An object of the form:
+
+    {
+    "kind": "compute#project", # Type of the resource.
+    "description": "A String", # An optional textual description of the resource.
+    "commonInstanceMetadata": { # Metadata key/value pairs available to all instances contained in this project.
+      "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
+        {
+          "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
+          "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
+        },
+      ],
+      "kind": "compute#metadata", # Type of the resource.
+    },
+    "externalIpAddresses": [ # Internet available IP addresses available for use in this project.
+      "A String",
+    ],
+    "quotas": [ # Quotas assigned to this project.
+      {
+        "usage": 3.14, # Current usage of this metric.
+        "metric": "A String", # Name of the quota metric.
+        "limit": 3.14, # Quota limit for this metric.
+      },
+    ],
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "name": "A String", # Name of the resource.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="setCommonInstanceMetadata">setCommonInstanceMetadata(project, body)</code>
+  <pre>Sets metadata common to all instances within the specified project using the data included in the request.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+  "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
+    {
+      "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
+      "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
+    },
+  ],
+  "kind": "compute#metadata", # Type of the resource.
+}
+
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta13.snapshots.html b/docs/dyn/compute_v1beta13.snapshots.html
new file mode 100644
index 0000000..4164b48
--- /dev/null
+++ b/docs/dyn/compute_v1beta13.snapshots.html
@@ -0,0 +1,266 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="compute_v1beta13.html">Compute Engine API</a> . <a href="compute_v1beta13.snapshots.html">snapshots</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(project, snapshot)</a></code></p>
+<p class="firstline">Deletes the specified persistent disk snapshot resource.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, snapshot)</a></code></p>
+<p class="firstline">Returns the specified persistent disk snapshot resource.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, body)</a></code></p>
+<p class="firstline">Creates a persistent disk snapshot resource in the specified project using the data included in the request.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of persistent disk snapshot resources contained within the specified project.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(project, snapshot)</code>
+  <pre>Deletes the specified persistent disk snapshot resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  snapshot: string, Name of the persistent disk snapshot resource to delete. (required)
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, snapshot)</code>
+  <pre>Returns the specified persistent disk snapshot resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  snapshot: string, Name of the persistent disk snapshot resource to return. (required)
+
+Returns:
+  An object of the form:
+
+    {
+      "status": "A String", # The status of the persistent disk snapshot (output only).
+      "kind": "compute#snapshot", # Type of the resource.
+      "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+      "sourceDisk": "A String", # The source disk used to create this snapshot. Once the source disk has been deleted from the system, this field will be cleared, and will not be set even if a disk with the same name has been re-created.
+      "sourceDiskId": "A String", # The 'id' value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name.
+      "diskSizeGb": "A String", # Size of the persistent disk snapshot, specified in GB (output only).
+      "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+      "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+      "selfLink": "A String", # Server defined URL for the resource (output only).
+      "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, body)</code>
+  <pre>Creates a persistent disk snapshot resource in the specified project using the data included in the request.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "status": "A String", # The status of the persistent disk snapshot (output only).
+    "kind": "compute#snapshot", # Type of the resource.
+    "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+    "sourceDisk": "A String", # The source disk used to create this snapshot. Once the source disk has been deleted from the system, this field will be cleared, and will not be set even if a disk with the same name has been re-created.
+    "sourceDiskId": "A String", # The 'id' value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name.
+    "diskSizeGb": "A String", # Size of the persistent disk snapshot, specified in GB (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+  }
+
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+    "kind": "compute#operation", # Type of the resource.
+    "name": "A String", # Name of the resource.
+    "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+    "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+    "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+    "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+      "errors": [ # The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # An optional, human-readable error message.
+          "code": "A String", # The error type identifier for this error.
+          "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+        },
+      ],
+    },
+    "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+    "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+    "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+    "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+    "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+    "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+    "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+    "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves the list of persistent disk snapshot resources contained within the specified project.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+  pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+  filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+  An object of the form:
+
+    {
+    "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+    "items": [ # The persistent snapshot resources.
+      {
+          "status": "A String", # The status of the persistent disk snapshot (output only).
+          "kind": "compute#snapshot", # Type of the resource.
+          "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+          "sourceDisk": "A String", # The source disk used to create this snapshot. Once the source disk has been deleted from the system, this field will be cleared, and will not be set even if a disk with the same name has been re-created.
+          "sourceDiskId": "A String", # The 'id' value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name.
+          "diskSizeGb": "A String", # Size of the persistent disk snapshot, specified in GB (output only).
+          "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+          "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+          "selfLink": "A String", # Server defined URL for the resource (output only).
+          "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+        },
+    ],
+    "kind": "compute#snapshotList", # Type of resource.
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for this resource (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call 'execute()' on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta13.zones.html b/docs/dyn/compute_v1beta13.zones.html
new file mode 100644
index 0000000..8945826
--- /dev/null
+++ b/docs/dyn/compute_v1beta13.zones.html
@@ -0,0 +1,177 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="compute_v1beta13.html">Compute Engine API</a> . <a href="compute_v1beta13.zones.html">zones</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(project, zone)</a></code></p>
+<p class="firstline">Returns the specified zone resource.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of zone resources available to the specified project.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(project, zone)</code>
+  <pre>Returns the specified zone resource.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  zone: string, Name of the zone resource to return. (required)
+
+Returns:
+  An object of the form:
+
+    {
+    "status": "A String", # Status of the zone. "UP" or "DOWN".
+    "kind": "compute#zone", # Type of the resource.
+    "availableMachineType": [ # The machine types that can be used in this zone (output only).
+      "A String",
+    ],
+    "description": "A String", # Textual description of the resource.
+    "maintenanceWindows": [ # Scheduled maintenance windows for the zone. When the zone is in a maintenance window, all resources which reside in the zone will be unavailable.
+      {
+        "endTime": "A String", # End time of the maintenance window, in RFC 3339 format.
+        "beginTime": "A String", # Begin time of the maintenance window, in RFC 3339 format.
+        "name": "A String", # Name of the maintenance window.
+        "description": "A String", # Textual description of the maintenance window.
+      },
+    ],
+    "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for the resource (output only).
+    "name": "A String", # Name of the resource.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves the list of zone resources available to the specified project.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+  pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+  filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+  An object of the form:
+
+    {
+    "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+    "items": [ # The zone resources.
+      {
+        "status": "A String", # Status of the zone. "UP" or "DOWN".
+        "kind": "compute#zone", # Type of the resource.
+        "availableMachineType": [ # The machine types that can be used in this zone (output only).
+          "A String",
+        ],
+        "description": "A String", # Textual description of the resource.
+        "maintenanceWindows": [ # Scheduled maintenance windows for the zone. When the zone is in a maintenance window, all resources which reside in the zone will be unavailable.
+          {
+            "endTime": "A String", # End time of the maintenance window, in RFC 3339 format.
+            "beginTime": "A String", # Begin time of the maintenance window, in RFC 3339 format.
+            "name": "A String", # Name of the maintenance window.
+            "description": "A String", # Textual description of the maintenance window.
+          },
+        ],
+        "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+        "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+        "selfLink": "A String", # Server defined URL for the resource (output only).
+        "name": "A String", # Name of the resource.
+      },
+    ],
+    "kind": "compute#zoneList", # Type of resource.
+    "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+    "selfLink": "A String", # Server defined URL for this resource (output only).
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call 'execute()' on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/coordinate_v1.html b/docs/dyn/coordinate_v1.html
index 526a1ca..1db6a5e 100644
--- a/docs/dyn/coordinate_v1.html
+++ b/docs/dyn/coordinate_v1.html
@@ -84,4 +84,19 @@
 </p>
 <p class="firstline">Returns the jobs Resource.</p>
 
+<p class="toc_element">
+  <code><a href="coordinate_v1.location.html">location()</a></code>
+</p>
+<p class="firstline">Returns the location Resource.</p>
+
+<p class="toc_element">
+  <code><a href="coordinate_v1.schedule.html">schedule()</a></code>
+</p>
+<p class="firstline">Returns the schedule Resource.</p>
+
+<p class="toc_element">
+  <code><a href="coordinate_v1.worker.html">worker()</a></code>
+</p>
+<p class="firstline">Returns the worker Resource.</p>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/coordinate_v1.jobs.html b/docs/dyn/coordinate_v1.jobs.html
index 62e4b56..96ffda4 100644
--- a/docs/dyn/coordinate_v1.jobs.html
+++ b/docs/dyn/coordinate_v1.jobs.html
@@ -435,7 +435,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/coordinate_v1.location.html b/docs/dyn/coordinate_v1.location.html
new file mode 100644
index 0000000..97d000a
--- /dev/null
+++ b/docs/dyn/coordinate_v1.location.html
@@ -0,0 +1,138 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="coordinate_v1.html">Google Maps Coordinate API</a> . <a href="coordinate_v1.location.html">location</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#list">list(teamId, workerEmail, startTimestampMs, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">Retrieves a list of locations for a worker.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="list">list(teamId, workerEmail, startTimestampMs, pageToken=None, maxResults=None)</code>
+  <pre>Retrieves a list of locations for a worker.
+
+Args:
+  teamId: string, Team ID (required)
+  workerEmail: string, Worker email address. (required)
+  startTimestampMs: string, Start timestamp in milliseconds since the epoch. (required)
+  pageToken: string, Continuation token
+  maxResults: integer, Maximum number of results to return in one page.
+
+Returns:
+  An object of the form:
+
+    { # Response from a List Locations request.
+    "nextPageToken": "A String", # A token to provide to get the next page of results.
+    "items": [ # Locations in the collection.
+      { # Recorded location of a worker.
+        "latitude": 3.14, # Latitude.
+        "collectionTime": "A String", # The collection time in milliseconds since the epoch.
+        "confidenceRadius": 3.14, # The location accuracy in meters. This is the radius of a 95% confidence interval around the location measurement.
+        "kind": "coordinate#locationRecord", # Identifies this object as a location.
+        "longitude": 3.14, # Longitude.
+      },
+    ],
+    "kind": "coordinate#locationList", # Identifies this object as a list of locations.
+    "tokenPagination": { # Pagination information. # Pagination information for token pagination.
+      "nextPageToken": "A String", # A token to provide to get the next page of results.
+      "previousPageToken": "A String", # A token to provide to get the previous page of results.
+      "kind": "coordinate#tokenPagination", # Identifies this object as pagination information.
+    },
+    "pageInfo": { # Page information. # General pagination information.
+      "totalResults": 42, # Number of results available.
+      "kind": "coordinate#pageInfo", # Identifies this object as page information.
+      "resultPerPage": 42, # Number of results per page.
+      "startIndex": 42, # Page start index.
+    },
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call 'execute()' on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/coordinate_v1.schedule.html b/docs/dyn/coordinate_v1.schedule.html
new file mode 100644
index 0000000..c48a46a
--- /dev/null
+++ b/docs/dyn/coordinate_v1.schedule.html
@@ -0,0 +1,170 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="coordinate_v1.html">Google Maps Coordinate API</a> . <a href="coordinate_v1.schedule.html">schedule</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(teamId, jobId)</a></code></p>
+<p class="firstline">Retrieves the schedule for a job.</p>
+<p class="toc_element">
+  <code><a href="#patch">patch(teamId, jobId, body, allDay=None, startTime=None, endTime=None)</a></code></p>
+<p class="firstline">Replaces the schedule of a job with the provided schedule. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(teamId, jobId, body, allDay=None, startTime=None, endTime=None)</a></code></p>
+<p class="firstline">Replaces the schedule of a job with the provided schedule.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(teamId, jobId)</code>
+  <pre>Retrieves the schedule for a job.
+
+Args:
+  teamId: string, Team ID (required)
+  jobId: string, Job number (required)
+
+Returns:
+  An object of the form:
+
+    { # Job schedule.
+      "kind": "coordinate#schedule", # Identifies this object as a job schedule.
+      "allDay": True or False, # Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if this is true.
+      "startTime": "A String", # Scheduled start time in milliseconds since epoch.
+      "endTime": "A String", # Scheduled end time in milliseconds since epoch.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="patch">patch(teamId, jobId, body, allDay=None, startTime=None, endTime=None)</code>
+  <pre>Replaces the schedule of a job with the provided schedule. This method supports patch semantics.
+
+Args:
+  teamId: string, Team ID (required)
+  jobId: string, Job number (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Job schedule.
+    "kind": "coordinate#schedule", # Identifies this object as a job schedule.
+    "allDay": True or False, # Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if this is true.
+    "startTime": "A String", # Scheduled start time in milliseconds since epoch.
+    "endTime": "A String", # Scheduled end time in milliseconds since epoch.
+  }
+
+  allDay: boolean, Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if this is true.
+  startTime: string, Scheduled start time in milliseconds since epoch.
+  endTime: string, Scheduled end time in milliseconds since epoch.
+
+Returns:
+  An object of the form:
+
+    { # Job schedule.
+      "kind": "coordinate#schedule", # Identifies this object as a job schedule.
+      "allDay": True or False, # Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if this is true.
+      "startTime": "A String", # Scheduled start time in milliseconds since epoch.
+      "endTime": "A String", # Scheduled end time in milliseconds since epoch.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(teamId, jobId, body, allDay=None, startTime=None, endTime=None)</code>
+  <pre>Replaces the schedule of a job with the provided schedule.
+
+Args:
+  teamId: string, Team ID (required)
+  jobId: string, Job number (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Job schedule.
+    "kind": "coordinate#schedule", # Identifies this object as a job schedule.
+    "allDay": True or False, # Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if this is true.
+    "startTime": "A String", # Scheduled start time in milliseconds since epoch.
+    "endTime": "A String", # Scheduled end time in milliseconds since epoch.
+  }
+
+  allDay: boolean, Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if this is true.
+  startTime: string, Scheduled start time in milliseconds since epoch.
+  endTime: string, Scheduled end time in milliseconds since epoch.
+
+Returns:
+  An object of the form:
+
+    { # Job schedule.
+      "kind": "coordinate#schedule", # Identifies this object as a job schedule.
+      "allDay": True or False, # Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if this is true.
+      "startTime": "A String", # Scheduled start time in milliseconds since epoch.
+      "endTime": "A String", # Scheduled end time in milliseconds since epoch.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/coordinate_v1.worker.html b/docs/dyn/coordinate_v1.worker.html
new file mode 100644
index 0000000..0e3da77
--- /dev/null
+++ b/docs/dyn/coordinate_v1.worker.html
@@ -0,0 +1,102 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="coordinate_v1.html">Google Maps Coordinate API</a> . <a href="coordinate_v1.worker.html">worker</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#list">list(teamId)</a></code></p>
+<p class="firstline">Retrieves a list of workers in a team.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="list">list(teamId)</code>
+  <pre>Retrieves a list of workers in a team.
+
+Args:
+  teamId: string, Team ID (required)
+
+Returns:
+  An object of the form:
+
+    { # Response from a List Workers request.
+    "items": [ # Workers in the collection.
+      { # A worker in a Coordinate team.
+        "kind": "coordinate#worker", # Identifies this object as a worker.
+        "id": "A String", # Worker email address.
+      },
+    ],
+    "kind": "coordinate#workerList", # Identifies this object as a list of workers.
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v1_1.dimensionValues.html b/docs/dyn/dfareporting_v1_1.dimensionValues.html
index 82c5408..6f0a933 100644
--- a/docs/dyn/dfareporting_v1_1.dimensionValues.html
+++ b/docs/dyn/dfareporting_v1_1.dimensionValues.html
@@ -137,7 +137,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v1_1.files.html b/docs/dyn/dfareporting_v1_1.files.html
index 029791f..f707f05 100644
--- a/docs/dyn/dfareporting_v1_1.files.html
+++ b/docs/dyn/dfareporting_v1_1.files.html
@@ -160,7 +160,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v1_1.reports.files.html b/docs/dyn/dfareporting_v1_1.reports.files.html
index 630fb89..bb9bc0a 100644
--- a/docs/dyn/dfareporting_v1_1.reports.files.html
+++ b/docs/dyn/dfareporting_v1_1.reports.files.html
@@ -217,7 +217,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v1_1.reports.html b/docs/dyn/dfareporting_v1_1.reports.html
index fa979c1..be6fba0 100644
--- a/docs/dyn/dfareporting_v1_1.reports.html
+++ b/docs/dyn/dfareporting_v1_1.reports.html
@@ -229,7 +229,9 @@
           "A String",
         ],
       },
-      "format": "A String", # The output format of the report, currently only "CSV" is supported. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+      "format": "A String", # The output format of the report, one of:
+          # - "CSV"
+          # - "EXCEL"  If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
       "ownerProfileId": "A String", # The user profile id of the owner of this report.
       "reachCriteria": { # The report criteria for a report of type "REACH".
         "activities": { # Represents an activity group. # Activity group.
@@ -676,7 +678,9 @@
         "A String",
       ],
     },
-    "format": "A String", # The output format of the report, currently only "CSV" is supported. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+    "format": "A String", # The output format of the report, one of:
+        # - "CSV"
+        # - "EXCEL"  If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
     "ownerProfileId": "A String", # The user profile id of the owner of this report.
     "reachCriteria": { # The report criteria for a report of type "REACH".
       "activities": { # Represents an activity group. # Activity group.
@@ -1117,7 +1121,9 @@
           "A String",
         ],
       },
-      "format": "A String", # The output format of the report, currently only "CSV" is supported. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+      "format": "A String", # The output format of the report, one of:
+          # - "CSV"
+          # - "EXCEL"  If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
       "ownerProfileId": "A String", # The user profile id of the owner of this report.
       "reachCriteria": { # The report criteria for a report of type "REACH".
         "activities": { # Represents an activity group. # Activity group.
@@ -1579,7 +1585,9 @@
               "A String",
             ],
           },
-          "format": "A String", # The output format of the report, currently only "CSV" is supported. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+          "format": "A String", # The output format of the report, one of:
+              # - "CSV"
+              # - "EXCEL"  If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
           "ownerProfileId": "A String", # The user profile id of the owner of this report.
           "reachCriteria": { # The report criteria for a report of type "REACH".
             "activities": { # Represents an activity group. # Activity group.
@@ -1928,7 +1936,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
@@ -2045,7 +2053,9 @@
         "A String",
       ],
     },
-    "format": "A String", # The output format of the report, currently only "CSV" is supported. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+    "format": "A String", # The output format of the report, one of:
+        # - "CSV"
+        # - "EXCEL"  If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
     "ownerProfileId": "A String", # The user profile id of the owner of this report.
     "reachCriteria": { # The report criteria for a report of type "REACH".
       "activities": { # Represents an activity group. # Activity group.
@@ -2486,7 +2496,9 @@
           "A String",
         ],
       },
-      "format": "A String", # The output format of the report, currently only "CSV" is supported. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+      "format": "A String", # The output format of the report, one of:
+          # - "CSV"
+          # - "EXCEL"  If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
       "ownerProfileId": "A String", # The user profile id of the owner of this report.
       "reachCriteria": { # The report criteria for a report of type "REACH".
         "activities": { # Represents an activity group. # Activity group.
@@ -2987,7 +2999,9 @@
         "A String",
       ],
     },
-    "format": "A String", # The output format of the report, currently only "CSV" is supported. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+    "format": "A String", # The output format of the report, one of:
+        # - "CSV"
+        # - "EXCEL"  If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
     "ownerProfileId": "A String", # The user profile id of the owner of this report.
     "reachCriteria": { # The report criteria for a report of type "REACH".
       "activities": { # Represents an activity group. # Activity group.
@@ -3428,7 +3442,9 @@
           "A String",
         ],
       },
-      "format": "A String", # The output format of the report, currently only "CSV" is supported. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+      "format": "A String", # The output format of the report, one of:
+          # - "CSV"
+          # - "EXCEL"  If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
       "ownerProfileId": "A String", # The user profile id of the owner of this report.
       "reachCriteria": { # The report criteria for a report of type "REACH".
         "activities": { # Represents an activity group. # Activity group.
diff --git a/docs/dyn/discovery_v1.apis.html b/docs/dyn/discovery_v1.apis.html
index 160f3bc..5635b84 100644
--- a/docs/dyn/discovery_v1.apis.html
+++ b/docs/dyn/discovery_v1.apis.html
@@ -120,6 +120,7 @@
               "A String",
             ],
             "minimum": "A String", # The minimum value of this parameter.
+            "readOnly": True or False, # The value is read-only, generated by the service. The value can not be modified by the client. It the value is included in a POST, PUT or PATCH request, it will be ignored by the service.
             "location": "A String", # Whether this parameter goes in the query or the path for REST requests.
             "pattern": "A String", # The regular expression this parameter must conform to. Uses Java 6 regex format: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
             "additionalProperties": # Object with schema name: JsonSchema # If this is a schema for an object, this property is the schema for any additional properties with dynamic keys on this object.
@@ -190,6 +191,7 @@
           "A String",
         ],
         "minimum": "A String", # The minimum value of this parameter.
+        "readOnly": True or False, # The value is read-only, generated by the service. The value can not be modified by the client. It the value is included in a POST, PUT or PATCH request, it will be ignored by the service.
         "location": "A String", # Whether this parameter goes in the query or the path for REST requests.
         "pattern": "A String", # The regular expression this parameter must conform to. Uses Java 6 regex format: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
         "additionalProperties": # Object with schema name: JsonSchema # If this is a schema for an object, this property is the schema for any additional properties with dynamic keys on this object.
@@ -223,6 +225,7 @@
           "A String",
         ],
         "minimum": "A String", # The minimum value of this parameter.
+        "readOnly": True or False, # The value is read-only, generated by the service. The value can not be modified by the client. It the value is included in a POST, PUT or PATCH request, it will be ignored by the service.
         "location": "A String", # Whether this parameter goes in the query or the path for REST requests.
         "pattern": "A String", # The regular expression this parameter must conform to. Uses Java 6 regex format: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
         "additionalProperties": # Object with schema name: JsonSchema # If this is a schema for an object, this property is the schema for any additional properties with dynamic keys on this object.
@@ -274,6 +277,7 @@
                   "A String",
                 ],
                 "minimum": "A String", # The minimum value of this parameter.
+                "readOnly": True or False, # The value is read-only, generated by the service. The value can not be modified by the client. It the value is included in a POST, PUT or PATCH request, it will be ignored by the service.
                 "location": "A String", # Whether this parameter goes in the query or the path for REST requests.
                 "pattern": "A String", # The regular expression this parameter must conform to. Uses Java 6 regex format: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
                 "additionalProperties": # Object with schema name: JsonSchema # If this is a schema for an object, this property is the schema for any additional properties with dynamic keys on this object.
diff --git a/docs/dyn/drive_v2.about.html b/docs/dyn/drive_v2.about.html
index 4349974..09b6d34 100644
--- a/docs/dyn/drive_v2.about.html
+++ b/docs/dyn/drive_v2.about.html
@@ -83,7 +83,7 @@
   <pre>Gets the information about the current user along with Drive API settings
 
 Args:
-  includeSubscribed: boolean, Whether to include subscribed items when calculating the number of remaining change IDs
+  includeSubscribed: boolean, When calculating the number of remaining change IDs, whether to include shared files and public files the user has opened. When set to false, this counts only change IDs for owned files and any shared or public files that the user has explictly added to a folder in Drive.
   startChangeId: string, Change ID to start counting from when calculating number of remaining change IDs
   maxChangeIdCount: string, Maximum number of remaining change IDs to count
 
diff --git a/docs/dyn/drive_v2.changes.html b/docs/dyn/drive_v2.changes.html
index df48a0e..416526e 100644
--- a/docs/dyn/drive_v2.changes.html
+++ b/docs/dyn/drive_v2.changes.html
@@ -99,6 +99,7 @@
     "deleted": True or False, # Whether the file has been deleted.
     "file": { # The metadata for a file. # The updated state of the file. Present if the file has not been deleted.
       "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+      "appDataContents": True or False, # Whether this file is in the appdata folder.
       "thumbnailLink": "A String", # A link to the file's thumbnail.
       "labels": { # A group of labels for the file.
         "restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -120,6 +121,7 @@
         "A String",
       ],
       "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
+      "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
       "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
       "parents": [ # Collection of parent folders which contain this file.
           # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
@@ -134,6 +136,7 @@
       "exportLinks": { # Links for exporting Google Docs to specific formats.
         "a_key": "A String", # A mapping from export format to URL
       },
+      "shared": True or False, # Whether the file has been shared.
       "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
         "mimeType": "A String", # The MIME type of the thumbnail.
         "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
@@ -147,29 +150,39 @@
       "fileSize": "A String", # The size of the file in bytes. This will only be populated on files with content stored in Drive.
       "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
       "md5Checksum": "A String", # An MD5 checksum for the content of this file. This will only be populated on files with content stored in Drive.
+      "iconLink": "A String", # A link to the file's icon.
       "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
-        "flashUsed": True or False, # Whether a flash was used to create the photo.
+        "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
         "exposureTime": 3.14, # The length of the exposure, in seconds.
         "cameraMake": "A String", # The make of the camera used to create the photo.
+        "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
         "isoSpeed": 42, # The ISO speed used to create the photo.
         "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
-        "height": 42, # The height of the image in pixels.
-        "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+        "exposureMode": "A String", # The exposure mode used to create the photo.
+        "colorSpace": "A String", # The color space of the photo.
         "location": { # Geographic location information stored in the image.
           "latitude": 3.14, # The latitude stored in the image.
           "altitude": 3.14, # The altitude stored in the image.
           "longitude": 3.14, # The longitude stored in the image.
         },
+        "subjectDistance": 42, # The distance to the subject of the photo, in meters.
+        "height": 42, # The height of the image in pixels.
+        "lens": "A String", # The lens used to create the photo.
+        "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+        "width": 42, # The width of the image in pixels.
+        "meteringMode": "A String", # The metering mode used to create the photo.
+        "flashUsed": True or False, # Whether a flash was used to create the photo.
         "aperture": 3.14, # The aperture used to create the photo (f-number).
         "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
-        "width": 42, # The width of the image in pixels.
+        "sensor": "A String", # The type of sensor used to create the photo.
+        "whiteBalance": "A String", # The white balance mode used to create the photo.
         "cameraModel": "A String", # The model of the camera used to create the photo.
       },
       "embedLink": "A String", # A link for embedding the file.
       "alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
       "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
       "downloadUrl": "A String", # Short term download URL for the file. This will only be populated on files with content stored in Drive.
-      "userPermission": { # A single permission for a file. # The permissions for the authenticated user on this file.
+      "userPermission": { # A single permission for a file.
         "withLink": True or False, # Whether the link is required for this permission.
         "kind": "drive#permission", # This is always drive#permission.
         "name": "A String", # The name for this permission.
@@ -207,7 +220,7 @@
   <pre>Lists the changes for a user.
 
 Args:
-  includeSubscribed: boolean, Whether to include subscribed items.
+  includeSubscribed: boolean, Whether to include shared files and public files the user has opened. When set to false, the list will include owned files plus any shared or public files the user has explictly added to a folder in Drive.
   includeDeleted: boolean, Whether to include deleted items.
   pageToken: string, Page token for changes.
   maxResults: integer, Maximum number of changes to return.
@@ -225,6 +238,7 @@
         "deleted": True or False, # Whether the file has been deleted.
         "file": { # The metadata for a file. # The updated state of the file. Present if the file has not been deleted.
           "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+          "appDataContents": True or False, # Whether this file is in the appdata folder.
           "thumbnailLink": "A String", # A link to the file's thumbnail.
           "labels": { # A group of labels for the file.
             "restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -246,6 +260,7 @@
             "A String",
           ],
           "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
+          "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
           "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
           "parents": [ # Collection of parent folders which contain this file.
               # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
@@ -260,6 +275,7 @@
           "exportLinks": { # Links for exporting Google Docs to specific formats.
             "a_key": "A String", # A mapping from export format to URL
           },
+          "shared": True or False, # Whether the file has been shared.
           "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
             "mimeType": "A String", # The MIME type of the thumbnail.
             "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
@@ -273,29 +289,39 @@
           "fileSize": "A String", # The size of the file in bytes. This will only be populated on files with content stored in Drive.
           "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
           "md5Checksum": "A String", # An MD5 checksum for the content of this file. This will only be populated on files with content stored in Drive.
+          "iconLink": "A String", # A link to the file's icon.
           "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
-            "flashUsed": True or False, # Whether a flash was used to create the photo.
+            "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
             "exposureTime": 3.14, # The length of the exposure, in seconds.
             "cameraMake": "A String", # The make of the camera used to create the photo.
+            "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
             "isoSpeed": 42, # The ISO speed used to create the photo.
             "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
-            "height": 42, # The height of the image in pixels.
-            "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+            "exposureMode": "A String", # The exposure mode used to create the photo.
+            "colorSpace": "A String", # The color space of the photo.
             "location": { # Geographic location information stored in the image.
               "latitude": 3.14, # The latitude stored in the image.
               "altitude": 3.14, # The altitude stored in the image.
               "longitude": 3.14, # The longitude stored in the image.
             },
+            "subjectDistance": 42, # The distance to the subject of the photo, in meters.
+            "height": 42, # The height of the image in pixels.
+            "lens": "A String", # The lens used to create the photo.
+            "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+            "width": 42, # The width of the image in pixels.
+            "meteringMode": "A String", # The metering mode used to create the photo.
+            "flashUsed": True or False, # Whether a flash was used to create the photo.
             "aperture": 3.14, # The aperture used to create the photo (f-number).
             "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
-            "width": 42, # The width of the image in pixels.
+            "sensor": "A String", # The type of sensor used to create the photo.
+            "whiteBalance": "A String", # The white balance mode used to create the photo.
             "cameraModel": "A String", # The model of the camera used to create the photo.
           },
           "embedLink": "A String", # A link for embedding the file.
           "alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
           "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
           "downloadUrl": "A String", # Short term download URL for the file. This will only be populated on files with content stored in Drive.
-          "userPermission": { # A single permission for a file. # The permissions for the authenticated user on this file.
+          "userPermission": { # A single permission for a file.
             "withLink": True or False, # Whether the link is required for this permission.
             "kind": "drive#permission", # This is always drive#permission.
             "name": "A String", # The name for this permission.
@@ -345,7 +371,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/drive_v2.children.html b/docs/dyn/drive_v2.children.html
index 91d6b6f..188f97d 100644
--- a/docs/dyn/drive_v2.children.html
+++ b/docs/dyn/drive_v2.children.html
@@ -188,7 +188,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/drive_v2.comments.html b/docs/dyn/drive_v2.comments.html
index 8db2aae..945d2c4 100644
--- a/docs/dyn/drive_v2.comments.html
+++ b/docs/dyn/drive_v2.comments.html
@@ -119,7 +119,7 @@
   An object of the form:
 
     { # A JSON representation of a comment on a file in Google Drive.
-      "status": "", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
+      "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
           # - "open" - The comment is still open.
           # - "resolved" - The comment has been resolved by one of its replies.
       "selfLink": "A String", # A link back to this comment.
@@ -180,7 +180,7 @@
     The object takes the form of:
 
 { # A JSON representation of a comment on a file in Google Drive.
-    "status": "", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
+    "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
         # - "open" - The comment is still open.
         # - "resolved" - The comment has been resolved by one of its replies.
     "selfLink": "A String", # A link back to this comment.
@@ -235,7 +235,7 @@
   An object of the form:
 
     { # A JSON representation of a comment on a file in Google Drive.
-      "status": "", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
+      "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
           # - "open" - The comment is still open.
           # - "resolved" - The comment has been resolved by one of its replies.
       "selfLink": "A String", # A link back to this comment.
@@ -304,7 +304,7 @@
     "nextPageToken": "A String", # The token to use to request the next page of results.
     "items": [ # List of comments.
       { # A JSON representation of a comment on a file in Google Drive.
-          "status": "", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
+          "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
               # - "open" - The comment is still open.
               # - "resolved" - The comment has been resolved by one of its replies.
           "selfLink": "A String", # A link back to this comment.
@@ -369,7 +369,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
@@ -383,7 +383,7 @@
     The object takes the form of:
 
 { # A JSON representation of a comment on a file in Google Drive.
-    "status": "", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
+    "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
         # - "open" - The comment is still open.
         # - "resolved" - The comment has been resolved by one of its replies.
     "selfLink": "A String", # A link back to this comment.
@@ -438,7 +438,7 @@
   An object of the form:
 
     { # A JSON representation of a comment on a file in Google Drive.
-      "status": "", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
+      "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
           # - "open" - The comment is still open.
           # - "resolved" - The comment has been resolved by one of its replies.
       "selfLink": "A String", # A link back to this comment.
@@ -500,7 +500,7 @@
     The object takes the form of:
 
 { # A JSON representation of a comment on a file in Google Drive.
-    "status": "", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
+    "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
         # - "open" - The comment is still open.
         # - "resolved" - The comment has been resolved by one of its replies.
     "selfLink": "A String", # A link back to this comment.
@@ -555,7 +555,7 @@
   An object of the form:
 
     { # A JSON representation of a comment on a file in Google Drive.
-      "status": "", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
+      "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
           # - "open" - The comment is still open.
           # - "resolved" - The comment has been resolved by one of its replies.
       "selfLink": "A String", # A link back to this comment.
diff --git a/docs/dyn/drive_v2.files.html b/docs/dyn/drive_v2.files.html
index 18f27ce..87cbc06 100644
--- a/docs/dyn/drive_v2.files.html
+++ b/docs/dyn/drive_v2.files.html
@@ -75,7 +75,7 @@
 <h1><a href="drive_v2.html">Drive API</a> . <a href="drive_v2.files.html">files</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#copy">copy(fileId, body, pinned=None, convert=None, ocr=None, sourceLanguage=None, ocrLanguage=None, targetLanguage=None, timedTextTrackName=None, timedTextLanguage=None)</a></code></p>
+  <code><a href="#copy">copy(fileId, body, pinned=None, convert=None, ocrLanguage=None, ocr=None, timedTextLanguage=None, timedTextTrackName=None)</a></code></p>
 <p class="firstline">Creates a copy of the specified file.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(fileId)</a></code></p>
@@ -84,7 +84,7 @@
   <code><a href="#get">get(fileId, projection=None, updateViewedDate=None)</a></code></p>
 <p class="firstline">Gets a file's metadata by ID.</p>
 <p class="toc_element">
-  <code><a href="#insert">insert(body=None, media_body=None, convert=None, ocr=None, sourceLanguage=None, ocrLanguage=None, targetLanguage=None, timedTextLanguage=None, timedTextTrackName=None, pinned=None)</a></code></p>
+  <code><a href="#insert">insert(body=None, media_body=None, convert=None, ocrLanguage=None, ocr=None, timedTextLanguage=None, timedTextTrackName=None, pinned=None)</a></code></p>
 <p class="firstline">Insert a new file.</p>
 <p class="toc_element">
   <code><a href="#list">list(q=None, projection=None, pageToken=None, maxResults=None)</a></code></p>
@@ -93,7 +93,7 @@
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
-  <code><a href="#patch">patch(fileId, body, newRevision=None, pinned=None, targetLanguage=None, ocrLanguage=None, ocr=None, sourceLanguage=None, updateViewedDate=None, timedTextTrackName=None, convert=None, setModifiedDate=None, timedTextLanguage=None)</a></code></p>
+  <code><a href="#patch">patch(fileId, body, newRevision=None, pinned=None, ocrLanguage=None, ocr=None, updateViewedDate=None, timedTextTrackName=None, convert=None, setModifiedDate=None, timedTextLanguage=None)</a></code></p>
 <p class="firstline">Updates file metadata and/or content. This method supports patch semantics.</p>
 <p class="toc_element">
   <code><a href="#touch">touch(fileId)</a></code></p>
@@ -105,11 +105,11 @@
   <code><a href="#untrash">untrash(fileId)</a></code></p>
 <p class="firstline">Restores a file from the trash.</p>
 <p class="toc_element">
-  <code><a href="#update">update(fileId, body=None, newRevision=None, media_body=None, targetLanguage=None, ocrLanguage=None, ocr=None, pinned=None, sourceLanguage=None, updateViewedDate=None, timedTextTrackName=None, convert=None, setModifiedDate=None, timedTextLanguage=None)</a></code></p>
+  <code><a href="#update">update(fileId, body=None, newRevision=None, media_body=None, ocrLanguage=None, ocr=None, pinned=None, updateViewedDate=None, timedTextTrackName=None, convert=None, setModifiedDate=None, timedTextLanguage=None)</a></code></p>
 <p class="firstline">Updates file metadata and/or content</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="copy">copy(fileId, body, pinned=None, convert=None, ocr=None, sourceLanguage=None, ocrLanguage=None, targetLanguage=None, timedTextTrackName=None, timedTextLanguage=None)</code>
+    <code class="details" id="copy">copy(fileId, body, pinned=None, convert=None, ocrLanguage=None, ocr=None, timedTextLanguage=None, timedTextTrackName=None)</code>
   <pre>Creates a copy of the specified file.
 
 Args:
@@ -119,6 +119,7 @@
 
 { # The metadata for a file.
   "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+  "appDataContents": True or False, # Whether this file is in the appdata folder.
   "thumbnailLink": "A String", # A link to the file's thumbnail.
   "labels": { # A group of labels for the file.
     "restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -140,6 +141,7 @@
     "A String",
   ],
   "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
+  "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
   "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
   "parents": [ # Collection of parent folders which contain this file.
       # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
@@ -154,6 +156,7 @@
   "exportLinks": { # Links for exporting Google Docs to specific formats.
     "a_key": "A String", # A mapping from export format to URL
   },
+  "shared": True or False, # Whether the file has been shared.
   "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
     "mimeType": "A String", # The MIME type of the thumbnail.
     "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
@@ -167,29 +170,39 @@
   "fileSize": "A String", # The size of the file in bytes. This will only be populated on files with content stored in Drive.
   "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
   "md5Checksum": "A String", # An MD5 checksum for the content of this file. This will only be populated on files with content stored in Drive.
+  "iconLink": "A String", # A link to the file's icon.
   "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
-    "flashUsed": True or False, # Whether a flash was used to create the photo.
+    "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
     "exposureTime": 3.14, # The length of the exposure, in seconds.
     "cameraMake": "A String", # The make of the camera used to create the photo.
+    "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
     "isoSpeed": 42, # The ISO speed used to create the photo.
     "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
-    "height": 42, # The height of the image in pixels.
-    "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+    "exposureMode": "A String", # The exposure mode used to create the photo.
+    "colorSpace": "A String", # The color space of the photo.
     "location": { # Geographic location information stored in the image.
       "latitude": 3.14, # The latitude stored in the image.
       "altitude": 3.14, # The altitude stored in the image.
       "longitude": 3.14, # The longitude stored in the image.
     },
+    "subjectDistance": 42, # The distance to the subject of the photo, in meters.
+    "height": 42, # The height of the image in pixels.
+    "lens": "A String", # The lens used to create the photo.
+    "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+    "width": 42, # The width of the image in pixels.
+    "meteringMode": "A String", # The metering mode used to create the photo.
+    "flashUsed": True or False, # Whether a flash was used to create the photo.
     "aperture": 3.14, # The aperture used to create the photo (f-number).
     "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
-    "width": 42, # The width of the image in pixels.
+    "sensor": "A String", # The type of sensor used to create the photo.
+    "whiteBalance": "A String", # The white balance mode used to create the photo.
     "cameraModel": "A String", # The model of the camera used to create the photo.
   },
   "embedLink": "A String", # A link for embedding the file.
   "alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
   "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
   "downloadUrl": "A String", # Short term download URL for the file. This will only be populated on files with content stored in Drive.
-  "userPermission": { # A single permission for a file. # The permissions for the authenticated user on this file.
+  "userPermission": { # A single permission for a file.
     "withLink": True or False, # Whether the link is required for this permission.
     "kind": "drive#permission", # This is always drive#permission.
     "name": "A String", # The name for this permission.
@@ -219,18 +232,17 @@
 
   pinned: boolean, Whether to pin the head revision of the new copy.
   convert: boolean, Whether to convert this file to the corresponding Google Docs format.
-  ocr: boolean, Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
-  sourceLanguage: string, The language of the original file to be translated.
   ocrLanguage: string, If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes.
-  targetLanguage: string, Target language to translate the file to. If no sourceLanguage is provided, the API will attempt to detect the language.
-  timedTextTrackName: string, The timed text track name.
+  ocr: boolean, Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
   timedTextLanguage: string, The language of the timed text.
+  timedTextTrackName: string, The timed text track name.
 
 Returns:
   An object of the form:
 
     { # The metadata for a file.
     "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "appDataContents": True or False, # Whether this file is in the appdata folder.
     "thumbnailLink": "A String", # A link to the file's thumbnail.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -252,6 +264,7 @@
       "A String",
     ],
     "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
+    "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "parents": [ # Collection of parent folders which contain this file.
         # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
@@ -266,6 +279,7 @@
     "exportLinks": { # Links for exporting Google Docs to specific formats.
       "a_key": "A String", # A mapping from export format to URL
     },
+    "shared": True or False, # Whether the file has been shared.
     "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
@@ -279,29 +293,39 @@
     "fileSize": "A String", # The size of the file in bytes. This will only be populated on files with content stored in Drive.
     "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
     "md5Checksum": "A String", # An MD5 checksum for the content of this file. This will only be populated on files with content stored in Drive.
+    "iconLink": "A String", # A link to the file's icon.
     "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
-      "flashUsed": True or False, # Whether a flash was used to create the photo.
+      "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
       "exposureTime": 3.14, # The length of the exposure, in seconds.
       "cameraMake": "A String", # The make of the camera used to create the photo.
+      "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
       "isoSpeed": 42, # The ISO speed used to create the photo.
       "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
-      "height": 42, # The height of the image in pixels.
-      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "exposureMode": "A String", # The exposure mode used to create the photo.
+      "colorSpace": "A String", # The color space of the photo.
       "location": { # Geographic location information stored in the image.
         "latitude": 3.14, # The latitude stored in the image.
         "altitude": 3.14, # The altitude stored in the image.
         "longitude": 3.14, # The longitude stored in the image.
       },
+      "subjectDistance": 42, # The distance to the subject of the photo, in meters.
+      "height": 42, # The height of the image in pixels.
+      "lens": "A String", # The lens used to create the photo.
+      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "width": 42, # The width of the image in pixels.
+      "meteringMode": "A String", # The metering mode used to create the photo.
+      "flashUsed": True or False, # Whether a flash was used to create the photo.
       "aperture": 3.14, # The aperture used to create the photo (f-number).
       "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
-      "width": 42, # The width of the image in pixels.
+      "sensor": "A String", # The type of sensor used to create the photo.
+      "whiteBalance": "A String", # The white balance mode used to create the photo.
       "cameraModel": "A String", # The model of the camera used to create the photo.
     },
     "embedLink": "A String", # A link for embedding the file.
     "alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
     "downloadUrl": "A String", # Short term download URL for the file. This will only be populated on files with content stored in Drive.
-    "userPermission": { # A single permission for a file. # The permissions for the authenticated user on this file.
+    "userPermission": { # A single permission for a file.
       "withLink": True or False, # Whether the link is required for this permission.
       "kind": "drive#permission", # This is always drive#permission.
       "name": "A String", # The name for this permission.
@@ -356,6 +380,7 @@
 
     { # The metadata for a file.
     "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "appDataContents": True or False, # Whether this file is in the appdata folder.
     "thumbnailLink": "A String", # A link to the file's thumbnail.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -377,6 +402,7 @@
       "A String",
     ],
     "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
+    "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "parents": [ # Collection of parent folders which contain this file.
         # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
@@ -391,6 +417,7 @@
     "exportLinks": { # Links for exporting Google Docs to specific formats.
       "a_key": "A String", # A mapping from export format to URL
     },
+    "shared": True or False, # Whether the file has been shared.
     "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
@@ -404,29 +431,39 @@
     "fileSize": "A String", # The size of the file in bytes. This will only be populated on files with content stored in Drive.
     "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
     "md5Checksum": "A String", # An MD5 checksum for the content of this file. This will only be populated on files with content stored in Drive.
+    "iconLink": "A String", # A link to the file's icon.
     "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
-      "flashUsed": True or False, # Whether a flash was used to create the photo.
+      "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
       "exposureTime": 3.14, # The length of the exposure, in seconds.
       "cameraMake": "A String", # The make of the camera used to create the photo.
+      "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
       "isoSpeed": 42, # The ISO speed used to create the photo.
       "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
-      "height": 42, # The height of the image in pixels.
-      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "exposureMode": "A String", # The exposure mode used to create the photo.
+      "colorSpace": "A String", # The color space of the photo.
       "location": { # Geographic location information stored in the image.
         "latitude": 3.14, # The latitude stored in the image.
         "altitude": 3.14, # The altitude stored in the image.
         "longitude": 3.14, # The longitude stored in the image.
       },
+      "subjectDistance": 42, # The distance to the subject of the photo, in meters.
+      "height": 42, # The height of the image in pixels.
+      "lens": "A String", # The lens used to create the photo.
+      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "width": 42, # The width of the image in pixels.
+      "meteringMode": "A String", # The metering mode used to create the photo.
+      "flashUsed": True or False, # Whether a flash was used to create the photo.
       "aperture": 3.14, # The aperture used to create the photo (f-number).
       "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
-      "width": 42, # The width of the image in pixels.
+      "sensor": "A String", # The type of sensor used to create the photo.
+      "whiteBalance": "A String", # The white balance mode used to create the photo.
       "cameraModel": "A String", # The model of the camera used to create the photo.
     },
     "embedLink": "A String", # A link for embedding the file.
     "alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
     "downloadUrl": "A String", # Short term download URL for the file. This will only be populated on files with content stored in Drive.
-    "userPermission": { # A single permission for a file. # The permissions for the authenticated user on this file.
+    "userPermission": { # A single permission for a file.
       "withLink": True or False, # Whether the link is required for this permission.
       "kind": "drive#permission", # This is always drive#permission.
       "name": "A String", # The name for this permission.
@@ -456,7 +493,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="insert">insert(body=None, media_body=None, convert=None, ocr=None, sourceLanguage=None, ocrLanguage=None, targetLanguage=None, timedTextLanguage=None, timedTextTrackName=None, pinned=None)</code>
+    <code class="details" id="insert">insert(body=None, media_body=None, convert=None, ocrLanguage=None, ocr=None, timedTextLanguage=None, timedTextTrackName=None, pinned=None)</code>
   <pre>Insert a new file.
 
 Args:
@@ -465,6 +502,7 @@
 
 { # The metadata for a file.
   "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+  "appDataContents": True or False, # Whether this file is in the appdata folder.
   "thumbnailLink": "A String", # A link to the file's thumbnail.
   "labels": { # A group of labels for the file.
     "restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -486,6 +524,7 @@
     "A String",
   ],
   "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
+  "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
   "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
   "parents": [ # Collection of parent folders which contain this file.
       # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
@@ -500,6 +539,7 @@
   "exportLinks": { # Links for exporting Google Docs to specific formats.
     "a_key": "A String", # A mapping from export format to URL
   },
+  "shared": True or False, # Whether the file has been shared.
   "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
     "mimeType": "A String", # The MIME type of the thumbnail.
     "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
@@ -513,29 +553,39 @@
   "fileSize": "A String", # The size of the file in bytes. This will only be populated on files with content stored in Drive.
   "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
   "md5Checksum": "A String", # An MD5 checksum for the content of this file. This will only be populated on files with content stored in Drive.
+  "iconLink": "A String", # A link to the file's icon.
   "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
-    "flashUsed": True or False, # Whether a flash was used to create the photo.
+    "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
     "exposureTime": 3.14, # The length of the exposure, in seconds.
     "cameraMake": "A String", # The make of the camera used to create the photo.
+    "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
     "isoSpeed": 42, # The ISO speed used to create the photo.
     "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
-    "height": 42, # The height of the image in pixels.
-    "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+    "exposureMode": "A String", # The exposure mode used to create the photo.
+    "colorSpace": "A String", # The color space of the photo.
     "location": { # Geographic location information stored in the image.
       "latitude": 3.14, # The latitude stored in the image.
       "altitude": 3.14, # The altitude stored in the image.
       "longitude": 3.14, # The longitude stored in the image.
     },
+    "subjectDistance": 42, # The distance to the subject of the photo, in meters.
+    "height": 42, # The height of the image in pixels.
+    "lens": "A String", # The lens used to create the photo.
+    "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+    "width": 42, # The width of the image in pixels.
+    "meteringMode": "A String", # The metering mode used to create the photo.
+    "flashUsed": True or False, # Whether a flash was used to create the photo.
     "aperture": 3.14, # The aperture used to create the photo (f-number).
     "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
-    "width": 42, # The width of the image in pixels.
+    "sensor": "A String", # The type of sensor used to create the photo.
+    "whiteBalance": "A String", # The white balance mode used to create the photo.
     "cameraModel": "A String", # The model of the camera used to create the photo.
   },
   "embedLink": "A String", # A link for embedding the file.
   "alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
   "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
   "downloadUrl": "A String", # Short term download URL for the file. This will only be populated on files with content stored in Drive.
-  "userPermission": { # A single permission for a file. # The permissions for the authenticated user on this file.
+  "userPermission": { # A single permission for a file.
     "withLink": True or False, # Whether the link is required for this permission.
     "kind": "drive#permission", # This is always drive#permission.
     "name": "A String", # The name for this permission.
@@ -565,10 +615,8 @@
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
   convert: boolean, Whether to convert this file to the corresponding Google Docs format.
-  ocr: boolean, Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
-  sourceLanguage: string, The language of the original file to be translated.
   ocrLanguage: string, If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes.
-  targetLanguage: string, Target language to translate the file to. If no sourceLanguage is provided, the API will attempt to detect the language.
+  ocr: boolean, Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
   timedTextLanguage: string, The language of the timed text.
   timedTextTrackName: string, The timed text track name.
   pinned: boolean, Whether to pin the head revision of the uploaded file.
@@ -578,6 +626,7 @@
 
     { # The metadata for a file.
     "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "appDataContents": True or False, # Whether this file is in the appdata folder.
     "thumbnailLink": "A String", # A link to the file's thumbnail.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -599,6 +648,7 @@
       "A String",
     ],
     "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
+    "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "parents": [ # Collection of parent folders which contain this file.
         # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
@@ -613,6 +663,7 @@
     "exportLinks": { # Links for exporting Google Docs to specific formats.
       "a_key": "A String", # A mapping from export format to URL
     },
+    "shared": True or False, # Whether the file has been shared.
     "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
@@ -626,29 +677,39 @@
     "fileSize": "A String", # The size of the file in bytes. This will only be populated on files with content stored in Drive.
     "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
     "md5Checksum": "A String", # An MD5 checksum for the content of this file. This will only be populated on files with content stored in Drive.
+    "iconLink": "A String", # A link to the file's icon.
     "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
-      "flashUsed": True or False, # Whether a flash was used to create the photo.
+      "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
       "exposureTime": 3.14, # The length of the exposure, in seconds.
       "cameraMake": "A String", # The make of the camera used to create the photo.
+      "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
       "isoSpeed": 42, # The ISO speed used to create the photo.
       "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
-      "height": 42, # The height of the image in pixels.
-      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "exposureMode": "A String", # The exposure mode used to create the photo.
+      "colorSpace": "A String", # The color space of the photo.
       "location": { # Geographic location information stored in the image.
         "latitude": 3.14, # The latitude stored in the image.
         "altitude": 3.14, # The altitude stored in the image.
         "longitude": 3.14, # The longitude stored in the image.
       },
+      "subjectDistance": 42, # The distance to the subject of the photo, in meters.
+      "height": 42, # The height of the image in pixels.
+      "lens": "A String", # The lens used to create the photo.
+      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "width": 42, # The width of the image in pixels.
+      "meteringMode": "A String", # The metering mode used to create the photo.
+      "flashUsed": True or False, # Whether a flash was used to create the photo.
       "aperture": 3.14, # The aperture used to create the photo (f-number).
       "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
-      "width": 42, # The width of the image in pixels.
+      "sensor": "A String", # The type of sensor used to create the photo.
+      "whiteBalance": "A String", # The white balance mode used to create the photo.
       "cameraModel": "A String", # The model of the camera used to create the photo.
     },
     "embedLink": "A String", # A link for embedding the file.
     "alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
     "downloadUrl": "A String", # Short term download URL for the file. This will only be populated on files with content stored in Drive.
-    "userPermission": { # A single permission for a file. # The permissions for the authenticated user on this file.
+    "userPermission": { # A single permission for a file.
       "withLink": True or False, # Whether the link is required for this permission.
       "kind": "drive#permission", # This is always drive#permission.
       "name": "A String", # The name for this permission.
@@ -699,6 +760,7 @@
     "items": [ # The actual list of files.
       { # The metadata for a file.
         "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+        "appDataContents": True or False, # Whether this file is in the appdata folder.
         "thumbnailLink": "A String", # A link to the file's thumbnail.
         "labels": { # A group of labels for the file.
           "restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -720,6 +782,7 @@
           "A String",
         ],
         "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
+        "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
         "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
         "parents": [ # Collection of parent folders which contain this file.
             # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
@@ -734,6 +797,7 @@
         "exportLinks": { # Links for exporting Google Docs to specific formats.
           "a_key": "A String", # A mapping from export format to URL
         },
+        "shared": True or False, # Whether the file has been shared.
         "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
           "mimeType": "A String", # The MIME type of the thumbnail.
           "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
@@ -747,29 +811,39 @@
         "fileSize": "A String", # The size of the file in bytes. This will only be populated on files with content stored in Drive.
         "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
         "md5Checksum": "A String", # An MD5 checksum for the content of this file. This will only be populated on files with content stored in Drive.
+        "iconLink": "A String", # A link to the file's icon.
         "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
-          "flashUsed": True or False, # Whether a flash was used to create the photo.
+          "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
           "exposureTime": 3.14, # The length of the exposure, in seconds.
           "cameraMake": "A String", # The make of the camera used to create the photo.
+          "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
           "isoSpeed": 42, # The ISO speed used to create the photo.
           "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
-          "height": 42, # The height of the image in pixels.
-          "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+          "exposureMode": "A String", # The exposure mode used to create the photo.
+          "colorSpace": "A String", # The color space of the photo.
           "location": { # Geographic location information stored in the image.
             "latitude": 3.14, # The latitude stored in the image.
             "altitude": 3.14, # The altitude stored in the image.
             "longitude": 3.14, # The longitude stored in the image.
           },
+          "subjectDistance": 42, # The distance to the subject of the photo, in meters.
+          "height": 42, # The height of the image in pixels.
+          "lens": "A String", # The lens used to create the photo.
+          "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+          "width": 42, # The width of the image in pixels.
+          "meteringMode": "A String", # The metering mode used to create the photo.
+          "flashUsed": True or False, # Whether a flash was used to create the photo.
           "aperture": 3.14, # The aperture used to create the photo (f-number).
           "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
-          "width": 42, # The width of the image in pixels.
+          "sensor": "A String", # The type of sensor used to create the photo.
+          "whiteBalance": "A String", # The white balance mode used to create the photo.
           "cameraModel": "A String", # The model of the camera used to create the photo.
         },
         "embedLink": "A String", # A link for embedding the file.
         "alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
         "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
         "downloadUrl": "A String", # Short term download URL for the file. This will only be populated on files with content stored in Drive.
-        "userPermission": { # A single permission for a file. # The permissions for the authenticated user on this file.
+        "userPermission": { # A single permission for a file.
           "withLink": True or False, # Whether the link is required for this permission.
           "kind": "drive#permission", # This is always drive#permission.
           "name": "A String", # The name for this permission.
@@ -814,11 +888,11 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
-    <code class="details" id="patch">patch(fileId, body, newRevision=None, pinned=None, targetLanguage=None, ocrLanguage=None, ocr=None, sourceLanguage=None, updateViewedDate=None, timedTextTrackName=None, convert=None, setModifiedDate=None, timedTextLanguage=None)</code>
+    <code class="details" id="patch">patch(fileId, body, newRevision=None, pinned=None, ocrLanguage=None, ocr=None, updateViewedDate=None, timedTextTrackName=None, convert=None, setModifiedDate=None, timedTextLanguage=None)</code>
   <pre>Updates file metadata and/or content. This method supports patch semantics.
 
 Args:
@@ -828,6 +902,7 @@
 
 { # The metadata for a file.
   "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+  "appDataContents": True or False, # Whether this file is in the appdata folder.
   "thumbnailLink": "A String", # A link to the file's thumbnail.
   "labels": { # A group of labels for the file.
     "restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -849,6 +924,7 @@
     "A String",
   ],
   "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
+  "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
   "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
   "parents": [ # Collection of parent folders which contain this file.
       # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
@@ -863,6 +939,7 @@
   "exportLinks": { # Links for exporting Google Docs to specific formats.
     "a_key": "A String", # A mapping from export format to URL
   },
+  "shared": True or False, # Whether the file has been shared.
   "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
     "mimeType": "A String", # The MIME type of the thumbnail.
     "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
@@ -876,29 +953,39 @@
   "fileSize": "A String", # The size of the file in bytes. This will only be populated on files with content stored in Drive.
   "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
   "md5Checksum": "A String", # An MD5 checksum for the content of this file. This will only be populated on files with content stored in Drive.
+  "iconLink": "A String", # A link to the file's icon.
   "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
-    "flashUsed": True or False, # Whether a flash was used to create the photo.
+    "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
     "exposureTime": 3.14, # The length of the exposure, in seconds.
     "cameraMake": "A String", # The make of the camera used to create the photo.
+    "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
     "isoSpeed": 42, # The ISO speed used to create the photo.
     "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
-    "height": 42, # The height of the image in pixels.
-    "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+    "exposureMode": "A String", # The exposure mode used to create the photo.
+    "colorSpace": "A String", # The color space of the photo.
     "location": { # Geographic location information stored in the image.
       "latitude": 3.14, # The latitude stored in the image.
       "altitude": 3.14, # The altitude stored in the image.
       "longitude": 3.14, # The longitude stored in the image.
     },
+    "subjectDistance": 42, # The distance to the subject of the photo, in meters.
+    "height": 42, # The height of the image in pixels.
+    "lens": "A String", # The lens used to create the photo.
+    "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+    "width": 42, # The width of the image in pixels.
+    "meteringMode": "A String", # The metering mode used to create the photo.
+    "flashUsed": True or False, # Whether a flash was used to create the photo.
     "aperture": 3.14, # The aperture used to create the photo (f-number).
     "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
-    "width": 42, # The width of the image in pixels.
+    "sensor": "A String", # The type of sensor used to create the photo.
+    "whiteBalance": "A String", # The white balance mode used to create the photo.
     "cameraModel": "A String", # The model of the camera used to create the photo.
   },
   "embedLink": "A String", # A link for embedding the file.
   "alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
   "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
   "downloadUrl": "A String", # Short term download URL for the file. This will only be populated on files with content stored in Drive.
-  "userPermission": { # A single permission for a file. # The permissions for the authenticated user on this file.
+  "userPermission": { # A single permission for a file.
     "withLink": True or False, # Whether the link is required for this permission.
     "kind": "drive#permission", # This is always drive#permission.
     "name": "A String", # The name for this permission.
@@ -928,10 +1015,8 @@
 
   newRevision: boolean, Whether a blob upload should create a new revision. If false, the blob data in the current head revision will be replaced.
   pinned: boolean, Whether to pin the new revision.
-  targetLanguage: string, Target language to translate the file to. If no sourceLanguage is provided, the API will attempt to detect the language.
   ocrLanguage: string, If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes.
   ocr: boolean, Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
-  sourceLanguage: string, The language of the original file to be translated.
   updateViewedDate: boolean, Whether to update the view date after successfully updating the file.
   timedTextTrackName: string, The timed text track name.
   convert: boolean, Whether to convert this file to the corresponding Google Docs format.
@@ -943,6 +1028,7 @@
 
     { # The metadata for a file.
     "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "appDataContents": True or False, # Whether this file is in the appdata folder.
     "thumbnailLink": "A String", # A link to the file's thumbnail.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -964,6 +1050,7 @@
       "A String",
     ],
     "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
+    "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "parents": [ # Collection of parent folders which contain this file.
         # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
@@ -978,6 +1065,7 @@
     "exportLinks": { # Links for exporting Google Docs to specific formats.
       "a_key": "A String", # A mapping from export format to URL
     },
+    "shared": True or False, # Whether the file has been shared.
     "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
@@ -991,29 +1079,39 @@
     "fileSize": "A String", # The size of the file in bytes. This will only be populated on files with content stored in Drive.
     "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
     "md5Checksum": "A String", # An MD5 checksum for the content of this file. This will only be populated on files with content stored in Drive.
+    "iconLink": "A String", # A link to the file's icon.
     "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
-      "flashUsed": True or False, # Whether a flash was used to create the photo.
+      "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
       "exposureTime": 3.14, # The length of the exposure, in seconds.
       "cameraMake": "A String", # The make of the camera used to create the photo.
+      "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
       "isoSpeed": 42, # The ISO speed used to create the photo.
       "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
-      "height": 42, # The height of the image in pixels.
-      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "exposureMode": "A String", # The exposure mode used to create the photo.
+      "colorSpace": "A String", # The color space of the photo.
       "location": { # Geographic location information stored in the image.
         "latitude": 3.14, # The latitude stored in the image.
         "altitude": 3.14, # The altitude stored in the image.
         "longitude": 3.14, # The longitude stored in the image.
       },
+      "subjectDistance": 42, # The distance to the subject of the photo, in meters.
+      "height": 42, # The height of the image in pixels.
+      "lens": "A String", # The lens used to create the photo.
+      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "width": 42, # The width of the image in pixels.
+      "meteringMode": "A String", # The metering mode used to create the photo.
+      "flashUsed": True or False, # Whether a flash was used to create the photo.
       "aperture": 3.14, # The aperture used to create the photo (f-number).
       "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
-      "width": 42, # The width of the image in pixels.
+      "sensor": "A String", # The type of sensor used to create the photo.
+      "whiteBalance": "A String", # The white balance mode used to create the photo.
       "cameraModel": "A String", # The model of the camera used to create the photo.
     },
     "embedLink": "A String", # A link for embedding the file.
     "alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
     "downloadUrl": "A String", # Short term download URL for the file. This will only be populated on files with content stored in Drive.
-    "userPermission": { # A single permission for a file. # The permissions for the authenticated user on this file.
+    "userPermission": { # A single permission for a file.
       "withLink": True or False, # Whether the link is required for this permission.
       "kind": "drive#permission", # This is always drive#permission.
       "name": "A String", # The name for this permission.
@@ -1054,6 +1152,7 @@
 
     { # The metadata for a file.
     "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "appDataContents": True or False, # Whether this file is in the appdata folder.
     "thumbnailLink": "A String", # A link to the file's thumbnail.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -1075,6 +1174,7 @@
       "A String",
     ],
     "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
+    "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "parents": [ # Collection of parent folders which contain this file.
         # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
@@ -1089,6 +1189,7 @@
     "exportLinks": { # Links for exporting Google Docs to specific formats.
       "a_key": "A String", # A mapping from export format to URL
     },
+    "shared": True or False, # Whether the file has been shared.
     "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
@@ -1102,29 +1203,39 @@
     "fileSize": "A String", # The size of the file in bytes. This will only be populated on files with content stored in Drive.
     "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
     "md5Checksum": "A String", # An MD5 checksum for the content of this file. This will only be populated on files with content stored in Drive.
+    "iconLink": "A String", # A link to the file's icon.
     "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
-      "flashUsed": True or False, # Whether a flash was used to create the photo.
+      "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
       "exposureTime": 3.14, # The length of the exposure, in seconds.
       "cameraMake": "A String", # The make of the camera used to create the photo.
+      "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
       "isoSpeed": 42, # The ISO speed used to create the photo.
       "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
-      "height": 42, # The height of the image in pixels.
-      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "exposureMode": "A String", # The exposure mode used to create the photo.
+      "colorSpace": "A String", # The color space of the photo.
       "location": { # Geographic location information stored in the image.
         "latitude": 3.14, # The latitude stored in the image.
         "altitude": 3.14, # The altitude stored in the image.
         "longitude": 3.14, # The longitude stored in the image.
       },
+      "subjectDistance": 42, # The distance to the subject of the photo, in meters.
+      "height": 42, # The height of the image in pixels.
+      "lens": "A String", # The lens used to create the photo.
+      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "width": 42, # The width of the image in pixels.
+      "meteringMode": "A String", # The metering mode used to create the photo.
+      "flashUsed": True or False, # Whether a flash was used to create the photo.
       "aperture": 3.14, # The aperture used to create the photo (f-number).
       "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
-      "width": 42, # The width of the image in pixels.
+      "sensor": "A String", # The type of sensor used to create the photo.
+      "whiteBalance": "A String", # The white balance mode used to create the photo.
       "cameraModel": "A String", # The model of the camera used to create the photo.
     },
     "embedLink": "A String", # A link for embedding the file.
     "alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
     "downloadUrl": "A String", # Short term download URL for the file. This will only be populated on files with content stored in Drive.
-    "userPermission": { # A single permission for a file. # The permissions for the authenticated user on this file.
+    "userPermission": { # A single permission for a file.
       "withLink": True or False, # Whether the link is required for this permission.
       "kind": "drive#permission", # This is always drive#permission.
       "name": "A String", # The name for this permission.
@@ -1165,6 +1276,7 @@
 
     { # The metadata for a file.
     "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "appDataContents": True or False, # Whether this file is in the appdata folder.
     "thumbnailLink": "A String", # A link to the file's thumbnail.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -1186,6 +1298,7 @@
       "A String",
     ],
     "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
+    "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "parents": [ # Collection of parent folders which contain this file.
         # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
@@ -1200,6 +1313,7 @@
     "exportLinks": { # Links for exporting Google Docs to specific formats.
       "a_key": "A String", # A mapping from export format to URL
     },
+    "shared": True or False, # Whether the file has been shared.
     "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
@@ -1213,29 +1327,39 @@
     "fileSize": "A String", # The size of the file in bytes. This will only be populated on files with content stored in Drive.
     "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
     "md5Checksum": "A String", # An MD5 checksum for the content of this file. This will only be populated on files with content stored in Drive.
+    "iconLink": "A String", # A link to the file's icon.
     "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
-      "flashUsed": True or False, # Whether a flash was used to create the photo.
+      "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
       "exposureTime": 3.14, # The length of the exposure, in seconds.
       "cameraMake": "A String", # The make of the camera used to create the photo.
+      "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
       "isoSpeed": 42, # The ISO speed used to create the photo.
       "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
-      "height": 42, # The height of the image in pixels.
-      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "exposureMode": "A String", # The exposure mode used to create the photo.
+      "colorSpace": "A String", # The color space of the photo.
       "location": { # Geographic location information stored in the image.
         "latitude": 3.14, # The latitude stored in the image.
         "altitude": 3.14, # The altitude stored in the image.
         "longitude": 3.14, # The longitude stored in the image.
       },
+      "subjectDistance": 42, # The distance to the subject of the photo, in meters.
+      "height": 42, # The height of the image in pixels.
+      "lens": "A String", # The lens used to create the photo.
+      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "width": 42, # The width of the image in pixels.
+      "meteringMode": "A String", # The metering mode used to create the photo.
+      "flashUsed": True or False, # Whether a flash was used to create the photo.
       "aperture": 3.14, # The aperture used to create the photo (f-number).
       "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
-      "width": 42, # The width of the image in pixels.
+      "sensor": "A String", # The type of sensor used to create the photo.
+      "whiteBalance": "A String", # The white balance mode used to create the photo.
       "cameraModel": "A String", # The model of the camera used to create the photo.
     },
     "embedLink": "A String", # A link for embedding the file.
     "alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
     "downloadUrl": "A String", # Short term download URL for the file. This will only be populated on files with content stored in Drive.
-    "userPermission": { # A single permission for a file. # The permissions for the authenticated user on this file.
+    "userPermission": { # A single permission for a file.
       "withLink": True or False, # Whether the link is required for this permission.
       "kind": "drive#permission", # This is always drive#permission.
       "name": "A String", # The name for this permission.
@@ -1276,6 +1400,7 @@
 
     { # The metadata for a file.
     "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "appDataContents": True or False, # Whether this file is in the appdata folder.
     "thumbnailLink": "A String", # A link to the file's thumbnail.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -1297,6 +1422,7 @@
       "A String",
     ],
     "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
+    "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "parents": [ # Collection of parent folders which contain this file.
         # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
@@ -1311,6 +1437,7 @@
     "exportLinks": { # Links for exporting Google Docs to specific formats.
       "a_key": "A String", # A mapping from export format to URL
     },
+    "shared": True or False, # Whether the file has been shared.
     "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
@@ -1324,29 +1451,39 @@
     "fileSize": "A String", # The size of the file in bytes. This will only be populated on files with content stored in Drive.
     "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
     "md5Checksum": "A String", # An MD5 checksum for the content of this file. This will only be populated on files with content stored in Drive.
+    "iconLink": "A String", # A link to the file's icon.
     "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
-      "flashUsed": True or False, # Whether a flash was used to create the photo.
+      "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
       "exposureTime": 3.14, # The length of the exposure, in seconds.
       "cameraMake": "A String", # The make of the camera used to create the photo.
+      "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
       "isoSpeed": 42, # The ISO speed used to create the photo.
       "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
-      "height": 42, # The height of the image in pixels.
-      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "exposureMode": "A String", # The exposure mode used to create the photo.
+      "colorSpace": "A String", # The color space of the photo.
       "location": { # Geographic location information stored in the image.
         "latitude": 3.14, # The latitude stored in the image.
         "altitude": 3.14, # The altitude stored in the image.
         "longitude": 3.14, # The longitude stored in the image.
       },
+      "subjectDistance": 42, # The distance to the subject of the photo, in meters.
+      "height": 42, # The height of the image in pixels.
+      "lens": "A String", # The lens used to create the photo.
+      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "width": 42, # The width of the image in pixels.
+      "meteringMode": "A String", # The metering mode used to create the photo.
+      "flashUsed": True or False, # Whether a flash was used to create the photo.
       "aperture": 3.14, # The aperture used to create the photo (f-number).
       "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
-      "width": 42, # The width of the image in pixels.
+      "sensor": "A String", # The type of sensor used to create the photo.
+      "whiteBalance": "A String", # The white balance mode used to create the photo.
       "cameraModel": "A String", # The model of the camera used to create the photo.
     },
     "embedLink": "A String", # A link for embedding the file.
     "alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
     "downloadUrl": "A String", # Short term download URL for the file. This will only be populated on files with content stored in Drive.
-    "userPermission": { # A single permission for a file. # The permissions for the authenticated user on this file.
+    "userPermission": { # A single permission for a file.
       "withLink": True or False, # Whether the link is required for this permission.
       "kind": "drive#permission", # This is always drive#permission.
       "name": "A String", # The name for this permission.
@@ -1376,7 +1513,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(fileId, body=None, newRevision=None, media_body=None, targetLanguage=None, ocrLanguage=None, ocr=None, pinned=None, sourceLanguage=None, updateViewedDate=None, timedTextTrackName=None, convert=None, setModifiedDate=None, timedTextLanguage=None)</code>
+    <code class="details" id="update">update(fileId, body=None, newRevision=None, media_body=None, ocrLanguage=None, ocr=None, pinned=None, updateViewedDate=None, timedTextTrackName=None, convert=None, setModifiedDate=None, timedTextLanguage=None)</code>
   <pre>Updates file metadata and/or content
 
 Args:
@@ -1386,6 +1523,7 @@
 
 { # The metadata for a file.
   "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+  "appDataContents": True or False, # Whether this file is in the appdata folder.
   "thumbnailLink": "A String", # A link to the file's thumbnail.
   "labels": { # A group of labels for the file.
     "restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -1407,6 +1545,7 @@
     "A String",
   ],
   "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
+  "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
   "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
   "parents": [ # Collection of parent folders which contain this file.
       # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
@@ -1421,6 +1560,7 @@
   "exportLinks": { # Links for exporting Google Docs to specific formats.
     "a_key": "A String", # A mapping from export format to URL
   },
+  "shared": True or False, # Whether the file has been shared.
   "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
     "mimeType": "A String", # The MIME type of the thumbnail.
     "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
@@ -1434,29 +1574,39 @@
   "fileSize": "A String", # The size of the file in bytes. This will only be populated on files with content stored in Drive.
   "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
   "md5Checksum": "A String", # An MD5 checksum for the content of this file. This will only be populated on files with content stored in Drive.
+  "iconLink": "A String", # A link to the file's icon.
   "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
-    "flashUsed": True or False, # Whether a flash was used to create the photo.
+    "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
     "exposureTime": 3.14, # The length of the exposure, in seconds.
     "cameraMake": "A String", # The make of the camera used to create the photo.
+    "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
     "isoSpeed": 42, # The ISO speed used to create the photo.
     "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
-    "height": 42, # The height of the image in pixels.
-    "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+    "exposureMode": "A String", # The exposure mode used to create the photo.
+    "colorSpace": "A String", # The color space of the photo.
     "location": { # Geographic location information stored in the image.
       "latitude": 3.14, # The latitude stored in the image.
       "altitude": 3.14, # The altitude stored in the image.
       "longitude": 3.14, # The longitude stored in the image.
     },
+    "subjectDistance": 42, # The distance to the subject of the photo, in meters.
+    "height": 42, # The height of the image in pixels.
+    "lens": "A String", # The lens used to create the photo.
+    "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+    "width": 42, # The width of the image in pixels.
+    "meteringMode": "A String", # The metering mode used to create the photo.
+    "flashUsed": True or False, # Whether a flash was used to create the photo.
     "aperture": 3.14, # The aperture used to create the photo (f-number).
     "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
-    "width": 42, # The width of the image in pixels.
+    "sensor": "A String", # The type of sensor used to create the photo.
+    "whiteBalance": "A String", # The white balance mode used to create the photo.
     "cameraModel": "A String", # The model of the camera used to create the photo.
   },
   "embedLink": "A String", # A link for embedding the file.
   "alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
   "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
   "downloadUrl": "A String", # Short term download URL for the file. This will only be populated on files with content stored in Drive.
-  "userPermission": { # A single permission for a file. # The permissions for the authenticated user on this file.
+  "userPermission": { # A single permission for a file.
     "withLink": True or False, # Whether the link is required for this permission.
     "kind": "drive#permission", # This is always drive#permission.
     "name": "A String", # The name for this permission.
@@ -1486,11 +1636,9 @@
 
   newRevision: boolean, Whether a blob upload should create a new revision. If false, the blob data in the current head revision will be replaced.
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
-  targetLanguage: string, Target language to translate the file to. If no sourceLanguage is provided, the API will attempt to detect the language.
   ocrLanguage: string, If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes.
   ocr: boolean, Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
   pinned: boolean, Whether to pin the new revision.
-  sourceLanguage: string, The language of the original file to be translated.
   updateViewedDate: boolean, Whether to update the view date after successfully updating the file.
   timedTextTrackName: string, The timed text track name.
   convert: boolean, Whether to convert this file to the corresponding Google Docs format.
@@ -1502,6 +1650,7 @@
 
     { # The metadata for a file.
     "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "appDataContents": True or False, # Whether this file is in the appdata folder.
     "thumbnailLink": "A String", # A link to the file's thumbnail.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -1523,6 +1672,7 @@
       "A String",
     ],
     "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
+    "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "parents": [ # Collection of parent folders which contain this file.
         # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
@@ -1537,6 +1687,7 @@
     "exportLinks": { # Links for exporting Google Docs to specific formats.
       "a_key": "A String", # A mapping from export format to URL
     },
+    "shared": True or False, # Whether the file has been shared.
     "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
@@ -1550,29 +1701,39 @@
     "fileSize": "A String", # The size of the file in bytes. This will only be populated on files with content stored in Drive.
     "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
     "md5Checksum": "A String", # An MD5 checksum for the content of this file. This will only be populated on files with content stored in Drive.
+    "iconLink": "A String", # A link to the file's icon.
     "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
-      "flashUsed": True or False, # Whether a flash was used to create the photo.
+      "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
       "exposureTime": 3.14, # The length of the exposure, in seconds.
       "cameraMake": "A String", # The make of the camera used to create the photo.
+      "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
       "isoSpeed": 42, # The ISO speed used to create the photo.
       "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
-      "height": 42, # The height of the image in pixels.
-      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "exposureMode": "A String", # The exposure mode used to create the photo.
+      "colorSpace": "A String", # The color space of the photo.
       "location": { # Geographic location information stored in the image.
         "latitude": 3.14, # The latitude stored in the image.
         "altitude": 3.14, # The altitude stored in the image.
         "longitude": 3.14, # The longitude stored in the image.
       },
+      "subjectDistance": 42, # The distance to the subject of the photo, in meters.
+      "height": 42, # The height of the image in pixels.
+      "lens": "A String", # The lens used to create the photo.
+      "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
+      "width": 42, # The width of the image in pixels.
+      "meteringMode": "A String", # The metering mode used to create the photo.
+      "flashUsed": True or False, # Whether a flash was used to create the photo.
       "aperture": 3.14, # The aperture used to create the photo (f-number).
       "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
-      "width": 42, # The width of the image in pixels.
+      "sensor": "A String", # The type of sensor used to create the photo.
+      "whiteBalance": "A String", # The white balance mode used to create the photo.
       "cameraModel": "A String", # The model of the camera used to create the photo.
     },
     "embedLink": "A String", # A link for embedding the file.
     "alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
     "downloadUrl": "A String", # Short term download URL for the file. This will only be populated on files with content stored in Drive.
-    "userPermission": { # A single permission for a file. # The permissions for the authenticated user on this file.
+    "userPermission": { # A single permission for a file.
       "withLink": True or False, # Whether the link is required for this permission.
       "kind": "drive#permission", # This is always drive#permission.
       "name": "A String", # The name for this permission.
diff --git a/docs/dyn/drive_v2.replies.html b/docs/dyn/drive_v2.replies.html
index c4f3d4a..582221a 100644
--- a/docs/dyn/drive_v2.replies.html
+++ b/docs/dyn/drive_v2.replies.html
@@ -252,7 +252,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/fusiontables_v1.column.html b/docs/dyn/fusiontables_v1.column.html
index cc7a208..c5ea4c5 100644
--- a/docs/dyn/fusiontables_v1.column.html
+++ b/docs/dyn/fusiontables_v1.column.html
@@ -207,7 +207,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/fusiontables_v1.style.html b/docs/dyn/fusiontables_v1.style.html
index e85e481..f2d1e75 100644
--- a/docs/dyn/fusiontables_v1.style.html
+++ b/docs/dyn/fusiontables_v1.style.html
@@ -827,7 +827,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/fusiontables_v1.table.html b/docs/dyn/fusiontables_v1.table.html
index d19fc40..88bd29d 100644
--- a/docs/dyn/fusiontables_v1.table.html
+++ b/docs/dyn/fusiontables_v1.table.html
@@ -75,7 +75,7 @@
 <h1><a href="fusiontables_v1.html">Fusion Tables API</a> . <a href="fusiontables_v1.table.html">table</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#copy">copy(tableId)</a></code></p>
+  <code><a href="#copy">copy(tableId, copyPresentation=None)</a></code></p>
 <p class="firstline">Copies a table.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(tableId)</a></code></p>
@@ -103,11 +103,12 @@
 <p class="firstline">Updates an existing table. Unless explicitly requested, only the name, description, and attribution will be updated.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="copy">copy(tableId)</code>
+    <code class="details" id="copy">copy(tableId, copyPresentation=None)</code>
   <pre>Copies a table.
 
 Args:
   tableId: string, ID of the table that is being copied. (required)
+  copyPresentation: boolean, Whether to also copy tabs, styles, and templates. Default is false.
 
 Returns:
   An object of the form:
@@ -327,7 +328,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/fusiontables_v1.template.html b/docs/dyn/fusiontables_v1.template.html
index 431db63..f887c49 100644
--- a/docs/dyn/fusiontables_v1.template.html
+++ b/docs/dyn/fusiontables_v1.template.html
@@ -207,7 +207,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/gan_v1beta1.advertisers.html b/docs/dyn/gan_v1beta1.advertisers.html
index 6818be5..3c3335c 100644
--- a/docs/dyn/gan_v1beta1.advertisers.html
+++ b/docs/dyn/gan_v1beta1.advertisers.html
@@ -213,7 +213,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/gan_v1beta1.events.html b/docs/dyn/gan_v1beta1.events.html
index a29baff..3831857 100644
--- a/docs/dyn/gan_v1beta1.events.html
+++ b/docs/dyn/gan_v1beta1.events.html
@@ -200,7 +200,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/gan_v1beta1.links.html b/docs/dyn/gan_v1beta1.links.html
index efe8f11..db91bd8 100644
--- a/docs/dyn/gan_v1beta1.links.html
+++ b/docs/dyn/gan_v1beta1.links.html
@@ -393,7 +393,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/gan_v1beta1.publishers.html b/docs/dyn/gan_v1beta1.publishers.html
index 0a86e93..5d6a741 100644
--- a/docs/dyn/gan_v1beta1.publishers.html
+++ b/docs/dyn/gan_v1beta1.publishers.html
@@ -189,7 +189,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/groupsmigration_v1.archive.html b/docs/dyn/groupsmigration_v1.archive.html
new file mode 100644
index 0000000..8bf8875
--- /dev/null
+++ b/docs/dyn/groupsmigration_v1.archive.html
@@ -0,0 +1,98 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="groupsmigration_v1.html">Groups Migration API</a> . <a href="groupsmigration_v1.archive.html">archive</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#insert">insert(groupId, media_body=None)</a></code></p>
+<p class="firstline">Inserts a new mail into the archive of the Google group.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="insert">insert(groupId, media_body=None)</code>
+  <pre>Inserts a new mail into the archive of the Google group.
+
+Args:
+  groupId: string, The group ID (required)
+  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+
+Returns:
+  An object of the form:
+
+    { # JSON response template for groups migration API.
+    "kind": "groupsmigration#groups", # The kind of insert resource this is.
+    "responseCode": "A String", # The status of the insert request.
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/groupsmigration_v1.html b/docs/dyn/groupsmigration_v1.html
new file mode 100644
index 0000000..4ff4e68
--- /dev/null
+++ b/docs/dyn/groupsmigration_v1.html
@@ -0,0 +1,82 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="groupsmigration_v1.html">Groups Migration API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="groupsmigration_v1.archive.html">archive()</a></code>
+</p>
+<p class="firstline">Returns the archive Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/licensing_v1.licenseAssignments.html b/docs/dyn/licensing_v1.licenseAssignments.html
index 6fac772..c0df2a5 100644
--- a/docs/dyn/licensing_v1.licenseAssignments.html
+++ b/docs/dyn/licensing_v1.licenseAssignments.html
@@ -235,7 +235,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
@@ -249,7 +249,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/oauth2_v2.userinfo.html b/docs/dyn/oauth2_v2.userinfo.html
index bc00dbb..dab5c0d 100644
--- a/docs/dyn/oauth2_v2.userinfo.html
+++ b/docs/dyn/oauth2_v2.userinfo.html
@@ -98,12 +98,13 @@
     "picture": "A String", # URL of the user's picture image.
     "locale": "A String", # The user's default locale.
     "gender": "A String", # The user's gender.
-    "email": "A String", # The user's email address.
+    "id": "A String", # The focus obfuscated gaia id of the user.
     "birthday": "A String", # The user's birthday. The year is not present.
     "link": "A String", # URL of the profile page.
     "given_name": "A String", # The user's first name.
     "timezone": "A String", # The user's default timezone.
-    "id": "A String", # The focus obfuscated gaia id of the user.
+    "email": "A String", # The user's email address.
+    "hd": "A String", # The hosted domain e.g. example.com if the user is Google apps user.
     "verified_email": True or False, # Boolean flag which is true if the email address is verified.
   }</pre>
 </div>
diff --git a/docs/dyn/oauth2_v2.userinfo.v2.me.html b/docs/dyn/oauth2_v2.userinfo.v2.me.html
index e56faaf..0f796b1 100644
--- a/docs/dyn/oauth2_v2.userinfo.v2.me.html
+++ b/docs/dyn/oauth2_v2.userinfo.v2.me.html
@@ -93,12 +93,13 @@
     "picture": "A String", # URL of the user's picture image.
     "locale": "A String", # The user's default locale.
     "gender": "A String", # The user's gender.
-    "email": "A String", # The user's email address.
+    "id": "A String", # The focus obfuscated gaia id of the user.
     "birthday": "A String", # The user's birthday. The year is not present.
     "link": "A String", # URL of the profile page.
     "given_name": "A String", # The user's first name.
     "timezone": "A String", # The user's default timezone.
-    "id": "A String", # The focus obfuscated gaia id of the user.
+    "email": "A String", # The user's email address.
+    "hd": "A String", # The hosted domain e.g. example.com if the user is Google apps user.
     "verified_email": True or False, # Boolean flag which is true if the email address is verified.
   }</pre>
 </div>
diff --git a/docs/dyn/orkut_v2.activities.html b/docs/dyn/orkut_v2.activities.html
index 75b8cc5..b0ae2d0 100644
--- a/docs/dyn/orkut_v2.activities.html
+++ b/docs/dyn/orkut_v2.activities.html
@@ -285,7 +285,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/orkut_v2.comments.html b/docs/dyn/orkut_v2.comments.html
index 0d9ef82..a26e441 100644
--- a/docs/dyn/orkut_v2.comments.html
+++ b/docs/dyn/orkut_v2.comments.html
@@ -277,7 +277,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/orkut_v2.communityMembers.html b/docs/dyn/orkut_v2.communityMembers.html
index 6e527c4..ae7831d 100644
--- a/docs/dyn/orkut_v2.communityMembers.html
+++ b/docs/dyn/orkut_v2.communityMembers.html
@@ -250,7 +250,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/orkut_v2.communityMessages.html b/docs/dyn/orkut_v2.communityMessages.html
index 14070dc..158ed0e 100644
--- a/docs/dyn/orkut_v2.communityMessages.html
+++ b/docs/dyn/orkut_v2.communityMessages.html
@@ -223,7 +223,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/orkut_v2.communityPollComments.html b/docs/dyn/orkut_v2.communityPollComments.html
index 377515f..efeff4a 100644
--- a/docs/dyn/orkut_v2.communityPollComments.html
+++ b/docs/dyn/orkut_v2.communityPollComments.html
@@ -179,7 +179,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/orkut_v2.communityPolls.html b/docs/dyn/orkut_v2.communityPolls.html
index 5aa5df3..03c6824 100644
--- a/docs/dyn/orkut_v2.communityPolls.html
+++ b/docs/dyn/orkut_v2.communityPolls.html
@@ -235,7 +235,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/orkut_v2.communityTopics.html b/docs/dyn/orkut_v2.communityTopics.html
index 87d7c94..1a6046e 100644
--- a/docs/dyn/orkut_v2.communityTopics.html
+++ b/docs/dyn/orkut_v2.communityTopics.html
@@ -374,7 +374,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/plus_v1.activities.html b/docs/dyn/plus_v1.activities.html
index 363ea42..bb82cd4 100644
--- a/docs/dyn/plus_v1.activities.html
+++ b/docs/dyn/plus_v1.activities.html
@@ -211,7 +211,6 @@
       "description": "A String", # Description of the access granted, suitable for display.
     },
     "verb": "A String", # This activity's verb, indicating what action was performed. Possible values are:
-        # - "checkin" - Check in to a location.
         # - "post" - Publish content to the stream.
         # - "share" - Reshare an activity.
     "etag": "A String", # ETag of this response for caching purposes.
@@ -354,7 +353,6 @@
           "description": "A String", # Description of the access granted, suitable for display.
         },
         "verb": "A String", # This activity's verb, indicating what action was performed. Possible values are:
-            # - "checkin" - Check in to a location.
             # - "post" - Publish content to the stream.
             # - "share" - Reshare an activity.
         "etag": "A String", # ETag of this response for caching purposes.
@@ -368,7 +366,7 @@
     "updated": "A String", # The time at which this collection of activities was last updated. Formatted as an RFC 3339 timestamp.
     "nextLink": "A String", # Link to the next page of activities.
     "etag": "A String", # ETag of this response for caching purposes.
-    "id": "A String", # The ID of this collection of activities.
+    "id": "A String", # The ID of this collection of activities. Deprecated.
     "selfLink": "A String", # Link to this activity resource.
   }</pre>
 </div>
@@ -384,7 +382,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
@@ -520,7 +518,6 @@
           "description": "A String", # Description of the access granted, suitable for display.
         },
         "verb": "A String", # This activity's verb, indicating what action was performed. Possible values are:
-            # - "checkin" - Check in to a location.
             # - "post" - Publish content to the stream.
             # - "share" - Reshare an activity.
         "etag": "A String", # ETag of this response for caching purposes.
@@ -534,7 +531,7 @@
     "updated": "A String", # The time at which this collection of activities was last updated. Formatted as an RFC 3339 timestamp.
     "nextLink": "A String", # Link to the next page of activities.
     "etag": "A String", # ETag of this response for caching purposes.
-    "id": "A String", # The ID of this collection of activities.
+    "id": "A String", # The ID of this collection of activities. Deprecated.
     "selfLink": "A String", # Link to this activity resource.
   }</pre>
 </div>
@@ -550,7 +547,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/plus_v1.comments.html b/docs/dyn/plus_v1.comments.html
index d23a720..79aa92b 100644
--- a/docs/dyn/plus_v1.comments.html
+++ b/docs/dyn/plus_v1.comments.html
@@ -202,7 +202,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/plus_v1.people.html b/docs/dyn/plus_v1.people.html
index ee6710c..91ffdcc 100644
--- a/docs/dyn/plus_v1.people.html
+++ b/docs/dyn/plus_v1.people.html
@@ -101,16 +101,40 @@
   An object of the form:
 
     {
-    "relationshipStatus": "A String", # The person's relationship status. Possible values are:
-        # - "single" - Person is single.
-        # - "in_a_relationship" - Person is in a relationship.
-        # - "engaged" - Person is engaged.
-        # - "married" - Person is married.
-        # - "its_complicated" - The relationship is complicated.
-        # - "open_relationship" - Person is in an open relationship.
-        # - "widowed" - Person is widowed.
-        # - "in_domestic_partnership" - Person is in a domestic partnership.
-        # - "in_civil_union" - Person is in a civil union.
+    "braggingRights": "A String", # The "bragging rights" line of this person.
+    "image": { # The representation of the person's profile photo.
+      "url": "A String", # The URL of the person's profile photo. To re-size the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
+    },
+    "hasApp": True or False, # If "true", indicates that the person has installed the app that is making the request and has chosen to expose this install state to the caller. A value of "false" indicates that the install state cannot be determined (it is either not installed or the person has chosen to keep this information private).
+    "id": "A String", # The ID of this person.
+    "objectType": "A String", # Type of person within Google+. Possible values are:
+        # - "person" - represents an actual person.
+        # - "page" - represents a page.
+    "verified": True or False, # Whether the person or Google+ Page has been verified.
+    "tagline": "A String", # The brief description (tagline) of this person.
+    "currentLocation": "A String", # The current location for this person.
+    "etag": "A String", # ETag of this response for caching purposes.
+    "circledByCount": 42, # If a Google+ Page and for followers who are visible, the number of people who have added this page to a circle.
+    "aboutMe": "A String", # A short biography for this person.
+    "kind": "plus#person", # Identifies this resource as a person. Value: "plus#person".
+    "placesLived": [ # A list of places where this person has lived.
+      {
+        "primary": True or False, # If "true", this place of residence is this person's primary residence.
+        "value": "A String", # A place where this person has lived. For example: "Seattle, WA", "Near Toronto".
+      },
+    ],
+    "birthday": "A String", # The person's date of birth, represented as YYYY-MM-DD.
+    "nickname": "A String", # The nickname of this person.
+    "emails": [ # A list of email addresses for this person.
+      {
+        "type": "A String", # The type of address. Possible values are:
+            # - "home" - Home email address.
+            # - "work" - Work email address.
+            # - "other" - Other.
+        "primary": True or False, # If "true", indicates this email address is the person's primary one.
+        "value": "A String", # The email address.
+      },
+    ],
     "organizations": [ # A list of current or past organizations with which this person is associated.
       {
         "startDate": "A String", # The date the person joined this organization.
@@ -126,7 +150,16 @@
         "name": "A String", # The name of the organization.
       },
     ],
-    "kind": "plus#person", # Identifies this resource as a person. Value: "plus#person".
+    "relationshipStatus": "A String", # The person's relationship status. Possible values are:
+        # - "single" - Person is single.
+        # - "in_a_relationship" - Person is in a relationship.
+        # - "engaged" - Person is engaged.
+        # - "married" - Person is married.
+        # - "its_complicated" - The relationship is complicated.
+        # - "open_relationship" - Person is in an open relationship.
+        # - "widowed" - Person is widowed.
+        # - "in_domestic_partnership" - Person is in a domestic partnership.
+        # - "in_civil_union" - Person is in a civil union.
     "displayName": "A String", # The name of this person, suitable for display.
     "name": { # An object representation of the individual components of a person's name.
       "honorificPrefix": "A String", # The honorific prefixes (such as "Dr." or "Mrs.") for this person.
@@ -136,30 +169,26 @@
       "givenName": "A String", # The given name (first name) of this person.
       "honorificSuffix": "A String", # The honorific suffixes (such as "Jr.") for this person.
     },
-    "isPlusUser": True or False, # Whether this user has signed up for G+.
     "url": "A String", # The URL of this person's profile.
     "gender": "A String", # The person's gender. Possible values are:
         # - "male" - Male gender.
         # - "female" - Female gender.
         # - "other" - Other.
-    "aboutMe": "A String", # A short biography for this person.
-    "tagline": "A String", # The brief description (tagline) of this person.
-    "placesLived": [ # A list of places where this person has lived.
-      {
-        "primary": True or False, # If "true", this place of residence is this person's primary residence.
-        "value": "A String", # A place where this person has lived. For example: "Seattle, WA", "Near Toronto".
+    "cover": { # The cover photo content.
+      "layout": "A String", # The layout of the cover art. Possible values are:
+          # - "banner" - One large image banner.
+      "coverInfo": { # Extra information about the cover photo.
+        "leftImageOffset": 42, # The difference between the left position of the image cover and the actual displayed cover image. Only valid for BANNER layout.
+        "topImageOffset": 42, # The difference between the top position of the image cover and the actual displayed cover image. Only valid for BANNER layout.
       },
-    ],
-    "emails": [ # A list of email addresses for this person.
-      {
-        "type": "A String", # The type of address. Possible values are:
-            # - "home" - Home email address.
-            # - "work" - Work email address.
-            # - "other" - Other.
-        "primary": True or False, # If "true", indicates this email address is the person's primary one.
-        "value": "A String", # The email address.
+      "coverPhoto": { # The person's primary cover image.
+        "url": "A String", # The url to the image.
+        "width": 42, # The width to the image.
+        "height": 42, # The height to the image.
       },
-    ],
+    },
+    "isPlusUser": True or False, # Whether this user has signed up for Google+.
+    "plusOneCount": 42, # If a Google+ Page, the number of people who have +1'ed this page.
     "urls": [ # A list of URLs for this person.
       {
         "type": "A String", # The type of URL. Possible values are:
@@ -172,18 +201,6 @@
         "value": "A String", # The URL value.
       },
     ],
-    "birthday": "A String", # The person's date of birth, represented as YYYY-MM-DD.
-    "etag": "A String", # ETag of this response for caching purposes.
-    "image": { # The representation of the person's profile photo.
-      "url": "A String", # The URL of the person's profile photo. To re-size the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
-    },
-    "hasApp": True or False, # If "true", indicates that the person has installed the app that is making the request and has chosen to expose this install state to the caller. A value of "false" indicates that the install state cannot be determined (it is either not installed or the person has chosen to keep this information private).
-    "id": "A String", # The ID of this person.
-    "nickname": "A String", # The nickname of this person.
-    "currentLocation": "A String", # The current location for this person.
-    "objectType": "A String", # Type of person within Google+. Possible values are:
-        # - "person" - represents an actual person.
-        # - "page" - represents a page.
   }</pre>
 </div>
 
@@ -209,16 +226,40 @@
     "title": "A String", # The title of this collection of people.
     "items": [ # The people in this page of results. Each item includes the id, displayName, image, and url for the person. To retrieve additional profile data, see the people.get method.
       {
-        "relationshipStatus": "A String", # The person's relationship status. Possible values are:
-            # - "single" - Person is single.
-            # - "in_a_relationship" - Person is in a relationship.
-            # - "engaged" - Person is engaged.
-            # - "married" - Person is married.
-            # - "its_complicated" - The relationship is complicated.
-            # - "open_relationship" - Person is in an open relationship.
-            # - "widowed" - Person is widowed.
-            # - "in_domestic_partnership" - Person is in a domestic partnership.
-            # - "in_civil_union" - Person is in a civil union.
+        "braggingRights": "A String", # The "bragging rights" line of this person.
+        "image": { # The representation of the person's profile photo.
+          "url": "A String", # The URL of the person's profile photo. To re-size the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
+        },
+        "hasApp": True or False, # If "true", indicates that the person has installed the app that is making the request and has chosen to expose this install state to the caller. A value of "false" indicates that the install state cannot be determined (it is either not installed or the person has chosen to keep this information private).
+        "id": "A String", # The ID of this person.
+        "objectType": "A String", # Type of person within Google+. Possible values are:
+            # - "person" - represents an actual person.
+            # - "page" - represents a page.
+        "verified": True or False, # Whether the person or Google+ Page has been verified.
+        "tagline": "A String", # The brief description (tagline) of this person.
+        "currentLocation": "A String", # The current location for this person.
+        "etag": "A String", # ETag of this response for caching purposes.
+        "circledByCount": 42, # If a Google+ Page and for followers who are visible, the number of people who have added this page to a circle.
+        "aboutMe": "A String", # A short biography for this person.
+        "kind": "plus#person", # Identifies this resource as a person. Value: "plus#person".
+        "placesLived": [ # A list of places where this person has lived.
+          {
+            "primary": True or False, # If "true", this place of residence is this person's primary residence.
+            "value": "A String", # A place where this person has lived. For example: "Seattle, WA", "Near Toronto".
+          },
+        ],
+        "birthday": "A String", # The person's date of birth, represented as YYYY-MM-DD.
+        "nickname": "A String", # The nickname of this person.
+        "emails": [ # A list of email addresses for this person.
+          {
+            "type": "A String", # The type of address. Possible values are:
+                # - "home" - Home email address.
+                # - "work" - Work email address.
+                # - "other" - Other.
+            "primary": True or False, # If "true", indicates this email address is the person's primary one.
+            "value": "A String", # The email address.
+          },
+        ],
         "organizations": [ # A list of current or past organizations with which this person is associated.
           {
             "startDate": "A String", # The date the person joined this organization.
@@ -234,7 +275,16 @@
             "name": "A String", # The name of the organization.
           },
         ],
-        "kind": "plus#person", # Identifies this resource as a person. Value: "plus#person".
+        "relationshipStatus": "A String", # The person's relationship status. Possible values are:
+            # - "single" - Person is single.
+            # - "in_a_relationship" - Person is in a relationship.
+            # - "engaged" - Person is engaged.
+            # - "married" - Person is married.
+            # - "its_complicated" - The relationship is complicated.
+            # - "open_relationship" - Person is in an open relationship.
+            # - "widowed" - Person is widowed.
+            # - "in_domestic_partnership" - Person is in a domestic partnership.
+            # - "in_civil_union" - Person is in a civil union.
         "displayName": "A String", # The name of this person, suitable for display.
         "name": { # An object representation of the individual components of a person's name.
           "honorificPrefix": "A String", # The honorific prefixes (such as "Dr." or "Mrs.") for this person.
@@ -244,30 +294,26 @@
           "givenName": "A String", # The given name (first name) of this person.
           "honorificSuffix": "A String", # The honorific suffixes (such as "Jr.") for this person.
         },
-        "isPlusUser": True or False, # Whether this user has signed up for G+.
         "url": "A String", # The URL of this person's profile.
         "gender": "A String", # The person's gender. Possible values are:
             # - "male" - Male gender.
             # - "female" - Female gender.
             # - "other" - Other.
-        "aboutMe": "A String", # A short biography for this person.
-        "tagline": "A String", # The brief description (tagline) of this person.
-        "placesLived": [ # A list of places where this person has lived.
-          {
-            "primary": True or False, # If "true", this place of residence is this person's primary residence.
-            "value": "A String", # A place where this person has lived. For example: "Seattle, WA", "Near Toronto".
+        "cover": { # The cover photo content.
+          "layout": "A String", # The layout of the cover art. Possible values are:
+              # - "banner" - One large image banner.
+          "coverInfo": { # Extra information about the cover photo.
+            "leftImageOffset": 42, # The difference between the left position of the image cover and the actual displayed cover image. Only valid for BANNER layout.
+            "topImageOffset": 42, # The difference between the top position of the image cover and the actual displayed cover image. Only valid for BANNER layout.
           },
-        ],
-        "emails": [ # A list of email addresses for this person.
-          {
-            "type": "A String", # The type of address. Possible values are:
-                # - "home" - Home email address.
-                # - "work" - Work email address.
-                # - "other" - Other.
-            "primary": True or False, # If "true", indicates this email address is the person's primary one.
-            "value": "A String", # The email address.
+          "coverPhoto": { # The person's primary cover image.
+            "url": "A String", # The url to the image.
+            "width": 42, # The width to the image.
+            "height": 42, # The height to the image.
           },
-        ],
+        },
+        "isPlusUser": True or False, # Whether this user has signed up for Google+.
+        "plusOneCount": 42, # If a Google+ Page, the number of people who have +1'ed this page.
         "urls": [ # A list of URLs for this person.
           {
             "type": "A String", # The type of URL. Possible values are:
@@ -280,18 +326,6 @@
             "value": "A String", # The URL value.
           },
         ],
-        "birthday": "A String", # The person's date of birth, represented as YYYY-MM-DD.
-        "etag": "A String", # ETag of this response for caching purposes.
-        "image": { # The representation of the person's profile photo.
-          "url": "A String", # The URL of the person's profile photo. To re-size the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
-        },
-        "hasApp": True or False, # If "true", indicates that the person has installed the app that is making the request and has chosen to expose this install state to the caller. A value of "false" indicates that the install state cannot be determined (it is either not installed or the person has chosen to keep this information private).
-        "id": "A String", # The ID of this person.
-        "nickname": "A String", # The nickname of this person.
-        "currentLocation": "A String", # The current location for this person.
-        "objectType": "A String", # Type of person within Google+. Possible values are:
-            # - "person" - represents an actual person.
-            # - "page" - represents a page.
       },
     ],
     "etag": "A String", # ETag of this response for caching purposes.
@@ -311,7 +345,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
@@ -333,16 +367,40 @@
     "title": "A String", # The title of this collection of people.
     "items": [ # The people in this page of results. Each item includes the id, displayName, image, and url for the person. To retrieve additional profile data, see the people.get method.
       {
-        "relationshipStatus": "A String", # The person's relationship status. Possible values are:
-            # - "single" - Person is single.
-            # - "in_a_relationship" - Person is in a relationship.
-            # - "engaged" - Person is engaged.
-            # - "married" - Person is married.
-            # - "its_complicated" - The relationship is complicated.
-            # - "open_relationship" - Person is in an open relationship.
-            # - "widowed" - Person is widowed.
-            # - "in_domestic_partnership" - Person is in a domestic partnership.
-            # - "in_civil_union" - Person is in a civil union.
+        "braggingRights": "A String", # The "bragging rights" line of this person.
+        "image": { # The representation of the person's profile photo.
+          "url": "A String", # The URL of the person's profile photo. To re-size the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
+        },
+        "hasApp": True or False, # If "true", indicates that the person has installed the app that is making the request and has chosen to expose this install state to the caller. A value of "false" indicates that the install state cannot be determined (it is either not installed or the person has chosen to keep this information private).
+        "id": "A String", # The ID of this person.
+        "objectType": "A String", # Type of person within Google+. Possible values are:
+            # - "person" - represents an actual person.
+            # - "page" - represents a page.
+        "verified": True or False, # Whether the person or Google+ Page has been verified.
+        "tagline": "A String", # The brief description (tagline) of this person.
+        "currentLocation": "A String", # The current location for this person.
+        "etag": "A String", # ETag of this response for caching purposes.
+        "circledByCount": 42, # If a Google+ Page and for followers who are visible, the number of people who have added this page to a circle.
+        "aboutMe": "A String", # A short biography for this person.
+        "kind": "plus#person", # Identifies this resource as a person. Value: "plus#person".
+        "placesLived": [ # A list of places where this person has lived.
+          {
+            "primary": True or False, # If "true", this place of residence is this person's primary residence.
+            "value": "A String", # A place where this person has lived. For example: "Seattle, WA", "Near Toronto".
+          },
+        ],
+        "birthday": "A String", # The person's date of birth, represented as YYYY-MM-DD.
+        "nickname": "A String", # The nickname of this person.
+        "emails": [ # A list of email addresses for this person.
+          {
+            "type": "A String", # The type of address. Possible values are:
+                # - "home" - Home email address.
+                # - "work" - Work email address.
+                # - "other" - Other.
+            "primary": True or False, # If "true", indicates this email address is the person's primary one.
+            "value": "A String", # The email address.
+          },
+        ],
         "organizations": [ # A list of current or past organizations with which this person is associated.
           {
             "startDate": "A String", # The date the person joined this organization.
@@ -358,7 +416,16 @@
             "name": "A String", # The name of the organization.
           },
         ],
-        "kind": "plus#person", # Identifies this resource as a person. Value: "plus#person".
+        "relationshipStatus": "A String", # The person's relationship status. Possible values are:
+            # - "single" - Person is single.
+            # - "in_a_relationship" - Person is in a relationship.
+            # - "engaged" - Person is engaged.
+            # - "married" - Person is married.
+            # - "its_complicated" - The relationship is complicated.
+            # - "open_relationship" - Person is in an open relationship.
+            # - "widowed" - Person is widowed.
+            # - "in_domestic_partnership" - Person is in a domestic partnership.
+            # - "in_civil_union" - Person is in a civil union.
         "displayName": "A String", # The name of this person, suitable for display.
         "name": { # An object representation of the individual components of a person's name.
           "honorificPrefix": "A String", # The honorific prefixes (such as "Dr." or "Mrs.") for this person.
@@ -368,30 +435,26 @@
           "givenName": "A String", # The given name (first name) of this person.
           "honorificSuffix": "A String", # The honorific suffixes (such as "Jr.") for this person.
         },
-        "isPlusUser": True or False, # Whether this user has signed up for G+.
         "url": "A String", # The URL of this person's profile.
         "gender": "A String", # The person's gender. Possible values are:
             # - "male" - Male gender.
             # - "female" - Female gender.
             # - "other" - Other.
-        "aboutMe": "A String", # A short biography for this person.
-        "tagline": "A String", # The brief description (tagline) of this person.
-        "placesLived": [ # A list of places where this person has lived.
-          {
-            "primary": True or False, # If "true", this place of residence is this person's primary residence.
-            "value": "A String", # A place where this person has lived. For example: "Seattle, WA", "Near Toronto".
+        "cover": { # The cover photo content.
+          "layout": "A String", # The layout of the cover art. Possible values are:
+              # - "banner" - One large image banner.
+          "coverInfo": { # Extra information about the cover photo.
+            "leftImageOffset": 42, # The difference between the left position of the image cover and the actual displayed cover image. Only valid for BANNER layout.
+            "topImageOffset": 42, # The difference between the top position of the image cover and the actual displayed cover image. Only valid for BANNER layout.
           },
-        ],
-        "emails": [ # A list of email addresses for this person.
-          {
-            "type": "A String", # The type of address. Possible values are:
-                # - "home" - Home email address.
-                # - "work" - Work email address.
-                # - "other" - Other.
-            "primary": True or False, # If "true", indicates this email address is the person's primary one.
-            "value": "A String", # The email address.
+          "coverPhoto": { # The person's primary cover image.
+            "url": "A String", # The url to the image.
+            "width": 42, # The width to the image.
+            "height": 42, # The height to the image.
           },
-        ],
+        },
+        "isPlusUser": True or False, # Whether this user has signed up for Google+.
+        "plusOneCount": 42, # If a Google+ Page, the number of people who have +1'ed this page.
         "urls": [ # A list of URLs for this person.
           {
             "type": "A String", # The type of URL. Possible values are:
@@ -404,18 +467,6 @@
             "value": "A String", # The URL value.
           },
         ],
-        "birthday": "A String", # The person's date of birth, represented as YYYY-MM-DD.
-        "etag": "A String", # ETag of this response for caching purposes.
-        "image": { # The representation of the person's profile photo.
-          "url": "A String", # The URL of the person's profile photo. To re-size the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
-        },
-        "hasApp": True or False, # If "true", indicates that the person has installed the app that is making the request and has chosen to expose this install state to the caller. A value of "false" indicates that the install state cannot be determined (it is either not installed or the person has chosen to keep this information private).
-        "id": "A String", # The ID of this person.
-        "nickname": "A String", # The nickname of this person.
-        "currentLocation": "A String", # The current location for this person.
-        "objectType": "A String", # Type of person within Google+. Possible values are:
-            # - "person" - represents an actual person.
-            # - "page" - represents a page.
       },
     ],
     "etag": "A String", # ETag of this response for caching purposes.
@@ -435,7 +486,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/prediction_v1_5.trainedmodels.html b/docs/dyn/prediction_v1_5.trainedmodels.html
index 72667f2..1d4c096 100644
--- a/docs/dyn/prediction_v1_5.trainedmodels.html
+++ b/docs/dyn/prediction_v1_5.trainedmodels.html
@@ -400,7 +400,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/reseller_v1.subscriptions.html b/docs/dyn/reseller_v1.subscriptions.html
index 2718543..bf3a9fa 100644
--- a/docs/dyn/reseller_v1.subscriptions.html
+++ b/docs/dyn/reseller_v1.subscriptions.html
@@ -451,7 +451,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/shopping_v1.products.html b/docs/dyn/shopping_v1.products.html
index 8775f77..d5d6f3a 100644
--- a/docs/dyn/shopping_v1.products.html
+++ b/docs/dyn/shopping_v1.products.html
@@ -78,7 +78,7 @@
   <code><a href="#get">get(source, accountId, productIdType, productId, taxonomy=None, recommendations_useGcsConfig=None, plusOne_enabled=None, recommendations_include=None, location=None, recommendations_enabled=None, categories_enabled=None, attributeFilter=None, categories_useGcsConfig=None, plusOne_styles=None, thumbnails=None, categories_include=None, plusOne_useGcsConfig=None)</a></code></p>
 <p class="firstline">Returns a single product</p>
 <p class="toc_element">
-  <code><a href="#list">list(source, facets_enabled=None, rankBy=None, taxonomy=None, promotions_enabled=None, channels=None, currency=None, startIndex=None, availability=None, crowdBy=None, spelling_enabled=None, categoryRecommendations_category=None, categoryRecommendations_enabled=None, spelling_useGcsConfig=None, plusOne_enabled=None, useCase=None, location=None, maxVariants=None, plusOne_styles=None, relatedQueries_enabled=None, facets_useGcsConfig=None, categoryRecommendations_useGcsConfig=None, boostBy=None, safe=None, maxResults=None, categories_enabled=None, attributeFilter=None, categoryRecommendations_include=None, categories_useGcsConfig=None, clickTracking=None, facets_include=None, thumbnails=None, language=None, facets_discover=None, categories_include=None, redirects_enabled=None, restrictBy=None, q=None, redirects_useGcsConfig=None, plusOne_useGcsConfig=None, relatedQueries_useGcsConfig=None, promotions_useGcsConfig=None, country=None)</a></code></p>
+  <code><a href="#list">list(source, facets_enabled=None, rankBy=None, taxonomy=None, promotions_enabled=None, channels=None, facets_discover=None, startIndex=None, availability=None, crowdBy=None, spelling_enabled=None, categoryRecommendations_category=None, extras_enabled=None, facets_includeEmptyBuckets=None, categoryRecommendations_enabled=None, extras_info=None, spelling_useGcsConfig=None, useCase=None, location=None, maxVariants=None, plusOne_styles=None, plusOne_enabled=None, relatedQueries_enabled=None, facets_useGcsConfig=None, categoryRecommendations_useGcsConfig=None, boostBy=None, safe=None, maxResults=None, categories_enabled=None, attributeFilter=None, categoryRecommendations_include=None, categories_useGcsConfig=None, clickTracking=None, facets_include=None, thumbnails=None, language=None, currency=None, categories_include=None, redirects_enabled=None, restrictBy=None, q=None, redirects_useGcsConfig=None, plusOne_useGcsConfig=None, relatedQueries_useGcsConfig=None, promotions_useGcsConfig=None, country=None)</a></code></p>
 <p class="firstline">Returns a list of products and content modules</p>
 <h3>Method Details</h3>
 <div class="method">
@@ -353,7 +353,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(source, facets_enabled=None, rankBy=None, taxonomy=None, promotions_enabled=None, channels=None, currency=None, startIndex=None, availability=None, crowdBy=None, spelling_enabled=None, categoryRecommendations_category=None, categoryRecommendations_enabled=None, spelling_useGcsConfig=None, plusOne_enabled=None, useCase=None, location=None, maxVariants=None, plusOne_styles=None, relatedQueries_enabled=None, facets_useGcsConfig=None, categoryRecommendations_useGcsConfig=None, boostBy=None, safe=None, maxResults=None, categories_enabled=None, attributeFilter=None, categoryRecommendations_include=None, categories_useGcsConfig=None, clickTracking=None, facets_include=None, thumbnails=None, language=None, facets_discover=None, categories_include=None, redirects_enabled=None, restrictBy=None, q=None, redirects_useGcsConfig=None, plusOne_useGcsConfig=None, relatedQueries_useGcsConfig=None, promotions_useGcsConfig=None, country=None)</code>
+    <code class="details" id="list">list(source, facets_enabled=None, rankBy=None, taxonomy=None, promotions_enabled=None, channels=None, facets_discover=None, startIndex=None, availability=None, crowdBy=None, spelling_enabled=None, categoryRecommendations_category=None, extras_enabled=None, facets_includeEmptyBuckets=None, categoryRecommendations_enabled=None, extras_info=None, spelling_useGcsConfig=None, useCase=None, location=None, maxVariants=None, plusOne_styles=None, plusOne_enabled=None, relatedQueries_enabled=None, facets_useGcsConfig=None, categoryRecommendations_useGcsConfig=None, boostBy=None, safe=None, maxResults=None, categories_enabled=None, attributeFilter=None, categoryRecommendations_include=None, categories_useGcsConfig=None, clickTracking=None, facets_include=None, thumbnails=None, language=None, currency=None, categories_include=None, redirects_enabled=None, restrictBy=None, q=None, redirects_useGcsConfig=None, plusOne_useGcsConfig=None, relatedQueries_useGcsConfig=None, promotions_useGcsConfig=None, country=None)</code>
   <pre>Returns a list of products and content modules
 
 Args:
@@ -363,19 +363,22 @@
   taxonomy: string, Taxonomy name
   promotions_enabled: boolean, Whether to return promotion information
   channels: string, Channels specification
-  currency: string, Currency restriction (ISO 4217)
+  facets_discover: string, Facets to discover
   startIndex: integer, Index (1-based) of first product to return
   availability: string, Comma separated list of availabilities (outOfStock, limited, inStock, backOrder, preOrder, onDisplayToOrder) to return
   crowdBy: string, Crowding specification
   spelling_enabled: boolean, Whether to return spelling suggestions
   categoryRecommendations_category: string, Category for which to retrieve recommendations
+  extras_enabled: boolean, Whether to return extra information.
+  facets_includeEmptyBuckets: boolean, Return empty facet buckets.
   categoryRecommendations_enabled: boolean, Whether to return category recommendation information
+  extras_info: string, What extra information to return.
   spelling_useGcsConfig: boolean, This parameter is currently ignored
-  plusOne_enabled: boolean, Whether to return +1 button code
   useCase: string, One of CommerceSearchUseCase, ShoppingApiUseCase
   location: string, Location used to determine tax and shipping
   maxVariants: integer, Maximum number of variant results to return per result
   plusOne_styles: string, +1 button rendering styles
+  plusOne_enabled: boolean, Whether to return +1 button code
   relatedQueries_enabled: boolean, Whether to return related queries
   facets_useGcsConfig: boolean, Whether to return facet information as configured in the GCS account
   categoryRecommendations_useGcsConfig: boolean, This parameter is currently ignored
@@ -390,7 +393,7 @@
   facets_include: string, Facets to include (applies when useGcsConfig == false)
   thumbnails: string, Image thumbnails specification
   language: string, Language restriction (BCP 47)
-  facets_discover: string, Facets to discover
+  currency: string, Currency restriction (ISO 4217)
   categories_include: string, Category specification
   redirects_enabled: boolean, Whether to return redirect information
   restrictBy: string, Restriction specification
@@ -405,6 +408,171 @@
   An object of the form:
 
     {
+    "redirects": [ # Redirects.
+      "A String",
+    ],
+    "stores": [ # List of returned stores.
+      {
+        "storeCode": "A String", # Merchant-supplied store code.
+        "name": "A String", # Name of merchant.
+        "storeName": "A String", # Name of store.
+        "storeId": "A String", # Id of store.
+        "telephone": "A String", # Telephone number of store.
+        "location": "A String", # Location of store.
+        "address": "A String", # Address of store.
+      },
+    ],
+    "relatedQueries": [ # Related queries.
+      "A String",
+    ],
+    "startIndex": 42, # 1-based index of the first item in the search results.
+    "categoryRecommendations": [ # Recommendations for category.
+      {
+        "recommendationList": [ # List of recommendations.
+          {
+            "product": { # Recommended product.
+              "queryMatched": True or False, # Whether this product matched the user query. Only set for the variant offers (if any) attached to a product offer.
+              "gtin": "A String", # The first GTIN of the product. Deprecated in favor of "gtins".
+              "images": [ # Images of product.
+                {
+                  "status": "A String",
+                  "link": "A String", # Link to product image.
+                  "thumbnails": [ # Thumbnails of product image.
+                    {
+                      "content": "A String", # Content of thumbnail (only available for the first thumbnail of the top results if SAYT is enabled).
+                      "width": 42, # Width of thumbnail (omitted if not specified in the request).
+                      "link": "A String", # Link to thumbnail.
+                      "height": 42, # Height of thumbnail (omitted if not specified in the request).
+                    },
+                  ],
+                },
+              ],
+              "inventories": [ # Inventories of product.
+                {
+                  "installmentPrice": 3.14, # Installment price of product inventory.
+                  "installmentMonths": 42, # Number of months for installment price.
+                  "distance": 3.14, # Distance of product inventory.
+                  "price": 3.14, # Price of product inventory.
+                  "storeId": "A String", # Store ID of product inventory.
+                  "tax": 3.14, # Tax of product inventory.
+                  "shipping": 3.14, # Shipping cost of product inventory.
+                  "currency": "A String", # Currency of product inventory (an ISO 4217 alphabetic code).
+                  "salePrice": 3.14, # Sale price of product inventory.
+                  "originalPrice": 3.14, # Original price of product inventory. Only returned for products that are on sale.
+                  "distanceUnit": "A String", # Distance unit of product inventory.
+                  "saleStartDate": "A String", # Sale start date.
+                  "availability": "A String", # Availability of product inventory.
+                  "channel": "A String", # Channel of product inventory (one of: online, local).
+                  "saleEndDate": "A String", # Sale end date.
+                },
+              ],
+              "author": { # Author of product.
+                "name": "A String", # Name of product author.
+                "accountId": "A String", # Account id of product author.
+              },
+              "score": 3.14, # Google Internal
+              "condition": "A String", # Condition of product (one of: new, refurbished, used).
+              "providedId": "A String", # Merchant-provided id of product (available only with a cx source).
+              "internal8": [ # Google Internal.
+                "A String",
+              ],
+              "description": "A String", # Description of product.
+              "gtins": [ # List of all the product's GTINs (in GTIN-14 format).
+                "A String",
+              ],
+              "internal1": [ # Google Internal.
+                "A String",
+              ],
+              "brand": "A String", # Brand of product.
+              "internal3": "A String", # Google Internal.
+              "internal4": [ # Google Internal.
+                {
+                  "node": 42, # Google Internal.
+                  "confidence": 3.14, # Google Internal.
+                },
+              ],
+              "internal6": "A String", # Google Internal.
+              "internal7": True or False, # Google Internal.
+              "link": "A String", # Link to product.
+              "mpns": [ # List of all the product's MPNs.
+                "A String",
+              ],
+              "attributes": [ # Attributes of product (available only with a cx source).
+                {
+                  "type": "A String", # Type of product attribute (one of: text, bool, int, float, dateRange, url).
+                  "value": "", # Value of product attribute.
+                  "displayName": "A String", # Display Name of prodct attribute.
+                  "name": "A String", # Name of product attribute.
+                  "unit": "A String", # Unit of product attribute.
+                },
+              ],
+              "totalMatchingVariants": 42, # The number of variant offers returned that matched the query.
+              "variants": [ # A list of variant offers associated with this product.
+                {
+                  "variant": # Object with schema name: ShoppingModelProductJsonV1 # The detailed offer data for a particular variant offer.
+                },
+              ],
+              "modificationTime": "A String", # RFC 3339 formatted modification time and date of product.
+              "categories": [ # Categories of product according to the selected taxonomy, omitted if no taxonomy is selected.
+                "A String",
+              ],
+              "language": "A String", # BCP 47 language tag of language of product.
+              "country": "A String", # ISO 3166 code of target country of product.
+              "title": "A String", # Title of product.
+              "creationTime": "A String", # RFC 3339 formatted creation time and date of product.
+              "internal14": 3.14, # Google Internal.
+              "internal12": "A String", # Google Internal.
+              "internal13": 3.14, # Google Internal.
+              "internal10": [ # Google Internal.
+                "A String",
+              ],
+              "plusOne": "A String", # Code to add to the page to render the +1 content.
+              "googleId": "A String", # Google id of product.
+              "internal15": 3.14, # Google Internal.
+            },
+          },
+        ],
+        "type": "A String", # Type of recommendation list (for offer-based recommendations, one of: all, purchaseToPurchase, visitToVisit, visitToPurchase, relatedItems; for category-based recommendations, one of: all, categoryMostVisited, categoryBestSeller).
+      },
+    ],
+    "id": "tag:google.com,2010:shopping/products", # Id of feed.
+    "itemsPerPage": 42, # Number of items per page of results.
+    "nextLink": "A String", # Next link of feed.
+    "etag": "A String", # Etag of feed.
+    "requestId": "A String", # Unique identifier for this request.
+    "currentItemCount": 42, # Current item count.
+    "previousLink": "A String", # Previous link of feed.
+    "debug": { # Google internal.
+      "recommendedItemsRequest": "A String", # Google internal.
+      "searchRequest": "A String", # Google internal.
+      "rdcResponse": "A String", # Google internal.
+      "facetsRequest": "A String", # Google internal.
+      "searchResponse": "A String", # Google internal.
+      "elapsedMillis": "A String", # Google internal.
+      "recommendedItemsResponse": "A String", # Google internal.
+      "facetsResponse": "A String", # Google internal.
+      "backendTimes": [ # Google internal
+        {
+          "serverMillis": "A String", # Google internal
+          "hostName": "A String", # Google internal
+          "name": "A String", # Google internal
+          "elapsedMillis": "A String", # Google internal
+        },
+      ],
+    },
+    "spelling": { # Spelling.
+      "suggestion": "A String", # Suggestion for spelling.
+    },
+    "categories": [ # List of categories.
+      {
+        "url": "A String", # URL of category.
+        "shortName": "A String", # Short name of category.
+        "parents": [ # Ids of the parents of the category.
+          "A String",
+        ],
+        "id": "A String", # Id of category.
+      },
+    ],
     "promotions": [ # List of promotions.
       {
         "product": { # Product of promotion (omitted if type is not product).
@@ -521,20 +689,7 @@
         "name": "A String", # Name of promotion (omitted if type is not standard).
       },
     ],
-    "selfLink": "A String", # Self link of feed.
     "kind": "shopping#products", # The fixed string "shopping#products". The kind of feed returned.
-    "stores": [ # List of returned stores.
-      {
-        "storeCode": "A String", # Merchant-supplied store code.
-        "name": "A String", # Name of merchant.
-        "storeName": "A String", # Name of store.
-        "storeId": "A String", # Id of store.
-        "telephone": "A String", # Telephone number of store.
-        "location": "A String", # Location of store.
-        "address": "A String", # Address of store.
-      },
-    ],
-    "currentItemCount": 42, # Current item count.
     "items": [ # List of returned products.
       {
         "selfLink": "A String", # Self link of product when generated for a lookup request. Self link of product when generated for a search request.
@@ -800,160 +955,20 @@
         "unit": "A String", # Unit of the facet's property or attribute (omitted if the facet's property or attribute has no unit).
       },
     ],
-    "itemsPerPage": 42, # Number of items per page of results.
-    "redirects": [ # Redirects.
-      "A String",
-    ],
-    "nextLink": "A String", # Next link of feed.
-    "relatedQueries": [ # Related queries.
-      "A String",
-    ],
-    "totalItems": 42, # Total number of search results.
-    "startIndex": 42, # 1-based index of the first item in the search results.
-    "etag": "A String", # Etag of feed.
-    "requestId": "A String", # Unique identifier for this request.
-    "categoryRecommendations": [ # Recommendations for category.
-      {
-        "recommendationList": [ # List of recommendations.
-          {
-            "product": { # Recommended product.
-              "queryMatched": True or False, # Whether this product matched the user query. Only set for the variant offers (if any) attached to a product offer.
-              "gtin": "A String", # The first GTIN of the product. Deprecated in favor of "gtins".
-              "images": [ # Images of product.
-                {
-                  "status": "A String",
-                  "link": "A String", # Link to product image.
-                  "thumbnails": [ # Thumbnails of product image.
-                    {
-                      "content": "A String", # Content of thumbnail (only available for the first thumbnail of the top results if SAYT is enabled).
-                      "width": 42, # Width of thumbnail (omitted if not specified in the request).
-                      "link": "A String", # Link to thumbnail.
-                      "height": 42, # Height of thumbnail (omitted if not specified in the request).
-                    },
-                  ],
-                },
-              ],
-              "inventories": [ # Inventories of product.
-                {
-                  "installmentPrice": 3.14, # Installment price of product inventory.
-                  "installmentMonths": 42, # Number of months for installment price.
-                  "distance": 3.14, # Distance of product inventory.
-                  "price": 3.14, # Price of product inventory.
-                  "storeId": "A String", # Store ID of product inventory.
-                  "tax": 3.14, # Tax of product inventory.
-                  "shipping": 3.14, # Shipping cost of product inventory.
-                  "currency": "A String", # Currency of product inventory (an ISO 4217 alphabetic code).
-                  "salePrice": 3.14, # Sale price of product inventory.
-                  "originalPrice": 3.14, # Original price of product inventory. Only returned for products that are on sale.
-                  "distanceUnit": "A String", # Distance unit of product inventory.
-                  "saleStartDate": "A String", # Sale start date.
-                  "availability": "A String", # Availability of product inventory.
-                  "channel": "A String", # Channel of product inventory (one of: online, local).
-                  "saleEndDate": "A String", # Sale end date.
-                },
-              ],
-              "author": { # Author of product.
-                "name": "A String", # Name of product author.
-                "accountId": "A String", # Account id of product author.
-              },
-              "score": 3.14, # Google Internal
-              "condition": "A String", # Condition of product (one of: new, refurbished, used).
-              "providedId": "A String", # Merchant-provided id of product (available only with a cx source).
-              "internal8": [ # Google Internal.
-                "A String",
-              ],
-              "description": "A String", # Description of product.
-              "gtins": [ # List of all the product's GTINs (in GTIN-14 format).
-                "A String",
-              ],
-              "internal1": [ # Google Internal.
-                "A String",
-              ],
-              "brand": "A String", # Brand of product.
-              "internal3": "A String", # Google Internal.
-              "internal4": [ # Google Internal.
-                {
-                  "node": 42, # Google Internal.
-                  "confidence": 3.14, # Google Internal.
-                },
-              ],
-              "internal6": "A String", # Google Internal.
-              "internal7": True or False, # Google Internal.
-              "link": "A String", # Link to product.
-              "mpns": [ # List of all the product's MPNs.
-                "A String",
-              ],
-              "attributes": [ # Attributes of product (available only with a cx source).
-                {
-                  "type": "A String", # Type of product attribute (one of: text, bool, int, float, dateRange, url).
-                  "value": "", # Value of product attribute.
-                  "displayName": "A String", # Display Name of prodct attribute.
-                  "name": "A String", # Name of product attribute.
-                  "unit": "A String", # Unit of product attribute.
-                },
-              ],
-              "totalMatchingVariants": 42, # The number of variant offers returned that matched the query.
-              "variants": [ # A list of variant offers associated with this product.
-                {
-                  "variant": # Object with schema name: ShoppingModelProductJsonV1 # The detailed offer data for a particular variant offer.
-                },
-              ],
-              "modificationTime": "A String", # RFC 3339 formatted modification time and date of product.
-              "categories": [ # Categories of product according to the selected taxonomy, omitted if no taxonomy is selected.
-                "A String",
-              ],
-              "language": "A String", # BCP 47 language tag of language of product.
-              "country": "A String", # ISO 3166 code of target country of product.
-              "title": "A String", # Title of product.
-              "creationTime": "A String", # RFC 3339 formatted creation time and date of product.
-              "internal14": 3.14, # Google Internal.
-              "internal12": "A String", # Google Internal.
-              "internal13": 3.14, # Google Internal.
-              "internal10": [ # Google Internal.
-                "A String",
-              ],
-              "plusOne": "A String", # Code to add to the page to render the +1 content.
-              "googleId": "A String", # Google id of product.
-              "internal15": 3.14, # Google Internal.
-            },
-          },
-        ],
-        "type": "A String", # Type of recommendation list (for offer-based recommendations, one of: all, purchaseToPurchase, visitToVisit, visitToPurchase, relatedItems; for category-based recommendations, one of: all, categoryMostVisited, categoryBestSeller).
-      },
-    ],
-    "debug": { # Google internal.
-      "recommendedItemsRequest": "A String", # Google internal.
-      "searchRequest": "A String", # Google internal.
-      "rdcResponse": "A String", # Google internal.
-      "facetsRequest": "A String", # Google internal.
-      "searchResponse": "A String", # Google internal.
-      "elapsedMillis": "A String", # Google internal.
-      "recommendedItemsResponse": "A String", # Google internal.
-      "facetsResponse": "A String", # Google internal.
-      "backendTimes": [ # Google internal
+    "extras": { # List of extras.
+      "facetRules": [
         {
-          "serverMillis": "A String", # Google internal
-          "hostName": "A String", # Google internal
-          "name": "A String", # Google internal
-          "elapsedMillis": "A String", # Google internal
+          "name": "A String",
+        },
+      ],
+      "rankingRules": [ # Names of boost (ranking) rules applicable to this search.
+        {
+          "name": "A String",
         },
       ],
     },
-    "spelling": { # Spelling.
-      "suggestion": "A String", # Suggestion for spelling.
-    },
-    "previousLink": "A String", # Previous link of feed.
-    "id": "tag:google.com,2010:shopping/products", # Id of feed.
-    "categories": [ # List of categories.
-      {
-        "url": "A String", # URL of category.
-        "shortName": "A String", # Short name of category.
-        "parents": [ # Ids of the parents of the category.
-          "A String",
-        ],
-        "id": "A String", # Id of category.
-      },
-    ],
+    "totalItems": 42, # Total number of search results.
+    "selfLink": "A String", # Self link of feed.
   }</pre>
 </div>
 
diff --git a/docs/dyn/storage_v1beta1.buckets.html b/docs/dyn/storage_v1beta1.buckets.html
index dda38d1..e1773ed 100644
--- a/docs/dyn/storage_v1beta1.buckets.html
+++ b/docs/dyn/storage_v1beta1.buckets.html
@@ -395,7 +395,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/storage_v1beta1.objects.html b/docs/dyn/storage_v1beta1.objects.html
index 6e1555e..b2421b3 100644
--- a/docs/dyn/storage_v1beta1.objects.html
+++ b/docs/dyn/storage_v1beta1.objects.html
@@ -87,6 +87,9 @@
   <code><a href="#insert">insert(bucket, body=None, media_body=None, name=None, projection=None)</a></code></p>
 <p class="firstline">Stores new data blobs and associated metadata.</p>
 <p class="toc_element">
+  <code><a href="#insert_media">insert_media(bucket, body=None, media_body=None, name=None, projection=None)</a></code></p>
+<p class="firstline">Stores new data blobs and associated metadata.</p>
+<p class="toc_element">
   <code><a href="#list">list(bucket, projection=None, pageToken=None, delimiter=None, prefix=None, max_results=None)</a></code></p>
 <p class="firstline">Retrieves a list of objects matching the criteria.</p>
 <p class="toc_element">
@@ -98,6 +101,9 @@
 <p class="toc_element">
   <code><a href="#update">update(bucket, object, body, projection=None)</a></code></p>
 <p class="firstline">Updates a data blob's associated metadata.</p>
+<p class="toc_element">
+  <code><a href="#update_media">update_media(bucket, object, body, projection=None)</a></code></p>
+<p class="firstline">Updates a data blob's associated metadata.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="delete">delete(bucket, object)</code>
@@ -308,6 +314,76 @@
 </div>
 
 <div class="method">
+    <code class="details" id="insert_media">insert_media(bucket, body=None, media_body=None, name=None, projection=None)</code>
+  <pre>Stores new data blobs and associated metadata.
+
+Args:
+  bucket: string, Name of the bucket in which to store the new object. Overrides the provided object metadata's bucket value, if any. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # An object.
+    "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
+    "name": "A String", # The name of this object. Required if not specified by URL parameter.
+    "contentLanguage": "A String", # Content-Language of the object data.
+    "media": { # Object media data. Provided on your behalf when uploading raw media or multipart/related with an auxiliary media part.
+      "contentType": "A String", # Content-Type of the object data.
+      "timeCreated": "A String", # Creation time of the data in RFC 3339 format.
+      "algorithm": "A String", # Hash algorithm used. Currently only MD5 is supported. Required if a hash is provided.
+      "length": "A String", # Content-Length of the data in bytes.
+      "link": "A String", # Media download link.
+      "hash": "A String", # Hash of the data. Required if a hash algorithm is provided.
+      "data": "A String", # URL-safe Base64-encoded data. This property can be used to insert objects under 64KB in size, and will only be returned in response to the get method for objects so created. When this resource is returned in response to the list method, this property is omitted.
+    },
+    "bucket": "A String", # The bucket containing this object.
+    "contentEncoding": "A String", # Content-Encoding of the object data.
+    "selfLink": "A String", # The link to this object.
+    "owner": { # The owner of the object. This will always be the uploader of the object.
+      "entityId": "A String", # The ID for the entity.
+      "entity": "A String", # The entity, in the form user-userId.
+    },
+    "cacheControl": "A String", # Cache-Control directive for the object data.
+    "acl": [ # Access controls on the object.
+      { # An access-control entry.
+        "domain": "A String", # The domain associated with the entity, if any.
+        "object": "A String", # The name of the object.
+        "bucket": "A String", # The name of the bucket.
+        "kind": "storage#objectAccessControl", # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
+        "id": "A String", # The ID of the access-control entry.
+        "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+        "entityId": "A String", # The ID for the entity, if any.
+        "entity": "A String", # The entity holding the permission, in one of the following forms:
+            # - user-userId
+            # - user-email
+            # - group-groupId
+            # - group-email
+            # - allUsers
+            # - allAuthenticatedUsers
+        "email": "A String", # The email address associated with the entity, if any.
+        "selfLink": "A String", # The link to this access-control entry.
+      },
+    ],
+    "id": "A String", # The ID of the object.
+    "contentDisposition": "A String", # Content-Disposition of the object data.
+    "metadata": { # User-provided metadata, in key/value pairs.
+      "a_key": "A String", # An individual metadata entry.
+    },
+  }
+
+  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  name: string, Name of the object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any.
+  projection: string, Set of properties to return. Defaults to no_acl, unless the object resource specifies the acl property, when it defaults to full.
+    Allowed values
+      full - Include all properties.
+      no_acl - Omit the acl property.
+
+Returns:
+  The media object as a string.
+
+    </pre>
+</div>
+
+<div class="method">
     <code class="details" id="list">list(bucket, projection=None, pageToken=None, delimiter=None, prefix=None, max_results=None)</code>
   <pre>Retrieves a list of objects matching the criteria.
 
@@ -394,7 +470,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
@@ -627,4 +703,73 @@
     }</pre>
 </div>
 
+<div class="method">
+    <code class="details" id="update_media">update_media(bucket, object, body, projection=None)</code>
+  <pre>Updates a data blob's associated metadata.
+
+Args:
+  bucket: string, Name of the bucket in which the object resides. (required)
+  object: string, Name of the object. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # An object.
+    "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
+    "name": "A String", # The name of this object. Required if not specified by URL parameter.
+    "contentLanguage": "A String", # Content-Language of the object data.
+    "media": { # Object media data. Provided on your behalf when uploading raw media or multipart/related with an auxiliary media part.
+      "contentType": "A String", # Content-Type of the object data.
+      "timeCreated": "A String", # Creation time of the data in RFC 3339 format.
+      "algorithm": "A String", # Hash algorithm used. Currently only MD5 is supported. Required if a hash is provided.
+      "length": "A String", # Content-Length of the data in bytes.
+      "link": "A String", # Media download link.
+      "hash": "A String", # Hash of the data. Required if a hash algorithm is provided.
+      "data": "A String", # URL-safe Base64-encoded data. This property can be used to insert objects under 64KB in size, and will only be returned in response to the get method for objects so created. When this resource is returned in response to the list method, this property is omitted.
+    },
+    "bucket": "A String", # The bucket containing this object.
+    "contentEncoding": "A String", # Content-Encoding of the object data.
+    "selfLink": "A String", # The link to this object.
+    "owner": { # The owner of the object. This will always be the uploader of the object.
+      "entityId": "A String", # The ID for the entity.
+      "entity": "A String", # The entity, in the form user-userId.
+    },
+    "cacheControl": "A String", # Cache-Control directive for the object data.
+    "acl": [ # Access controls on the object.
+      { # An access-control entry.
+        "domain": "A String", # The domain associated with the entity, if any.
+        "object": "A String", # The name of the object.
+        "bucket": "A String", # The name of the bucket.
+        "kind": "storage#objectAccessControl", # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
+        "id": "A String", # The ID of the access-control entry.
+        "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+        "entityId": "A String", # The ID for the entity, if any.
+        "entity": "A String", # The entity holding the permission, in one of the following forms:
+            # - user-userId
+            # - user-email
+            # - group-groupId
+            # - group-email
+            # - allUsers
+            # - allAuthenticatedUsers
+        "email": "A String", # The email address associated with the entity, if any.
+        "selfLink": "A String", # The link to this access-control entry.
+      },
+    ],
+    "id": "A String", # The ID of the object.
+    "contentDisposition": "A String", # Content-Disposition of the object data.
+    "metadata": { # User-provided metadata, in key/value pairs.
+      "a_key": "A String", # An individual metadata entry.
+    },
+  }
+
+  projection: string, Set of properties to return. Defaults to full.
+    Allowed values
+      full - Include all properties.
+      no_acl - Omit the acl property.
+
+Returns:
+  The media object as a string.
+
+    </pre>
+</div>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/tasks_v1.tasklists.html b/docs/dyn/tasks_v1.tasklists.html
index df3e1ac..3e70ee3 100644
--- a/docs/dyn/tasks_v1.tasklists.html
+++ b/docs/dyn/tasks_v1.tasklists.html
@@ -195,7 +195,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/tasks_v1.tasks.html b/docs/dyn/tasks_v1.tasks.html
index efb7267..d580833 100644
--- a/docs/dyn/tasks_v1.tasks.html
+++ b/docs/dyn/tasks_v1.tasks.html
@@ -284,7 +284,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
diff --git a/docs/dyn/youtube_v3.activities.html b/docs/dyn/youtube_v3.activities.html
index 6f8b930..d13058d 100644
--- a/docs/dyn/youtube_v3.activities.html
+++ b/docs/dyn/youtube_v3.activities.html
@@ -72,360 +72,395 @@
 
 </style>
 
-<h1><a href="youtube_v3.html">YouTube API</a> . <a href="youtube_v3.activities.html">activities</a></h1>
+<h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.activities.html">activities</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#insert">insert(part, body, onBehalfOfContentOwner=None)</a></code></p>
-<p class="firstline">Post a channel bulletin.</p>
+  <code><a href="#insert">insert(part=None, body)</a></code></p>
+<p class="firstline">Posts a bulletin for a specific channel. (The user submitting the request must be authorized to act on the channel's behalf.)</p>
 <p class="toc_element">
-  <code><a href="#list">list(part, onBehalfOfContentOwner=None, pageToken=None, publishedBefore=None, channelId=None, mine=None, maxResults=None, home=None, publishedAfter=None)</a></code></p>
-<p class="firstline">Browse the YouTube channel activity collection.</p>
+  <code><a href="#list">list(part=None, pageToken=None, publishedBefore=None, channelId=None, mine=None, maxResults=None, home=None, publishedAfter=None)</a></code></p>
+<p class="firstline">Returns a list of channel activity events that match the request criteria. For example, you can retrieve events associated with a particular channel, events associated with the user's subscriptions and Google+ friends, or the YouTube home page feed, which is customized for each user.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="insert">insert(part, body, onBehalfOfContentOwner=None)</code>
-  <pre>Post a channel bulletin.
+    <code class="details" id="insert">insert(part=None, body)</code>
+  <pre>Posts a bulletin for a specific channel. (The user submitting the request must be authorized to act on the channel's behalf.)
 
 Args:
-  part: string, One or more parts to return on the current request. (required)
+  part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.
+
+The part names that you can include in the parameter value are snippet and contentDetails. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # An activity resource contains information about an action that a channel has taken on YouTube.
-    "snippet": { # Basic details about an activity, including title, description, thumbnails, activity type and group. # Basic details about the activity: title, description, thumbnails.
-      "thumbnails": { # Activity thumbnails.
-        "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-          "url": "A String", # The URL for the thumbnail.
+{ # An activity resource contains information about an action that a particular channel, or user, has taken on YouTube. The actions reported in activity feeds include rating a video, sharing a video, marking a video as a favorite, commenting on a video, uploading a video, and so forth. Each activity resource identifies the type of action, the channel associated with the action, and the resource(s) associated with the action, such as the video that was rated or uploaded.
+    "snippet": { # Basic details about an activity, including title, description, thumbnails, activity type and group. # The snippet object contains basic details about the activity, including the activity's type and group ID.
+      "thumbnails": { # A map of thumbnail images associated with the resource that is primarily associated with the activity. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+        "a_key": { # The thumbnail image's name.
+          "url": "A String", # The thumbnail image's URL.
+          "width": 42,
+          "height": 42,
         },
       },
-      "title": "A String", # Title of the activity.
-      "channelId": "A String", # Channel publishing the activity.
-      "publishedAt": "A String", # Date and time the activity was published at.
-      "type": "A String", # Type of the activity.
-      "groupId": "A String", # Id of the group that this activity is part of.
-      "description": "A String", # Description of the activity.
+      "title": "A String", # The title of the resource primarily associated with the activity.
+      "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel associated with the activity.
+      "publishedAt": "A String", # The date and time that the activity occurred. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+      "type": "A String", # The type of activity that the resource describes.
+      "groupId": "A String", # The group ID associated with the activity. A group ID identifies user events that are associated with the same user and resource. For example, if a user rates a video and marks the same video as a favorite, the entries for those events would have the same group ID in the user's activity feed. In your user interface, you can avoid repetition by grouping events with the same groupId value.
+      "description": "A String", # The description of the resource primarily associated with the activity.
     },
-    "contentDetails": { # Details about the content of an activity: the video that was shared, the channel that was subscribed to, etc. # Type specific information about the activity.
-      "comment": { # Only present if the type is "comment".
-        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the commented resource.
-          "kind": "A String", # The kind of the referred resource.
-          "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-          "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-          "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+    "contentDetails": { # Details about the content of an activity: the video that was shared, the channel that was subscribed to, etc. # The contentDetails object contains information about the content associated with the activity. For example, if the snippet.type value is videoRated, then the contentDetails object's content identifies the rated video.
+      "comment": { # The comment object contains information about a resource that received a comment. This property is only present if the snippet.type is comment.
+        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource associated with the comment.
+          "kind": "A String", # The kind, or type, of the referred resource.
+          "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+          "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+          "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
         },
       },
-      "playlistItem": { # Only present if the type is "playlistItem".
-        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the resource added to the playlist.
-          "kind": "A String", # The kind of the referred resource.
-          "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-          "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-          "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+      "playlistItem": { # The playlistItem object contains information about a new playlist item. This property is only present if the snippet.type is playlistItem.
+        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information about the resource that was added to the playlist.
+          "kind": "A String", # The kind, or type, of the referred resource.
+          "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+          "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+          "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
         },
-        "playlistId": "A String", # ID of the playlist the resource was added to.
+        "playlistId": "A String", # The value that YouTube uses to uniquely identify the playlist.
+        "playlistItemId": "A String", # ID of the item within the playlist.
       },
-      "like": { # Only present if the type is "like".
-        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the rated resource.
-          "kind": "A String", # The kind of the referred resource.
-          "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-          "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-          "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+      "like": { # The like object contains information about a resource that received a positive (like) rating. This property is only present if the snippet.type is like.
+        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the rated resource.
+          "kind": "A String", # The kind, or type, of the referred resource.
+          "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+          "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+          "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
         },
       },
-      "social": { # Only present if the type is "social".
-        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the resource this social activity is about.
-          "kind": "A String", # The kind of the referred resource.
-          "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-          "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-          "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+      "social": { # The social object contains details about a social network post. This property is only present if the snippet.type is social.
+        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object encapsulates information that identifies the resource associated with a social network post.
+          "kind": "A String", # The kind, or type, of the referred resource.
+          "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+          "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+          "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
         },
-        "imageUrl": "A String", # Image of the post author.
-        "type": "A String", # Type of the social network.
-        "referenceUrl": "A String", # Url of the social post.
-        "author": "A String", # Author of the post.
+        "imageUrl": "A String", # An image of the post's author.
+        "type": "A String", # The name of the social network.
+        "referenceUrl": "A String", # The URL of the social network post.
+        "author": "A String", # The author of the social network post.
       },
-      "favorite": { # Only present if the type is "favorite".
-        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the favorited resource.
-          "kind": "A String", # The kind of the referred resource.
-          "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-          "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-          "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+      "favorite": { # The favorite object contains information about a video that was marked as a favorite video. This property is only present if the snippet.type is favorite.
+        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that was marked as a favorite.
+          "kind": "A String", # The kind, or type, of the referred resource.
+          "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+          "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+          "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
         },
       },
-      "upload": { # Only present if the type is "upload".
-        "videoId": "A String", # ID of the uploaded video.
+      "upload": { # The upload object contains information about the uploaded video. This property is only present if the snippet.type is upload.
+        "videoId": "A String", # The ID that YouTube uses to uniquely identify the uploaded video.
       },
-      "recommendation": { # Only set if the type is "recommendation".
-        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the recommended resource.
-          "kind": "A String", # The kind of the referred resource.
-          "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-          "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-          "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+      "recommendation": { # The recommendation object contains information about a recommended resource. This property is only present if the snippet.type is recommendation.
+        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the recommended resource.
+          "kind": "A String", # The kind, or type, of the referred resource.
+          "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+          "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+          "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
         },
-        "reason": "A String", # Reason for which the video was recommended.
-        "seedResourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the video that caused this recommendation.
-          "kind": "A String", # The kind of the referred resource.
-          "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-          "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-          "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+        "reason": "A String", # The reason that the resource is recommended to the user.
+        "seedResourceId": { # A resource id is a generic reference that points to another YouTube resource. # The seedResourceId object contains information about the resource that caused the recommendation.
+          "kind": "A String", # The kind, or type, of the referred resource.
+          "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+          "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+          "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
         },
       },
-      "bulletin": { # Only present if the type is "bulletin".
-        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the resource this bulletin is about.
-          "kind": "A String", # The kind of the referred resource.
-          "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-          "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-          "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+      "subscription": { # The subscription object contains information about a channel that a user subscribed to. This property is only present if the snippet.type is subscription.
+        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that the user subscribed to.
+          "kind": "A String", # The kind, or type, of the referred resource.
+          "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+          "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+          "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
         },
       },
-      "subscription": { # Only present if the type is "subscription".
-        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the resource subscribed to.
-          "kind": "A String", # The kind of the referred resource.
-          "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-          "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-          "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+      "bulletin": { # The bulletin object contains details about a channel bulletin post. This object is only present if the snippet.type is bulletin.
+        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource associated with a bulletin post.
+          "kind": "A String", # The kind, or type, of the referred resource.
+          "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+          "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+          "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
+        },
+      },
+      "channelItem": { # The channelItem object contains details about a resource which was added to a channel. This property is only present if the snippet.type is channelItem.
+        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that was added to the channel.
+          "kind": "A String", # The kind, or type, of the referred resource.
+          "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+          "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+          "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
         },
       },
     },
-    "kind": "youtube#activity", # The type of this API response.
-    "etag": "A String", # The eTag of the activity.
-    "id": "A String", # The unique ID of the activity.
+    "kind": "youtube#activity", # The type of the API resource. For activity resources, the value will be youtube#activity.
+    "etag": "A String", # The ETag of the activity resource.
+    "id": "A String", # The ID that YouTube uses to uniquely identify the activity.
   }
 
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
 
 Returns:
   An object of the form:
 
-    { # An activity resource contains information about an action that a channel has taken on YouTube.
-      "snippet": { # Basic details about an activity, including title, description, thumbnails, activity type and group. # Basic details about the activity: title, description, thumbnails.
-        "thumbnails": { # Activity thumbnails.
-          "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-            "url": "A String", # The URL for the thumbnail.
+    { # An activity resource contains information about an action that a particular channel, or user, has taken on YouTube. The actions reported in activity feeds include rating a video, sharing a video, marking a video as a favorite, commenting on a video, uploading a video, and so forth. Each activity resource identifies the type of action, the channel associated with the action, and the resource(s) associated with the action, such as the video that was rated or uploaded.
+      "snippet": { # Basic details about an activity, including title, description, thumbnails, activity type and group. # The snippet object contains basic details about the activity, including the activity's type and group ID.
+        "thumbnails": { # A map of thumbnail images associated with the resource that is primarily associated with the activity. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+          "a_key": { # The thumbnail image's name.
+            "url": "A String", # The thumbnail image's URL.
+            "width": 42,
+            "height": 42,
           },
         },
-        "title": "A String", # Title of the activity.
-        "channelId": "A String", # Channel publishing the activity.
-        "publishedAt": "A String", # Date and time the activity was published at.
-        "type": "A String", # Type of the activity.
-        "groupId": "A String", # Id of the group that this activity is part of.
-        "description": "A String", # Description of the activity.
+        "title": "A String", # The title of the resource primarily associated with the activity.
+        "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel associated with the activity.
+        "publishedAt": "A String", # The date and time that the activity occurred. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+        "type": "A String", # The type of activity that the resource describes.
+        "groupId": "A String", # The group ID associated with the activity. A group ID identifies user events that are associated with the same user and resource. For example, if a user rates a video and marks the same video as a favorite, the entries for those events would have the same group ID in the user's activity feed. In your user interface, you can avoid repetition by grouping events with the same groupId value.
+        "description": "A String", # The description of the resource primarily associated with the activity.
       },
-      "contentDetails": { # Details about the content of an activity: the video that was shared, the channel that was subscribed to, etc. # Type specific information about the activity.
-        "comment": { # Only present if the type is "comment".
-          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the commented resource.
-            "kind": "A String", # The kind of the referred resource.
-            "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-            "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-            "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+      "contentDetails": { # Details about the content of an activity: the video that was shared, the channel that was subscribed to, etc. # The contentDetails object contains information about the content associated with the activity. For example, if the snippet.type value is videoRated, then the contentDetails object's content identifies the rated video.
+        "comment": { # The comment object contains information about a resource that received a comment. This property is only present if the snippet.type is comment.
+          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource associated with the comment.
+            "kind": "A String", # The kind, or type, of the referred resource.
+            "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+            "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+            "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
           },
         },
-        "playlistItem": { # Only present if the type is "playlistItem".
-          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the resource added to the playlist.
-            "kind": "A String", # The kind of the referred resource.
-            "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-            "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-            "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+        "playlistItem": { # The playlistItem object contains information about a new playlist item. This property is only present if the snippet.type is playlistItem.
+          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information about the resource that was added to the playlist.
+            "kind": "A String", # The kind, or type, of the referred resource.
+            "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+            "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+            "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
           },
-          "playlistId": "A String", # ID of the playlist the resource was added to.
+          "playlistId": "A String", # The value that YouTube uses to uniquely identify the playlist.
+          "playlistItemId": "A String", # ID of the item within the playlist.
         },
-        "like": { # Only present if the type is "like".
-          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the rated resource.
-            "kind": "A String", # The kind of the referred resource.
-            "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-            "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-            "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+        "like": { # The like object contains information about a resource that received a positive (like) rating. This property is only present if the snippet.type is like.
+          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the rated resource.
+            "kind": "A String", # The kind, or type, of the referred resource.
+            "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+            "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+            "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
           },
         },
-        "social": { # Only present if the type is "social".
-          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the resource this social activity is about.
-            "kind": "A String", # The kind of the referred resource.
-            "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-            "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-            "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+        "social": { # The social object contains details about a social network post. This property is only present if the snippet.type is social.
+          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object encapsulates information that identifies the resource associated with a social network post.
+            "kind": "A String", # The kind, or type, of the referred resource.
+            "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+            "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+            "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
           },
-          "imageUrl": "A String", # Image of the post author.
-          "type": "A String", # Type of the social network.
-          "referenceUrl": "A String", # Url of the social post.
-          "author": "A String", # Author of the post.
+          "imageUrl": "A String", # An image of the post's author.
+          "type": "A String", # The name of the social network.
+          "referenceUrl": "A String", # The URL of the social network post.
+          "author": "A String", # The author of the social network post.
         },
-        "favorite": { # Only present if the type is "favorite".
-          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the favorited resource.
-            "kind": "A String", # The kind of the referred resource.
-            "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-            "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-            "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+        "favorite": { # The favorite object contains information about a video that was marked as a favorite video. This property is only present if the snippet.type is favorite.
+          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that was marked as a favorite.
+            "kind": "A String", # The kind, or type, of the referred resource.
+            "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+            "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+            "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
           },
         },
-        "upload": { # Only present if the type is "upload".
-          "videoId": "A String", # ID of the uploaded video.
+        "upload": { # The upload object contains information about the uploaded video. This property is only present if the snippet.type is upload.
+          "videoId": "A String", # The ID that YouTube uses to uniquely identify the uploaded video.
         },
-        "recommendation": { # Only set if the type is "recommendation".
-          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the recommended resource.
-            "kind": "A String", # The kind of the referred resource.
-            "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-            "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-            "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+        "recommendation": { # The recommendation object contains information about a recommended resource. This property is only present if the snippet.type is recommendation.
+          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the recommended resource.
+            "kind": "A String", # The kind, or type, of the referred resource.
+            "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+            "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+            "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
           },
-          "reason": "A String", # Reason for which the video was recommended.
-          "seedResourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the video that caused this recommendation.
-            "kind": "A String", # The kind of the referred resource.
-            "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-            "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-            "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+          "reason": "A String", # The reason that the resource is recommended to the user.
+          "seedResourceId": { # A resource id is a generic reference that points to another YouTube resource. # The seedResourceId object contains information about the resource that caused the recommendation.
+            "kind": "A String", # The kind, or type, of the referred resource.
+            "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+            "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+            "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
           },
         },
-        "bulletin": { # Only present if the type is "bulletin".
-          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the resource this bulletin is about.
-            "kind": "A String", # The kind of the referred resource.
-            "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-            "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-            "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+        "subscription": { # The subscription object contains information about a channel that a user subscribed to. This property is only present if the snippet.type is subscription.
+          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that the user subscribed to.
+            "kind": "A String", # The kind, or type, of the referred resource.
+            "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+            "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+            "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
           },
         },
-        "subscription": { # Only present if the type is "subscription".
-          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the resource subscribed to.
-            "kind": "A String", # The kind of the referred resource.
-            "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-            "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-            "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+        "bulletin": { # The bulletin object contains details about a channel bulletin post. This object is only present if the snippet.type is bulletin.
+          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource associated with a bulletin post.
+            "kind": "A String", # The kind, or type, of the referred resource.
+            "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+            "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+            "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
+          },
+        },
+        "channelItem": { # The channelItem object contains details about a resource which was added to a channel. This property is only present if the snippet.type is channelItem.
+          "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that was added to the channel.
+            "kind": "A String", # The kind, or type, of the referred resource.
+            "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+            "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+            "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
           },
         },
       },
-      "kind": "youtube#activity", # The type of this API response.
-      "etag": "A String", # The eTag of the activity.
-      "id": "A String", # The unique ID of the activity.
+      "kind": "youtube#activity", # The type of the API resource. For activity resources, the value will be youtube#activity.
+      "etag": "A String", # The ETag of the activity resource.
+      "id": "A String", # The ID that YouTube uses to uniquely identify the activity.
     }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(part, onBehalfOfContentOwner=None, pageToken=None, publishedBefore=None, channelId=None, mine=None, maxResults=None, home=None, publishedAfter=None)</code>
-  <pre>Browse the YouTube channel activity collection.
+    <code class="details" id="list">list(part=None, pageToken=None, publishedBefore=None, channelId=None, mine=None, maxResults=None, home=None, publishedAfter=None)</code>
+  <pre>Returns a list of channel activity events that match the request criteria. For example, you can retrieve events associated with a particular channel, events associated with the user's subscriptions and Google+ friends, or the YouTube home page feed, which is customized for each user.
 
 Args:
-  part: string, Activity parts to include in the returned response. Valid values are: id, snippet and contentDetails. (required)
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
-  pageToken: string, Token for the page selection.
-  publishedBefore: string, Only return activities published before given date (exclusive).
-  channelId: string, YouTube ID of the channel.
-  mine: string, Flag indicating to return user's activities.
-  maxResults: integer, Maximum number of results to return
-  home: string, Flag indicating to return user's homepage feed.
-  publishedAfter: string, Only return activities published after given date (inclusive).
+  part: string, The part parameter specifies a comma-separated list of one or more activity resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, and contentDetails.
+
+If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a activity resource, the snippet property contains other properties that identify the type of activity, a display title for the activity, and so forth. If you set part=snippet, the API response will also contain all of those nested properties. (required)
+  pageToken: string, USE_DESCRIPTION --- channels:list:pageToken
+  publishedBefore: string, The publishedBefore parameter specifies the date and time before which an activity must have occurred for that activity to be included in the API response. If the parameter value specifies a day, but not a time, then any activities that occurred that day will be excluded from the result set. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+  channelId: string, The channelId parameter specifies a unique YouTube channel ID. The API will then return a list of that channel's activities.
+  mine: boolean, Set this parameter's value to true to retrieve a feed of the authenticated user's activities.
+  maxResults: integer, USE_DESCRIPTION --- channels:list:maxResults
+  home: string, Set this parameter's value to true to retrieve the activity feed that displays on the YouTube home page for the currently authenticated user.
+  publishedAfter: string, The publishedAfter parameter specifies the earliest date and time that an activity could have occurred for that activity to be included in the API response. If the parameter value specifies a day, but not a time, then any activities that occurred that day will be included in the result set. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
 
 Returns:
   An object of the form:
 
     { # A paginated list of activities returned as a response to youtube.activities.list calls.
-    "nextPageToken": "A String", # Token to the next page.
-    "kind": "youtube#activityListResponse", # The type of this API response.
-    "items": [ # List of activities matching the request criteria.
-      { # An activity resource contains information about an action that a channel has taken on YouTube.
-          "snippet": { # Basic details about an activity, including title, description, thumbnails, activity type and group. # Basic details about the activity: title, description, thumbnails.
-            "thumbnails": { # Activity thumbnails.
-              "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-                "url": "A String", # The URL for the thumbnail.
+    "nextPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
+    "kind": "youtube#activityListResponse", # The type of the API response. For this operation, the value will be youtube#activityListResponse.
+    "items": [ # A list of activities, or events, that match the request criteria.
+      { # An activity resource contains information about an action that a particular channel, or user, has taken on YouTube. The actions reported in activity feeds include rating a video, sharing a video, marking a video as a favorite, commenting on a video, uploading a video, and so forth. Each activity resource identifies the type of action, the channel associated with the action, and the resource(s) associated with the action, such as the video that was rated or uploaded.
+          "snippet": { # Basic details about an activity, including title, description, thumbnails, activity type and group. # The snippet object contains basic details about the activity, including the activity's type and group ID.
+            "thumbnails": { # A map of thumbnail images associated with the resource that is primarily associated with the activity. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+              "a_key": { # The thumbnail image's name.
+                "url": "A String", # The thumbnail image's URL.
+                "width": 42,
+                "height": 42,
               },
             },
-            "title": "A String", # Title of the activity.
-            "channelId": "A String", # Channel publishing the activity.
-            "publishedAt": "A String", # Date and time the activity was published at.
-            "type": "A String", # Type of the activity.
-            "groupId": "A String", # Id of the group that this activity is part of.
-            "description": "A String", # Description of the activity.
+            "title": "A String", # The title of the resource primarily associated with the activity.
+            "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel associated with the activity.
+            "publishedAt": "A String", # The date and time that the activity occurred. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+            "type": "A String", # The type of activity that the resource describes.
+            "groupId": "A String", # The group ID associated with the activity. A group ID identifies user events that are associated with the same user and resource. For example, if a user rates a video and marks the same video as a favorite, the entries for those events would have the same group ID in the user's activity feed. In your user interface, you can avoid repetition by grouping events with the same groupId value.
+            "description": "A String", # The description of the resource primarily associated with the activity.
           },
-          "contentDetails": { # Details about the content of an activity: the video that was shared, the channel that was subscribed to, etc. # Type specific information about the activity.
-            "comment": { # Only present if the type is "comment".
-              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the commented resource.
-                "kind": "A String", # The kind of the referred resource.
-                "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-                "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-                "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+          "contentDetails": { # Details about the content of an activity: the video that was shared, the channel that was subscribed to, etc. # The contentDetails object contains information about the content associated with the activity. For example, if the snippet.type value is videoRated, then the contentDetails object's content identifies the rated video.
+            "comment": { # The comment object contains information about a resource that received a comment. This property is only present if the snippet.type is comment.
+              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource associated with the comment.
+                "kind": "A String", # The kind, or type, of the referred resource.
+                "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+                "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+                "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
               },
             },
-            "playlistItem": { # Only present if the type is "playlistItem".
-              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the resource added to the playlist.
-                "kind": "A String", # The kind of the referred resource.
-                "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-                "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-                "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+            "playlistItem": { # The playlistItem object contains information about a new playlist item. This property is only present if the snippet.type is playlistItem.
+              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information about the resource that was added to the playlist.
+                "kind": "A String", # The kind, or type, of the referred resource.
+                "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+                "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+                "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
               },
-              "playlistId": "A String", # ID of the playlist the resource was added to.
+              "playlistId": "A String", # The value that YouTube uses to uniquely identify the playlist.
+              "playlistItemId": "A String", # ID of the item within the playlist.
             },
-            "like": { # Only present if the type is "like".
-              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the rated resource.
-                "kind": "A String", # The kind of the referred resource.
-                "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-                "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-                "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+            "like": { # The like object contains information about a resource that received a positive (like) rating. This property is only present if the snippet.type is like.
+              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the rated resource.
+                "kind": "A String", # The kind, or type, of the referred resource.
+                "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+                "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+                "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
               },
             },
-            "social": { # Only present if the type is "social".
-              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the resource this social activity is about.
-                "kind": "A String", # The kind of the referred resource.
-                "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-                "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-                "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+            "social": { # The social object contains details about a social network post. This property is only present if the snippet.type is social.
+              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object encapsulates information that identifies the resource associated with a social network post.
+                "kind": "A String", # The kind, or type, of the referred resource.
+                "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+                "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+                "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
               },
-              "imageUrl": "A String", # Image of the post author.
-              "type": "A String", # Type of the social network.
-              "referenceUrl": "A String", # Url of the social post.
-              "author": "A String", # Author of the post.
+              "imageUrl": "A String", # An image of the post's author.
+              "type": "A String", # The name of the social network.
+              "referenceUrl": "A String", # The URL of the social network post.
+              "author": "A String", # The author of the social network post.
             },
-            "favorite": { # Only present if the type is "favorite".
-              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the favorited resource.
-                "kind": "A String", # The kind of the referred resource.
-                "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-                "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-                "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+            "favorite": { # The favorite object contains information about a video that was marked as a favorite video. This property is only present if the snippet.type is favorite.
+              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that was marked as a favorite.
+                "kind": "A String", # The kind, or type, of the referred resource.
+                "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+                "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+                "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
               },
             },
-            "upload": { # Only present if the type is "upload".
-              "videoId": "A String", # ID of the uploaded video.
+            "upload": { # The upload object contains information about the uploaded video. This property is only present if the snippet.type is upload.
+              "videoId": "A String", # The ID that YouTube uses to uniquely identify the uploaded video.
             },
-            "recommendation": { # Only set if the type is "recommendation".
-              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the recommended resource.
-                "kind": "A String", # The kind of the referred resource.
-                "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-                "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-                "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+            "recommendation": { # The recommendation object contains information about a recommended resource. This property is only present if the snippet.type is recommendation.
+              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the recommended resource.
+                "kind": "A String", # The kind, or type, of the referred resource.
+                "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+                "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+                "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
               },
-              "reason": "A String", # Reason for which the video was recommended.
-              "seedResourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the video that caused this recommendation.
-                "kind": "A String", # The kind of the referred resource.
-                "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-                "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-                "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+              "reason": "A String", # The reason that the resource is recommended to the user.
+              "seedResourceId": { # A resource id is a generic reference that points to another YouTube resource. # The seedResourceId object contains information about the resource that caused the recommendation.
+                "kind": "A String", # The kind, or type, of the referred resource.
+                "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+                "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+                "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
               },
             },
-            "bulletin": { # Only present if the type is "bulletin".
-              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the resource this bulletin is about.
-                "kind": "A String", # The kind of the referred resource.
-                "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-                "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-                "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+            "subscription": { # The subscription object contains information about a channel that a user subscribed to. This property is only present if the snippet.type is subscription.
+              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that the user subscribed to.
+                "kind": "A String", # The kind, or type, of the referred resource.
+                "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+                "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+                "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
               },
             },
-            "subscription": { # Only present if the type is "subscription".
-              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # ID of the resource subscribed to.
-                "kind": "A String", # The kind of the referred resource.
-                "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-                "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-                "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+            "bulletin": { # The bulletin object contains details about a channel bulletin post. This object is only present if the snippet.type is bulletin.
+              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource associated with a bulletin post.
+                "kind": "A String", # The kind, or type, of the referred resource.
+                "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+                "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+                "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
+              },
+            },
+            "channelItem": { # The channelItem object contains details about a resource which was added to a channel. This property is only present if the snippet.type is channelItem.
+              "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that was added to the channel.
+                "kind": "A String", # The kind, or type, of the referred resource.
+                "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+                "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+                "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
               },
             },
           },
-          "kind": "youtube#activity", # The type of this API response.
-          "etag": "A String", # The eTag of the activity.
-          "id": "A String", # The unique ID of the activity.
+          "kind": "youtube#activity", # The type of the API resource. For activity resources, the value will be youtube#activity.
+          "etag": "A String", # The ETag of the activity resource.
+          "id": "A String", # The ID that YouTube uses to uniquely identify the activity.
         },
     ],
-    "etag": "A String", # The eTag of the response.
-    "prevPageToken": "A String", # Token to the previous page.
-    "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # Paging information for the list result.
-      "totalResults": 42, # The total number of results.
-      "resultsPerPage": 42, # The number of results to display for each page.
+    "etag": "A String", # The ETag of the response.
+    "prevPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
+    "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # The pageInfo object encapsulates paging information for the result set.
+      "totalResults": 42, # The total number of results in the result set.
+      "resultsPerPage": 42, # The number of results included in the API response.
     },
   }</pre>
 </div>
@@ -441,7 +476,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/youtube_v3.channels.html b/docs/dyn/youtube_v3.channels.html
index 7104ca9..4c49487 100644
--- a/docs/dyn/youtube_v3.channels.html
+++ b/docs/dyn/youtube_v3.channels.html
@@ -72,73 +72,84 @@
 
 </style>
 
-<h1><a href="youtube_v3.html">YouTube API</a> . <a href="youtube_v3.channels.html">channels</a></h1>
+<h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.channels.html">channels</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#list">list(part, onBehalfOfContentOwner=None, pageToken=None, categoryId=None, maxResults=None, mine=None, mySubscribers=None, id=None)</a></code></p>
-<p class="firstline">Browse the YouTube channel collection. Either the 'id' or 'mine' parameter must be set.</p>
+  <code><a href="#list">list(part=None, pageToken=None, mine=None, maxResults=None, categoryId=None, mySubscribers=None, id=None)</a></code></p>
+<p class="firstline">Returns a collection of zero or more channel resources that match the request criteria.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="list">list(part, onBehalfOfContentOwner=None, pageToken=None, categoryId=None, maxResults=None, mine=None, mySubscribers=None, id=None)</code>
-  <pre>Browse the YouTube channel collection. Either the 'id' or 'mine' parameter must be set.
+    <code class="details" id="list">list(part=None, pageToken=None, mine=None, maxResults=None, categoryId=None, mySubscribers=None, id=None)</code>
+  <pre>Returns a collection of zero or more channel resources that match the request criteria.
 
 Args:
-  part: string, Channel parts to include in the returned response. Valid values are: id, snippet, contentDetails and topicDetails. (required)
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
-  pageToken: string, Token for the page selection.
-  categoryId: string, Filter to retrieve the channels within the given category ID.
-  maxResults: integer, Maximum number of results to return
-  mine: string, Filter to only channels owned by authenticated user.
-  mySubscribers: string, Filter to channels that subscribed to the channel of the authenticated user.
-  id: string, YouTube IDs of the channels to be returned.
+  part: string, The part parameter specifies a comma-separated list of one or more channel resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, statistics, and topicDetails.
+
+If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a channel resource, the contentDetails property contains other properties, such as the uploads properties. As such, if you set part=contentDetails, the API response will also contain all of those nested properties. (required)
+  pageToken: string, The pageToken parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved.
+  mine: boolean, Set this parameter's value to true to instruct the API to only return channels owned by the authenticated user.
+  maxResults: integer, The maxResults parameter specifies the maximum number of items that should be returned in the result set.
+  categoryId: string, The categoryId parameter specifies a YouTube guide category, thereby requesting YouTube channels associated with that category.
+  mySubscribers: string, Set this parameter's value to true to retrieve a list of channels that subscribed to the authenticated user's channel.
+  id: string, The id parameter specifies a comma-separated list of the YouTube channel ID(s) for the resource(s) that are being retrieved. In a channel resource, the id property specifies the channel's YouTube channel ID.
 
 Returns:
   An object of the form:
 
     { # A paginated list of channels returned as the response to a youtube.channels.list call.
-    "nextPageToken": "A String", # Token to the next page.
-    "kind": "youtube#channelListResponse", # The type of this API response.
-    "items": [ # List of channels matching the request criteria.
-      { # A channel resource contains information about a single YouTube channel.
-        "topicDetails": { # Freebase topic information related to the channel. # Information about channel topics
-          "topicIds": [ # List of topic ids for this channel *
+    "nextPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
+    "kind": "youtube#channelListResponse", # The type of the API response. For this operation, the value will be youtube#channelListResponse.
+    "items": [ # A list of channels that match the request criteria.
+      { # A channel resource contains information about a YouTube channel.
+        "status": { # JSON template for the status part of a channel. # The status object encapsulates information about the privacy status of the channel.
+          "privacyStatus": "A String", # Privacy status of the channel.
+        },
+        "topicDetails": { # Freebase topic information related to the channel. # The topicDetails object encapsulates information about Freebase topics associated with the channel.
+          "topicIds": [ # A list of Freebase topic IDs associated with the channel. You can retrieve information about each topic using the Freebase Topic API.
             "A String",
           ],
         },
-        "kind": "youtube#channel", # The type of this API resource.
-        "statistics": { # Statistics about a channel: number of subscribers, number of videos in the channel, etc. # Statistics about the channel: number of subscribers, views, and comments.
-          "commentCount": "A String", # Number of comments for this channel.
-          "subscriberCount": "A String", # Number of subscribers to this channel.
-          "videoCount": "A String", # Number of videos in the channel.
-          "viewCount": "A String", # Number of times the channel has been viewed.
+        "kind": "youtube#channel", # The type of the API resource. For channel resources, the value will be youtube#channel.
+        "statistics": { # Statistics about a channel: number of subscribers, number of videos in the channel, etc. # The statistics object encapsulates statistics for the channel.
+          "commentCount": "A String", # The number of comments for the channel.
+          "subscriberCount": "A String", # The number of subscribers that the channel has.
+          "videoCount": "A String", # The number of videos uploaded to the channel.
+          "viewCount": "A String", # The number of times the channel has been viewed.
         },
-        "contentDetails": { # Details about the content of a channel. # Information about the channel content: upload playlist id, privacy status.
-          "privacyStatus": "A String", # Privacy status of the channel.
-          "uploads": "A String", # The ID of the playlist containing the uploads of this channel.
+        "contentDetails": { # Details about the content of a channel. # The contentDetails object encapsulates information about the channel's content.
+          "relatedPlaylists": { # The relatedPlaylists object is a map that identifies playlists associated with the channel, such as the channel's uploaded videos or favorite videos. You can retrieve any of these playlists using the playlists.list method.
+            "watchLater": "A String", # The ID of the channel's watch later playlist. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+            "watchHistory": "A String", # The ID of the playlist that contains the channel's watch history. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+            "likes": "A String", # The ID of the playlist that contains the channel's liked videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+            "favorites": "A String", # The ID of the playlist that contains the channel's favorite videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+            "uploads": "A String", # The ID of the playlist that contains the channel's uploaded videos. Use the videos.insert method to upload new videos and the videos.delete method to delete previously uploaded videos.
+          },
         },
-        "snippet": { # Basic details about a channel, including title, description and thumbnails. # Basic details about the channel: title, description, and thumbnails.
-          "title": "A String", # Title of the channel.
-          "channelId": "A String", # Id of the channel.
-          "description": "A String", # Description of the channel.
-          "publishedAt": "A String", # Date and time the channel was published at.
-          "thumbnails": { # Channel thumbnails.
-            "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-              "url": "A String", # The URL for the thumbnail.
+        "snippet": { # Basic details about a channel, including title, description and thumbnails. # The snippet object contains basic details about the channel, such as its title, description, and thumbnail images.
+          "title": "A String", # The channel's title.
+          "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel.
+          "description": "A String", # The channel's description.
+          "publishedAt": "A String", # The date and time that the channel was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+          "thumbnails": { # A map of thumbnail images associated with the channel. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+            "a_key": { # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+              "url": "A String", # The thumbnail image's URL.
+              "width": 42,
+              "height": 42,
             },
           },
         },
-        "etag": "A String", # The eTag of the channel.
-        "id": "A String", # The unique ID of the channel.
+        "etag": "A String", # The ETag for the channel resource.
+        "id": "A String", # The ID that YouTube uses to uniquely identify the channel.
       },
     ],
-    "etag": "A String", # The eTag of the response.
-    "prevPageToken": "A String", # Token to the previous page.
-    "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # Paging information for the list result.
-      "totalResults": 42, # The total number of results.
-      "resultsPerPage": 42, # The number of results to display for each page.
+    "etag": "A String", # The ETag for the response.
+    "prevPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
+    "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # The pageInfo object encapsulates paging information for the result set.
+      "totalResults": 42, # The total number of results in the result set.
+      "resultsPerPage": 42, # The number of results included in the API response.
     },
   }</pre>
 </div>
@@ -154,7 +165,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/youtube_v3.guideCategories.html b/docs/dyn/youtube_v3.guideCategories.html
index ed50d4e..073293e 100644
--- a/docs/dyn/youtube_v3.guideCategories.html
+++ b/docs/dyn/youtube_v3.guideCategories.html
@@ -72,40 +72,41 @@
 
 </style>
 
-<h1><a href="youtube_v3.html">YouTube API</a> . <a href="youtube_v3.guideCategories.html">guideCategories</a></h1>
+<h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.guideCategories.html">guideCategories</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#list">list(part, onBehalfOfContentOwner=None, regionCode=None, hl=None, id=None)</a></code></p>
-<p class="firstline">Browse the YouTube guide category collection.</p>
+  <code><a href="#list">list(part=None, regionCode=None, hl=None, id=None)</a></code></p>
+<p class="firstline">Returns a list of categories that can be associated with YouTube channels.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="list">list(part, onBehalfOfContentOwner=None, regionCode=None, hl=None, id=None)</code>
-  <pre>Browse the YouTube guide category collection.
+    <code class="details" id="list">list(part=None, regionCode=None, hl=None, id=None)</code>
+  <pre>Returns a list of categories that can be associated with YouTube channels.
 
 Args:
-  part: string, Guide category parts to include in the returned response. Valid values are: id and snippet. (required)
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
-  regionCode: string, Return the channelCategories in the given region code.
-  hl: string, Language for the returned channelCategories.
-  id: string, Comma-separated YouTube IDs of the channelCategories to be returned.
+  part: string, The part parameter specifies a comma-separated list of one or more guideCategory resource properties that the API response will include. The part names that you can include in the parameter value are id and snippet.
+
+If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a guideCategory resource, the snippet property contains other properties, such as the category's title. If you set part=snippet, the API response will also contain all of those nested properties. (required)
+  regionCode: string, The regionCode parameter instructs the API to return the list of guide categories available in the specified country. The parameter value is an ISO 3166-1 alpha-2 country code.
+  hl: string, The hl parameter specifies the language that will be used for text values in the API response.
+  id: string, The id parameter specifies a comma-separated list of the YouTube channel category ID(s) for the resource(s) that are being retrieved. In a guideCategory resource, the id property specifies the YouTube channel category ID.
 
 Returns:
   An object of the form:
 
     { # A paginated list of guide categories returned as the response to a youtube.guideCategories.list call.
-    "items": [ # List of categories matching the request criteria.
-      { # A guideCategory resource identifies a category that YouTube assigns based on a channel's content or other indicators, such as the channel's popularity.
-        "snippet": { # Basic details about a guide category. # Snippet of the category.
-          "channelId": "UCBR8-60-B28hp2BmDPdntcQ", # Channel publishing the guide category.
-          "title": "A String", # Title of the guide category.
+    "items": [ # A list of categories that can be associated with YouTube channels. In this map, the category ID is the map key, and its value is the corresponding guideCategory resource.
+      { # A guideCategory resource identifies a category that YouTube algorithmically assigns based on a channel's content or other indicators, such as the channel's popularity. The list is similar to video categories, with the difference being that a video's uploader can assign a video category but only YouTube can assign a channel category.
+        "snippet": { # Basic details about a guide category. # The snippet object contains basic details about the category, such as its title.
+          "channelId": "UCBR8-60-B28hp2BmDPdntcQ", # The ID that YouTube uses to uniquely identify the channel publishing the guide category.
+          "title": "A String", # The category's title.
         },
-        "kind": "youtube#guideCategory", # The type of this API resource.
-        "etag": "A String", # The eTag of the guide category.
-        "id": "A String", # The unique ID of the guide category.
+        "kind": "youtube#guideCategory", # The type of the API resource. For guideCategory resources, the value will be youtube#guideCategory/code>.
+        "etag": "A String", # The ETag of the guideCategory resource.
+        "id": "A String", # The ID that YouTube uses to uniquely identify the guide category.
       },
     ],
-    "kind": "youtube#guideCategoryListResponse", # The type of this API response.
-    "etag": "A String", # The eTag of the response.
+    "kind": "youtube#guideCategoryListResponse", # The type of the API response. For this operation, the value will be youtube#guideCategoryListResponse.
+    "etag": "A String", # The ETag of the response.
   }</pre>
 </div>
 
diff --git a/docs/dyn/youtube_v3.html b/docs/dyn/youtube_v3.html
index b9f0077..12354bf 100644
--- a/docs/dyn/youtube_v3.html
+++ b/docs/dyn/youtube_v3.html
@@ -72,7 +72,7 @@
 
 </style>
 
-<h1><a href="youtube_v3.html">YouTube API</a></h1>
+<h1><a href="youtube_v3.html">YouTube Data API</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="youtube_v3.activities.html">activities()</a></code>
diff --git a/docs/dyn/youtube_v3.playlistItems.html b/docs/dyn/youtube_v3.playlistItems.html
index 76348d6..4b8614d 100644
--- a/docs/dyn/youtube_v3.playlistItems.html
+++ b/docs/dyn/youtube_v3.playlistItems.html
@@ -72,166 +72,200 @@
 
 </style>
 
-<h1><a href="youtube_v3.html">YouTube API</a> . <a href="youtube_v3.playlistItems.html">playlistItems</a></h1>
+<h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.playlistItems.html">playlistItems</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#delete">delete(id, onBehalfOfContentOwner=None)</a></code></p>
-<p class="firstline">Deletes playlist items by IDs.</p>
+  <code><a href="#delete">delete(id)</a></code></p>
+<p class="firstline">Deletes a playlist item.</p>
 <p class="toc_element">
-  <code><a href="#insert">insert(part, body, onBehalfOfContentOwner=None)</a></code></p>
-<p class="firstline">Insert a resource into a playlist.</p>
+  <code><a href="#insert">insert(part=None, body)</a></code></p>
+<p class="firstline">Adds a resource to a playlist.</p>
 <p class="toc_element">
-  <code><a href="#list">list(part, onBehalfOfContentOwner=None, pageToken=None, playlistId=None, maxResults=None, id=None)</a></code></p>
-<p class="firstline">Browse the YouTube playlist collection.</p>
+  <code><a href="#list">list(part=None, pageToken=None, playlistId=None, maxResults=None, id=None)</a></code></p>
+<p class="firstline">Returns a collection of playlist items that match the API request parameters. You can retrieve all of the playlist items in a specified playlist or retrieve one or more playlist items by their unique IDs.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
-  <code><a href="#update">update(part, body, onBehalfOfContentOwner=None)</a></code></p>
-<p class="firstline">Update a playlist item.</p>
+  <code><a href="#update">update(part=None, body)</a></code></p>
+<p class="firstline">Modifies a playlist item. For example, you could update the item's position in the playlist.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="delete">delete(id, onBehalfOfContentOwner=None)</code>
-  <pre>Deletes playlist items by IDs.
+    <code class="details" id="delete">delete(id)</code>
+  <pre>Deletes a playlist item.
 
 Args:
-  id: string, YouTube IDs of the playlist items to be deleted. (required)
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
+  id: string, The id parameter specifies the YouTube playlist item ID for the playlist item that is being deleted. In a playlistItem resource, the id property specifies the playlist item's ID. (required)
 </pre>
 </div>
 
 <div class="method">
-    <code class="details" id="insert">insert(part, body, onBehalfOfContentOwner=None)</code>
-  <pre>Insert a resource into a playlist.
+    <code class="details" id="insert">insert(part=None, body)</code>
+  <pre>Adds a resource to a playlist.
 
 Args:
-  part: string, One or more parts to return on the current request. (required)
+  part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.
+
+The part names that you can include in the parameter value are snippet and contentDetails. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # A playlistItem resource refers to another resource, such as a video, that is included in a playlist.
-    "snippet": { # Basic details about an item included in a playlist, including title, description, thumbnails, playlist the item is part of and position of the item inside the playlist. # Basic details about the playlist item: title, description, thumbnails.
-      "playlistId": "A String", # The playlist the item is part of.
-      "description": "A String", # Description of the playlist item.
-      "title": "A String", # Title of the playlist item.
-      "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The ID of the resource referenced by the playlist item.
-        "kind": "A String", # The kind of the referred resource.
-        "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-        "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-        "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+{ # A playlistItem resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist.
+      # 
+      # YouTube uses playlists to identify special collections of videos for a channel, such as:
+      # - uploaded videos
+      # - favorite videos
+      # - positively rated (liked) videos
+      # - watch history
+      # - watch later  To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information.
+      # 
+      # You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.
+    "snippet": { # Basic details about an item included in a playlist, including title, description, thumbnails, playlist the item is part of and position of the item inside the playlist. # The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
+      "playlistId": "A String", # The ID that YouTube uses to uniquely identify the playlist that the playlist item is in.
+      "description": "A String", # The item's description.
+      "title": "A String", # The item's title.
+      "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information that can be used to uniquely identify the resource that is included in the playlist as the playlist item.
+        "kind": "A String", # The kind, or type, of the referred resource.
+        "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+        "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+        "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
       },
-      "channelId": "A String", # Channel publishing the playlist item.
-      "publishedAt": "A String", # Date and time the playlist item was published at.
-      "position": 42, # The position of the item within the playlist.
-      "thumbnails": { # Playlist item thumbnails.
-        "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-          "url": "A String", # The URL for the thumbnail.
+      "channelId": "A String", # The ID that YouTube uses to uniquely identify the user that added the item to the playlist.
+      "publishedAt": "A String", # The date and time that the item was added to the playlist. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+      "position": 42, # The order in which the item appears in the playlist. The value uses a zero-based index, so the first item has a position of 0, the second item has a position of 1, and so forth.
+      "thumbnails": { # A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+        "a_key": { # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+          "url": "A String", # The thumbnail image's URL.
+          "width": 42,
+          "height": 42,
         },
       },
     },
-    "contentDetails": { # Details about the content of a playlist item, such as the video or the video fragment start and end time included in the playlist. # Content details about the playlist item: start and end clipping time.
-      "note": "A String", # The user-generated note for this item.
-      "startAt": "A String", # The time video playback begins.
-      "endAt": "A String", # The time video playback ends.
-      "videoId": "A String", # ID of the video.
+    "contentDetails": { # Details about the content of a playlist item, such as the video or the video fragment start and end time included in the playlist. # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
+      "note": "A String", # A user-generated note for this item.
+      "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
+      "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
+      "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
     },
-    "kind": "youtube#playlistItem", # The type of this API resource.
-    "etag": "A String", # The eTag of the playlist item.
-    "id": "A String", # The unique id of the playlist item.
+    "kind": "youtube#playlistItem", # The type of the API resource. For playlist item resources, the value will be youtube#playlistItem.
+    "etag": "A String", # The ETag for the playlist item resource.
+    "id": "A String", # The ID that YouTube uses to uniquely identify the playlist item.
   }
 
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
 
 Returns:
   An object of the form:
 
-    { # A playlistItem resource refers to another resource, such as a video, that is included in a playlist.
-      "snippet": { # Basic details about an item included in a playlist, including title, description, thumbnails, playlist the item is part of and position of the item inside the playlist. # Basic details about the playlist item: title, description, thumbnails.
-        "playlistId": "A String", # The playlist the item is part of.
-        "description": "A String", # Description of the playlist item.
-        "title": "A String", # Title of the playlist item.
-        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The ID of the resource referenced by the playlist item.
-          "kind": "A String", # The kind of the referred resource.
-          "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-          "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-          "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+    { # A playlistItem resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist.
+        #
+        # YouTube uses playlists to identify special collections of videos for a channel, such as:
+        # - uploaded videos
+        # - favorite videos
+        # - positively rated (liked) videos
+        # - watch history
+        # - watch later  To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information.
+        #
+        # You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.
+      "snippet": { # Basic details about an item included in a playlist, including title, description, thumbnails, playlist the item is part of and position of the item inside the playlist. # The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
+        "playlistId": "A String", # The ID that YouTube uses to uniquely identify the playlist that the playlist item is in.
+        "description": "A String", # The item's description.
+        "title": "A String", # The item's title.
+        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information that can be used to uniquely identify the resource that is included in the playlist as the playlist item.
+          "kind": "A String", # The kind, or type, of the referred resource.
+          "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+          "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+          "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
         },
-        "channelId": "A String", # Channel publishing the playlist item.
-        "publishedAt": "A String", # Date and time the playlist item was published at.
-        "position": 42, # The position of the item within the playlist.
-        "thumbnails": { # Playlist item thumbnails.
-          "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-            "url": "A String", # The URL for the thumbnail.
+        "channelId": "A String", # The ID that YouTube uses to uniquely identify the user that added the item to the playlist.
+        "publishedAt": "A String", # The date and time that the item was added to the playlist. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+        "position": 42, # The order in which the item appears in the playlist. The value uses a zero-based index, so the first item has a position of 0, the second item has a position of 1, and so forth.
+        "thumbnails": { # A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+          "a_key": { # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+            "url": "A String", # The thumbnail image's URL.
+            "width": 42,
+            "height": 42,
           },
         },
       },
-      "contentDetails": { # Details about the content of a playlist item, such as the video or the video fragment start and end time included in the playlist. # Content details about the playlist item: start and end clipping time.
-        "note": "A String", # The user-generated note for this item.
-        "startAt": "A String", # The time video playback begins.
-        "endAt": "A String", # The time video playback ends.
-        "videoId": "A String", # ID of the video.
+      "contentDetails": { # Details about the content of a playlist item, such as the video or the video fragment start and end time included in the playlist. # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
+        "note": "A String", # A user-generated note for this item.
+        "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
+        "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
+        "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
       },
-      "kind": "youtube#playlistItem", # The type of this API resource.
-      "etag": "A String", # The eTag of the playlist item.
-      "id": "A String", # The unique id of the playlist item.
+      "kind": "youtube#playlistItem", # The type of the API resource. For playlist item resources, the value will be youtube#playlistItem.
+      "etag": "A String", # The ETag for the playlist item resource.
+      "id": "A String", # The ID that YouTube uses to uniquely identify the playlist item.
     }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(part, onBehalfOfContentOwner=None, pageToken=None, playlistId=None, maxResults=None, id=None)</code>
-  <pre>Browse the YouTube playlist collection.
+    <code class="details" id="list">list(part=None, pageToken=None, playlistId=None, maxResults=None, id=None)</code>
+  <pre>Returns a collection of playlist items that match the API request parameters. You can retrieve all of the playlist items in a specified playlist or retrieve one or more playlist items by their unique IDs.
 
 Args:
-  part: string, Playlist item parts to include in the returned response. Valid values are: id, snippet and contentDetails. (required)
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
-  pageToken: string, Token for the page selection.
-  playlistId: string, Retrieves playlist items from the given playlist id.
-  maxResults: integer, Maximum number of results to return
-  id: string, YouTube IDs of the playlist items to be returned.
+  part: string, The part parameter specifies a comma-separated list of one or more playlistItem resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, and contentDetails.
+
+If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a playlistItem resource, the snippet property contains numerous fields, including the title, description, position, and resourceId properties. As such, if you set part=snippet, the API response will contain all of those properties. (required)
+  pageToken: string, USE_DESCRIPTION --- channels:list:pageToken
+  playlistId: string, The playlistId parameter specifies the unique ID of the playlist for which you want to retrieve playlist items. Note that even though this is an optional parameter, every request to retrieve playlist items must specify a value for either the id parameter or the playlistId parameter.
+  maxResults: integer, USE_DESCRIPTION --- channels:list:maxResults
+  id: string, The id parameter specifies a comma-separated list of one or more unique playlist item IDs.
 
 Returns:
   An object of the form:
 
     { # A paginated list of playlist items returned as the response to a youtube.playlistItems.list call.
-    "nextPageToken": "A String", # Token to the next page.
-    "kind": "youtube#playlistItemListResponse", # The type of this API response.
-    "items": [ # List of playlist items matching the request criteria.
-      { # A playlistItem resource refers to another resource, such as a video, that is included in a playlist.
-          "snippet": { # Basic details about an item included in a playlist, including title, description, thumbnails, playlist the item is part of and position of the item inside the playlist. # Basic details about the playlist item: title, description, thumbnails.
-            "playlistId": "A String", # The playlist the item is part of.
-            "description": "A String", # Description of the playlist item.
-            "title": "A String", # Title of the playlist item.
-            "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The ID of the resource referenced by the playlist item.
-              "kind": "A String", # The kind of the referred resource.
-              "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-              "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-              "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+    "nextPageToken": "A String", # A token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
+    "kind": "youtube#playlistItemListResponse", # The type of the API response. For this operation, the value will be youtube#playlistItemListResponse.
+    "items": [ # A list of playlist items that match the request criteria.
+      { # A playlistItem resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist.
+            #
+            # YouTube uses playlists to identify special collections of videos for a channel, such as:
+            # - uploaded videos
+            # - favorite videos
+            # - positively rated (liked) videos
+            # - watch history
+            # - watch later  To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information.
+            #
+            # You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.
+          "snippet": { # Basic details about an item included in a playlist, including title, description, thumbnails, playlist the item is part of and position of the item inside the playlist. # The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
+            "playlistId": "A String", # The ID that YouTube uses to uniquely identify the playlist that the playlist item is in.
+            "description": "A String", # The item's description.
+            "title": "A String", # The item's title.
+            "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information that can be used to uniquely identify the resource that is included in the playlist as the playlist item.
+              "kind": "A String", # The kind, or type, of the referred resource.
+              "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+              "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+              "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
             },
-            "channelId": "A String", # Channel publishing the playlist item.
-            "publishedAt": "A String", # Date and time the playlist item was published at.
-            "position": 42, # The position of the item within the playlist.
-            "thumbnails": { # Playlist item thumbnails.
-              "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-                "url": "A String", # The URL for the thumbnail.
+            "channelId": "A String", # The ID that YouTube uses to uniquely identify the user that added the item to the playlist.
+            "publishedAt": "A String", # The date and time that the item was added to the playlist. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+            "position": 42, # The order in which the item appears in the playlist. The value uses a zero-based index, so the first item has a position of 0, the second item has a position of 1, and so forth.
+            "thumbnails": { # A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+              "a_key": { # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+                "url": "A String", # The thumbnail image's URL.
+                "width": 42,
+                "height": 42,
               },
             },
           },
-          "contentDetails": { # Details about the content of a playlist item, such as the video or the video fragment start and end time included in the playlist. # Content details about the playlist item: start and end clipping time.
-            "note": "A String", # The user-generated note for this item.
-            "startAt": "A String", # The time video playback begins.
-            "endAt": "A String", # The time video playback ends.
-            "videoId": "A String", # ID of the video.
+          "contentDetails": { # Details about the content of a playlist item, such as the video or the video fragment start and end time included in the playlist. # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
+            "note": "A String", # A user-generated note for this item.
+            "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
+            "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
+            "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
           },
-          "kind": "youtube#playlistItem", # The type of this API resource.
-          "etag": "A String", # The eTag of the playlist item.
-          "id": "A String", # The unique id of the playlist item.
+          "kind": "youtube#playlistItem", # The type of the API resource. For playlist item resources, the value will be youtube#playlistItem.
+          "etag": "A String", # The ETag for the playlist item resource.
+          "id": "A String", # The ID that YouTube uses to uniquely identify the playlist item.
         },
     ],
-    "etag": "A String", # The eTag of the response.
-    "prevPageToken": "A String", # Token to the previous page.
-    "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # Paging information for the list result.
-      "totalResults": 42, # The total number of results.
-      "resultsPerPage": 42, # The number of results to display for each page.
+    "etag": "A String", # The ETag for the response.
+    "prevPageToken": "A String", # A token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
+    "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # The pageInfo object encapsulates paging information for the result set.
+      "totalResults": 42, # The total number of results in the result set.
+      "resultsPerPage": 42, # The number of results included in the API response.
     },
   }</pre>
 </div>
@@ -247,83 +281,108 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(part, body, onBehalfOfContentOwner=None)</code>
-  <pre>Update a playlist item.
+    <code class="details" id="update">update(part=None, body)</code>
+  <pre>Modifies a playlist item. For example, you could update the item's position in the playlist.
 
 Args:
-  part: string, One or more parts to return on the current request. (required)
+  part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.
+
+The part names that you can include in the parameter value are snippet and contentDetails.
+
+Note that this method will override the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. For example, a playlist item can specify a start time and end time, which identify the times portion of the video that should play when users watch the video in the playlist. If your request is updating a playlist item that sets these values, and the request's part parameter value includes the contentDetails part, the playlist item's start and end times will be updated to whatever value the request body specifies. If the request body does not specify values, the existing start and end times will be removed and replaced with the default settings. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # A playlistItem resource refers to another resource, such as a video, that is included in a playlist.
-    "snippet": { # Basic details about an item included in a playlist, including title, description, thumbnails, playlist the item is part of and position of the item inside the playlist. # Basic details about the playlist item: title, description, thumbnails.
-      "playlistId": "A String", # The playlist the item is part of.
-      "description": "A String", # Description of the playlist item.
-      "title": "A String", # Title of the playlist item.
-      "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The ID of the resource referenced by the playlist item.
-        "kind": "A String", # The kind of the referred resource.
-        "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-        "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-        "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+{ # A playlistItem resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist.
+      # 
+      # YouTube uses playlists to identify special collections of videos for a channel, such as:
+      # - uploaded videos
+      # - favorite videos
+      # - positively rated (liked) videos
+      # - watch history
+      # - watch later  To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information.
+      # 
+      # You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.
+    "snippet": { # Basic details about an item included in a playlist, including title, description, thumbnails, playlist the item is part of and position of the item inside the playlist. # The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
+      "playlistId": "A String", # The ID that YouTube uses to uniquely identify the playlist that the playlist item is in.
+      "description": "A String", # The item's description.
+      "title": "A String", # The item's title.
+      "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information that can be used to uniquely identify the resource that is included in the playlist as the playlist item.
+        "kind": "A String", # The kind, or type, of the referred resource.
+        "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+        "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+        "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
       },
-      "channelId": "A String", # Channel publishing the playlist item.
-      "publishedAt": "A String", # Date and time the playlist item was published at.
-      "position": 42, # The position of the item within the playlist.
-      "thumbnails": { # Playlist item thumbnails.
-        "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-          "url": "A String", # The URL for the thumbnail.
+      "channelId": "A String", # The ID that YouTube uses to uniquely identify the user that added the item to the playlist.
+      "publishedAt": "A String", # The date and time that the item was added to the playlist. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+      "position": 42, # The order in which the item appears in the playlist. The value uses a zero-based index, so the first item has a position of 0, the second item has a position of 1, and so forth.
+      "thumbnails": { # A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+        "a_key": { # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+          "url": "A String", # The thumbnail image's URL.
+          "width": 42,
+          "height": 42,
         },
       },
     },
-    "contentDetails": { # Details about the content of a playlist item, such as the video or the video fragment start and end time included in the playlist. # Content details about the playlist item: start and end clipping time.
-      "note": "A String", # The user-generated note for this item.
-      "startAt": "A String", # The time video playback begins.
-      "endAt": "A String", # The time video playback ends.
-      "videoId": "A String", # ID of the video.
+    "contentDetails": { # Details about the content of a playlist item, such as the video or the video fragment start and end time included in the playlist. # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
+      "note": "A String", # A user-generated note for this item.
+      "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
+      "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
+      "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
     },
-    "kind": "youtube#playlistItem", # The type of this API resource.
-    "etag": "A String", # The eTag of the playlist item.
-    "id": "A String", # The unique id of the playlist item.
+    "kind": "youtube#playlistItem", # The type of the API resource. For playlist item resources, the value will be youtube#playlistItem.
+    "etag": "A String", # The ETag for the playlist item resource.
+    "id": "A String", # The ID that YouTube uses to uniquely identify the playlist item.
   }
 
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
 
 Returns:
   An object of the form:
 
-    { # A playlistItem resource refers to another resource, such as a video, that is included in a playlist.
-      "snippet": { # Basic details about an item included in a playlist, including title, description, thumbnails, playlist the item is part of and position of the item inside the playlist. # Basic details about the playlist item: title, description, thumbnails.
-        "playlistId": "A String", # The playlist the item is part of.
-        "description": "A String", # Description of the playlist item.
-        "title": "A String", # Title of the playlist item.
-        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The ID of the resource referenced by the playlist item.
-          "kind": "A String", # The kind of the referred resource.
-          "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-          "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-          "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+    { # A playlistItem resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist.
+        #
+        # YouTube uses playlists to identify special collections of videos for a channel, such as:
+        # - uploaded videos
+        # - favorite videos
+        # - positively rated (liked) videos
+        # - watch history
+        # - watch later  To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information.
+        #
+        # You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.
+      "snippet": { # Basic details about an item included in a playlist, including title, description, thumbnails, playlist the item is part of and position of the item inside the playlist. # The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
+        "playlistId": "A String", # The ID that YouTube uses to uniquely identify the playlist that the playlist item is in.
+        "description": "A String", # The item's description.
+        "title": "A String", # The item's title.
+        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information that can be used to uniquely identify the resource that is included in the playlist as the playlist item.
+          "kind": "A String", # The kind, or type, of the referred resource.
+          "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+          "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+          "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
         },
-        "channelId": "A String", # Channel publishing the playlist item.
-        "publishedAt": "A String", # Date and time the playlist item was published at.
-        "position": 42, # The position of the item within the playlist.
-        "thumbnails": { # Playlist item thumbnails.
-          "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-            "url": "A String", # The URL for the thumbnail.
+        "channelId": "A String", # The ID that YouTube uses to uniquely identify the user that added the item to the playlist.
+        "publishedAt": "A String", # The date and time that the item was added to the playlist. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+        "position": 42, # The order in which the item appears in the playlist. The value uses a zero-based index, so the first item has a position of 0, the second item has a position of 1, and so forth.
+        "thumbnails": { # A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+          "a_key": { # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+            "url": "A String", # The thumbnail image's URL.
+            "width": 42,
+            "height": 42,
           },
         },
       },
-      "contentDetails": { # Details about the content of a playlist item, such as the video or the video fragment start and end time included in the playlist. # Content details about the playlist item: start and end clipping time.
-        "note": "A String", # The user-generated note for this item.
-        "startAt": "A String", # The time video playback begins.
-        "endAt": "A String", # The time video playback ends.
-        "videoId": "A String", # ID of the video.
+      "contentDetails": { # Details about the content of a playlist item, such as the video or the video fragment start and end time included in the playlist. # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
+        "note": "A String", # A user-generated note for this item.
+        "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
+        "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
+        "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
       },
-      "kind": "youtube#playlistItem", # The type of this API resource.
-      "etag": "A String", # The eTag of the playlist item.
-      "id": "A String", # The unique id of the playlist item.
+      "kind": "youtube#playlistItem", # The type of the API resource. For playlist item resources, the value will be youtube#playlistItem.
+      "etag": "A String", # The ETag for the playlist item resource.
+      "id": "A String", # The ID that YouTube uses to uniquely identify the playlist item.
     }</pre>
 </div>
 
diff --git a/docs/dyn/youtube_v3.playlists.html b/docs/dyn/youtube_v3.playlists.html
index 4e973d2..243e3cb 100644
--- a/docs/dyn/youtube_v3.playlists.html
+++ b/docs/dyn/youtube_v3.playlists.html
@@ -72,133 +72,186 @@
 
 </style>
 
-<h1><a href="youtube_v3.html">YouTube API</a> . <a href="youtube_v3.playlists.html">playlists</a></h1>
+<h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.playlists.html">playlists</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#delete">delete(id, onBehalfOfContentOwner=None)</a></code></p>
-<p class="firstline">Deletes playlists by IDs.</p>
+  <code><a href="#delete">delete(id)</a></code></p>
+<p class="firstline">Deletes a playlist.</p>
 <p class="toc_element">
-  <code><a href="#insert">insert(part, body, onBehalfOfContentOwner=None)</a></code></p>
-<p class="firstline">Create a playlist.</p>
+  <code><a href="#insert">insert(part=None, body)</a></code></p>
+<p class="firstline">Creates a playlist.</p>
 <p class="toc_element">
-  <code><a href="#list">list(part, onBehalfOfContentOwner=None, pageToken=None, maxResults=None, mine=None, id=None)</a></code></p>
-<p class="firstline">Browse the YouTube playlist collection.</p>
+  <code><a href="#list">list(part=None, pageToken=None, channelId=None, mine=None, maxResults=None, id=None)</a></code></p>
+<p class="firstline">Returns a collection of playlists that match the API request parameters. For example, you can retrieve all playlists that the authenticated user owns, or you can retrieve one or more playlists by their unique IDs.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
-  <code><a href="#update">update(part, body, onBehalfOfContentOwner=None)</a></code></p>
-<p class="firstline">Update a playlist.</p>
+  <code><a href="#update">update(part=None, body)</a></code></p>
+<p class="firstline">Modifies a playlist. For example, you could change a playlist's title, description, or privacy status.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="delete">delete(id, onBehalfOfContentOwner=None)</code>
-  <pre>Deletes playlists by IDs.
+    <code class="details" id="delete">delete(id)</code>
+  <pre>Deletes a playlist.
 
 Args:
-  id: string, YouTube IDs of the playlists to be deleted. (required)
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
+  id: string, The id parameter specifies the YouTube playlist ID for the playlist that is being deleted. In a playlist resource, the id property specifies the playlist's ID. (required)
 </pre>
 </div>
 
 <div class="method">
-    <code class="details" id="insert">insert(part, body, onBehalfOfContentOwner=None)</code>
-  <pre>Create a playlist.
+    <code class="details" id="insert">insert(part=None, body)</code>
+  <pre>Creates a playlist.
 
 Args:
-  part: string, One or more parts to return on the current request. (required)
+  part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.
+
+The part names that you can include in the parameter value are snippet and status. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # A playlist resource represents a single YouTube playlist.
-    "snippet": { # Basic details about a playlist, including title, description and thumbnails. # Basic details about the playlist: title, description, thumbnails.
-      "title": "A String", # Title of the playlist.
-      "channelId": "A String", # Channel publishing the playlist.
-      "description": "A String", # Description of the playlist.
-      "publishedAt": "A String", # Date and time the playlist was published at.
-      "thumbnails": { # Playlist thumbnails.
-        "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-          "url": "A String", # The URL for the thumbnail.
+{ # A playlist resource represents a YouTube playlist. A playlist is a collection of videos that can be viewed sequentially and shared with other users. A playlist can contain up to 200 videos, and YouTube does not limit the number of playlists that each user creates. By default, playlists are publicly visible to other users, but playlists can be public or private.
+      # 
+      # YouTube also uses playlists to identify special collections of videos for a channel, such as:
+      # - uploaded videos
+      # - favorite videos
+      # - positively rated (liked) videos
+      # - watch history
+      # - watch later  To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel.
+      # 
+      # You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.
+    "status": { # The status details of a playlist describes whether the playlist is private. # The status object contains status information for the playlist.
+      "privacyStatus": "A String", # The playlist's privacy status.
+    },
+    "kind": "youtube#playlist", # The type of the API resource. For video resources, the value will be youtube#playlist.
+    "contentDetails": { # Details about the content of a playlist, such as the video count. # The contentDetails object contains information like video count.
+      "itemCount": 42, # The number of videos in the playlist.
+    },
+    "snippet": { # Basic details about a playlist, including title, description and thumbnails. # The snippet object contains basic details about the playlist, such as its title and description.
+      "title": "A String", # The playlist's title.
+      "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the playlist.
+      "description": "A String", # The playlist's description.
+      "publishedAt": "A String", # The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+      "thumbnails": { # A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+        "a_key": { # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+          "url": "A String", # The thumbnail image's URL.
+          "width": 42,
+          "height": 42,
         },
       },
     },
-    "status": { # The status details of a playlist describes whether the playlist is private. # Status of the playlist: only privacy_status for now.
-      "privacyStatus": "A String", # Privacy of the playlist.
+    "player": { # Player to be used for a playlist playback. # The player object contains information that you would use to play the playlist in an embedded player.
+      "embedHtml": "A String", # An <iframe> tag that embeds a player that will play the playlist.
     },
-    "kind": "youtube#playlist", # The type of this API resource.
-    "etag": "A String", # The eTag of the playlist.
-    "id": "A String", # The unique id of the playlist.
+    "etag": "A String", # The ETag for the playlist resource.
+    "id": "A String", # The ID that YouTube uses to uniquely identify the playlist.
   }
 
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
 
 Returns:
   An object of the form:
 
-    { # A playlist resource represents a single YouTube playlist.
-      "snippet": { # Basic details about a playlist, including title, description and thumbnails. # Basic details about the playlist: title, description, thumbnails.
-        "title": "A String", # Title of the playlist.
-        "channelId": "A String", # Channel publishing the playlist.
-        "description": "A String", # Description of the playlist.
-        "publishedAt": "A String", # Date and time the playlist was published at.
-        "thumbnails": { # Playlist thumbnails.
-          "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-            "url": "A String", # The URL for the thumbnail.
+    { # A playlist resource represents a YouTube playlist. A playlist is a collection of videos that can be viewed sequentially and shared with other users. A playlist can contain up to 200 videos, and YouTube does not limit the number of playlists that each user creates. By default, playlists are publicly visible to other users, but playlists can be public or private.
+        #
+        # YouTube also uses playlists to identify special collections of videos for a channel, such as:
+        # - uploaded videos
+        # - favorite videos
+        # - positively rated (liked) videos
+        # - watch history
+        # - watch later  To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel.
+        #
+        # You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.
+      "status": { # The status details of a playlist describes whether the playlist is private. # The status object contains status information for the playlist.
+        "privacyStatus": "A String", # The playlist's privacy status.
+      },
+      "kind": "youtube#playlist", # The type of the API resource. For video resources, the value will be youtube#playlist.
+      "contentDetails": { # Details about the content of a playlist, such as the video count. # The contentDetails object contains information like video count.
+        "itemCount": 42, # The number of videos in the playlist.
+      },
+      "snippet": { # Basic details about a playlist, including title, description and thumbnails. # The snippet object contains basic details about the playlist, such as its title and description.
+        "title": "A String", # The playlist's title.
+        "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the playlist.
+        "description": "A String", # The playlist's description.
+        "publishedAt": "A String", # The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+        "thumbnails": { # A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+          "a_key": { # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+            "url": "A String", # The thumbnail image's URL.
+            "width": 42,
+            "height": 42,
           },
         },
       },
-      "status": { # The status details of a playlist describes whether the playlist is private. # Status of the playlist: only privacy_status for now.
-        "privacyStatus": "A String", # Privacy of the playlist.
+      "player": { # Player to be used for a playlist playback. # The player object contains information that you would use to play the playlist in an embedded player.
+        "embedHtml": "A String", # An <iframe> tag that embeds a player that will play the playlist.
       },
-      "kind": "youtube#playlist", # The type of this API resource.
-      "etag": "A String", # The eTag of the playlist.
-      "id": "A String", # The unique id of the playlist.
+      "etag": "A String", # The ETag for the playlist resource.
+      "id": "A String", # The ID that YouTube uses to uniquely identify the playlist.
     }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(part, onBehalfOfContentOwner=None, pageToken=None, maxResults=None, mine=None, id=None)</code>
-  <pre>Browse the YouTube playlist collection.
+    <code class="details" id="list">list(part=None, pageToken=None, channelId=None, mine=None, maxResults=None, id=None)</code>
+  <pre>Returns a collection of playlists that match the API request parameters. For example, you can retrieve all playlists that the authenticated user owns, or you can retrieve one or more playlists by their unique IDs.
 
 Args:
-  part: string, Playlist parts to include in the returned response. Valid values are: id, snippet and status. (required)
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
-  pageToken: string, Token for the page selection.
-  maxResults: integer, Maximum number of results to return
-  mine: string, Flag indicating only return the playlists of the authenticated user.
-  id: string, Comma-separated YouTube IDs of the playlists to be returned.
+  part: string, The part parameter specifies a comma-separated list of one or more playlist resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, and status.
+
+If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a playlist resource, the snippet property contains properties like author, title, description, tags, and timeCreated. As such, if you set part=snippet, the API response will contain all of those properties. (required)
+  pageToken: string, USE_DESCRIPTION --- channels:list:pageToken
+  channelId: string, This value indicates that the API should only return the specified channel's playlists.
+  mine: boolean, Set this parameter's value to true to instruct the API to only return playlists owned by the authenticated user.
+  maxResults: integer, USE_DESCRIPTION --- channels:list:maxResults
+  id: string, The id parameter specifies a comma-separated list of the YouTube playlist ID(s) for the resource(s) that are being retrieved. In a playlist resource, the id property specifies the playlist's YouTube playlist ID.
 
 Returns:
   An object of the form:
 
     { # A paginated list of playlists returned as the response to a youtube.playlists.list call.
-    "nextPageToken": "A String", # Token to the next page.
-    "kind": "youtube#playlistListResponse", # The type of this API response.
-    "items": [ # List of playlists matching the request criteria.
-      { # A playlist resource represents a single YouTube playlist.
-          "snippet": { # Basic details about a playlist, including title, description and thumbnails. # Basic details about the playlist: title, description, thumbnails.
-            "title": "A String", # Title of the playlist.
-            "channelId": "A String", # Channel publishing the playlist.
-            "description": "A String", # Description of the playlist.
-            "publishedAt": "A String", # Date and time the playlist was published at.
-            "thumbnails": { # Playlist thumbnails.
-              "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-                "url": "A String", # The URL for the thumbnail.
+    "nextPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
+    "kind": "youtube#playlistListResponse", # The type of the API response. For this operation, the value will be youtube#playlistListResponse.
+    "items": [ # A list of playlists that match the request criteria.
+      { # A playlist resource represents a YouTube playlist. A playlist is a collection of videos that can be viewed sequentially and shared with other users. A playlist can contain up to 200 videos, and YouTube does not limit the number of playlists that each user creates. By default, playlists are publicly visible to other users, but playlists can be public or private.
+            #
+            # YouTube also uses playlists to identify special collections of videos for a channel, such as:
+            # - uploaded videos
+            # - favorite videos
+            # - positively rated (liked) videos
+            # - watch history
+            # - watch later  To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel.
+            #
+            # You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.
+          "status": { # The status details of a playlist describes whether the playlist is private. # The status object contains status information for the playlist.
+            "privacyStatus": "A String", # The playlist's privacy status.
+          },
+          "kind": "youtube#playlist", # The type of the API resource. For video resources, the value will be youtube#playlist.
+          "contentDetails": { # Details about the content of a playlist, such as the video count. # The contentDetails object contains information like video count.
+            "itemCount": 42, # The number of videos in the playlist.
+          },
+          "snippet": { # Basic details about a playlist, including title, description and thumbnails. # The snippet object contains basic details about the playlist, such as its title and description.
+            "title": "A String", # The playlist's title.
+            "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the playlist.
+            "description": "A String", # The playlist's description.
+            "publishedAt": "A String", # The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+            "thumbnails": { # A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+              "a_key": { # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+                "url": "A String", # The thumbnail image's URL.
+                "width": 42,
+                "height": 42,
               },
             },
           },
-          "status": { # The status details of a playlist describes whether the playlist is private. # Status of the playlist: only privacy_status for now.
-            "privacyStatus": "A String", # Privacy of the playlist.
+          "player": { # Player to be used for a playlist playback. # The player object contains information that you would use to play the playlist in an embedded player.
+            "embedHtml": "A String", # An <iframe> tag that embeds a player that will play the playlist.
           },
-          "kind": "youtube#playlist", # The type of this API resource.
-          "etag": "A String", # The eTag of the playlist.
-          "id": "A String", # The unique id of the playlist.
+          "etag": "A String", # The ETag for the playlist resource.
+          "id": "A String", # The ID that YouTube uses to uniquely identify the playlist.
         },
     ],
-    "etag": "A String", # The eTag of the response.
-    "prevPageToken": "A String", # Token to the previous page.
-    "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # Paging information for the list result.
-      "totalResults": 42, # The total number of results.
-      "resultsPerPage": 42, # The number of results to display for each page.
+    "etag": "A String", # The ETag of the response.
+    "prevPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
+    "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # The pageInfo object encapsulates paging information for the result set.
+      "totalResults": 42, # The total number of results in the result set.
+      "resultsPerPage": 42, # The number of results included in the API response.
     },
   }</pre>
 </div>
@@ -214,61 +267,98 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(part, body, onBehalfOfContentOwner=None)</code>
-  <pre>Update a playlist.
+    <code class="details" id="update">update(part=None, body)</code>
+  <pre>Modifies a playlist. For example, you could change a playlist's title, description, or privacy status.
 
 Args:
-  part: string, One or more parts to return on the current request. (required)
+  part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.
+
+The part names that you can include in the parameter value are snippet and status.
+
+Note that this method will override the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. For example, a playlist's privacy setting is contained in the status part. As such, if your request is updating a private playlist, and the request's part parameter value includes the status part, the playlist's privacy setting will be updated to whatever value the request body specifies. If the request body does not specify a value, the existing privacy setting will be removed and the playlist will revert to the default privacy setting. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # A playlist resource represents a single YouTube playlist.
-    "snippet": { # Basic details about a playlist, including title, description and thumbnails. # Basic details about the playlist: title, description, thumbnails.
-      "title": "A String", # Title of the playlist.
-      "channelId": "A String", # Channel publishing the playlist.
-      "description": "A String", # Description of the playlist.
-      "publishedAt": "A String", # Date and time the playlist was published at.
-      "thumbnails": { # Playlist thumbnails.
-        "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-          "url": "A String", # The URL for the thumbnail.
+{ # A playlist resource represents a YouTube playlist. A playlist is a collection of videos that can be viewed sequentially and shared with other users. A playlist can contain up to 200 videos, and YouTube does not limit the number of playlists that each user creates. By default, playlists are publicly visible to other users, but playlists can be public or private.
+      # 
+      # YouTube also uses playlists to identify special collections of videos for a channel, such as:
+      # - uploaded videos
+      # - favorite videos
+      # - positively rated (liked) videos
+      # - watch history
+      # - watch later  To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel.
+      # 
+      # You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.
+    "status": { # The status details of a playlist describes whether the playlist is private. # The status object contains status information for the playlist.
+      "privacyStatus": "A String", # The playlist's privacy status.
+    },
+    "kind": "youtube#playlist", # The type of the API resource. For video resources, the value will be youtube#playlist.
+    "contentDetails": { # Details about the content of a playlist, such as the video count. # The contentDetails object contains information like video count.
+      "itemCount": 42, # The number of videos in the playlist.
+    },
+    "snippet": { # Basic details about a playlist, including title, description and thumbnails. # The snippet object contains basic details about the playlist, such as its title and description.
+      "title": "A String", # The playlist's title.
+      "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the playlist.
+      "description": "A String", # The playlist's description.
+      "publishedAt": "A String", # The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+      "thumbnails": { # A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+        "a_key": { # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+          "url": "A String", # The thumbnail image's URL.
+          "width": 42,
+          "height": 42,
         },
       },
     },
-    "status": { # The status details of a playlist describes whether the playlist is private. # Status of the playlist: only privacy_status for now.
-      "privacyStatus": "A String", # Privacy of the playlist.
+    "player": { # Player to be used for a playlist playback. # The player object contains information that you would use to play the playlist in an embedded player.
+      "embedHtml": "A String", # An <iframe> tag that embeds a player that will play the playlist.
     },
-    "kind": "youtube#playlist", # The type of this API resource.
-    "etag": "A String", # The eTag of the playlist.
-    "id": "A String", # The unique id of the playlist.
+    "etag": "A String", # The ETag for the playlist resource.
+    "id": "A String", # The ID that YouTube uses to uniquely identify the playlist.
   }
 
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
 
 Returns:
   An object of the form:
 
-    { # A playlist resource represents a single YouTube playlist.
-      "snippet": { # Basic details about a playlist, including title, description and thumbnails. # Basic details about the playlist: title, description, thumbnails.
-        "title": "A String", # Title of the playlist.
-        "channelId": "A String", # Channel publishing the playlist.
-        "description": "A String", # Description of the playlist.
-        "publishedAt": "A String", # Date and time the playlist was published at.
-        "thumbnails": { # Playlist thumbnails.
-          "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-            "url": "A String", # The URL for the thumbnail.
+    { # A playlist resource represents a YouTube playlist. A playlist is a collection of videos that can be viewed sequentially and shared with other users. A playlist can contain up to 200 videos, and YouTube does not limit the number of playlists that each user creates. By default, playlists are publicly visible to other users, but playlists can be public or private.
+        #
+        # YouTube also uses playlists to identify special collections of videos for a channel, such as:
+        # - uploaded videos
+        # - favorite videos
+        # - positively rated (liked) videos
+        # - watch history
+        # - watch later  To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel.
+        #
+        # You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.
+      "status": { # The status details of a playlist describes whether the playlist is private. # The status object contains status information for the playlist.
+        "privacyStatus": "A String", # The playlist's privacy status.
+      },
+      "kind": "youtube#playlist", # The type of the API resource. For video resources, the value will be youtube#playlist.
+      "contentDetails": { # Details about the content of a playlist, such as the video count. # The contentDetails object contains information like video count.
+        "itemCount": 42, # The number of videos in the playlist.
+      },
+      "snippet": { # Basic details about a playlist, including title, description and thumbnails. # The snippet object contains basic details about the playlist, such as its title and description.
+        "title": "A String", # The playlist's title.
+        "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the playlist.
+        "description": "A String", # The playlist's description.
+        "publishedAt": "A String", # The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+        "thumbnails": { # A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+          "a_key": { # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+            "url": "A String", # The thumbnail image's URL.
+            "width": 42,
+            "height": 42,
           },
         },
       },
-      "status": { # The status details of a playlist describes whether the playlist is private. # Status of the playlist: only privacy_status for now.
-        "privacyStatus": "A String", # Privacy of the playlist.
+      "player": { # Player to be used for a playlist playback. # The player object contains information that you would use to play the playlist in an embedded player.
+        "embedHtml": "A String", # An <iframe> tag that embeds a player that will play the playlist.
       },
-      "kind": "youtube#playlist", # The type of this API resource.
-      "etag": "A String", # The eTag of the playlist.
-      "id": "A String", # The unique id of the playlist.
+      "etag": "A String", # The ETag for the playlist resource.
+      "id": "A String", # The ID that YouTube uses to uniquely identify the playlist.
     }</pre>
 </div>
 
diff --git a/docs/dyn/youtube_v3.search.html b/docs/dyn/youtube_v3.search.html
index a67ba8a..393977b 100644
--- a/docs/dyn/youtube_v3.search.html
+++ b/docs/dyn/youtube_v3.search.html
@@ -72,100 +72,111 @@
 
 </style>
 
-<h1><a href="youtube_v3.html">YouTube API</a> . <a href="youtube_v3.search.html">search</a></h1>
+<h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.search.html">search</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#list">list(part, videoCaption=None, onBehalfOfContentOwner=None, pageToken=None, type=None, topicId=None, videoDimension=None, videoLicense=None, maxResults=None, videoDuration=None, videoDefinition=None, relatedToVideo=None, q=None, published=None, order=None)</a></code></p>
-<p class="firstline">Universal search for youtube.</p>
+  <code><a href="#list">list(part=None, channelId=None, videoSyndicated=None, videoCaption=None, publishedAfter=None, regionCode=None, type=None, topicId=None, publishedBefore=None, videoDimension=None, videoLicense=None, maxResults=None, relatedToVideoId=None, videoDefinition=None, pageToken=None, videoDuration=None, q=None, videoEmbeddable=None, videoCategoryId=None, order=None)</a></code></p>
+<p class="firstline">Returns a collection of search results that match the query parameters specified in the API request. By default, a search result set identifies matching video, channel, and playlist resources, but you can also configure queries to only retrieve a specific type of resource.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="list">list(part, videoCaption=None, onBehalfOfContentOwner=None, pageToken=None, type=None, topicId=None, videoDimension=None, videoLicense=None, maxResults=None, videoDuration=None, videoDefinition=None, relatedToVideo=None, q=None, published=None, order=None)</code>
-  <pre>Universal search for youtube.
+    <code class="details" id="list">list(part=None, channelId=None, videoSyndicated=None, videoCaption=None, publishedAfter=None, regionCode=None, type=None, topicId=None, publishedBefore=None, videoDimension=None, videoLicense=None, maxResults=None, relatedToVideoId=None, videoDefinition=None, pageToken=None, videoDuration=None, q=None, videoEmbeddable=None, videoCategoryId=None, order=None)</code>
+  <pre>Returns a collection of search results that match the query parameters specified in the API request. By default, a search result set identifies matching video, channel, and playlist resources, but you can also configure queries to only retrieve a specific type of resource.
 
 Args:
-  part: string, Search result parts to include in the returned response. Valid values are: id and snippet. (required)
-  videoCaption: string, Add a filter on the the presence of captions on the videos.
+  part: string, The part parameter specifies a comma-separated list of one or more search resource properties that the API response will include. The part names that you can include in the parameter value are id and snippet.
+
+If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a search result, the snippet property contains other properties that identify the result's title, description, and so forth. If you set part=snippet, the API response will also contain all of those nested properties. (required)
+  channelId: string, The channelId parameter indicates that the API response should only contain resources created by the channel
+  videoSyndicated: string, The videoSyndicated parameter lets you to restrict a search to only videos that can be played outside youtube.com.
     Allowed values
-      any - No filter on the captions.
-      closedCaption - Videos with closed captions.
-      none - Videos without captions.
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
-  pageToken: string, Token for the page selection.
-  type: string, Type of resource to search.
-  topicId: string, Only search for resources with the specified topic
-  videoDimension: string, Add a filter for the number of dimensions in the videos.
+      any - Return all videos, syndicated or not.
+      true - Only retrieve syndicated videos.
+  videoCaption: string, The videoCaption parameter indicates whether the API should filter video search results based on whether they have captions.
     Allowed values
-      2d - Videos in two dimensions.
-      3d - Videos in three dimensions.
-      any - No filter on the dimension.
-  videoLicense: string, Add a filter on the licensing of the videos.
+      any - Do not filter results based on caption availability.
+      closedCaption - Only include videos that have captions.
+      none - Only include videos that do not have captions.
+  publishedAfter: string, The publishedAfter parameter indicates that the API response should only contain resources created after the specified time. The value is an RFC 3339 formatted date-time value (1970-01-01T00:00:00Z).
+  regionCode: string, The regionCode parameter instructs the API to return search results for the specified country. The parameter value is an ISO 3166-1 alpha-2 country code.
+  type: string, The type parameter restricts a search query to only retrieve a particular type of resource.
+  topicId: string, The topicId parameter indicates that the API response should only contain resources associated with the specified topic. The value identifies a Freebase topic ID.
+  publishedBefore: string, The publishedBefore parameter indicates that the API response should only contain resources created before the specified time. The value is an RFC 3339 formatted date-time value (1970-01-01T00:00:00Z).
+  videoDimension: string, The videoDimension parameter lets you restrict a search to only retrieve 2D or 3D videos.
     Allowed values
-      any - No filter on the license.
-      creativeCommon - Videos under the Creative Common license.
-      youtube - Videos under the YouTube license.
-  maxResults: integer, Maximum number of search results to return per page.
-  videoDuration: string, Add a filter on the duration of the videos.
+      2d - Restrict search results to exclude 3D videos.
+      3d - Restrict search results to only include 3D videos.
+      any - Include both 3D and non-3D videos in returned results. This is the default value.
+  videoLicense: string, The videoLicense parameter filters search results to only include videos with a particular license. YouTube lets video uploaders choose to attach either the Creative Commons license or the standard YouTube license to each of their videos.
     Allowed values
-      any - No filter on the duration.
-      long - Videos with a duration longer than 20 minutes.
-      medium - Videos with a duration between 4 and 20 minutes.
-      short - Videos with a duration under 4 minutes.
-  videoDefinition: string, Add a filter for the definition of the videos.
+      any - Return all videos, regardless of which license they have, that match the query parameters.
+      creativeCommon - Only return videos that have a Creative Commons license. Users can reuse videos with this license in other videos that they create. Learn more.
+      youtube - Only return videos that have the standard YouTube license.
+  maxResults: integer, USE_DESCRIPTION --- channels:list:maxResults
+  relatedToVideoId: string, The relatedToVideoId parameter retrieves a list of videos that are related to the video that the parameter value identifies. The parameter value must be set to a YouTube video ID and, if you are using this parameter, the type parameter must be set to video.
+  videoDefinition: string, The videoDefinition parameter lets you restrict a search to only include either high definition (HD) or standard definition (SD) videos. HD videos are available for playback in at least 720p, though higher resolutions, like 1080p, might also be available.
     Allowed values
-      any - No filter on the definition.
-      high - Videos in high definition.
-      standard - Videos in standard definition.
-  relatedToVideo: string, Search for resources related to this video. Need to be used with type set to 'video'
-  q: string, Query to search in Youtube.
-  published: string, Only search for resources uploaded at a specific pediod
+      any - Return all videos, regardless of their resolution.
+      high - Only retrieve HD videos.
+      standard - Only retrieve videos in standard definition.
+  pageToken: string, USE_DESCRIPTION --- channels:list:pageToken
+  videoDuration: string, The videoDuration parameter filters video search results based on their duration.
     Allowed values
-      any - No filter on the release date
-      thisWeek - Videos uploaded this month
-      today - Videos uploaded today
-  order: string, Sort order.
+      any - Do not filter video search results based on their duration. This is the default value.
+      long - Only include videos longer than 20 minutes.
+      medium - Only include videos that are between four and 20 minutes long (inclusive).
+      short - Only include videos that are less than four minutes long.
+  q: string, The q parameter specifies the query term to search for.
+  videoEmbeddable: string, The videoEmbeddable parameter lets you to restrict a search to only videos that can be embedded into a webpage.
     Allowed values
-      date - Sort according to the date.
-      rating - Sort according to the rating.
-      relevance - Sort according to the relevance.
-      view_count - Sort according to the view count.
+      any - Return all videos, embeddable or not.
+      true - Only retrieve embeddable videos.
+  videoCategoryId: string, The videoCategoryId parameter filters video search results based on their category.
+  order: string, The order parameter specifies the method that will be used to order resources in the API response.
+    Allowed values
+      date - Resources are sorted in reverse chronological order based on the date they were created.
+      rating - Resources are sorted from highest to lowest rating.
+      relevance - Resources are sorted based on their relevance to the search query. This is the default value for this parameter.
+      viewCount - Resources are sorted from highest to lowest number of views.
 
 Returns:
   An object of the form:
 
     { # A paginated list of search results returned as the response to a youtube.search.list call.
-    "nextPageToken": "A String", # Token to the next page.
-    "kind": "youtube#searchListResponse", # The type of this API response.
-    "items": [ # List of results matching the request criteria.
-      { # A search result contains information about a YouTube video, channel, or playlist that matches the search parameters specified in an API request.
-        "snippet": { # Basic details about a search result, including title, description and thumbnails of the item referenced by the search result. # Basic details about the search result: title, description, author.
-          "title": "A String", # Title of the found resource.
-          "channelId": "A String", # Channel publishing the found resource.
-          "description": "A String", # Description of the found resource.
-          "publishedAt": "A String", # Date and time the found resource was published at.
-          "thumbnails": { # Thumbnails for the found resource.
-            "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-              "url": "A String", # The URL for the thumbnail.
+    "nextPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
+    "kind": "youtube#searchListResponse", # The type of the API response. For this operation, the value will be youtube#searchListResponse.
+    "items": [ # A list of results that match the search criteria.
+      { # A search result contains information about a YouTube video, channel, or playlist that matches the search parameters specified in an API request. While a search result points to a uniquely identifiable resource, like a video, it does not have its own persistent data.
+        "snippet": { # Basic details about a search result, including title, description and thumbnails of the item referenced by the search result. # The snippet object contains basic details about a search result, such as its title or description. For example, if the search result is a video, then the title will be the video's title and the description will be the video's description.
+          "title": "A String", # The title to display for the search result.
+          "channelId": "A String", # The value that YouTube uses to uniquely identify the channel that published the resource that the search result identifies.
+          "description": "A String", # A description of the search result.
+          "publishedAt": "A String", # The creation date and time of the resource that the search result identifies. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+          "thumbnails": { # A map of thumbnail images associated with the search result. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+            "a_key": { # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+              "url": "A String", # The thumbnail image's URL.
+              "width": 42,
+              "height": 42,
             },
           },
         },
-        "kind": "youtube#searchResult", # The type of this API resource.
-        "etag": "A String", # The eTag of the search result.
-        "id": { # A resource id is a generic reference that points to another YouTube resource. # The id of the resource.
-          "kind": "A String", # The kind of the referred resource.
-          "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-          "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-          "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+        "kind": "youtube#searchResult", # The type of the API response. For this resource, the value will be youtube#searchResult.
+        "etag": "A String", # The ETag of the search result.
+        "id": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information that can be used to uniquely identify the resource that matches the search request.
+          "kind": "A String", # The kind, or type, of the referred resource.
+          "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+          "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+          "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
         },
       },
     ],
-    "etag": "A String", # The eTag of the response.
-    "prevPageToken": "A String", # Token to the previous page.
-    "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # Paging information for the search result.
-      "totalResults": 42, # The total number of results.
-      "resultsPerPage": 42, # The number of results to display for each page.
+    "etag": "A String", # The ETag for the response.
+    "prevPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
+    "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # The pageInfo object encapsulates paging information for the search result set.
+      "totalResults": 42, # The total number of results in the result set.
+      "resultsPerPage": 42, # The number of results included in the API response.
     },
   }</pre>
 </div>
@@ -181,7 +192,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/youtube_v3.subscriptions.html b/docs/dyn/youtube_v3.subscriptions.html
index 09b3547..7f5948e 100644
--- a/docs/dyn/youtube_v3.subscriptions.html
+++ b/docs/dyn/youtube_v3.subscriptions.html
@@ -72,158 +72,165 @@
 
 </style>
 
-<h1><a href="youtube_v3.html">YouTube API</a> . <a href="youtube_v3.subscriptions.html">subscriptions</a></h1>
+<h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.subscriptions.html">subscriptions</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#delete">delete(id, onBehalfOfContentOwner=None)</a></code></p>
-<p class="firstline">Deletes subscriptions by IDs.</p>
+  <code><a href="#delete">delete(id)</a></code></p>
+<p class="firstline">Deletes a subscription.</p>
 <p class="toc_element">
-  <code><a href="#insert">insert(part, body, onBehalfOfContentOwner=None)</a></code></p>
-<p class="firstline">Insert a subscription.</p>
+  <code><a href="#insert">insert(part=None, body)</a></code></p>
+<p class="firstline">Adds a subscription for the authenticated user's channel.</p>
 <p class="toc_element">
-  <code><a href="#list">list(part, onBehalfOfContentOwner=None, id=None, pageToken=None, channelId=None, mine=None, maxResults=None, forChannelId=None, order=None)</a></code></p>
-<p class="firstline">Browses the subscriptions collection.</p>
+  <code><a href="#list">list(part=None, pageToken=None, channelId=None, mine=None, maxResults=None, forChannelId=None, order=None, id=None)</a></code></p>
+<p class="firstline">Returns subscription resources that match the API request criteria.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="delete">delete(id, onBehalfOfContentOwner=None)</code>
-  <pre>Deletes subscriptions by IDs.
+    <code class="details" id="delete">delete(id)</code>
+  <pre>Deletes a subscription.
 
 Args:
-  id: string, YouTube IDs of the subscription to be deleted. (required)
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
+  id: string, The id parameter specifies the YouTube subscription ID for the resource that is being deleted. In a subscription resource, the id property specifies the YouTube subscription ID. (required)
 </pre>
 </div>
 
 <div class="method">
-    <code class="details" id="insert">insert(part, body, onBehalfOfContentOwner=None)</code>
-  <pre>Insert a subscription.
+    <code class="details" id="insert">insert(part=None, body)</code>
+  <pre>Adds a subscription for the authenticated user's channel.
 
 Args:
-  part: string, One or more parts to return on the current request. (required)
+  part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.
+
+The part names that you can include in the parameter value are snippet and contentDetails. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # A subscription resource contains information about a YouTube user subscription.
-    "snippet": { # Basic details about a subscription, including title, description and thumbnails of the subscribed item. # Basic details about the subscription
-      "description": "A String", # Description of the subscription.
-      "title": "A String", # Title of the subscription.
-      "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resource subscribed to.
-        "kind": "A String", # The kind of the referred resource.
-        "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-        "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-        "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+{ # A subscription resource contains information about a YouTube user subscription. A subscription notifies a user when new videos are added to a channel or when another user takes one of several actions on YouTube, such as uploading a video, rating a video, or commenting on a video.
+    "snippet": { # Basic details about a subscription, including title, description and thumbnails of the subscribed item. # The snippet object contains basic details about the subscription, including its title and the channel that the user subscribed to.
+      "description": "A String", # The subscription's details.
+      "title": "A String", # The subscription's title.
+      "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information about the channel that the user subscribed to.
+        "kind": "A String", # The kind, or type, of the referred resource.
+        "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+        "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+        "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
       },
-      "channelId": "A String", # Channel publishing the subscription.
-      "publishedAt": "A String", # Date and time the subscription was published at.
-      "thumbnails": { # Subscription thumbnails.
-        "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-          "url": "A String", # The URL for the thumbnail.
+      "channelId": "A String", # The ID that YouTube uses to uniquely identify the subscriber's channel.
+      "publishedAt": "A String", # The date and time that the subscription was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+      "thumbnails": { # A map of thumbnail images associated with the subscription. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+        "a_key": { # The thumbnail image's name.
+          "url": "A String", # The thumbnail image's URL.
+          "width": 42,
+          "height": 42,
         },
       },
     },
-    "contentDetails": { # Details about the content to witch a subscription refers. # Basic statistics about the subscription
-      "newItemCount": 42, # Number of new items in the subscription since its content was last read.
-      "totalItemCount": 42, # Approximate total number of items the subscription points to.
+    "contentDetails": { # Details about the content to witch a subscription refers. # The contentDetails object contains basic statistics about the subscription.
+      "newItemCount": 42, # The number of new items in the subscription since its content was last read.
+      "totalItemCount": 42, # The approximate number of items that the subscription points to.
     },
-    "kind": "youtube#subscription", # The type of this API resource.
-    "etag": "A String", # The eTag of the subscription.
-    "id": "A String", # The unique id of the subscription.
+    "kind": "youtube#subscription", # The type of the API resource. For subscription resources, the value will be youtube#subscription.
+    "etag": "A String", # The ETag of the subscription resource.
+    "id": "A String", # The ID that YouTube uses to uniquely identify the subscription.
   }
 
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
 
 Returns:
   An object of the form:
 
-    { # A subscription resource contains information about a YouTube user subscription.
-      "snippet": { # Basic details about a subscription, including title, description and thumbnails of the subscribed item. # Basic details about the subscription
-        "description": "A String", # Description of the subscription.
-        "title": "A String", # Title of the subscription.
-        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resource subscribed to.
-          "kind": "A String", # The kind of the referred resource.
-          "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-          "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-          "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+    { # A subscription resource contains information about a YouTube user subscription. A subscription notifies a user when new videos are added to a channel or when another user takes one of several actions on YouTube, such as uploading a video, rating a video, or commenting on a video.
+      "snippet": { # Basic details about a subscription, including title, description and thumbnails of the subscribed item. # The snippet object contains basic details about the subscription, including its title and the channel that the user subscribed to.
+        "description": "A String", # The subscription's details.
+        "title": "A String", # The subscription's title.
+        "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information about the channel that the user subscribed to.
+          "kind": "A String", # The kind, or type, of the referred resource.
+          "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+          "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+          "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
         },
-        "channelId": "A String", # Channel publishing the subscription.
-        "publishedAt": "A String", # Date and time the subscription was published at.
-        "thumbnails": { # Subscription thumbnails.
-          "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-            "url": "A String", # The URL for the thumbnail.
+        "channelId": "A String", # The ID that YouTube uses to uniquely identify the subscriber's channel.
+        "publishedAt": "A String", # The date and time that the subscription was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+        "thumbnails": { # A map of thumbnail images associated with the subscription. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+          "a_key": { # The thumbnail image's name.
+            "url": "A String", # The thumbnail image's URL.
+            "width": 42,
+            "height": 42,
           },
         },
       },
-      "contentDetails": { # Details about the content to witch a subscription refers. # Basic statistics about the subscription
-        "newItemCount": 42, # Number of new items in the subscription since its content was last read.
-        "totalItemCount": 42, # Approximate total number of items the subscription points to.
+      "contentDetails": { # Details about the content to witch a subscription refers. # The contentDetails object contains basic statistics about the subscription.
+        "newItemCount": 42, # The number of new items in the subscription since its content was last read.
+        "totalItemCount": 42, # The approximate number of items that the subscription points to.
       },
-      "kind": "youtube#subscription", # The type of this API resource.
-      "etag": "A String", # The eTag of the subscription.
-      "id": "A String", # The unique id of the subscription.
+      "kind": "youtube#subscription", # The type of the API resource. For subscription resources, the value will be youtube#subscription.
+      "etag": "A String", # The ETag of the subscription resource.
+      "id": "A String", # The ID that YouTube uses to uniquely identify the subscription.
     }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(part, onBehalfOfContentOwner=None, id=None, pageToken=None, channelId=None, mine=None, maxResults=None, forChannelId=None, order=None)</code>
-  <pre>Browses the subscriptions collection.
+    <code class="details" id="list">list(part=None, pageToken=None, channelId=None, mine=None, maxResults=None, forChannelId=None, order=None, id=None)</code>
+  <pre>Returns subscription resources that match the API request criteria.
 
 Args:
-  part: string, Subscription parts to include in the returned response. Valid values are: id, snippet and contentDetails. (required)
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
-  id: string, YouTube IDs of the subscriptions to be returned.
-  pageToken: string, Token for the page selection.
-  channelId: string, Only return subscriptions to given channelId.
-  mine: string, Flag indicating only return the subscriptions of the authenticated user.
-  maxResults: integer, Maximum number of search results to return per page.
-  forChannelId: string, Comma separated list of channel IDs to return subscriptions for.
-  order: string, Sort order.
+  part: string, The part parameter specifies a comma-separated list of one or more subscription resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, and contentDetails.
+
+If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a subscription resource, the snippet property contains other properties, such as a display title for the subscription. If you set part=snippet, the API response will also contain all of those nested properties. (required)
+  pageToken: string, USE_DESCRIPTION --- channels:list:pageToken
+  channelId: string, The channelId parameter specifies a YouTube channel ID. The API will only return that channel's subscriptions.
+  mine: boolean, Set this parameter's value to true to retrieve a feed of the authenticated user's subscriptions.
+  maxResults: integer, USE_DESCRIPTION --- channels:list:maxResults
+  forChannelId: string, The forChannelId parameter specifies a comma-separated list of channel IDs. The API response will then only contain subscriptions matching those channels.
+  order: string, The order parameter specifies the method that will be used to sort resources in the API response.
     Allowed values
-      alphabetical - Sort alphabetically
+      alphabetical - Sort alphabetically.
       relevance - Sort by relevance.
       unread - Sort by order of activity.
+  id: string, The id parameter specifies a comma-separated list of the YouTube subscription ID(s) for the resource(s) that are being retrieved. In a subscription resource, the id property specifies the YouTube subscription ID.
 
 Returns:
   An object of the form:
 
     { # A paginated list of subscriptions returned as the response to a youtube.subscriptions.list call.
-    "nextPageToken": "A String", # Token to the next page.
-    "kind": "youtube#subscriptionListResponse", # The type of this API response.
-    "items": [ # List of subscriptions matching the request criteria.
-      { # A subscription resource contains information about a YouTube user subscription.
-          "snippet": { # Basic details about a subscription, including title, description and thumbnails of the subscribed item. # Basic details about the subscription
-            "description": "A String", # Description of the subscription.
-            "title": "A String", # Title of the subscription.
-            "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resource subscribed to.
-              "kind": "A String", # The kind of the referred resource.
-              "channelId": "A String", # ID of the referred channel. Present only when type is "CHANNEL".
-              "playlistId": "A String", # ID of the referred playlist. Present only when type is "PLAYLIST".
-              "videoId": "A String", # ID of the referred video. Present only when type is "VIDEO".
+    "nextPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
+    "kind": "youtube#subscriptionListResponse", # The type of the API response. For this operation, the value will be youtube#subscriptionListResponse.
+    "items": [ # A list of subscriptions that match the request criteria.
+      { # A subscription resource contains information about a YouTube user subscription. A subscription notifies a user when new videos are added to a channel or when another user takes one of several actions on YouTube, such as uploading a video, rating a video, or commenting on a video.
+          "snippet": { # Basic details about a subscription, including title, description and thumbnails of the subscribed item. # The snippet object contains basic details about the subscription, including its title and the channel that the user subscribed to.
+            "description": "A String", # The subscription's details.
+            "title": "A String", # The subscription's title.
+            "resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information about the channel that the user subscribed to.
+              "kind": "A String", # The kind, or type, of the referred resource.
+              "channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
+              "playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
+              "videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
             },
-            "channelId": "A String", # Channel publishing the subscription.
-            "publishedAt": "A String", # Date and time the subscription was published at.
-            "thumbnails": { # Subscription thumbnails.
-              "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-                "url": "A String", # The URL for the thumbnail.
+            "channelId": "A String", # The ID that YouTube uses to uniquely identify the subscriber's channel.
+            "publishedAt": "A String", # The date and time that the subscription was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+            "thumbnails": { # A map of thumbnail images associated with the subscription. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+              "a_key": { # The thumbnail image's name.
+                "url": "A String", # The thumbnail image's URL.
+                "width": 42,
+                "height": 42,
               },
             },
           },
-          "contentDetails": { # Details about the content to witch a subscription refers. # Basic statistics about the subscription
-            "newItemCount": 42, # Number of new items in the subscription since its content was last read.
-            "totalItemCount": 42, # Approximate total number of items the subscription points to.
+          "contentDetails": { # Details about the content to witch a subscription refers. # The contentDetails object contains basic statistics about the subscription.
+            "newItemCount": 42, # The number of new items in the subscription since its content was last read.
+            "totalItemCount": 42, # The approximate number of items that the subscription points to.
           },
-          "kind": "youtube#subscription", # The type of this API resource.
-          "etag": "A String", # The eTag of the subscription.
-          "id": "A String", # The unique id of the subscription.
+          "kind": "youtube#subscription", # The type of the API resource. For subscription resources, the value will be youtube#subscription.
+          "etag": "A String", # The ETag of the subscription resource.
+          "id": "A String", # The ID that YouTube uses to uniquely identify the subscription.
         },
     ],
-    "etag": "A String", # The eTag of the response.
-    "prevPageToken": "A String", # Token to the previous page.
-    "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # Paging information for the list result.
-      "totalResults": 42, # The total number of results.
-      "resultsPerPage": 42, # The number of results to display for each page.
+    "etag": "A String", # The ETag of the response.
+    "prevPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
+    "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # The pageInfo object encapsulates paging information for the result set.
+      "totalResults": 42, # The total number of results in the result set.
+      "resultsPerPage": 42, # The number of results included in the API response.
     },
   }</pre>
 </div>
@@ -239,7 +246,7 @@
 Returns:
   A request object that you can call 'execute()' on to request the next
   page. Returns None if there are no more items in the collection.
-      </pre>
+    </pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/youtube_v3.videoCategories.html b/docs/dyn/youtube_v3.videoCategories.html
index 72d66aa..4c84e33 100644
--- a/docs/dyn/youtube_v3.videoCategories.html
+++ b/docs/dyn/youtube_v3.videoCategories.html
@@ -72,40 +72,39 @@
 
 </style>
 
-<h1><a href="youtube_v3.html">YouTube API</a> . <a href="youtube_v3.videoCategories.html">videoCategories</a></h1>
+<h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.videoCategories.html">videoCategories</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#list">list(part, onBehalfOfContentOwner=None, regionCode=None, hl=None, id=None)</a></code></p>
-<p class="firstline">Browse list of video categories.</p>
+  <code><a href="#list">list(part, regionCode=None, hl=None, id=None)</a></code></p>
+<p class="firstline">Returns a list of categories that can be associated with YouTube videos.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="list">list(part, onBehalfOfContentOwner=None, regionCode=None, hl=None, id=None)</code>
-  <pre>Browse list of video categories.
+    <code class="details" id="list">list(part, regionCode=None, hl=None, id=None)</code>
+  <pre>Returns a list of categories that can be associated with YouTube videos.
 
 Args:
-  part: string, Video category parts to include in the returned response. Valid values are: id and snippet. (required)
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
-  regionCode: string, Return all the categories in this region.
-  hl: string, Language used for the title of the categories.
-  id: string, IDs of the categories to be returned.
+  part: string, The part parameter specifies the videoCategory resource parts that the API response will include. Supported values are id and snippet. (required)
+  regionCode: string, The regionCode parameter instructs the API to return the list of video categories available in the specified country. The parameter value is an ISO 3166-1 alpha-2 country code.
+  hl: string, The hl parameter specifies the language that should be used for text values in the API response.
+  id: string, The id parameter specifies a comma-separated list of video category IDs for the resources that you are retrieving.
 
 Returns:
   An object of the form:
 
     { # A paginated list of video categories returned as the response to a youtube.videoCategory.list call.
-    "items": [ # List of video categories matching the request criteria.
+    "items": [ # A list of video categories that can be associated with YouTube videos. In this map, the video category ID is the map key, and its value is the corresponding videoCategory resource.
       { # A videoCategory resource identifies a category that has been or could be associated with uploaded videos.
-        "snippet": { # Basic details about a video category, such as its localized title. # Basic details about the video category.
-          "channelId": "UCBR8-60-B28hp2BmDPdntcQ", # Channel publishing the video category.
-          "title": "A String", # Title of the video category.
+        "snippet": { # Basic details about a video category, such as its localized title. # The snippet object contains basic details about the video category, including its title.
+          "channelId": "UCBR8-60-B28hp2BmDPdntcQ", # The YouTube channel that created the video category.
+          "title": "A String", # The video category's title.
         },
-        "kind": "youtube#videoCategory", # The type of this API resource.
-        "etag": "A String", # The eTag of the video.
-        "id": "A String", # The unique id of the video category.
+        "kind": "youtube#videoCategory", # The type of the API resource. For video category resources, the value will be youtube#videoCategory.
+        "etag": "A String", # The ETag of the videoCategory resource.
+        "id": "A String", # The ID that YouTube uses to uniquely identify the video category.
       },
     ],
-    "kind": "youtube#videoCategoryListResponse", # The type of this API response.
-    "etag": "A String", # The eTag of the response.
+    "kind": "youtube#videoCategoryListResponse", # The type of the API response. For this operation, the value will be youtube#videoCategoryListResponse.
+    "etag": "A String", # The ETag of the response.
   }</pre>
 </div>
 
diff --git a/docs/dyn/youtube_v3.videos.html b/docs/dyn/youtube_v3.videos.html
index 7a99f57..4d1a5d8 100644
--- a/docs/dyn/youtube_v3.videos.html
+++ b/docs/dyn/youtube_v3.videos.html
@@ -72,343 +72,404 @@
 
 </style>
 
-<h1><a href="youtube_v3.html">YouTube API</a> . <a href="youtube_v3.videos.html">videos</a></h1>
+<h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.videos.html">videos</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#delete">delete(id, onBehalfOfContentOwner=None)</a></code></p>
-<p class="firstline">Delete a YouTube video.</p>
+  <code><a href="#delete">delete(id)</a></code></p>
+<p class="firstline">Deletes a YouTube video.</p>
 <p class="toc_element">
-  <code><a href="#insert">insert(part, body=None, media_body=None, onBehalfOfContentOwner=None)</a></code></p>
-<p class="firstline">Upload a video to YouTube.</p>
+  <code><a href="#insert">insert(part=None, body=None, media_body=None)</a></code></p>
+<p class="firstline">Uploads a video to YouTube and optionally sets the video's metadata.</p>
 <p class="toc_element">
-  <code><a href="#list">list(id, part, onBehalfOfContentOwner=None)</a></code></p>
-<p class="firstline">Browse the YouTube video collection.</p>
+  <code><a href="#list">list(id, part=None)</a></code></p>
+<p class="firstline">Returns a list of videos that match the API request parameters.</p>
 <p class="toc_element">
-  <code><a href="#update">update(part, body, onBehalfOfContentOwner=None)</a></code></p>
-<p class="firstline">Update a video.</p>
+  <code><a href="#update">update(part=None, body)</a></code></p>
+<p class="firstline">Updates a video's metadata.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="delete">delete(id, onBehalfOfContentOwner=None)</code>
-  <pre>Delete a YouTube video.
+    <code class="details" id="delete">delete(id)</code>
+  <pre>Deletes a YouTube video.
 
 Args:
-  id: string, YouTube ID of the video to be deleted. (required)
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
+  id: string, The id parameter specifies the YouTube video ID for the resource that is being deleted. In a video resource, the id property specifies the video's ID. (required)
 </pre>
 </div>
 
 <div class="method">
-    <code class="details" id="insert">insert(part, body=None, media_body=None, onBehalfOfContentOwner=None)</code>
-  <pre>Upload a video to YouTube.
+    <code class="details" id="insert">insert(part=None, body=None, media_body=None)</code>
+  <pre>Uploads a video to YouTube and optionally sets the video's metadata.
 
 Args:
-  part: string, One or more parts to return on the current request. (required)
+  part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.
+
+The part names that you can include in the parameter value are snippet, contentDetails, player, statistics, status, and topicDetails. However, not all of those parts contain properties that can be set when setting or updating a video's metadata. For example, the statistics object encapsulates statistics that YouTube calculates for a video and does not contain values that you can set or modify. If the parameter value specifies a part that does not contain mutable values, that part will still be included in the API response. (required)
   body: object, The request body.
     The object takes the form of:
 
-{ # A video resource represents a single YouTube video.
-    "status": { # The status of a video details the video's upload status and privacy status. # Status of the video upload, privacy status.
-      "privacyStatus": "A String", # Privacy of the video.
-      "uploadStatus": "A String", # Status of the video upload.
-      "rejectionReason": "A String", # Present only if the uploadStatus indicates a rejected upload.
-      "failureReason": "A String", # Present only if the uploadStatus indicates a failed upload.
+{ # A video resource represents a YouTube video.
+    "status": { # The status of a video details the video's upload status and privacy status. # The status object contains information about the video's uploading, processing, and privacy statuses.
+      "privacyStatus": "A String", # The video's privacy status.
+      "uploadStatus": "A String", # The status of the uploaded video.
+      "rejectionReason": "A String", # This value explains why YouTube rejected an uploaded video. This property is only present if the uploadStatus property indicates that the upload was rejected.
+      "failureReason": "A String", # This value explains why a video failed to upload. This property is only present if the uploadStatus property indicates that the upload failed.
     },
-    "topicDetails": { # Freebase topic information related to the video. # Topics related to the video
-      "topicIds": [ # List of topic ids for this video *
+    "topicDetails": { # Freebase topic information related to the video. # The topicDetails object encapsulates information about Freebase topics associated with the video.
+      "topicIds": [ # A list of Freebase topic IDs associated with the video. You can retrieve information about each topic using the Freebase Topic API.
         "A String",
       ],
     },
-    "kind": "youtube#video", # The type of this API resource.
-    "statistics": { # Statistics about the video, such as the number of times the video was viewed or liked. # Statistics about the video: number of views, ratings.
-      "commentCount": "A String", # Number of comments for this video.
-      "viewCount": "A String", # Number of times the video was viewed.
-      "favoriteCount": "A String", # Number of times the video was added to a user's favorites list.
-      "dislikeCount": "A String", # Number of times the video was disliked.
-      "likeCount": "A String", # Number of times the video was liked.
+    "kind": "youtube#video", # The type of the API resource. For video resources, the value will be youtube#video.
+    "statistics": { # Statistics about the video, such as the number of times the video was viewed or liked. # The statistics object contains statistics about the video.
+      "commentCount": "A String", # The number of comments for the video.
+      "viewCount": "A String", # The number of times the video has been viewed.
+      "favoriteCount": "A String", # The number of users who currently have the video marked as a favorite video.
+      "dislikeCount": "A String", # The number of users who have indicated that they disliked the video by giving it a negative rating.
+      "likeCount": "A String", # The number of users who have indicated that they liked the video by giving it a positive rating.
     },
-    "contentDetails": { # Details about the media content of a YouTube video. # Information about the video content, media file.
-      "duration": "A String", # Duration of the video.
-      "regionRestriction": { # Region restriction of the video.
-        "blocked": [ # List of blocked region codes.
+    "contentDetails": { # The contentDetails object contains information about the video content, including the length of the video and its aspect ratio.
+      "duration": "A String", # The length of the video. The tag value is an ISO 8601 duration in the format PT#M#S, in which the letters PT indicate that the value specifies a period of time, and the letters M and S refer to length in minutes and seconds, respectively. The # characters preceding the M and S letters are both integers that specify the number of minutes (or seconds) of the video. For example, a value of PT15M51S indicates that the video is 15 minutes and 51 seconds long.
+      "regionRestriction": { # Region restriction of the video. # The regionRestriction object contains information about the countries where a video is (or is not) viewable. The object will contain either the contentDetails.regionRestriction.allowed property or the contentDetails.regionRestriction.blocked property.
+        "blocked": [ # A list of region codes that identify countries where the video is blocked. If this property is present and a country is not listed in its value, then the video is viewable in that country. If this property is present and contains an empty list, the video is viewable in all countries.
           "A String",
         ],
-        "allowed": [ # List of allowed region codes.
+        "allowed": [ # A list of region codes that identify countries where the video is viewable. If this property is present and a country is not listed in its value, then the video is blocked from appearing in that country. If this property is present and contains an empty list, the video is blocked in all countries.
           "A String",
         ],
       },
     },
-    "snippet": { # Basic details about a video, including title, description, uploader, thumbnails and category. # Basic details about the video: title, description, thumbnails.
-      "thumbnails": { # Video thumbnails.
-        "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-          "url": "A String", # The URL for the thumbnail.
+    "snippet": { # Basic details about a video, including title, description, uploader, thumbnails and category. # The snippet object contains basic details about the video, such as its title, description, and category.
+      "thumbnails": { # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+        "a_key": { # Name of the thumbnail, to easily identify it. The set of names is dependent on the resource the thumbnail is for.
+          "url": "A String", # The thumbnail image's URL.
+          "width": 42,
+          "height": 42,
         },
       },
-      "tags": [ # Textual tags associated with the video.
+      "tags": [ # A list of keyword tags associated with the video. Tags may contain spaces. This field is only visible to the video's uploader.
         "A String",
       ],
-      "channelId": "A String", # Channel publishing the video.
-      "publishedAt": "A String", # Date and time the video was published at.
-      "title": "A String", # Title of the video.
-      "categoryId": "A String", # Video category the video belongs to.
-      "description": "A String", # Description of the video.
+      "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that the video was uploaded to.
+      "publishedAt": "A String", # The date and time that the video was uploaded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+      "title": "A String", # The video's title.
+      "categoryId": "A String", # The YouTube video category associated with the video.
+      "description": "A String", # The video's description.
     },
-    "player": { # Player to be used for a video playback. # Information used to play the video.
-      "embedHtml": "A String", # Iframe embed for the video.
+    "player": { # Player to be used for a video playback. # The player object contains information that you would use to play the video in an embedded player.
+      "embedHtml": "A String", # An <iframe> tag that embeds a player that will play the video.
     },
-    "etag": "A String", # The eTag of the video.
-    "id": "A String", # The unique id of the video.
+    "etag": "A String", # The ETag of the video resource.
+    "recordingDetails": { # Recording information associated with the video. # The recordingDetails object encapsulates information about the location, date and address where the video was recorded.
+      "recordingDate": "A String", # The date and time when the video was recorded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+      "locationDescription": "A String", # The text description of the location where the video was recorded.
+      "location": { # A geoPoint holds geo location information associated with a YouTube resource. # The geolocation information associated with the video.
+        "latitude": 3.14, # Latitude in degrees.
+        "elevation": 3.14, # Altitude above the Earth, in meters.
+        "longitude": 3.14, # Longitude in degrees.
+      },
+    },
+    "id": "A String", # The ID that YouTube uses to uniquely identify the video.
   }
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
 
 Returns:
   An object of the form:
 
-    { # A video resource represents a single YouTube video.
-      "status": { # The status of a video details the video's upload status and privacy status. # Status of the video upload, privacy status.
-        "privacyStatus": "A String", # Privacy of the video.
-        "uploadStatus": "A String", # Status of the video upload.
-        "rejectionReason": "A String", # Present only if the uploadStatus indicates a rejected upload.
-        "failureReason": "A String", # Present only if the uploadStatus indicates a failed upload.
+    { # A video resource represents a YouTube video.
+      "status": { # The status of a video details the video's upload status and privacy status. # The status object contains information about the video's uploading, processing, and privacy statuses.
+        "privacyStatus": "A String", # The video's privacy status.
+        "uploadStatus": "A String", # The status of the uploaded video.
+        "rejectionReason": "A String", # This value explains why YouTube rejected an uploaded video. This property is only present if the uploadStatus property indicates that the upload was rejected.
+        "failureReason": "A String", # This value explains why a video failed to upload. This property is only present if the uploadStatus property indicates that the upload failed.
       },
-      "topicDetails": { # Freebase topic information related to the video. # Topics related to the video
-        "topicIds": [ # List of topic ids for this video *
+      "topicDetails": { # Freebase topic information related to the video. # The topicDetails object encapsulates information about Freebase topics associated with the video.
+        "topicIds": [ # A list of Freebase topic IDs associated with the video. You can retrieve information about each topic using the Freebase Topic API.
           "A String",
         ],
       },
-      "kind": "youtube#video", # The type of this API resource.
-      "statistics": { # Statistics about the video, such as the number of times the video was viewed or liked. # Statistics about the video: number of views, ratings.
-        "commentCount": "A String", # Number of comments for this video.
-        "viewCount": "A String", # Number of times the video was viewed.
-        "favoriteCount": "A String", # Number of times the video was added to a user's favorites list.
-        "dislikeCount": "A String", # Number of times the video was disliked.
-        "likeCount": "A String", # Number of times the video was liked.
+      "kind": "youtube#video", # The type of the API resource. For video resources, the value will be youtube#video.
+      "statistics": { # Statistics about the video, such as the number of times the video was viewed or liked. # The statistics object contains statistics about the video.
+        "commentCount": "A String", # The number of comments for the video.
+        "viewCount": "A String", # The number of times the video has been viewed.
+        "favoriteCount": "A String", # The number of users who currently have the video marked as a favorite video.
+        "dislikeCount": "A String", # The number of users who have indicated that they disliked the video by giving it a negative rating.
+        "likeCount": "A String", # The number of users who have indicated that they liked the video by giving it a positive rating.
       },
-      "contentDetails": { # Details about the media content of a YouTube video. # Information about the video content, media file.
-        "duration": "A String", # Duration of the video.
-        "regionRestriction": { # Region restriction of the video.
-          "blocked": [ # List of blocked region codes.
+      "contentDetails": { # The contentDetails object contains information about the video content, including the length of the video and its aspect ratio.
+        "duration": "A String", # The length of the video. The tag value is an ISO 8601 duration in the format PT#M#S, in which the letters PT indicate that the value specifies a period of time, and the letters M and S refer to length in minutes and seconds, respectively. The # characters preceding the M and S letters are both integers that specify the number of minutes (or seconds) of the video. For example, a value of PT15M51S indicates that the video is 15 minutes and 51 seconds long.
+        "regionRestriction": { # Region restriction of the video. # The regionRestriction object contains information about the countries where a video is (or is not) viewable. The object will contain either the contentDetails.regionRestriction.allowed property or the contentDetails.regionRestriction.blocked property.
+          "blocked": [ # A list of region codes that identify countries where the video is blocked. If this property is present and a country is not listed in its value, then the video is viewable in that country. If this property is present and contains an empty list, the video is viewable in all countries.
             "A String",
           ],
-          "allowed": [ # List of allowed region codes.
+          "allowed": [ # A list of region codes that identify countries where the video is viewable. If this property is present and a country is not listed in its value, then the video is blocked from appearing in that country. If this property is present and contains an empty list, the video is blocked in all countries.
             "A String",
           ],
         },
       },
-      "snippet": { # Basic details about a video, including title, description, uploader, thumbnails and category. # Basic details about the video: title, description, thumbnails.
-        "thumbnails": { # Video thumbnails.
-          "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-            "url": "A String", # The URL for the thumbnail.
+      "snippet": { # Basic details about a video, including title, description, uploader, thumbnails and category. # The snippet object contains basic details about the video, such as its title, description, and category.
+        "thumbnails": { # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+          "a_key": { # Name of the thumbnail, to easily identify it. The set of names is dependent on the resource the thumbnail is for.
+            "url": "A String", # The thumbnail image's URL.
+            "width": 42,
+            "height": 42,
           },
         },
-        "tags": [ # Textual tags associated with the video.
+        "tags": [ # A list of keyword tags associated with the video. Tags may contain spaces. This field is only visible to the video's uploader.
           "A String",
         ],
-        "channelId": "A String", # Channel publishing the video.
-        "publishedAt": "A String", # Date and time the video was published at.
-        "title": "A String", # Title of the video.
-        "categoryId": "A String", # Video category the video belongs to.
-        "description": "A String", # Description of the video.
+        "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that the video was uploaded to.
+        "publishedAt": "A String", # The date and time that the video was uploaded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+        "title": "A String", # The video's title.
+        "categoryId": "A String", # The YouTube video category associated with the video.
+        "description": "A String", # The video's description.
       },
-      "player": { # Player to be used for a video playback. # Information used to play the video.
-        "embedHtml": "A String", # Iframe embed for the video.
+      "player": { # Player to be used for a video playback. # The player object contains information that you would use to play the video in an embedded player.
+        "embedHtml": "A String", # An <iframe> tag that embeds a player that will play the video.
       },
-      "etag": "A String", # The eTag of the video.
-      "id": "A String", # The unique id of the video.
+      "etag": "A String", # The ETag of the video resource.
+      "recordingDetails": { # Recording information associated with the video. # The recordingDetails object encapsulates information about the location, date and address where the video was recorded.
+        "recordingDate": "A String", # The date and time when the video was recorded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+        "locationDescription": "A String", # The text description of the location where the video was recorded.
+        "location": { # A geoPoint holds geo location information associated with a YouTube resource. # The geolocation information associated with the video.
+          "latitude": 3.14, # Latitude in degrees.
+          "elevation": 3.14, # Altitude above the Earth, in meters.
+          "longitude": 3.14, # Longitude in degrees.
+        },
+      },
+      "id": "A String", # The ID that YouTube uses to uniquely identify the video.
     }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(id, part, onBehalfOfContentOwner=None)</code>
-  <pre>Browse the YouTube video collection.
+    <code class="details" id="list">list(id, part=None)</code>
+  <pre>Returns a list of videos that match the API request parameters.
 
 Args:
-  id: string, YouTube IDs of the videos to be returned. (required)
-  part: string, Video parts to include in the returned response. Valid values are: id, snippet, contentDetails, player, statistics, status and topicDetails. (required)
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
+  id: string, The id parameter specifies a comma-separated list of the YouTube video ID(s) for the resource(s) that are being retrieved. In a video resource, the id property specifies the video's ID. (required)
+  part: string, The part parameter specifies a comma-separated list of one or more video resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, player, statistics, status, and topicDetails.
+
+If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a video resource, the snippet property contains the channelId, title, description, tags, and categoryId properties. As such, if you set part=snippet, the API response will contain all of those properties. (required)
 
 Returns:
   An object of the form:
 
     { # A paginated list of videos returned as the response to a youtube.videos.list call.
-    "items": [ # List of videos matching the request criteria.
-      { # A video resource represents a single YouTube video.
-          "status": { # The status of a video details the video's upload status and privacy status. # Status of the video upload, privacy status.
-            "privacyStatus": "A String", # Privacy of the video.
-            "uploadStatus": "A String", # Status of the video upload.
-            "rejectionReason": "A String", # Present only if the uploadStatus indicates a rejected upload.
-            "failureReason": "A String", # Present only if the uploadStatus indicates a failed upload.
+    "items": [ # A list of videos that match the request criteria.
+      { # A video resource represents a YouTube video.
+          "status": { # The status of a video details the video's upload status and privacy status. # The status object contains information about the video's uploading, processing, and privacy statuses.
+            "privacyStatus": "A String", # The video's privacy status.
+            "uploadStatus": "A String", # The status of the uploaded video.
+            "rejectionReason": "A String", # This value explains why YouTube rejected an uploaded video. This property is only present if the uploadStatus property indicates that the upload was rejected.
+            "failureReason": "A String", # This value explains why a video failed to upload. This property is only present if the uploadStatus property indicates that the upload failed.
           },
-          "topicDetails": { # Freebase topic information related to the video. # Topics related to the video
-            "topicIds": [ # List of topic ids for this video *
+          "topicDetails": { # Freebase topic information related to the video. # The topicDetails object encapsulates information about Freebase topics associated with the video.
+            "topicIds": [ # A list of Freebase topic IDs associated with the video. You can retrieve information about each topic using the Freebase Topic API.
               "A String",
             ],
           },
-          "kind": "youtube#video", # The type of this API resource.
-          "statistics": { # Statistics about the video, such as the number of times the video was viewed or liked. # Statistics about the video: number of views, ratings.
-            "commentCount": "A String", # Number of comments for this video.
-            "viewCount": "A String", # Number of times the video was viewed.
-            "favoriteCount": "A String", # Number of times the video was added to a user's favorites list.
-            "dislikeCount": "A String", # Number of times the video was disliked.
-            "likeCount": "A String", # Number of times the video was liked.
+          "kind": "youtube#video", # The type of the API resource. For video resources, the value will be youtube#video.
+          "statistics": { # Statistics about the video, such as the number of times the video was viewed or liked. # The statistics object contains statistics about the video.
+            "commentCount": "A String", # The number of comments for the video.
+            "viewCount": "A String", # The number of times the video has been viewed.
+            "favoriteCount": "A String", # The number of users who currently have the video marked as a favorite video.
+            "dislikeCount": "A String", # The number of users who have indicated that they disliked the video by giving it a negative rating.
+            "likeCount": "A String", # The number of users who have indicated that they liked the video by giving it a positive rating.
           },
-          "contentDetails": { # Details about the media content of a YouTube video. # Information about the video content, media file.
-            "duration": "A String", # Duration of the video.
-            "regionRestriction": { # Region restriction of the video.
-              "blocked": [ # List of blocked region codes.
+          "contentDetails": { # The contentDetails object contains information about the video content, including the length of the video and its aspect ratio.
+            "duration": "A String", # The length of the video. The tag value is an ISO 8601 duration in the format PT#M#S, in which the letters PT indicate that the value specifies a period of time, and the letters M and S refer to length in minutes and seconds, respectively. The # characters preceding the M and S letters are both integers that specify the number of minutes (or seconds) of the video. For example, a value of PT15M51S indicates that the video is 15 minutes and 51 seconds long.
+            "regionRestriction": { # Region restriction of the video. # The regionRestriction object contains information about the countries where a video is (or is not) viewable. The object will contain either the contentDetails.regionRestriction.allowed property or the contentDetails.regionRestriction.blocked property.
+              "blocked": [ # A list of region codes that identify countries where the video is blocked. If this property is present and a country is not listed in its value, then the video is viewable in that country. If this property is present and contains an empty list, the video is viewable in all countries.
                 "A String",
               ],
-              "allowed": [ # List of allowed region codes.
+              "allowed": [ # A list of region codes that identify countries where the video is viewable. If this property is present and a country is not listed in its value, then the video is blocked from appearing in that country. If this property is present and contains an empty list, the video is blocked in all countries.
                 "A String",
               ],
             },
           },
-          "snippet": { # Basic details about a video, including title, description, uploader, thumbnails and category. # Basic details about the video: title, description, thumbnails.
-            "thumbnails": { # Video thumbnails.
-              "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-                "url": "A String", # The URL for the thumbnail.
+          "snippet": { # Basic details about a video, including title, description, uploader, thumbnails and category. # The snippet object contains basic details about the video, such as its title, description, and category.
+            "thumbnails": { # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+              "a_key": { # Name of the thumbnail, to easily identify it. The set of names is dependent on the resource the thumbnail is for.
+                "url": "A String", # The thumbnail image's URL.
+                "width": 42,
+                "height": 42,
               },
             },
-            "tags": [ # Textual tags associated with the video.
+            "tags": [ # A list of keyword tags associated with the video. Tags may contain spaces. This field is only visible to the video's uploader.
               "A String",
             ],
-            "channelId": "A String", # Channel publishing the video.
-            "publishedAt": "A String", # Date and time the video was published at.
-            "title": "A String", # Title of the video.
-            "categoryId": "A String", # Video category the video belongs to.
-            "description": "A String", # Description of the video.
+            "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that the video was uploaded to.
+            "publishedAt": "A String", # The date and time that the video was uploaded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+            "title": "A String", # The video's title.
+            "categoryId": "A String", # The YouTube video category associated with the video.
+            "description": "A String", # The video's description.
           },
-          "player": { # Player to be used for a video playback. # Information used to play the video.
-            "embedHtml": "A String", # Iframe embed for the video.
+          "player": { # Player to be used for a video playback. # The player object contains information that you would use to play the video in an embedded player.
+            "embedHtml": "A String", # An <iframe> tag that embeds a player that will play the video.
           },
-          "etag": "A String", # The eTag of the video.
-          "id": "A String", # The unique id of the video.
+          "etag": "A String", # The ETag of the video resource.
+          "recordingDetails": { # Recording information associated with the video. # The recordingDetails object encapsulates information about the location, date and address where the video was recorded.
+            "recordingDate": "A String", # The date and time when the video was recorded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+            "locationDescription": "A String", # The text description of the location where the video was recorded.
+            "location": { # A geoPoint holds geo location information associated with a YouTube resource. # The geolocation information associated with the video.
+              "latitude": 3.14, # Latitude in degrees.
+              "elevation": 3.14, # Altitude above the Earth, in meters.
+              "longitude": 3.14, # Longitude in degrees.
+            },
+          },
+          "id": "A String", # The ID that YouTube uses to uniquely identify the video.
         },
     ],
-    "kind": "youtube#videoListResponse", # The type of this API response.
-    "etag": "A String", # The eTag of the response.
+    "kind": "youtube#videoListResponse", # The type of the API response. For this operation, the value will be youtube#videoListResponse.
+    "etag": "A String", # The ETag of the response.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(part, body, onBehalfOfContentOwner=None)</code>
-  <pre>Update a video.
+    <code class="details" id="update">update(part=None, body)</code>
+  <pre>Updates a video's metadata.
 
 Args:
-  part: string, One or more parts to return on the current request. (required)
+  part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.
+
+The part names that you can include in the parameter value are snippet, contentDetails, player, statistics, status, and topicDetails.
+
+Note that this method will override the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. For example, a video's privacy setting is contained in the status part. As such, if your request is updating a private video, and the request's part parameter value includes the status part, the video's privacy setting will be updated to whatever value the request body specifies. If the request body does not specify a value, the existing privacy setting will be removed and the video will revert to the default privacy setting.
+
+In addition, not all of those parts contain properties that can be set when setting or updating a video's metadata. For example, the statistics object encapsulates statistics that YouTube calculates for a video and does not contain values that you can set or modify. If the parameter value specifies a part that does not contain mutable values, that part will still be included in the API response. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # A video resource represents a single YouTube video.
-    "status": { # The status of a video details the video's upload status and privacy status. # Status of the video upload, privacy status.
-      "privacyStatus": "A String", # Privacy of the video.
-      "uploadStatus": "A String", # Status of the video upload.
-      "rejectionReason": "A String", # Present only if the uploadStatus indicates a rejected upload.
-      "failureReason": "A String", # Present only if the uploadStatus indicates a failed upload.
+{ # A video resource represents a YouTube video.
+    "status": { # The status of a video details the video's upload status and privacy status. # The status object contains information about the video's uploading, processing, and privacy statuses.
+      "privacyStatus": "A String", # The video's privacy status.
+      "uploadStatus": "A String", # The status of the uploaded video.
+      "rejectionReason": "A String", # This value explains why YouTube rejected an uploaded video. This property is only present if the uploadStatus property indicates that the upload was rejected.
+      "failureReason": "A String", # This value explains why a video failed to upload. This property is only present if the uploadStatus property indicates that the upload failed.
     },
-    "topicDetails": { # Freebase topic information related to the video. # Topics related to the video
-      "topicIds": [ # List of topic ids for this video *
+    "topicDetails": { # Freebase topic information related to the video. # The topicDetails object encapsulates information about Freebase topics associated with the video.
+      "topicIds": [ # A list of Freebase topic IDs associated with the video. You can retrieve information about each topic using the Freebase Topic API.
         "A String",
       ],
     },
-    "kind": "youtube#video", # The type of this API resource.
-    "statistics": { # Statistics about the video, such as the number of times the video was viewed or liked. # Statistics about the video: number of views, ratings.
-      "commentCount": "A String", # Number of comments for this video.
-      "viewCount": "A String", # Number of times the video was viewed.
-      "favoriteCount": "A String", # Number of times the video was added to a user's favorites list.
-      "dislikeCount": "A String", # Number of times the video was disliked.
-      "likeCount": "A String", # Number of times the video was liked.
+    "kind": "youtube#video", # The type of the API resource. For video resources, the value will be youtube#video.
+    "statistics": { # Statistics about the video, such as the number of times the video was viewed or liked. # The statistics object contains statistics about the video.
+      "commentCount": "A String", # The number of comments for the video.
+      "viewCount": "A String", # The number of times the video has been viewed.
+      "favoriteCount": "A String", # The number of users who currently have the video marked as a favorite video.
+      "dislikeCount": "A String", # The number of users who have indicated that they disliked the video by giving it a negative rating.
+      "likeCount": "A String", # The number of users who have indicated that they liked the video by giving it a positive rating.
     },
-    "contentDetails": { # Details about the media content of a YouTube video. # Information about the video content, media file.
-      "duration": "A String", # Duration of the video.
-      "regionRestriction": { # Region restriction of the video.
-        "blocked": [ # List of blocked region codes.
+    "contentDetails": { # The contentDetails object contains information about the video content, including the length of the video and its aspect ratio.
+      "duration": "A String", # The length of the video. The tag value is an ISO 8601 duration in the format PT#M#S, in which the letters PT indicate that the value specifies a period of time, and the letters M and S refer to length in minutes and seconds, respectively. The # characters preceding the M and S letters are both integers that specify the number of minutes (or seconds) of the video. For example, a value of PT15M51S indicates that the video is 15 minutes and 51 seconds long.
+      "regionRestriction": { # Region restriction of the video. # The regionRestriction object contains information about the countries where a video is (or is not) viewable. The object will contain either the contentDetails.regionRestriction.allowed property or the contentDetails.regionRestriction.blocked property.
+        "blocked": [ # A list of region codes that identify countries where the video is blocked. If this property is present and a country is not listed in its value, then the video is viewable in that country. If this property is present and contains an empty list, the video is viewable in all countries.
           "A String",
         ],
-        "allowed": [ # List of allowed region codes.
+        "allowed": [ # A list of region codes that identify countries where the video is viewable. If this property is present and a country is not listed in its value, then the video is blocked from appearing in that country. If this property is present and contains an empty list, the video is blocked in all countries.
           "A String",
         ],
       },
     },
-    "snippet": { # Basic details about a video, including title, description, uploader, thumbnails and category. # Basic details about the video: title, description, thumbnails.
-      "thumbnails": { # Video thumbnails.
-        "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-          "url": "A String", # The URL for the thumbnail.
+    "snippet": { # Basic details about a video, including title, description, uploader, thumbnails and category. # The snippet object contains basic details about the video, such as its title, description, and category.
+      "thumbnails": { # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+        "a_key": { # Name of the thumbnail, to easily identify it. The set of names is dependent on the resource the thumbnail is for.
+          "url": "A String", # The thumbnail image's URL.
+          "width": 42,
+          "height": 42,
         },
       },
-      "tags": [ # Textual tags associated with the video.
+      "tags": [ # A list of keyword tags associated with the video. Tags may contain spaces. This field is only visible to the video's uploader.
         "A String",
       ],
-      "channelId": "A String", # Channel publishing the video.
-      "publishedAt": "A String", # Date and time the video was published at.
-      "title": "A String", # Title of the video.
-      "categoryId": "A String", # Video category the video belongs to.
-      "description": "A String", # Description of the video.
+      "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that the video was uploaded to.
+      "publishedAt": "A String", # The date and time that the video was uploaded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+      "title": "A String", # The video's title.
+      "categoryId": "A String", # The YouTube video category associated with the video.
+      "description": "A String", # The video's description.
     },
-    "player": { # Player to be used for a video playback. # Information used to play the video.
-      "embedHtml": "A String", # Iframe embed for the video.
+    "player": { # Player to be used for a video playback. # The player object contains information that you would use to play the video in an embedded player.
+      "embedHtml": "A String", # An <iframe> tag that embeds a player that will play the video.
     },
-    "etag": "A String", # The eTag of the video.
-    "id": "A String", # The unique id of the video.
+    "etag": "A String", # The ETag of the video resource.
+    "recordingDetails": { # Recording information associated with the video. # The recordingDetails object encapsulates information about the location, date and address where the video was recorded.
+      "recordingDate": "A String", # The date and time when the video was recorded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+      "locationDescription": "A String", # The text description of the location where the video was recorded.
+      "location": { # A geoPoint holds geo location information associated with a YouTube resource. # The geolocation information associated with the video.
+        "latitude": 3.14, # Latitude in degrees.
+        "elevation": 3.14, # Altitude above the Earth, in meters.
+        "longitude": 3.14, # Longitude in degrees.
+      },
+    },
+    "id": "A String", # The ID that YouTube uses to uniquely identify the video.
   }
 
-  onBehalfOfContentOwner: string, The authenticated user acts on behalf of this content owner.
 
 Returns:
   An object of the form:
 
-    { # A video resource represents a single YouTube video.
-      "status": { # The status of a video details the video's upload status and privacy status. # Status of the video upload, privacy status.
-        "privacyStatus": "A String", # Privacy of the video.
-        "uploadStatus": "A String", # Status of the video upload.
-        "rejectionReason": "A String", # Present only if the uploadStatus indicates a rejected upload.
-        "failureReason": "A String", # Present only if the uploadStatus indicates a failed upload.
+    { # A video resource represents a YouTube video.
+      "status": { # The status of a video details the video's upload status and privacy status. # The status object contains information about the video's uploading, processing, and privacy statuses.
+        "privacyStatus": "A String", # The video's privacy status.
+        "uploadStatus": "A String", # The status of the uploaded video.
+        "rejectionReason": "A String", # This value explains why YouTube rejected an uploaded video. This property is only present if the uploadStatus property indicates that the upload was rejected.
+        "failureReason": "A String", # This value explains why a video failed to upload. This property is only present if the uploadStatus property indicates that the upload failed.
       },
-      "topicDetails": { # Freebase topic information related to the video. # Topics related to the video
-        "topicIds": [ # List of topic ids for this video *
+      "topicDetails": { # Freebase topic information related to the video. # The topicDetails object encapsulates information about Freebase topics associated with the video.
+        "topicIds": [ # A list of Freebase topic IDs associated with the video. You can retrieve information about each topic using the Freebase Topic API.
           "A String",
         ],
       },
-      "kind": "youtube#video", # The type of this API resource.
-      "statistics": { # Statistics about the video, such as the number of times the video was viewed or liked. # Statistics about the video: number of views, ratings.
-        "commentCount": "A String", # Number of comments for this video.
-        "viewCount": "A String", # Number of times the video was viewed.
-        "favoriteCount": "A String", # Number of times the video was added to a user's favorites list.
-        "dislikeCount": "A String", # Number of times the video was disliked.
-        "likeCount": "A String", # Number of times the video was liked.
+      "kind": "youtube#video", # The type of the API resource. For video resources, the value will be youtube#video.
+      "statistics": { # Statistics about the video, such as the number of times the video was viewed or liked. # The statistics object contains statistics about the video.
+        "commentCount": "A String", # The number of comments for the video.
+        "viewCount": "A String", # The number of times the video has been viewed.
+        "favoriteCount": "A String", # The number of users who currently have the video marked as a favorite video.
+        "dislikeCount": "A String", # The number of users who have indicated that they disliked the video by giving it a negative rating.
+        "likeCount": "A String", # The number of users who have indicated that they liked the video by giving it a positive rating.
       },
-      "contentDetails": { # Details about the media content of a YouTube video. # Information about the video content, media file.
-        "duration": "A String", # Duration of the video.
-        "regionRestriction": { # Region restriction of the video.
-          "blocked": [ # List of blocked region codes.
+      "contentDetails": { # The contentDetails object contains information about the video content, including the length of the video and its aspect ratio.
+        "duration": "A String", # The length of the video. The tag value is an ISO 8601 duration in the format PT#M#S, in which the letters PT indicate that the value specifies a period of time, and the letters M and S refer to length in minutes and seconds, respectively. The # characters preceding the M and S letters are both integers that specify the number of minutes (or seconds) of the video. For example, a value of PT15M51S indicates that the video is 15 minutes and 51 seconds long.
+        "regionRestriction": { # Region restriction of the video. # The regionRestriction object contains information about the countries where a video is (or is not) viewable. The object will contain either the contentDetails.regionRestriction.allowed property or the contentDetails.regionRestriction.blocked property.
+          "blocked": [ # A list of region codes that identify countries where the video is blocked. If this property is present and a country is not listed in its value, then the video is viewable in that country. If this property is present and contains an empty list, the video is viewable in all countries.
             "A String",
           ],
-          "allowed": [ # List of allowed region codes.
+          "allowed": [ # A list of region codes that identify countries where the video is viewable. If this property is present and a country is not listed in its value, then the video is blocked from appearing in that country. If this property is present and contains an empty list, the video is blocked in all countries.
             "A String",
           ],
         },
       },
-      "snippet": { # Basic details about a video, including title, description, uploader, thumbnails and category. # Basic details about the video: title, description, thumbnails.
-        "thumbnails": { # Video thumbnails.
-          "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
-            "url": "A String", # The URL for the thumbnail.
+      "snippet": { # Basic details about a video, including title, description, uploader, thumbnails and category. # The snippet object contains basic details about the video, such as its title, description, and category.
+        "thumbnails": { # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+          "a_key": { # Name of the thumbnail, to easily identify it. The set of names is dependent on the resource the thumbnail is for.
+            "url": "A String", # The thumbnail image's URL.
+            "width": 42,
+            "height": 42,
           },
         },
-        "tags": [ # Textual tags associated with the video.
+        "tags": [ # A list of keyword tags associated with the video. Tags may contain spaces. This field is only visible to the video's uploader.
           "A String",
         ],
-        "channelId": "A String", # Channel publishing the video.
-        "publishedAt": "A String", # Date and time the video was published at.
-        "title": "A String", # Title of the video.
-        "categoryId": "A String", # Video category the video belongs to.
-        "description": "A String", # Description of the video.
+        "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that the video was uploaded to.
+        "publishedAt": "A String", # The date and time that the video was uploaded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+        "title": "A String", # The video's title.
+        "categoryId": "A String", # The YouTube video category associated with the video.
+        "description": "A String", # The video's description.
       },
-      "player": { # Player to be used for a video playback. # Information used to play the video.
-        "embedHtml": "A String", # Iframe embed for the video.
+      "player": { # Player to be used for a video playback. # The player object contains information that you would use to play the video in an embedded player.
+        "embedHtml": "A String", # An <iframe> tag that embeds a player that will play the video.
       },
-      "etag": "A String", # The eTag of the video.
-      "id": "A String", # The unique id of the video.
+      "etag": "A String", # The ETag of the video resource.
+      "recordingDetails": { # Recording information associated with the video. # The recordingDetails object encapsulates information about the location, date and address where the video was recorded.
+        "recordingDate": "A String", # The date and time when the video was recorded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+        "locationDescription": "A String", # The text description of the location where the video was recorded.
+        "location": { # A geoPoint holds geo location information associated with a YouTube resource. # The geolocation information associated with the video.
+          "latitude": 3.14, # Latitude in degrees.
+          "elevation": 3.14, # Altitude above the Earth, in meters.
+          "longitude": 3.14, # Longitude in degrees.
+        },
+      },
+      "id": "A String", # The ID that YouTube uses to uniquely identify the video.
     }</pre>
 </div>
 
diff --git a/docs/epy/api-objects.txt b/docs/epy/api-objects.txt
index 7185073..8b3e0a1 100644
--- a/docs/epy/api-objects.txt
+++ b/docs/epy/api-objects.txt
@@ -1,15 +1,16 @@
 apiclient	apiclient-module.html
 apiclient.discovery	apiclient.discovery-module.html
-apiclient.discovery._createResource	apiclient.discovery-module.html#_createResource
+apiclient.discovery._cast	apiclient.discovery-module.html#_cast
 apiclient.discovery.MULTIPLIERS	apiclient.discovery-module.html#MULTIPLIERS
 apiclient.discovery.fix_method_name	apiclient.discovery-module.html#fix_method_name
 apiclient.discovery.build	apiclient.discovery-module.html#build
 apiclient.discovery.key2param	apiclient.discovery-module.html#key2param
 apiclient.discovery.VARNAME	apiclient.discovery-module.html#VARNAME
+apiclient.discovery.createNextMethod	apiclient.discovery-module.html#createNextMethod
 apiclient.discovery.logger	apiclient.discovery-module.html#logger
 apiclient.discovery._media_size_to_long	apiclient.discovery-module.html#_media_size_to_long
 apiclient.discovery._add_query_parameter	apiclient.discovery-module.html#_add_query_parameter
-apiclient.discovery._cast	apiclient.discovery-module.html#_cast
+apiclient.discovery.createMethod	apiclient.discovery-module.html#createMethod
 apiclient.discovery.DEFAULT_METHOD_DOC	apiclient.discovery-module.html#DEFAULT_METHOD_DOC
 apiclient.discovery.RESERVED_WORDS	apiclient.discovery-module.html#RESERVED_WORDS
 apiclient.discovery.build_from_document	apiclient.discovery-module.html#build_from_document
@@ -37,6 +38,15 @@
 apiclient.model._abstract	apiclient.model-module.html#_abstract
 apiclient.model.FLAGS	apiclient.model-module.html#FLAGS
 apiclient.model.makepatch	apiclient.model-module.html#makepatch
+apiclient.push	apiclient.push-module.html
+apiclient.push.EVENT_TYPE	apiclient.push-module.html#EVENT_TYPE
+apiclient.push.TOPIC_URI	apiclient.push-module.html#TOPIC_URI
+apiclient.push.new_token	apiclient.push-module.html#new_token
+apiclient.push.SUBSCRIBE	apiclient.push-module.html#SUBSCRIBE
+apiclient.push.TOPIC_ID	apiclient.push-module.html#TOPIC_ID
+apiclient.push.UNSUBSCRIBE	apiclient.push-module.html#UNSUBSCRIBE
+apiclient.push.SUBSCRIPTION_ID	apiclient.push-module.html#SUBSCRIPTION_ID
+apiclient.push.CLIENT_TOKEN	apiclient.push-module.html#CLIENT_TOKEN
 apiclient.schema	apiclient.schema-module.html
 oauth2client	oauth2client-module.html
 oauth2client.anyjson	oauth2client.anyjson-module.html
@@ -44,14 +54,15 @@
 oauth2client.appengine._safe_html	oauth2client.appengine-module.html#_safe_html
 oauth2client.appengine._build_state_value	oauth2client.appengine-module.html#_build_state_value
 oauth2client.appengine.XSRF_MEMCACHE_ID	oauth2client.appengine-module.html#XSRF_MEMCACHE_ID
-oauth2client.appengine._parse_state_value	oauth2client.appengine-module.html#_parse_state_value
 oauth2client.appengine.OAUTH2CLIENT_NAMESPACE	oauth2client.appengine-module.html#OAUTH2CLIENT_NAMESPACE
 oauth2client.appengine.logger	oauth2client.appengine-module.html#logger
 oauth2client.appengine._generate_new_xsrf_secret_key	oauth2client.appengine-module.html#_generate_new_xsrf_secret_key
 oauth2client.appengine.xsrf_secret_key	oauth2client.appengine-module.html#xsrf_secret_key
 oauth2client.appengine.oauth2decorator_from_clientsecrets	oauth2client.appengine-module.html#oauth2decorator_from_clientsecrets
+oauth2client.appengine._parse_state_value	oauth2client.appengine-module.html#_parse_state_value
 oauth2client.client	oauth2client.client-module.html
 oauth2client.client._extract_id_token	oauth2client.client-module.html#_extract_id_token
+oauth2client.client.HAS_CRYPTO	oauth2client.client-module.html#HAS_CRYPTO
 oauth2client.client._cached_http	oauth2client.client-module.html#_cached_http
 oauth2client.client.ID_TOKEN_VERIFICATON_CERTS	oauth2client.client-module.html#ID_TOKEN_VERIFICATON_CERTS
 oauth2client.client.credentials_from_clientsecrets_and_code	oauth2client.client-module.html#credentials_from_clientsecrets_and_code
@@ -59,12 +70,13 @@
 oauth2client.client.EXPIRY_FORMAT	oauth2client.client-module.html#EXPIRY_FORMAT
 oauth2client.client.logger	oauth2client.client-module.html#logger
 oauth2client.client._abstract	oauth2client.client-module.html#_abstract
+oauth2client.client.clean_headers	oauth2client.client-module.html#clean_headers
 oauth2client.client.OOB_CALLBACK_URN	oauth2client.client-module.html#OOB_CALLBACK_URN
 oauth2client.client._parse_exchange_token_response	oauth2client.client-module.html#_parse_exchange_token_response
-oauth2client.client.HAS_OPENSSL	oauth2client.client-module.html#HAS_OPENSSL
+oauth2client.client.credentials_from_code	oauth2client.client-module.html#credentials_from_code
 oauth2client.client._urlsafe_b64decode	oauth2client.client-module.html#_urlsafe_b64decode
 oauth2client.client.verify_id_token	oauth2client.client-module.html#verify_id_token
-oauth2client.client.credentials_from_code	oauth2client.client-module.html#credentials_from_code
+oauth2client.client.REFRESH_STATUS_CODES	oauth2client.client-module.html#REFRESH_STATUS_CODES
 oauth2client.clientsecrets	oauth2client.clientsecrets-module.html
 oauth2client.clientsecrets.load	oauth2client.clientsecrets-module.html#load
 oauth2client.clientsecrets.TYPE_INSTALLED	oauth2client.clientsecrets-module.html#TYPE_INSTALLED
@@ -76,14 +88,20 @@
 oauth2client.clientsecrets.loads	oauth2client.clientsecrets-module.html#loads
 oauth2client.crypt	oauth2client.crypt-module.html
 oauth2client.crypt.AUTH_TOKEN_LIFETIME_SECS	oauth2client.crypt-module.html#AUTH_TOKEN_LIFETIME_SECS
+oauth2client.crypt.PyCryptoVerifier	oauth2client.crypt-module.html#PyCryptoVerifier
+oauth2client.crypt.Verifier	oauth2client.crypt-module.html#Verifier
+oauth2client.crypt.PyCryptoSigner	oauth2client.crypt-module.html#PyCryptoSigner
+oauth2client.crypt.OpenSSLSigner	oauth2client.crypt-module.html#OpenSSLSigner
 oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS	oauth2client.crypt-module.html#MAX_TOKEN_LIFETIME_SECS
-oauth2client.crypt.CLOCK_SKEW_SECS	oauth2client.crypt-module.html#CLOCK_SKEW_SECS
-oauth2client.crypt._urlsafe_b64encode	oauth2client.crypt-module.html#_urlsafe_b64encode
-oauth2client.crypt._json_encode	oauth2client.crypt-module.html#_json_encode
-oauth2client.crypt.make_signed_jwt	oauth2client.crypt-module.html#make_signed_jwt
 oauth2client.crypt.logger	oauth2client.crypt-module.html#logger
+oauth2client.crypt.OpenSSLVerifier	oauth2client.crypt-module.html#OpenSSLVerifier
+oauth2client.crypt._urlsafe_b64encode	oauth2client.crypt-module.html#_urlsafe_b64encode
+oauth2client.crypt.Signer	oauth2client.crypt-module.html#Signer
 oauth2client.crypt._urlsafe_b64decode	oauth2client.crypt-module.html#_urlsafe_b64decode
 oauth2client.crypt.verify_signed_jwt_with_certs	oauth2client.crypt-module.html#verify_signed_jwt_with_certs
+oauth2client.crypt.CLOCK_SKEW_SECS	oauth2client.crypt-module.html#CLOCK_SKEW_SECS
+oauth2client.crypt._json_encode	oauth2client.crypt-module.html#_json_encode
+oauth2client.crypt.make_signed_jwt	oauth2client.crypt-module.html#make_signed_jwt
 oauth2client.django_orm	oauth2client.django_orm-module.html
 oauth2client.file	oauth2client.file-module.html
 oauth2client.gce	oauth2client.gce-module.html
@@ -99,11 +117,15 @@
 oauth2client.multistore_file.get_credential_storage	oauth2client.multistore_file-module.html#get_credential_storage
 oauth2client.multistore_file._multistores_lock	oauth2client.multistore_file-module.html#_multistores_lock
 oauth2client.multistore_file._multistores	oauth2client.multistore_file-module.html#_multistores
+oauth2client.multistore_file.get_credential_storage_custom_key	oauth2client.multistore_file-module.html#get_credential_storage_custom_key
+oauth2client.multistore_file.get_credential_storage_custom_string_key	oauth2client.multistore_file-module.html#get_credential_storage_custom_string_key
 oauth2client.multistore_file.logger	oauth2client.multistore_file-module.html#logger
 oauth2client.tools	oauth2client.tools-module.html
 oauth2client.tools.run	oauth2client.tools-module.html#run
 oauth2client.tools.FLAGS	oauth2client.tools-module.html#FLAGS
 oauth2client.util	oauth2client.util-module.html
+oauth2client.util.scopes_to_string	oauth2client.util-module.html#scopes_to_string
+oauth2client.util.dict_to_tuple_key	oauth2client.util-module.html#dict_to_tuple_key
 oauth2client.util.positional	oauth2client.util-module.html#positional
 oauth2client.util.FLAGS	oauth2client.util-module.html#FLAGS
 oauth2client.util.logger	oauth2client.util-module.html#logger
@@ -112,6 +134,15 @@
 oauth2client.xsrfutil.DEFAULT_TIMEOUT_SECS	oauth2client.xsrfutil-module.html#DEFAULT_TIMEOUT_SECS
 oauth2client.xsrfutil.DELIMITER	oauth2client.xsrfutil-module.html#DELIMITER
 oauth2client.xsrfutil.generate_token	oauth2client.xsrfutil-module.html#generate_token
+apiclient.discovery.Resource	apiclient.discovery.Resource-class.html
+apiclient.discovery.Resource._add_nested_resources	apiclient.discovery.Resource-class.html#_add_nested_resources
+apiclient.discovery.Resource._set_dynamic_attr	apiclient.discovery.Resource-class.html#_set_dynamic_attr
+apiclient.discovery.Resource._add_next_methods	apiclient.discovery.Resource-class.html#_add_next_methods
+apiclient.discovery.Resource.__setstate__	apiclient.discovery.Resource-class.html#__setstate__
+apiclient.discovery.Resource.__init__	apiclient.discovery.Resource-class.html#__init__
+apiclient.discovery.Resource._set_service_methods	apiclient.discovery.Resource-class.html#_set_service_methods
+apiclient.discovery.Resource.__getstate__	apiclient.discovery.Resource-class.html#__getstate__
+apiclient.discovery.Resource._add_basic_methods	apiclient.discovery.Resource-class.html#_add_basic_methods
 apiclient.errors.BatchError	apiclient.errors.BatchError-class.html
 apiclient.errors.BatchError.__str__	apiclient.errors.BatchError-class.html#__str__
 apiclient.errors.BatchError.__repr__	apiclient.errors.BatchError-class.html#__repr__
@@ -133,6 +164,7 @@
 apiclient.errors.UnexpectedMethodError	apiclient.errors.UnexpectedMethodError-class.html
 apiclient.errors.UnexpectedMethodError.__init__	apiclient.errors.UnexpectedMethodError-class.html#__init__
 apiclient.errors.UnknownApiNameOrVersion	apiclient.errors.UnknownApiNameOrVersion-class.html
+apiclient.errors.UnknownFileType	apiclient.errors.UnknownFileType-class.html
 apiclient.errors.UnknownLinkType	apiclient.errors.UnknownLinkType-class.html
 apiclient.http.BatchHttpRequest	apiclient.http.BatchHttpRequest-class.html
 apiclient.http.BatchHttpRequest.__init__	apiclient.http.BatchHttpRequest-class.html#__init__
@@ -156,6 +188,7 @@
 apiclient.http.HttpRequest.execute	apiclient.http.HttpRequest-class.html#execute
 apiclient.http.HttpRequest._process_response	apiclient.http.HttpRequest-class.html#_process_response
 apiclient.http.HttpRequest.next_chunk	apiclient.http.HttpRequest-class.html#next_chunk
+apiclient.http.HttpRequest.add_response_callback	apiclient.http.HttpRequest-class.html#add_response_callback
 apiclient.http.HttpRequest.to_json	apiclient.http.HttpRequest-class.html#to_json
 apiclient.http.HttpRequest.__init__	apiclient.http.HttpRequest-class.html#__init__
 apiclient.http.HttpRequestMock	apiclient.http.HttpRequestMock-class.html
@@ -291,6 +324,36 @@
 apiclient.model.BaseModel.request	apiclient.model.BaseModel-class.html#request
 apiclient.model.RawModel.no_content_response	apiclient.model.RawModel-class.html#no_content_response
 apiclient.model.BaseModel._log_response	apiclient.model.BaseModel-class.html#_log_response
+apiclient.push.Channel	apiclient.push.Channel-class.html
+apiclient.push.Channel.as_header_value	apiclient.push.Channel-class.html#as_header_value
+apiclient.push.Channel.write_header	apiclient.push.Channel-class.html#write_header
+apiclient.push.Channel.__init__	apiclient.push.Channel-class.html#__init__
+apiclient.push.Headers	apiclient.push.Headers-class.html
+apiclient.push.Headers.__getitem__	apiclient.push.Headers-class.html#__getitem__
+apiclient.push.Headers._normalize_key	apiclient.push.Headers-class.html#_normalize_key
+apiclient.push.Headers.read	apiclient.push.Headers-class.html#read
+apiclient.push.Headers.items	apiclient.push.Headers-class.html#items
+apiclient.push.Headers.write	apiclient.push.Headers-class.html#write
+apiclient.push.Headers.__setitem__	apiclient.push.Headers-class.html#__setitem__
+apiclient.push.Headers.ALL_HEADERS	apiclient.push.Headers-class.html#ALL_HEADERS
+apiclient.push.Headers.__init__	apiclient.push.Headers-class.html#__init__
+apiclient.push.InvalidSubscriptionRequestError	apiclient.push.InvalidSubscriptionRequestError-class.html
+apiclient.push.Subscription	apiclient.push.Subscription-class.html
+apiclient.push.Subscription.event_type	apiclient.push.Subscription-class.html#event_type
+apiclient.push.Subscription.topic_uri	apiclient.push.Subscription-class.html#topic_uri
+apiclient.push.Subscription.for_request	apiclient.push.Subscription-class.html#for_request
+apiclient.push.Subscription.subscribe	apiclient.push.Subscription-class.html#subscribe
+apiclient.push.Subscription.__init__	apiclient.push.Subscription-class.html#__init__
+apiclient.push.Subscription.verify	apiclient.push.Subscription-class.html#verify
+apiclient.push.Subscription.topic_id	apiclient.push.Subscription-class.html#topic_id
+apiclient.push.Subscription.subscription_id	apiclient.push.Subscription-class.html#subscription_id
+apiclient.push.Subscription.client_token	apiclient.push.Subscription-class.html#client_token
+apiclient.push.Subscription.for_channel	apiclient.push.Subscription-class.html#for_channel
+apiclient.push.Subscription.unsubscribe	apiclient.push.Subscription-class.html#unsubscribe
+apiclient.push.WebhookChannel	apiclient.push.WebhookChannel-class.html
+apiclient.push.Channel.as_header_value	apiclient.push.Channel-class.html#as_header_value
+apiclient.push.Channel.write_header	apiclient.push.Channel-class.html#write_header
+apiclient.push.WebhookChannel.__init__	apiclient.push.WebhookChannel-class.html#__init__
 apiclient.schema.Schemas	apiclient.schema.Schemas-class.html
 apiclient.schema.Schemas._prettyPrintByName	apiclient.schema.Schemas-class.html#_prettyPrintByName
 apiclient.schema.Schemas._prettyPrintSchema	apiclient.schema.Schemas-class.html#_prettyPrintSchema
@@ -307,8 +370,6 @@
 apiclient.schema._SchemaToStruct.undent	apiclient.schema._SchemaToStruct-class.html#undent
 apiclient.schema._SchemaToStruct.emit	apiclient.schema._SchemaToStruct-class.html#emit
 apiclient.schema._SchemaToStruct.__init__	apiclient.schema._SchemaToStruct-class.html#__init__
-google.appengine.ext.db.PropertiedClass	google.appengine.ext.db.PropertiedClass-class.html
-google.appengine.ext.db.PropertiedClass.__init__	google.appengine.ext.db.PropertiedClass-class.html#__init__
 oauth2client.appengine.AppAssertionCredentials	oauth2client.appengine.AppAssertionCredentials-class.html
 oauth2client.appengine.AppAssertionCredentials.from_json	oauth2client.appengine.AppAssertionCredentials-class.html#from_json
 oauth2client.client.OAuth2Credentials.authorize	oauth2client.client.OAuth2Credentials-class.html#authorize
@@ -330,19 +391,27 @@
 oauth2client.client.OAuth2Credentials.refresh	oauth2client.client.OAuth2Credentials-class.html#refresh
 oauth2client.client.OAuth2Credentials.access_token_expired	oauth2client.client.OAuth2Credentials-class.html#access_token_expired
 oauth2client.appengine.CredentialsModel	oauth2client.appengine.CredentialsModel-class.html
-google.appengine.ext.db.Model.__metaclass__	google.appengine.ext.db.PropertiedClass-class.html
 oauth2client.appengine.CredentialsModel.credentials	oauth2client.appengine.CredentialsModel-class.html#credentials
+oauth2client.appengine.CredentialsNDBModel	oauth2client.appengine.CredentialsNDBModel-class.html
+oauth2client.appengine.CredentialsNDBModel.credentials	oauth2client.appengine.CredentialsNDBModel-class.html#credentials
+oauth2client.appengine.CredentialsNDBModel._get_kind	oauth2client.appengine.CredentialsNDBModel-class.html#_get_kind
+oauth2client.appengine.CredentialsNDBProperty	oauth2client.appengine.CredentialsNDBProperty-class.html
+oauth2client.appengine.CredentialsNDBProperty._validate	oauth2client.appengine.CredentialsNDBProperty-class.html#_validate
+oauth2client.appengine.CredentialsNDBProperty._from_base_type	oauth2client.appengine.CredentialsNDBProperty-class.html#_from_base_type
+oauth2client.appengine.CredentialsNDBProperty._to_base_type	oauth2client.appengine.CredentialsNDBProperty-class.html#_to_base_type
 oauth2client.appengine.CredentialsProperty	oauth2client.appengine.CredentialsProperty-class.html
 oauth2client.appengine.CredentialsProperty.make_value_from_datastore	oauth2client.appengine.CredentialsProperty-class.html#make_value_from_datastore
-oauth2client.appengine.CredentialsProperty.data_type	oauth2client.appengine.CredentialsProperty-class.html#data_type
 oauth2client.appengine.CredentialsProperty.validate	oauth2client.appengine.CredentialsProperty-class.html#validate
 oauth2client.appengine.CredentialsProperty.get_value_for_datastore	oauth2client.appengine.CredentialsProperty-class.html#get_value_for_datastore
+oauth2client.appengine.CredentialsProperty.data_type	oauth2client.appengine.CredentialsProperty-class.html#data_type
+oauth2client.appengine.FlowNDBProperty	oauth2client.appengine.FlowNDBProperty-class.html
+oauth2client.appengine.FlowNDBProperty._validate	oauth2client.appengine.FlowNDBProperty-class.html#_validate
 oauth2client.appengine.FlowProperty	oauth2client.appengine.FlowProperty-class.html
 oauth2client.appengine.FlowProperty.make_value_from_datastore	oauth2client.appengine.FlowProperty-class.html#make_value_from_datastore
-oauth2client.appengine.FlowProperty.data_type	oauth2client.appengine.FlowProperty-class.html#data_type
 oauth2client.appengine.FlowProperty.validate	oauth2client.appengine.FlowProperty-class.html#validate
-oauth2client.appengine.FlowProperty.empty	oauth2client.appengine.FlowProperty-class.html#empty
 oauth2client.appengine.FlowProperty.get_value_for_datastore	oauth2client.appengine.FlowProperty-class.html#get_value_for_datastore
+oauth2client.appengine.FlowProperty.empty	oauth2client.appengine.FlowProperty-class.html#empty
+oauth2client.appengine.FlowProperty.data_type	oauth2client.appengine.FlowProperty-class.html#data_type
 oauth2client.appengine.InvalidClientSecretsError	oauth2client.appengine.InvalidClientSecretsError-class.html
 oauth2client.appengine.InvalidXsrfTokenError	oauth2client.appengine.InvalidXsrfTokenError-class.html
 oauth2client.appengine.OAuth2Decorator	oauth2client.appengine.OAuth2Decorator-class.html
@@ -370,8 +439,10 @@
 oauth2client.appengine.OAuth2Decorator.callback_path	oauth2client.appengine.OAuth2Decorator-class.html#callback_path
 oauth2client.appengine.OAuth2Decorator.oauth_required	oauth2client.appengine.OAuth2Decorator-class.html#oauth_required
 oauth2client.appengine.SiteXsrfSecretKey	oauth2client.appengine.SiteXsrfSecretKey-class.html
-google.appengine.ext.db.Model.__metaclass__	google.appengine.ext.db.PropertiedClass-class.html
 oauth2client.appengine.SiteXsrfSecretKey.secret	oauth2client.appengine.SiteXsrfSecretKey-class.html#secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB	oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret	oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html#secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB._get_kind	oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html#_get_kind
 oauth2client.appengine.StorageByKeyName	oauth2client.appengine.StorageByKeyName-class.html
 oauth2client.client.Storage.acquire_lock	oauth2client.client.Storage-class.html#acquire_lock
 oauth2client.appengine.StorageByKeyName.locked_put	oauth2client.appengine.StorageByKeyName-class.html#locked_put
@@ -380,7 +451,10 @@
 oauth2client.appengine.StorageByKeyName.locked_get	oauth2client.appengine.StorageByKeyName-class.html#locked_get
 oauth2client.client.Storage.get	oauth2client.client.Storage-class.html#get
 oauth2client.client.Storage.put	oauth2client.client.Storage-class.html#put
+oauth2client.appengine.StorageByKeyName._is_ndb	oauth2client.appengine.StorageByKeyName-class.html#_is_ndb
+oauth2client.appengine.StorageByKeyName._get_entity	oauth2client.appengine.StorageByKeyName-class.html#_get_entity
 oauth2client.client.Storage.release_lock	oauth2client.client.Storage-class.html#release_lock
+oauth2client.appengine.StorageByKeyName._delete_entity	oauth2client.appengine.StorageByKeyName-class.html#_delete_entity
 oauth2client.client.Storage.delete	oauth2client.client.Storage-class.html#delete
 oauth2client.client.AccessTokenCredentials	oauth2client.client.AccessTokenCredentials-class.html
 oauth2client.client.AccessTokenCredentials.from_json	oauth2client.client.AccessTokenCredentials-class.html#from_json
@@ -440,6 +514,7 @@
 oauth2client.client.MemoryCache.get	oauth2client.client.MemoryCache-class.html#get
 oauth2client.client.MemoryCache.__init__	oauth2client.client.MemoryCache-class.html#__init__
 oauth2client.client.MemoryCache.delete	oauth2client.client.MemoryCache-class.html#delete
+oauth2client.client.NonAsciiHeaderError	oauth2client.client.NonAsciiHeaderError-class.html
 oauth2client.client.OAuth2Credentials	oauth2client.client.OAuth2Credentials-class.html
 oauth2client.client.OAuth2Credentials.authorize	oauth2client.client.OAuth2Credentials-class.html#authorize
 oauth2client.client.OAuth2Credentials.from_json	oauth2client.client.OAuth2Credentials-class.html#from_json
@@ -498,14 +573,6 @@
 oauth2client.clientsecrets.Error	oauth2client.clientsecrets.Error-class.html
 oauth2client.clientsecrets.InvalidClientSecretsError	oauth2client.clientsecrets.InvalidClientSecretsError-class.html
 oauth2client.crypt.AppIdentityError	oauth2client.crypt.AppIdentityError-class.html
-oauth2client.crypt.Signer	oauth2client.crypt.Signer-class.html
-oauth2client.crypt.Signer.sign	oauth2client.crypt.Signer-class.html#sign
-oauth2client.crypt.Signer.from_string	oauth2client.crypt.Signer-class.html#from_string
-oauth2client.crypt.Signer.__init__	oauth2client.crypt.Signer-class.html#__init__
-oauth2client.crypt.Verifier	oauth2client.crypt.Verifier-class.html
-oauth2client.crypt.Verifier.verify	oauth2client.crypt.Verifier-class.html#verify
-oauth2client.crypt.Verifier.from_string	oauth2client.crypt.Verifier-class.html#from_string
-oauth2client.crypt.Verifier.__init__	oauth2client.crypt.Verifier-class.html#__init__
 oauth2client.django_orm.CredentialsField	oauth2client.django_orm.CredentialsField-class.html
 oauth2client.django_orm.CredentialsField.get_internal_type	oauth2client.django_orm.CredentialsField-class.html#get_internal_type
 oauth2client.django_orm.CredentialsField.__metaclass__	oauth2client.django_orm.CredentialsField-class.html#__metaclass__
diff --git a/docs/epy/apiclient-module.html b/docs/epy/apiclient-module.html
index 56d8a57..b0f8b9d 100644
--- a/docs/epy/apiclient-module.html
+++ b/docs/epy/apiclient-module.html
@@ -81,6 +81,7 @@
     <li> <strong class="uidlink"><a href="apiclient.http-module.html">apiclient.http</a></strong>: <em class="summary">Classes to encapsulate a single HTTP request.</em>    </li>
     <li> <strong class="uidlink"><a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a></strong>: <em class="summary">MIME-Type Parser</em>    </li>
     <li> <strong class="uidlink"><a href="apiclient.model-module.html">apiclient.model</a></strong>: <em class="summary">Model objects for requests and responses.</em>    </li>
+    <li> <strong class="uidlink"><a href="apiclient.push-module.html">apiclient.push</a></strong>: <em class="summary">Push notifications support.</em>    </li>
     <li> <strong class="uidlink"><a href="apiclient.schema-module.html">apiclient.schema</a></strong>: <em class="summary">Schema processing for discovery based APIs</em>    </li>
   </ul></td></tr>
 </table>
@@ -109,7 +110,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:30 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient-pysrc.html b/docs/epy/apiclient-pysrc.html
index c259c81..9a49f5a 100644
--- a/docs/epy/apiclient-pysrc.html
+++ b/docs/epy/apiclient-pysrc.html
@@ -83,7 +83,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:47 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.discovery-module.html b/docs/epy/apiclient.discovery-module.html
index e25c08d..852dee5 100644
--- a/docs/epy/apiclient.discovery-module.html
+++ b/docs/epy/apiclient.discovery-module.html
@@ -64,7 +64,33 @@
 <div class="fields">      <p><strong>Author:</strong>
         jcgregorio@google.com (Joe Gregorio)
       </p>
-</div><!-- ==================== FUNCTIONS ==================== -->
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="apiclient.discovery.Resource-class.html" class="summary-name">Resource</a><br />
+      A class for interacting with a resource.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
 <a name="section-Functions"></a>
 <table class="summary" border="1" cellpadding="3"
        cellspacing="0" width="100%" bgcolor="white">
@@ -215,23 +241,36 @@
       
     </td>
   </tr>
-<tr class="private">
+<tr>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
-          <td><span class="summary-sig"><a href="apiclient.discovery-module.html#_createResource" class="summary-sig-name" onclick="show_private();">_createResource</a>(<span class="summary-sig-arg">http</span>,
-        <span class="summary-sig-arg">baseUrl</span>,
-        <span class="summary-sig-arg">model</span>,
-        <span class="summary-sig-arg">requestBuilder</span>,
-        <span class="summary-sig-arg">developerKey</span>,
-        <span class="summary-sig-arg">resourceDesc</span>,
+          <td><span class="summary-sig"><a href="apiclient.discovery-module.html#createMethod" class="summary-sig-name">createMethod</a>(<span class="summary-sig-arg">methodName</span>,
+        <span class="summary-sig-arg">methodDesc</span>,
         <span class="summary-sig-arg">rootDesc</span>,
         <span class="summary-sig-arg">schema</span>)</span><br />
-      Build a Resource from the API description.</td>
+      Creates a method for attaching to a Resource.</td>
           <td align="right" valign="top">
-            <span class="codelink"><a href="apiclient.discovery-pysrc.html#_createResource">source&nbsp;code</a></span>
+            <span class="codelink"><a href="apiclient.discovery-pysrc.html#createMethod">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.discovery-module.html#createNextMethod" class="summary-sig-name">createNextMethod</a>(<span class="summary-sig-arg">methodName</span>)</span><br />
+      Creates any _next methods for attaching to a Resource.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.discovery-pysrc.html#createNextMethod">source&nbsp;code</a></span>
             
           </td>
         </tr>
@@ -289,13 +328,6 @@
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="random"></a><span class="summary-name">random</span>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
         <a name="re"></a><span class="summary-name">re</span>
     </td>
   </tr>
@@ -380,7 +412,7 @@
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="UnknownLinkType"></a><span class="summary-name">UnknownLinkType</span>
+        <a name="UnknownFileType"></a><span class="summary-name">UnknownFileType</span>
     </td>
   </tr>
 <tr>
@@ -711,7 +743,9 @@
 document that is it given, as opposed to retrieving one over HTTP.
 
 Args:
-  service: string, discovery document.
+  service: string or object, the JSON discovery document describing the API.
+    The value passed in may either be the JSON string or the deserialized
+    JSON.
   base: string, base URI for all HTTP requests, usually the discovery URI.
     This parameter is no longer used as rootUrl and servicePath are included
     within the discovery document. (deprecated)
@@ -797,48 +831,59 @@
   </dl>
 </td></tr></table>
 </div>
-<a name="_createResource"></a>
-<div class="private">
+<a name="createMethod"></a>
+<div>
 <table class="details" border="1" cellpadding="3"
        cellspacing="0" width="100%" bgcolor="white">
 <tr><td>
   <table width="100%" cellpadding="0" cellspacing="0" border="0">
   <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">_createResource</span>(<span class="sig-arg">http</span>,
-        <span class="sig-arg">baseUrl</span>,
-        <span class="sig-arg">model</span>,
-        <span class="sig-arg">requestBuilder</span>,
-        <span class="sig-arg">developerKey</span>,
-        <span class="sig-arg">resourceDesc</span>,
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">createMethod</span>(<span class="sig-arg">methodName</span>,
+        <span class="sig-arg">methodDesc</span>,
         <span class="sig-arg">rootDesc</span>,
         <span class="sig-arg">schema</span>)</span>
   </h3>
   </td><td align="right" valign="top"
-    ><span class="codelink"><a href="apiclient.discovery-pysrc.html#_createResource">source&nbsp;code</a></span>&nbsp;
+    ><span class="codelink"><a href="apiclient.discovery-pysrc.html#createMethod">source&nbsp;code</a></span>&nbsp;
     </td>
   </tr></table>
   
   <pre class="literalblock">
-Build a Resource from the API description.
+Creates a method for attaching to a Resource.
 
 Args:
-  http: httplib2.Http, Object to make http requests with.
-  baseUrl: string, base URL for the API. All requests are relative to this
-    URI.
-  model: apiclient.Model, converts to and from the wire format.
-  requestBuilder: class or callable that instantiates an
-    apiclient.HttpRequest object.
-  developerKey: string, key obtained from
-    https://code.google.com/apis/console
-  resourceDesc: object, section of deserialized discovery document that
-    describes a resource. Note that the top level discovery document
-    is considered a resource.
+  methodName: string, name of the method to use.
+  methodDesc: object, fragment of deserialized discovery document that
+    describes the method.
   rootDesc: object, the entire deserialized discovery document.
   schema: object, mapping of schema names to schema descriptions.
 
-Returns:
-  An instance of Resource with all the methods attached for interacting with
-  that resource.
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="createNextMethod"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">createNextMethod</span>(<span class="sig-arg">methodName</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.discovery-pysrc.html#createNextMethod">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Creates any _next methods for attaching to a Resource.
+
+The _next methods allow for easy iteration through list() responses.
+
+Args:
+  methodName: string, name of the method to use.
 
 </pre>
   <dl class="fields">
@@ -946,7 +991,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.discovery-pysrc.html b/docs/epy/apiclient.discovery-pysrc.html
index 4ee74fa..d6772a9 100644
--- a/docs/epy/apiclient.discovery-pysrc.html
+++ b/docs/epy/apiclient.discovery-pysrc.html
@@ -84,41 +84,43 @@
 <a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">httplib2</tt> </tt>
 <a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
 <a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
-<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">random</tt> </tt>
-<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt> </tt>
-<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">uritemplate</tt> </tt>
-<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt>
-<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urlparse</tt> </tt>
-<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Module apiclient.mimeparse=apiclient.mimeparse-module.html"><a title="apiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-0', 'mimeparse', 'link-0');">mimeparse</a></tt> </tt>
-<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">mimetypes</tt> </tt>
-<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"> </tt>
-<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">urlparse</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
-<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
-<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">cgi</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
-<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"> </tt>
-<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package apiclient=apiclient-module.html"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-1', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module apiclient.errors=apiclient.errors-module.html"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-2', 'errors', 'link-2');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Class apiclient.errors.HttpError=apiclient.errors.HttpError-class.html"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-3', 'HttpError', 'link-3');">HttpError</a></tt> </tt>
-<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-4', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-5', 'errors', 'link-2');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-6" class="py-name" targets="Class apiclient.errors.InvalidJsonError=apiclient.errors.InvalidJsonError-class.html"><a title="apiclient.errors.InvalidJsonError" class="py-name" href="#" onclick="return doclink('link-6', 'InvalidJsonError', 'link-6');">InvalidJsonError</a></tt> </tt>
-<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-7" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-7', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-8', 'errors', 'link-2');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-9" class="py-name" targets="Class apiclient.errors.MediaUploadSizeError=apiclient.errors.MediaUploadSizeError-class.html"><a title="apiclient.errors.MediaUploadSizeError" class="py-name" href="#" onclick="return doclink('link-9', 'MediaUploadSizeError', 'link-9');">MediaUploadSizeError</a></tt> </tt>
-<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-10" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-10', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-11', 'errors', 'link-2');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-12" class="py-name" targets="Class apiclient.errors.UnacceptableMimeTypeError=apiclient.errors.UnacceptableMimeTypeError-class.html"><a title="apiclient.errors.UnacceptableMimeTypeError" class="py-name" href="#" onclick="return doclink('link-12', 'UnacceptableMimeTypeError', 'link-12');">UnacceptableMimeTypeError</a></tt> </tt>
-<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-13" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-13', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-14', 'errors', 'link-2');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-15" class="py-name" targets="Class apiclient.errors.UnknownApiNameOrVersion=apiclient.errors.UnknownApiNameOrVersion-class.html"><a title="apiclient.errors.UnknownApiNameOrVersion" class="py-name" href="#" onclick="return doclink('link-15', 'UnknownApiNameOrVersion', 'link-15');">UnknownApiNameOrVersion</a></tt> </tt>
-<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-16" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-16', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-17', 'errors', 'link-2');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-18" class="py-name" targets="Class apiclient.errors.UnknownLinkType=apiclient.errors.UnknownLinkType-class.html"><a title="apiclient.errors.UnknownLinkType" class="py-name" href="#" onclick="return doclink('link-18', 'UnknownLinkType', 'link-18');">UnknownLinkType</a></tt> </tt>
-<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-19" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-19', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Module apiclient.http=apiclient.http-module.html,Method oauth2client.appengine.OAuth2Decorator.http()=oauth2client.appengine.OAuth2Decorator-class.html#http"><a title="apiclient.http
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">uritemplate</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urlparse</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Module apiclient.mimeparse=apiclient.mimeparse-module.html"><a title="apiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-0', 'mimeparse', 'link-0');">mimeparse</a></tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">mimetypes</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">urlparse</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">cgi</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package apiclient=apiclient-module.html"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-1', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module apiclient.errors=apiclient.errors-module.html"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-2', 'errors', 'link-2');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Class apiclient.errors.HttpError=apiclient.errors.HttpError-class.html"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-3', 'HttpError', 'link-3');">HttpError</a></tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-4', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-5', 'errors', 'link-2');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-6" class="py-name" targets="Class apiclient.errors.InvalidJsonError=apiclient.errors.InvalidJsonError-class.html"><a title="apiclient.errors.InvalidJsonError" class="py-name" href="#" onclick="return doclink('link-6', 'InvalidJsonError', 'link-6');">InvalidJsonError</a></tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-7" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-7', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-8', 'errors', 'link-2');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-9" class="py-name" targets="Class apiclient.errors.MediaUploadSizeError=apiclient.errors.MediaUploadSizeError-class.html"><a title="apiclient.errors.MediaUploadSizeError" class="py-name" href="#" onclick="return doclink('link-9', 'MediaUploadSizeError', 'link-9');">MediaUploadSizeError</a></tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-10" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-10', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-11', 'errors', 'link-2');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-12" class="py-name" targets="Class apiclient.errors.UnacceptableMimeTypeError=apiclient.errors.UnacceptableMimeTypeError-class.html"><a title="apiclient.errors.UnacceptableMimeTypeError" class="py-name" href="#" onclick="return doclink('link-12', 'UnacceptableMimeTypeError', 'link-12');">UnacceptableMimeTypeError</a></tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-13" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-13', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-14', 'errors', 'link-2');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-15" class="py-name" targets="Class apiclient.errors.UnknownApiNameOrVersion=apiclient.errors.UnknownApiNameOrVersion-class.html"><a title="apiclient.errors.UnknownApiNameOrVersion" class="py-name" href="#" onclick="return doclink('link-15', 'UnknownApiNameOrVersion', 'link-15');">UnknownApiNameOrVersion</a></tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-16" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-16', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-17', 'errors', 'link-2');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-18" class="py-name" targets="Class apiclient.errors.UnknownFileType=apiclient.errors.UnknownFileType-class.html"><a title="apiclient.errors.UnknownFileType" class="py-name" href="#" onclick="return doclink('link-18', 'UnknownFileType', 'link-18');">UnknownFileType</a></tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-19" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-19', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Module apiclient.http=apiclient.http-module.html,Method oauth2client.appengine.OAuth2Decorator.http()=oauth2client.appengine.OAuth2Decorator-class.html#http"><a title="apiclient.http
 oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-20', 'http', 'link-20');">http</a></tt> <tt class="py-keyword">import</tt> <tt id="link-21" class="py-name" targets="Class apiclient.http.HttpRequest=apiclient.http.HttpRequest-class.html"><a title="apiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-21', 'HttpRequest', 'link-21');">HttpRequest</a></tt> </tt>
-<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-22" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-22', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="apiclient.http
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-22" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-22', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="apiclient.http
 oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-23', 'http', 'link-20');">http</a></tt> <tt class="py-keyword">import</tt> <tt id="link-24" class="py-name" targets="Class apiclient.http.MediaFileUpload=apiclient.http.MediaFileUpload-class.html"><a title="apiclient.http.MediaFileUpload" class="py-name" href="#" onclick="return doclink('link-24', 'MediaFileUpload', 'link-24');">MediaFileUpload</a></tt> </tt>
-<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-25" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-25', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="apiclient.http
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-25" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-25', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="apiclient.http
 oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-26', 'http', 'link-20');">http</a></tt> <tt class="py-keyword">import</tt> <tt id="link-27" class="py-name" targets="Class apiclient.http.MediaUpload=apiclient.http.MediaUpload-class.html"><a title="apiclient.http.MediaUpload" class="py-name" href="#" onclick="return doclink('link-27', 'MediaUpload', 'link-27');">MediaUpload</a></tt> </tt>
-<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-28" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-28', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Module apiclient.model=apiclient.model-module.html"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-29', 'model', 'link-29');">model</a></tt> <tt class="py-keyword">import</tt> <tt id="link-30" class="py-name" targets="Class apiclient.model.JsonModel=apiclient.model.JsonModel-class.html"><a title="apiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-30', 'JsonModel', 'link-30');">JsonModel</a></tt> </tt>
-<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-31" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-31', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-32', 'model', 'link-29');">model</a></tt> <tt class="py-keyword">import</tt> <tt id="link-33" class="py-name" targets="Class apiclient.model.MediaModel=apiclient.model.MediaModel-class.html"><a title="apiclient.model.MediaModel" class="py-name" href="#" onclick="return doclink('link-33', 'MediaModel', 'link-33');">MediaModel</a></tt> </tt>
-<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-34" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-34', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-35', 'model', 'link-29');">model</a></tt> <tt class="py-keyword">import</tt> <tt id="link-36" class="py-name" targets="Class apiclient.model.RawModel=apiclient.model.RawModel-class.html"><a title="apiclient.model.RawModel" class="py-name" href="#" onclick="return doclink('link-36', 'RawModel', 'link-36');">RawModel</a></tt> </tt>
-<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-37" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-37', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Module apiclient.schema=apiclient.schema-module.html"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-38', 'schema', 'link-38');">schema</a></tt> <tt class="py-keyword">import</tt> <tt id="link-39" class="py-name" targets="Class apiclient.schema.Schemas=apiclient.schema.Schemas-class.html"><a title="apiclient.schema.Schemas" class="py-name" href="#" onclick="return doclink('link-39', 'Schemas', 'link-39');">Schemas</a></tt> </tt>
-<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">email</tt><tt class="py-op">.</tt><tt class="py-name">mime</tt><tt class="py-op">.</tt><tt class="py-name">multipart</tt> <tt class="py-keyword">import</tt> <tt class="py-name">MIMEMultipart</tt> </tt>
-<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">email</tt><tt class="py-op">.</tt><tt class="py-name">mime</tt><tt class="py-op">.</tt><tt class="py-name">nonmultipart</tt> <tt class="py-keyword">import</tt> <tt class="py-name">MIMENonMultipart</tt> </tt>
-<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-40" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-40', 'oauth2client', 'link-40');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-41', 'util', 'link-41');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-42" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-42', 'positional', 'link-42');">positional</a></tt> </tt>
-<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-43" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-43', 'oauth2client', 'link-40');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Module oauth2client.anyjson=oauth2client.anyjson-module.html"><a title="oauth2client.anyjson" class="py-name" href="#" onclick="return doclink('link-44', 'anyjson', 'link-44');">anyjson</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt>
-<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"> </tt>
-<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt id="link-45" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-28" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-28', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Module apiclient.model=apiclient.model-module.html"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-29', 'model', 'link-29');">model</a></tt> <tt class="py-keyword">import</tt> <tt id="link-30" class="py-name" targets="Class apiclient.model.JsonModel=apiclient.model.JsonModel-class.html"><a title="apiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-30', 'JsonModel', 'link-30');">JsonModel</a></tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-31" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-31', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-32', 'model', 'link-29');">model</a></tt> <tt class="py-keyword">import</tt> <tt id="link-33" class="py-name" targets="Class apiclient.model.MediaModel=apiclient.model.MediaModel-class.html"><a title="apiclient.model.MediaModel" class="py-name" href="#" onclick="return doclink('link-33', 'MediaModel', 'link-33');">MediaModel</a></tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-34" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-34', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-35', 'model', 'link-29');">model</a></tt> <tt class="py-keyword">import</tt> <tt id="link-36" class="py-name" targets="Class apiclient.model.RawModel=apiclient.model.RawModel-class.html"><a title="apiclient.model.RawModel" class="py-name" href="#" onclick="return doclink('link-36', 'RawModel', 'link-36');">RawModel</a></tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-37" class="py-name"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-37', 'apiclient', 'link-1');">apiclient</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Module apiclient.schema=apiclient.schema-module.html"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-38', 'schema', 'link-38');">schema</a></tt> <tt class="py-keyword">import</tt> <tt id="link-39" class="py-name" targets="Class apiclient.schema.Schemas=apiclient.schema.Schemas-class.html"><a title="apiclient.schema.Schemas" class="py-name" href="#" onclick="return doclink('link-39', 'Schemas', 'link-39');">Schemas</a></tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">email</tt><tt class="py-op">.</tt><tt class="py-name">mime</tt><tt class="py-op">.</tt><tt class="py-name">multipart</tt> <tt class="py-keyword">import</tt> <tt class="py-name">MIMEMultipart</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">email</tt><tt class="py-op">.</tt><tt class="py-name">mime</tt><tt class="py-op">.</tt><tt class="py-name">nonmultipart</tt> <tt class="py-keyword">import</tt> <tt class="py-name">MIMENonMultipart</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-40" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-40', 'oauth2client', 'link-40');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-41', 'util', 'link-41');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-42" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-42', 'positional', 'link-42');">positional</a></tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-43" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-43', 'oauth2client', 'link-40');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Module oauth2client.anyjson=oauth2client.anyjson-module.html"><a title="oauth2client.anyjson" class="py-name" href="#" onclick="return doclink('link-44', 'anyjson', 'link-44');">anyjson</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-comment"># The client library requires a version of httplib2 that supports RETRIES.</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">RETRIES</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt id="link-45" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
@@ -126,136 +128,136 @@
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
 oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-45', 'logger', 'link-45');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
-<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"> </tt>
-<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt id="link-46" class="py-name" targets="Variable apiclient.discovery.URITEMPLATE=apiclient.discovery-module.html#URITEMPLATE"><a title="apiclient.discovery.URITEMPLATE" class="py-name" href="#" onclick="return doclink('link-46', 'URITEMPLATE', 'link-46');">URITEMPLATE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'{[^}]*}'</tt><tt class="py-op">)</tt> </tt>
-<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt id="link-47" class="py-name" targets="Variable apiclient.discovery.VARNAME=apiclient.discovery-module.html#VARNAME"><a title="apiclient.discovery.VARNAME" class="py-name" href="#" onclick="return doclink('link-47', 'VARNAME', 'link-47');">VARNAME</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'[a-zA-Z0-9_-]+'</tt><tt class="py-op">)</tt> </tt>
-<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt id="link-48" class="py-name" targets="Variable apiclient.discovery.DISCOVERY_URI=apiclient.discovery-module.html#DISCOVERY_URI"><a title="apiclient.discovery.DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-48', 'DISCOVERY_URI', 'link-48');">DISCOVERY_URI</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'https://www.googleapis.com/discovery/v1/apis/'</tt> </tt>
-<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">  <tt class="py-string">'{api}/{apiVersion}/rest'</tt><tt class="py-op">)</tt> </tt>
-<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt id="link-49" class="py-name" targets="Variable apiclient.discovery.DEFAULT_METHOD_DOC=apiclient.discovery-module.html#DEFAULT_METHOD_DOC"><a title="apiclient.discovery.DEFAULT_METHOD_DOC" class="py-name" href="#" onclick="return doclink('link-49', 'DEFAULT_METHOD_DOC', 'link-49');">DEFAULT_METHOD_DOC</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'A description of how to use this function'</tt> </tt>
-<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"> </tt>
-<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-comment"># Parameters accepted by the stack, but not visible via discovery.</tt> </tt>
-<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt id="link-50" class="py-name" targets="Variable apiclient.discovery.STACK_QUERY_PARAMETERS=apiclient.discovery-module.html#STACK_QUERY_PARAMETERS"><a title="apiclient.discovery.STACK_QUERY_PARAMETERS" class="py-name" href="#" onclick="return doclink('link-50', 'STACK_QUERY_PARAMETERS', 'link-50');">STACK_QUERY_PARAMETERS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'trace'</tt><tt class="py-op">,</tt> <tt class="py-string">'pp'</tt><tt class="py-op">,</tt> <tt class="py-string">'userip'</tt><tt class="py-op">,</tt> <tt class="py-string">'strict'</tt><tt class="py-op">]</tt> </tt>
-<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"> </tt>
-<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-comment"># Python reserved words.</tt> </tt>
-<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt id="link-51" class="py-name" targets="Variable apiclient.discovery.RESERVED_WORDS=apiclient.discovery-module.html#RESERVED_WORDS"><a title="apiclient.discovery.RESERVED_WORDS" class="py-name" href="#" onclick="return doclink('link-51', 'RESERVED_WORDS', 'link-51');">RESERVED_WORDS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'and'</tt><tt class="py-op">,</tt> <tt class="py-string">'assert'</tt><tt class="py-op">,</tt> <tt class="py-string">'break'</tt><tt class="py-op">,</tt> <tt class="py-string">'class'</tt><tt class="py-op">,</tt> <tt class="py-string">'continue'</tt><tt class="py-op">,</tt> <tt class="py-string">'def'</tt><tt class="py-op">,</tt> <tt class="py-string">'del'</tt><tt class="py-op">,</tt> </tt>
-<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">                  <tt class="py-string">'elif'</tt><tt class="py-op">,</tt> <tt class="py-string">'else'</tt><tt class="py-op">,</tt> <tt class="py-string">'except'</tt><tt class="py-op">,</tt> <tt class="py-string">'exec'</tt><tt class="py-op">,</tt> <tt class="py-string">'finally'</tt><tt class="py-op">,</tt> <tt class="py-string">'for'</tt><tt class="py-op">,</tt> <tt class="py-string">'from'</tt><tt class="py-op">,</tt> </tt>
-<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">                  <tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'if'</tt><tt class="py-op">,</tt> <tt class="py-string">'import'</tt><tt class="py-op">,</tt> <tt class="py-string">'in'</tt><tt class="py-op">,</tt> <tt class="py-string">'is'</tt><tt class="py-op">,</tt> <tt class="py-string">'lambda'</tt><tt class="py-op">,</tt> <tt class="py-string">'not'</tt><tt class="py-op">,</tt> <tt class="py-string">'or'</tt><tt class="py-op">,</tt> </tt>
-<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">                  <tt class="py-string">'pass'</tt><tt class="py-op">,</tt> <tt class="py-string">'print'</tt><tt class="py-op">,</tt> <tt class="py-string">'raise'</tt><tt class="py-op">,</tt> <tt class="py-string">'return'</tt><tt class="py-op">,</tt> <tt class="py-string">'try'</tt><tt class="py-op">,</tt> <tt class="py-string">'while'</tt><tt class="py-op">,</tt> <tt class="py-string">'body'</tt><tt class="py-op">]</tt> </tt>
-<a name="fix_method_name"></a><div id="fix_method_name-def"><a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"> </tt>
-<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"> </tt>
-<a name="L81"></a><tt class="py-lineno"> 81</tt> <a class="py-toggle" href="#" id="fix_method_name-toggle" onclick="return toggle('fix_method_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#fix_method_name">fix_method_name</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="fix_method_name-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="fix_method_name-expanded"><a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">  <tt class="py-docstring">"""Fix method names to avoid reserved word conflicts.</tt> </tt>
-<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring">    name: string, method name.</tt> </tt>
-<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring">    The name with a '_' prefixed if the name is a reserved word.</tt> </tt>
-<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt id="link-52" class="py-name"><a title="apiclient.discovery.RESERVED_WORDS" class="py-name" href="#" onclick="return doclink('link-52', 'RESERVED_WORDS', 'link-51');">RESERVED_WORDS</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">name</tt> <tt class="py-op">+</tt> <tt class="py-string">'_'</tt> </tt>
-<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">name</tt> </tt>
-</div><a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"> </tt>
-<a name="_add_query_parameter"></a><div id="_add_query_parameter-def"><a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"> </tt>
-<a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="_add_query_parameter-toggle" onclick="return toggle('_add_query_parameter');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#_add_query_parameter">_add_query_parameter</a><tt class="py-op">(</tt><tt class="py-param">url</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_add_query_parameter-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_add_query_parameter-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">  <tt class="py-docstring">"""Adds a query parameter to a url.</tt> </tt>
-<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">  Replaces the current value if it already exists in the URL.</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt id="link-46" class="py-name" targets="Variable apiclient.discovery.URITEMPLATE=apiclient.discovery-module.html#URITEMPLATE"><a title="apiclient.discovery.URITEMPLATE" class="py-name" href="#" onclick="return doclink('link-46', 'URITEMPLATE', 'link-46');">URITEMPLATE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'{[^}]*}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt id="link-47" class="py-name" targets="Variable apiclient.discovery.VARNAME=apiclient.discovery-module.html#VARNAME"><a title="apiclient.discovery.VARNAME" class="py-name" href="#" onclick="return doclink('link-47', 'VARNAME', 'link-47');">VARNAME</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'[a-zA-Z0-9_-]+'</tt><tt class="py-op">)</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt id="link-48" class="py-name" targets="Variable apiclient.discovery.DISCOVERY_URI=apiclient.discovery-module.html#DISCOVERY_URI"><a title="apiclient.discovery.DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-48', 'DISCOVERY_URI', 'link-48');">DISCOVERY_URI</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'https://www.googleapis.com/discovery/v1/apis/'</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">  <tt class="py-string">'{api}/{apiVersion}/rest'</tt><tt class="py-op">)</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt id="link-49" class="py-name" targets="Variable apiclient.discovery.DEFAULT_METHOD_DOC=apiclient.discovery-module.html#DEFAULT_METHOD_DOC"><a title="apiclient.discovery.DEFAULT_METHOD_DOC" class="py-name" href="#" onclick="return doclink('link-49', 'DEFAULT_METHOD_DOC', 'link-49');">DEFAULT_METHOD_DOC</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'A description of how to use this function'</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-comment"># Parameters accepted by the stack, but not visible via discovery.</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt id="link-50" class="py-name" targets="Variable apiclient.discovery.STACK_QUERY_PARAMETERS=apiclient.discovery-module.html#STACK_QUERY_PARAMETERS"><a title="apiclient.discovery.STACK_QUERY_PARAMETERS" class="py-name" href="#" onclick="return doclink('link-50', 'STACK_QUERY_PARAMETERS', 'link-50');">STACK_QUERY_PARAMETERS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'trace'</tt><tt class="py-op">,</tt> <tt class="py-string">'pp'</tt><tt class="py-op">,</tt> <tt class="py-string">'userip'</tt><tt class="py-op">,</tt> <tt class="py-string">'strict'</tt><tt class="py-op">]</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-comment"># Python reserved words.</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt id="link-51" class="py-name" targets="Variable apiclient.discovery.RESERVED_WORDS=apiclient.discovery-module.html#RESERVED_WORDS"><a title="apiclient.discovery.RESERVED_WORDS" class="py-name" href="#" onclick="return doclink('link-51', 'RESERVED_WORDS', 'link-51');">RESERVED_WORDS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'and'</tt><tt class="py-op">,</tt> <tt class="py-string">'assert'</tt><tt class="py-op">,</tt> <tt class="py-string">'break'</tt><tt class="py-op">,</tt> <tt class="py-string">'class'</tt><tt class="py-op">,</tt> <tt class="py-string">'continue'</tt><tt class="py-op">,</tt> <tt class="py-string">'def'</tt><tt class="py-op">,</tt> <tt class="py-string">'del'</tt><tt class="py-op">,</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">                  <tt class="py-string">'elif'</tt><tt class="py-op">,</tt> <tt class="py-string">'else'</tt><tt class="py-op">,</tt> <tt class="py-string">'except'</tt><tt class="py-op">,</tt> <tt class="py-string">'exec'</tt><tt class="py-op">,</tt> <tt class="py-string">'finally'</tt><tt class="py-op">,</tt> <tt class="py-string">'for'</tt><tt class="py-op">,</tt> <tt class="py-string">'from'</tt><tt class="py-op">,</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">                  <tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'if'</tt><tt class="py-op">,</tt> <tt class="py-string">'import'</tt><tt class="py-op">,</tt> <tt class="py-string">'in'</tt><tt class="py-op">,</tt> <tt class="py-string">'is'</tt><tt class="py-op">,</tt> <tt class="py-string">'lambda'</tt><tt class="py-op">,</tt> <tt class="py-string">'not'</tt><tt class="py-op">,</tt> <tt class="py-string">'or'</tt><tt class="py-op">,</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">                  <tt class="py-string">'pass'</tt><tt class="py-op">,</tt> <tt class="py-string">'print'</tt><tt class="py-op">,</tt> <tt class="py-string">'raise'</tt><tt class="py-op">,</tt> <tt class="py-string">'return'</tt><tt class="py-op">,</tt> <tt class="py-string">'try'</tt><tt class="py-op">,</tt> <tt class="py-string">'while'</tt><tt class="py-op">,</tt> <tt class="py-string">'body'</tt><tt class="py-op">]</tt> </tt>
+<a name="fix_method_name"></a><div id="fix_method_name-def"><a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <a class="py-toggle" href="#" id="fix_method_name-toggle" onclick="return toggle('fix_method_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#fix_method_name">fix_method_name</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="fix_method_name-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="fix_method_name-expanded"><a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">  <tt class="py-docstring">"""Fix method names to avoid reserved word conflicts.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring">    name: string, method name.</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">    The name with a '_' prefixed if the name is a reserved word.</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt id="link-52" class="py-name"><a title="apiclient.discovery.RESERVED_WORDS" class="py-name" href="#" onclick="return doclink('link-52', 'RESERVED_WORDS', 'link-51');">RESERVED_WORDS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">name</tt> <tt class="py-op">+</tt> <tt class="py-string">'_'</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">name</tt> </tt>
+</div><a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"> </tt>
+<a name="_add_query_parameter"></a><div id="_add_query_parameter-def"><a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <a class="py-toggle" href="#" id="_add_query_parameter-toggle" onclick="return toggle('_add_query_parameter');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#_add_query_parameter">_add_query_parameter</a><tt class="py-op">(</tt><tt class="py-param">url</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_add_query_parameter-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_add_query_parameter-expanded"><a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">  <tt class="py-docstring">"""Adds a query parameter to a url.</tt> </tt>
 <a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">    url: string, url to add the query parameter to.</tt> </tt>
-<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">    name: string, query parameter name.</tt> </tt>
-<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring">    value: string, query parameter value.</tt> </tt>
-<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-docstring">    Updated query parameter. Does not update the url if value is None.</tt> </tt>
-<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">url</tt> </tt>
-<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">    <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">    <tt class="py-name">q</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
-<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">q</tt><tt class="py-op">)</tt> </tt>
-<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"> </tt>
-<a name="key2param"></a><div id="key2param-def"><a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"> </tt>
-<a name="L119"></a><tt class="py-lineno">119</tt> <a class="py-toggle" href="#" id="key2param-toggle" onclick="return toggle('key2param');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#key2param">key2param</a><tt class="py-op">(</tt><tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="key2param-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="key2param-expanded"><a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">  <tt class="py-docstring">"""Converts key names into parameter names.</tt> </tt>
-<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring">  For example, converting "max-results" -&gt; "max_results"</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">  Replaces the current value if it already exists in the URL.</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring">    url: string, url to add the query parameter to.</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">    name: string, query parameter name.</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring">    value: string, query parameter value.</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-docstring">    Updated query parameter. Does not update the url if value is None.</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">url</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">    <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">    <tt class="py-name">q</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">q</tt><tt class="py-op">)</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"> </tt>
+<a name="key2param"></a><div id="key2param-def"><a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <a class="py-toggle" href="#" id="key2param-toggle" onclick="return toggle('key2param');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#key2param">key2param</a><tt class="py-op">(</tt><tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="key2param-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="key2param-expanded"><a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">  <tt class="py-docstring">"""Converts key names into parameter names.</tt> </tt>
 <a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-docstring">    key: string, the method key name.</tt> </tt>
-<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-docstring">    A safe method name based on the key name.</tt> </tt>
-<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">  <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">  <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
-<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">key</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">isalpha</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">    <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
-<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">key</tt><tt class="py-op">:</tt> </tt>
-<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">isalnum</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">      <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
-<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">      <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">)</tt> </tt>
-<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"> </tt>
-<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"> </tt>
-<a name="build"></a><div id="build-def"><a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"> </tt>
-<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">positional</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L144"></a><tt class="py-lineno">144</tt> <a class="py-toggle" href="#" id="build-toggle" onclick="return toggle('build');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#build">build</a><tt class="py-op">(</tt><tt class="py-param">serviceName</tt><tt class="py-op">,</tt> </tt>
-<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">          <tt class="py-param">version</tt><tt class="py-op">,</tt> </tt>
-<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">          <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">          <tt class="py-param">discoveryServiceUrl</tt><tt class="py-op">=</tt><tt id="link-53" class="py-name"><a title="apiclient.discovery.DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-53', 'DISCOVERY_URI', 'link-48');">DISCOVERY_URI</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">          <tt class="py-param">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">          <tt class="py-param">model</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">          <tt class="py-param">requestBuilder</tt><tt class="py-op">=</tt><tt id="link-54" class="py-name"><a title="apiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-54', 'HttpRequest', 'link-21');">HttpRequest</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="build-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="build-expanded"><a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">  <tt class="py-docstring">"""Construct a Resource for interacting with an API.</tt> </tt>
-<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-docstring">  Construct a Resource object for interacting with an API. The serviceName and</tt> </tt>
-<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-docstring">  version are the names from the Discovery service.</tt> </tt>
-<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-docstring">    serviceName: string, name of the service.</tt> </tt>
-<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-docstring">    version: string, the version of the service.</tt> </tt>
-<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-docstring">    http: httplib2.Http, An instance of httplib2.Http or something that acts</tt> </tt>
-<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-docstring">      like it that HTTP requests will be made through.</tt> </tt>
-<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-docstring">    discoveryServiceUrl: string, a URI Template that points to the location of</tt> </tt>
-<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-docstring">      the discovery service. It should have two parameters {api} and</tt> </tt>
-<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-docstring">      {apiVersion} that when filled in produce an absolute URI to the discovery</tt> </tt>
-<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-docstring">      document for that service.</tt> </tt>
-<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-docstring">    developerKey: string, key obtained from</tt> </tt>
-<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-docstring">      https://code.google.com/apis/console.</tt> </tt>
-<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-docstring">    model: apiclient.Model, converts to and from the wire format.</tt> </tt>
-<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-docstring">    requestBuilder: apiclient.http.HttpRequest, encapsulator for an HTTP</tt> </tt>
-<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-docstring">      request.</tt> </tt>
-<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-docstring">    A Resource object with methods for interacting with the service.</tt> </tt>
-<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">  <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">      <tt class="py-string">'api'</tt><tt class="py-op">:</tt> <tt class="py-name">serviceName</tt><tt class="py-op">,</tt> </tt>
-<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">      <tt class="py-string">'apiVersion'</tt><tt class="py-op">:</tt> <tt class="py-name">version</tt> </tt>
-<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">      <tt class="py-op">}</tt> </tt>
-<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"> </tt>
-<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-55" class="py-name"><a title="apiclient.http
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring">  For example, converting "max-results" -&gt; "max_results"</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-docstring">    key: string, the method key name.</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-docstring">    A safe method name based on the key name.</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">  <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">  <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">key</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">isalpha</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">    <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">key</tt><tt class="py-op">:</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">isalnum</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">      <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">      <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">)</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"> </tt>
+<a name="build"></a><div id="build-def"><a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">positional</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <a class="py-toggle" href="#" id="build-toggle" onclick="return toggle('build');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#build">build</a><tt class="py-op">(</tt><tt class="py-param">serviceName</tt><tt class="py-op">,</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">          <tt class="py-param">version</tt><tt class="py-op">,</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">          <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">          <tt class="py-param">discoveryServiceUrl</tt><tt class="py-op">=</tt><tt id="link-53" class="py-name"><a title="apiclient.discovery.DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-53', 'DISCOVERY_URI', 'link-48');">DISCOVERY_URI</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">          <tt class="py-param">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">          <tt class="py-param">model</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">          <tt class="py-param">requestBuilder</tt><tt class="py-op">=</tt><tt id="link-54" class="py-name"><a title="apiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-54', 'HttpRequest', 'link-21');">HttpRequest</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="build-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="build-expanded"><a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">  <tt class="py-docstring">"""Construct a Resource for interacting with an API.</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-docstring">  Construct a Resource object for interacting with an API. The serviceName and</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-docstring">  version are the names from the Discovery service.</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-docstring">    serviceName: string, name of the service.</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-docstring">    version: string, the version of the service.</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-docstring">    http: httplib2.Http, An instance of httplib2.Http or something that acts</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-docstring">      like it that HTTP requests will be made through.</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-docstring">    discoveryServiceUrl: string, a URI Template that points to the location of</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-docstring">      the discovery service. It should have two parameters {api} and</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-docstring">      {apiVersion} that when filled in produce an absolute URI to the discovery</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-docstring">      document for that service.</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-docstring">    developerKey: string, key obtained from</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-docstring">      https://code.google.com/apis/console.</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-docstring">    model: apiclient.Model, converts to and from the wire format.</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-docstring">    requestBuilder: apiclient.http.HttpRequest, encapsulator for an HTTP</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-docstring">      request.</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-docstring">    A Resource object with methods for interacting with the service.</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">  <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">      <tt class="py-string">'api'</tt><tt class="py-op">:</tt> <tt class="py-name">serviceName</tt><tt class="py-op">,</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">      <tt class="py-string">'apiVersion'</tt><tt class="py-op">:</tt> <tt class="py-name">version</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">      <tt class="py-op">}</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-55" class="py-name"><a title="apiclient.http
 oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-55', 'http', 'link-20');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">    <tt id="link-56" class="py-name"><a title="apiclient.http
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">    <tt id="link-56" class="py-name"><a title="apiclient.http
 oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-56', 'http', 'link-20');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"> </tt>
-<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">  <tt class="py-name">requested_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt class="py-name">discoveryServiceUrl</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
 <a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"> </tt>
-<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">  <tt class="py-comment"># REMOTE_ADDR is defined by the CGI spec [RFC3875] as the environment</tt> </tt>
-<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">  <tt class="py-comment"># variable that contains the network address of the client sending the</tt> </tt>
-<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">  <tt class="py-comment"># request. If it exists then add that to the request for the discovery</tt> </tt>
-<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">  <tt class="py-comment"># document to avoid exceeding the quota on discovery requests.</tt> </tt>
-<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'REMOTE_ADDR'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">:</tt> </tt>
-<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">    <tt class="py-name">requested_url</tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name" targets="Function apiclient.discovery._add_query_parameter()=apiclient.discovery-module.html#_add_query_parameter"><a title="apiclient.discovery._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-57', '_add_query_parameter', 'link-57');">_add_query_parameter</a></tt><tt class="py-op">(</tt><tt class="py-name">requested_url</tt><tt class="py-op">,</tt> <tt class="py-string">'userIp'</tt><tt class="py-op">,</tt> </tt>
-<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">                                         <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">'REMOTE_ADDR'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">  <tt id="link-58" class="py-name"><a title="apiclient.discovery.logger
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">  <tt class="py-name">requested_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt class="py-name">discoveryServiceUrl</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">  <tt class="py-comment"># REMOTE_ADDR is defined by the CGI spec [RFC3875] as the environment</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">  <tt class="py-comment"># variable that contains the network address of the client sending the</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">  <tt class="py-comment"># request. If it exists then add that to the request for the discovery</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">  <tt class="py-comment"># document to avoid exceeding the quota on discovery requests.</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'REMOTE_ADDR'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">:</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">    <tt class="py-name">requested_url</tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name" targets="Function apiclient.discovery._add_query_parameter()=apiclient.discovery-module.html#_add_query_parameter"><a title="apiclient.discovery._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-57', '_add_query_parameter', 'link-57');">_add_query_parameter</a></tt><tt class="py-op">(</tt><tt class="py-name">requested_url</tt><tt class="py-op">,</tt> <tt class="py-string">'userIp'</tt><tt class="py-op">,</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">                                         <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">'REMOTE_ADDR'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">  <tt id="link-58" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
@@ -263,23 +265,23 @@
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
 oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-58', 'logger', 'link-45');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'URL being requested: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">requested_url</tt><tt class="py-op">)</tt> </tt>
-<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"> </tt>
-<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">  <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name"><a title="apiclient.http
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line"> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">  <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name"><a title="apiclient.http
 oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-59', 'http', 'link-20');">http</a></tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method apiclient.http.HttpMock.request()=apiclient.http.HttpMock-class.html#request,Method apiclient.http.HttpMockSequence.request()=apiclient.http.HttpMockSequence-class.html#request,Method apiclient.model.BaseModel.request()=apiclient.model.BaseModel-class.html#request,Method apiclient.model.Model.request()=apiclient.model.Model-class.html#request"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
 apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-60', 'request', 'link-60');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">requested_url</tt><tt class="py-op">)</tt> </tt>
-<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line"> </tt>
-<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">404</tt><tt class="py-op">:</tt> </tt>
-<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-61" class="py-name"><a title="apiclient.errors.UnknownApiNameOrVersion" class="py-name" href="#" onclick="return doclink('link-61', 'UnknownApiNameOrVersion', 'link-15');">UnknownApiNameOrVersion</a></tt><tt class="py-op">(</tt><tt class="py-string">"name: %s  version: %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">serviceName</tt><tt class="py-op">,</tt> </tt>
-<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">                                                            <tt class="py-name">version</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">400</tt><tt class="py-op">:</tt> </tt>
-<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-62" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-62', 'HttpError', 'link-3');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">requested_url</tt><tt class="py-op">)</tt> </tt>
-<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"> </tt>
-<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">    <tt class="py-name">service</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-63', 'loads', 'link-63');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">  <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">    <tt id="link-64" class="py-name"><a title="apiclient.discovery.logger
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line"> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">404</tt><tt class="py-op">:</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-61" class="py-name"><a title="apiclient.errors.UnknownApiNameOrVersion" class="py-name" href="#" onclick="return doclink('link-61', 'UnknownApiNameOrVersion', 'link-15');">UnknownApiNameOrVersion</a></tt><tt class="py-op">(</tt><tt class="py-string">"name: %s  version: %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">serviceName</tt><tt class="py-op">,</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">                                                            <tt class="py-name">version</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">400</tt><tt class="py-op">:</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-62" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-62', 'HttpError', 'link-3');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">requested_url</tt><tt class="py-op">)</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">    <tt class="py-name">service</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-63', 'loads', 'link-63');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">  <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">    <tt id="link-64" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
@@ -287,672 +289,720 @@
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
 oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-64', 'logger', 'link-45');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Failed to parse as JSON: '</tt> <tt class="py-op">+</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-65" class="py-name"><a title="apiclient.errors.InvalidJsonError" class="py-name" href="#" onclick="return doclink('link-65', 'InvalidJsonError', 'link-6');">InvalidJsonError</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line"> </tt>
-<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-66" class="py-name" targets="Function apiclient.discovery.build_from_document()=apiclient.discovery-module.html#build_from_document"><a title="apiclient.discovery.build_from_document" class="py-name" href="#" onclick="return doclink('link-66', 'build_from_document', 'link-66');">build_from_document</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">base</tt><tt class="py-op">=</tt><tt class="py-name">discoveryServiceUrl</tt><tt class="py-op">,</tt> <tt id="link-67" class="py-name"><a title="apiclient.http
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-65" class="py-name"><a title="apiclient.errors.InvalidJsonError" class="py-name" href="#" onclick="return doclink('link-65', 'InvalidJsonError', 'link-6');">InvalidJsonError</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-66" class="py-name" targets="Function apiclient.discovery.build_from_document()=apiclient.discovery-module.html#build_from_document"><a title="apiclient.discovery.build_from_document" class="py-name" href="#" onclick="return doclink('link-66', 'build_from_document', 'link-66');">build_from_document</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">base</tt><tt class="py-op">=</tt><tt class="py-name">discoveryServiceUrl</tt><tt class="py-op">,</tt> <tt id="link-67" class="py-name"><a title="apiclient.http
 oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-67', 'http', 'link-20');">http</a></tt><tt class="py-op">=</tt><tt id="link-68" class="py-name"><a title="apiclient.http
 oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-68', 'http', 'link-20');">http</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">      <tt class="py-name">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">developerKey</tt><tt class="py-op">,</tt> <tt id="link-69" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-69', 'model', 'link-29');">model</a></tt><tt class="py-op">=</tt><tt id="link-70" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-70', 'model', 'link-29');">model</a></tt><tt class="py-op">,</tt> <tt class="py-name">requestBuilder</tt><tt class="py-op">=</tt><tt class="py-name">requestBuilder</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line"> </tt>
-<a name="build_from_document"></a><div id="build_from_document-def"><a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line"> </tt>
-<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">positional</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L212"></a><tt class="py-lineno">212</tt> <a class="py-toggle" href="#" id="build_from_document-toggle" onclick="return toggle('build_from_document');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#build_from_document">build_from_document</a><tt class="py-op">(</tt> </tt>
-<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">    <tt class="py-param">service</tt><tt class="py-op">,</tt> </tt>
-<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">    <tt class="py-param">base</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">    <tt class="py-param">future</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">    <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">    <tt class="py-param">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">    <tt class="py-param">model</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">    <tt class="py-param">requestBuilder</tt><tt class="py-op">=</tt><tt id="link-71" class="py-name"><a title="apiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-71', 'HttpRequest', 'link-21');">HttpRequest</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="build_from_document-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="build_from_document-expanded"><a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">  <tt class="py-docstring">"""Create a Resource for interacting with an API.</tt> </tt>
-<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-docstring">  Same as `build()`, but constructs the Resource object from a discovery</tt> </tt>
-<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-docstring">  document that is it given, as opposed to retrieving one over HTTP.</tt> </tt>
-<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-docstring">    service: string, discovery document.</tt> </tt>
-<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"><tt class="py-docstring">    base: string, base URI for all HTTP requests, usually the discovery URI.</tt> </tt>
-<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"><tt class="py-docstring">      This parameter is no longer used as rootUrl and servicePath are included</tt> </tt>
-<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"><tt class="py-docstring">      within the discovery document. (deprecated)</tt> </tt>
-<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"><tt class="py-docstring">    future: string, discovery document with future capabilities (deprecated).</tt> </tt>
-<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"><tt class="py-docstring">    http: httplib2.Http, An instance of httplib2.Http or something that acts</tt> </tt>
-<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"><tt class="py-docstring">      like it that HTTP requests will be made through.</tt> </tt>
-<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-docstring">    developerKey: string, Key for controlling API usage, generated</tt> </tt>
-<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-docstring">      from the API Console.</tt> </tt>
-<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-docstring">    model: Model class instance that serializes and de-serializes requests and</tt> </tt>
-<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"><tt class="py-docstring">      responses.</tt> </tt>
-<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line"><tt class="py-docstring">    requestBuilder: Takes an http request and packages it up to be executed.</tt> </tt>
-<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"><tt class="py-docstring">    A Resource object with methods for interacting with the service.</tt> </tt>
-<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"> </tt>
-<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">  <tt class="py-comment"># future is no longer used.</tt> </tt>
-<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">  <tt class="py-name">future</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line"> </tt>
-<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">  <tt class="py-name">service</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-72', 'loads', 'link-63');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">service</tt><tt class="py-op">)</tt> </tt>
-<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">  <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urljoin</tt><tt class="py-op">(</tt><tt class="py-name">service</tt><tt class="py-op">[</tt><tt class="py-string">'rootUrl'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">service</tt><tt class="py-op">[</tt><tt class="py-string">'servicePath'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">  <tt id="link-73" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-73', 'schema', 'link-38');">schema</a></tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="apiclient.schema.Schemas" class="py-name" href="#" onclick="return doclink('link-74', 'Schemas', 'link-39');">Schemas</a></tt><tt class="py-op">(</tt><tt class="py-name">service</tt><tt class="py-op">)</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">      <tt class="py-name">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">developerKey</tt><tt class="py-op">,</tt> <tt id="link-69" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-69', 'model', 'link-29');">model</a></tt><tt class="py-op">=</tt><tt id="link-70" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-70', 'model', 'link-29');">model</a></tt><tt class="py-op">,</tt> <tt class="py-name">requestBuilder</tt><tt class="py-op">=</tt><tt class="py-name">requestBuilder</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"> </tt>
+<a name="build_from_document"></a><div id="build_from_document-def"><a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">positional</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <a class="py-toggle" href="#" id="build_from_document-toggle" onclick="return toggle('build_from_document');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#build_from_document">build_from_document</a><tt class="py-op">(</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">    <tt class="py-param">service</tt><tt class="py-op">,</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">    <tt class="py-param">base</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">    <tt class="py-param">future</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">    <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">    <tt class="py-param">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">    <tt class="py-param">model</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">    <tt class="py-param">requestBuilder</tt><tt class="py-op">=</tt><tt id="link-71" class="py-name"><a title="apiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-71', 'HttpRequest', 'link-21');">HttpRequest</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="build_from_document-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="build_from_document-expanded"><a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">  <tt class="py-docstring">"""Create a Resource for interacting with an API.</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-docstring">  Same as `build()`, but constructs the Resource object from a discovery</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"><tt class="py-docstring">  document that is it given, as opposed to retrieving one over HTTP.</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"><tt class="py-docstring">    service: string or object, the JSON discovery document describing the API.</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"><tt class="py-docstring">      The value passed in may either be the JSON string or the deserialized</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"><tt class="py-docstring">      JSON.</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"><tt class="py-docstring">    base: string, base URI for all HTTP requests, usually the discovery URI.</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"><tt class="py-docstring">      This parameter is no longer used as rootUrl and servicePath are included</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-docstring">      within the discovery document. (deprecated)</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-docstring">    future: string, discovery document with future capabilities (deprecated).</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-docstring">    http: httplib2.Http, An instance of httplib2.Http or something that acts</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"><tt class="py-docstring">      like it that HTTP requests will be made through.</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line"><tt class="py-docstring">    developerKey: string, Key for controlling API usage, generated</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line"><tt class="py-docstring">      from the API Console.</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line"><tt class="py-docstring">    model: Model class instance that serializes and de-serializes requests and</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"><tt class="py-docstring">      responses.</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"><tt class="py-docstring">    requestBuilder: Takes an http request and packages it up to be executed.</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line"><tt class="py-docstring">    A Resource object with methods for interacting with the service.</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">  <tt class="py-comment"># future is no longer used.</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">  <tt class="py-name">future</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
 <a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"> </tt>
-<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-75" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-75', 'model', 'link-29');">model</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">    <tt class="py-name">features</tt> <tt class="py-op">=</tt> <tt class="py-name">service</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">service</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">    <tt class="py-name">service</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-72', 'loads', 'link-63');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">service</tt><tt class="py-op">)</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">  <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urljoin</tt><tt class="py-op">(</tt><tt class="py-name">service</tt><tt class="py-op">[</tt><tt class="py-string">'rootUrl'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">service</tt><tt class="py-op">[</tt><tt class="py-string">'servicePath'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">  <tt id="link-73" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-73', 'schema', 'link-38');">schema</a></tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="apiclient.schema.Schemas" class="py-name" href="#" onclick="return doclink('link-74', 'Schemas', 'link-39');">Schemas</a></tt><tt class="py-op">(</tt><tt class="py-name">service</tt><tt class="py-op">)</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-75" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-75', 'model', 'link-29');">model</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">    <tt class="py-name">features</tt> <tt class="py-op">=</tt> <tt class="py-name">service</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
 oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-76', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'features'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">    <tt id="link-77" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-77', 'model', 'link-29');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-78" class="py-name"><a title="apiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-78', 'JsonModel', 'link-30');">JsonModel</a></tt><tt class="py-op">(</tt><tt class="py-string">'dataWrapper'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">features</tt><tt class="py-op">)</tt> </tt>
-<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">  <tt class="py-name">resource</tt> <tt class="py-op">=</tt> <tt id="link-79" class="py-name" targets="Function apiclient.discovery._createResource()=apiclient.discovery-module.html#_createResource"><a title="apiclient.discovery._createResource" class="py-name" href="#" onclick="return doclink('link-79', '_createResource', 'link-79');">_createResource</a></tt><tt class="py-op">(</tt><tt id="link-80" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-80', 'http', 'link-20');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">base</tt><tt class="py-op">,</tt> <tt id="link-81" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-81', 'model', 'link-29');">model</a></tt><tt class="py-op">,</tt> <tt class="py-name">requestBuilder</tt><tt class="py-op">,</tt> <tt class="py-name">developerKey</tt><tt class="py-op">,</tt> </tt>
-<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line">                       <tt class="py-name">service</tt><tt class="py-op">,</tt> <tt class="py-name">service</tt><tt class="py-op">,</tt> <tt id="link-82" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-82', 'schema', 'link-38');">schema</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line"> </tt>
-<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">resource</tt> </tt>
-</div><a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line"> </tt>
-<a name="_cast"></a><div id="_cast-def"><a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line"> </tt>
-<a name="L259"></a><tt class="py-lineno">259</tt> <a class="py-toggle" href="#" id="_cast-toggle" onclick="return toggle('_cast');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#_cast">_cast</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">,</tt> <tt class="py-param">schema_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_cast-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_cast-expanded"><a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">  <tt class="py-docstring">"""Convert value to a string based on JSON Schema type.</tt> </tt>
-<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"><tt class="py-docstring">  See http://tools.ietf.org/html/draft-zyp-json-schema-03 for more details on</tt> </tt>
-<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line"><tt class="py-docstring">  JSON Schema.</tt> </tt>
-<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"><tt class="py-docstring">    value: any, the value to convert</tt> </tt>
-<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line"><tt class="py-docstring">    schema_type: string, the type that value should be interpreted as</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">    <tt id="link-77" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-77', 'model', 'link-29');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-78" class="py-name"><a title="apiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-78', 'JsonModel', 'link-30');">JsonModel</a></tt><tt class="py-op">(</tt><tt class="py-string">'dataWrapper'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">features</tt><tt class="py-op">)</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-79" class="py-name" targets="Class apiclient.discovery.Resource=apiclient.discovery.Resource-class.html"><a title="apiclient.discovery.Resource" class="py-name" href="#" onclick="return doclink('link-79', 'Resource', 'link-79');">Resource</a></tt><tt class="py-op">(</tt><tt id="link-80" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-80', 'http', 'link-20');">http</a></tt><tt class="py-op">=</tt><tt id="link-81" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-81', 'http', 'link-20');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">baseUrl</tt><tt class="py-op">=</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt id="link-82" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-82', 'model', 'link-29');">model</a></tt><tt class="py-op">=</tt><tt id="link-83" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-83', 'model', 'link-29');">model</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">                  <tt class="py-name">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">developerKey</tt><tt class="py-op">,</tt> <tt class="py-name">requestBuilder</tt><tt class="py-op">=</tt><tt class="py-name">requestBuilder</tt><tt class="py-op">,</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">                  <tt class="py-name">resourceDesc</tt><tt class="py-op">=</tt><tt class="py-name">service</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">=</tt><tt class="py-name">service</tt><tt class="py-op">,</tt> <tt id="link-84" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-84', 'schema', 'link-38');">schema</a></tt><tt class="py-op">=</tt><tt id="link-85" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-85', 'schema', 'link-38');">schema</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"> </tt>
+<a name="_cast"></a><div id="_cast-def"><a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt> <a class="py-toggle" href="#" id="_cast-toggle" onclick="return toggle('_cast');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#_cast">_cast</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">,</tt> <tt class="py-param">schema_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_cast-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_cast-expanded"><a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">  <tt class="py-docstring">"""Convert value to a string based on JSON Schema type.</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"><tt class="py-docstring">  See http://tools.ietf.org/html/draft-zyp-json-schema-03 for more details on</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line"><tt class="py-docstring">  JSON Schema.</tt> </tt>
 <a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"><tt class="py-docstring">    A string representation of 'value' based on the schema_type.</tt> </tt>
-<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'string'</tt><tt class="py-op">:</tt> </tt>
-<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">u''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt>
-<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
-<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">  <tt class="py-keyword">elif</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'integer'</tt><tt class="py-op">:</tt> </tt>
-<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">  <tt class="py-keyword">elif</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'number'</tt><tt class="py-op">:</tt> </tt>
-<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">  <tt class="py-keyword">elif</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'boolean'</tt><tt class="py-op">:</tt> </tt>
-<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">u''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt>
-<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line"> </tt>
-<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line"> </tt>
-<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line"><tt id="link-83" class="py-name" targets="Variable apiclient.discovery.MULTIPLIERS=apiclient.discovery-module.html#MULTIPLIERS"><a title="apiclient.discovery.MULTIPLIERS" class="py-name" href="#" onclick="return doclink('link-83', 'MULTIPLIERS', 'link-83');">MULTIPLIERS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">    <tt class="py-string">"KB"</tt><tt class="py-op">:</tt> <tt class="py-number">2</tt> <tt class="py-op">**</tt> <tt class="py-number">10</tt><tt class="py-op">,</tt> </tt>
-<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line">    <tt class="py-string">"MB"</tt><tt class="py-op">:</tt> <tt class="py-number">2</tt> <tt class="py-op">**</tt> <tt class="py-number">20</tt><tt class="py-op">,</tt> </tt>
-<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">    <tt class="py-string">"GB"</tt><tt class="py-op">:</tt> <tt class="py-number">2</tt> <tt class="py-op">**</tt> <tt class="py-number">30</tt><tt class="py-op">,</tt> </tt>
-<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">    <tt class="py-string">"TB"</tt><tt class="py-op">:</tt> <tt class="py-number">2</tt> <tt class="py-op">**</tt> <tt class="py-number">40</tt><tt class="py-op">,</tt> </tt>
-<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
-<a name="_media_size_to_long"></a><div id="_media_size_to_long-def"><a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line"> </tt>
-<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line"> </tt>
-<a name="L298"></a><tt class="py-lineno">298</tt> <a class="py-toggle" href="#" id="_media_size_to_long-toggle" onclick="return toggle('_media_size_to_long');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#_media_size_to_long">_media_size_to_long</a><tt class="py-op">(</tt><tt class="py-param">maxSize</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_media_size_to_long-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_media_size_to_long-expanded"><a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">  <tt class="py-docstring">"""Convert a string media size, such as 10GB or 3TB into an integer.</tt> </tt>
-<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line"><tt class="py-docstring">    maxSize: string, size as a string, such as 2MB or 7GB.</tt> </tt>
-<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line"><tt class="py-docstring">    The size as an integer value.</tt> </tt>
-<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">maxSize</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
-<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
-<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">  <tt class="py-name">units</tt> <tt class="py-op">=</tt> <tt class="py-name">maxSize</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line">  <tt class="py-name">multiplier</tt> <tt class="py-op">=</tt> <tt id="link-84" class="py-name"><a title="apiclient.discovery.MULTIPLIERS" class="py-name" href="#" onclick="return doclink('link-84', 'MULTIPLIERS', 'link-83');">MULTIPLIERS</a></tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"><tt class="py-docstring">    value: any, the value to convert</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"><tt class="py-docstring">    schema_type: string, the type that value should be interpreted as</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"><tt class="py-docstring">    A string representation of 'value' based on the schema_type.</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'string'</tt><tt class="py-op">:</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">u''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">  <tt class="py-keyword">elif</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'integer'</tt><tt class="py-op">:</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">  <tt class="py-keyword">elif</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'number'</tt><tt class="py-op">:</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">  <tt class="py-keyword">elif</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'boolean'</tt><tt class="py-op">:</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">u''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line"> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line"> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line"><tt id="link-86" class="py-name" targets="Variable apiclient.discovery.MULTIPLIERS=apiclient.discovery-module.html#MULTIPLIERS"><a title="apiclient.discovery.MULTIPLIERS" class="py-name" href="#" onclick="return doclink('link-86', 'MULTIPLIERS', 'link-86');">MULTIPLIERS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">    <tt class="py-string">"KB"</tt><tt class="py-op">:</tt> <tt class="py-number">2</tt> <tt class="py-op">**</tt> <tt class="py-number">10</tt><tt class="py-op">,</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">    <tt class="py-string">"MB"</tt><tt class="py-op">:</tt> <tt class="py-number">2</tt> <tt class="py-op">**</tt> <tt class="py-number">20</tt><tt class="py-op">,</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">    <tt class="py-string">"GB"</tt><tt class="py-op">:</tt> <tt class="py-number">2</tt> <tt class="py-op">**</tt> <tt class="py-number">30</tt><tt class="py-op">,</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">    <tt class="py-string">"TB"</tt><tt class="py-op">:</tt> <tt class="py-number">2</tt> <tt class="py-op">**</tt> <tt class="py-number">40</tt><tt class="py-op">,</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="_media_size_to_long"></a><div id="_media_size_to_long-def"><a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line"> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line"> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt> <a class="py-toggle" href="#" id="_media_size_to_long-toggle" onclick="return toggle('_media_size_to_long');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#_media_size_to_long">_media_size_to_long</a><tt class="py-op">(</tt><tt class="py-param">maxSize</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_media_size_to_long-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_media_size_to_long-expanded"><a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">  <tt class="py-docstring">"""Convert a string media size, such as 10GB or 3TB into an integer.</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line"><tt class="py-docstring">    maxSize: string, size as a string, such as 2MB or 7GB.</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line"><tt class="py-docstring">    The size as an integer value.</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">maxSize</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line">  <tt class="py-name">units</tt> <tt class="py-op">=</tt> <tt class="py-name">maxSize</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">  <tt class="py-name">multiplier</tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="apiclient.discovery.MULTIPLIERS" class="py-name" href="#" onclick="return doclink('link-87', 'MULTIPLIERS', 'link-86');">MULTIPLIERS</a></tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-85', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">units</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">multiplier</tt><tt class="py-op">:</tt> </tt>
-<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">maxSize</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-name">multiplier</tt> </tt>
-<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">maxSize</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line"> </tt>
-<a name="_createResource"></a><div id="_createResource-def"><a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line"> </tt>
-<a name="L317"></a><tt class="py-lineno">317</tt> <a class="py-toggle" href="#" id="_createResource-toggle" onclick="return toggle('_createResource');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#_createResource">_createResource</a><tt class="py-op">(</tt><tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">baseUrl</tt><tt class="py-op">,</tt> <tt class="py-param">model</tt><tt class="py-op">,</tt> <tt class="py-param">requestBuilder</tt><tt class="py-op">,</tt> </tt>
-<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line">                   <tt class="py-param">developerKey</tt><tt class="py-op">,</tt> <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_createResource-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_createResource-expanded"><a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line">  <tt class="py-docstring">"""Build a Resource from the API description.</tt> </tt>
-<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line"><tt class="py-docstring">    http: httplib2.Http, Object to make http requests with.</tt> </tt>
-<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line"><tt class="py-docstring">    baseUrl: string, base URL for the API. All requests are relative to this</tt> </tt>
-<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line"><tt class="py-docstring">      URI.</tt> </tt>
-<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line"><tt class="py-docstring">    model: apiclient.Model, converts to and from the wire format.</tt> </tt>
-<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line"><tt class="py-docstring">    requestBuilder: class or callable that instantiates an</tt> </tt>
-<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line"><tt class="py-docstring">      apiclient.HttpRequest object.</tt> </tt>
-<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line"><tt class="py-docstring">    developerKey: string, key obtained from</tt> </tt>
-<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line"><tt class="py-docstring">      https://code.google.com/apis/console</tt> </tt>
-<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line"><tt class="py-docstring">    resourceDesc: object, section of deserialized discovery document that</tt> </tt>
-<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line"><tt class="py-docstring">      describes a resource. Note that the top level discovery document</tt> </tt>
-<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line"><tt class="py-docstring">      is considered a resource.</tt> </tt>
-<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line"><tt class="py-docstring">    rootDesc: object, the entire deserialized discovery document.</tt> </tt>
-<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line"><tt class="py-docstring">    schema: object, mapping of schema names to schema descriptions.</tt> </tt>
-<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line"><tt class="py-docstring">    An instance of Resource with all the methods attached for interacting with</tt> </tt>
-<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line"><tt class="py-docstring">    that resource.</tt> </tt>
-<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line"> </tt>
-<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">  <tt class="py-keyword">class</tt> <tt class="py-def-name">Resource</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">    <tt class="py-docstring">"""A class for interacting with a resource."""</tt> </tt>
-<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line"> </tt>
-<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt> <tt class="py-op">=</tt> <tt id="link-86" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-86', 'http', 'link-20');">http</a></tt> </tt>
-<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt> <tt class="py-op">=</tt> <tt class="py-name">baseUrl</tt> </tt>
-<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-87', 'model', 'link-29');">model</a></tt> </tt>
-<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt> <tt class="py-op">=</tt> <tt class="py-name">developerKey</tt> </tt>
-<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requestBuilder</tt> <tt class="py-op">=</tt> <tt class="py-name">requestBuilder</tt> </tt>
-</div></div><a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line"> </tt>
-<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">createMethod</tt><tt class="py-op">(</tt><tt class="py-param">theclass</tt><tt class="py-op">,</tt> <tt class="py-param">methodName</tt><tt class="py-op">,</tt> <tt class="py-param">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line">    <tt class="py-docstring">"""Creates a method for attaching to a Resource.</tt> </tt>
-<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line"><tt class="py-docstring">      theclass: type, the class to attach methods to.</tt> </tt>
-<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line"><tt class="py-docstring">      methodName: string, name of the method to use.</tt> </tt>
-<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line"><tt class="py-docstring">      methodDesc: object, fragment of deserialized discovery document that</tt> </tt>
-<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line"><tt class="py-docstring">        describes the method.</tt> </tt>
-<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line"><tt class="py-docstring">      rootDesc: object, the entire deserialized discovery document.</tt> </tt>
-<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">    <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-88" class="py-name" targets="Function apiclient.discovery.fix_method_name()=apiclient.discovery-module.html#fix_method_name"><a title="apiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-88', 'fix_method_name', 'link-88');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
-<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">    <tt class="py-name">pathUrl</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'path'</tt><tt class="py-op">]</tt> </tt>
-<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line">    <tt class="py-name">httpMethod</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'httpMethod'</tt><tt class="py-op">]</tt> </tt>
-<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line">    <tt class="py-name">methodId</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'id'</tt><tt class="py-op">]</tt> </tt>
-<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line"> </tt>
-<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">    <tt class="py-name">mediaPathUrl</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line">    <tt id="link-89" class="py-name" targets="Variable apiclient.model.BaseModel.accept=apiclient.model.BaseModel-class.html#accept,Variable apiclient.model.JsonModel.accept=apiclient.model.JsonModel-class.html#accept,Variable apiclient.model.MediaModel.accept=apiclient.model.MediaModel-class.html#accept,Variable apiclient.model.ProtocolBufferModel.accept=apiclient.model.ProtocolBufferModel-class.html#accept,Variable apiclient.model.RawModel.accept=apiclient.model.RawModel-class.html#accept"><a title="apiclient.model.BaseModel.accept
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-88', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">units</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">multiplier</tt><tt class="py-op">:</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">maxSize</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-name">multiplier</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">maxSize</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line"> </tt>
+<a name="createMethod"></a><div id="createMethod-def"><a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line"> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt> <a class="py-toggle" href="#" id="createMethod-toggle" onclick="return toggle('createMethod');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#createMethod">createMethod</a><tt class="py-op">(</tt><tt class="py-param">methodName</tt><tt class="py-op">,</tt> <tt class="py-param">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="createMethod-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="createMethod-expanded"><a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">  <tt class="py-docstring">"""Creates a method for attaching to a Resource.</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line"><tt class="py-docstring">    methodName: string, name of the method to use.</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line"><tt class="py-docstring">    methodDesc: object, fragment of deserialized discovery document that</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line"><tt class="py-docstring">      describes the method.</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line"><tt class="py-docstring">    rootDesc: object, the entire deserialized discovery document.</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line"><tt class="py-docstring">    schema: object, mapping of schema names to schema descriptions.</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">  <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-89" class="py-name" targets="Function apiclient.discovery.fix_method_name()=apiclient.discovery-module.html#fix_method_name"><a title="apiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-89', 'fix_method_name', 'link-89');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line">  <tt class="py-name">pathUrl</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'path'</tt><tt class="py-op">]</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line">  <tt class="py-name">httpMethod</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'httpMethod'</tt><tt class="py-op">]</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line">  <tt class="py-name">methodId</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'id'</tt><tt class="py-op">]</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line"> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line">  <tt class="py-name">mediaPathUrl</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">  <tt id="link-90" class="py-name" targets="Variable apiclient.model.BaseModel.accept=apiclient.model.BaseModel-class.html#accept,Variable apiclient.model.JsonModel.accept=apiclient.model.JsonModel-class.html#accept,Variable apiclient.model.MediaModel.accept=apiclient.model.MediaModel-class.html#accept,Variable apiclient.model.ProtocolBufferModel.accept=apiclient.model.ProtocolBufferModel-class.html#accept,Variable apiclient.model.RawModel.accept=apiclient.model.RawModel-class.html#accept"><a title="apiclient.model.BaseModel.accept
 apiclient.model.JsonModel.accept
 apiclient.model.MediaModel.accept
 apiclient.model.ProtocolBufferModel.accept
-apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-89', 'accept', 'link-89');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line">    <tt class="py-name">maxSize</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'mediaUpload'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line">      <tt class="py-name">mediaUpload</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'mediaUpload'</tt><tt class="py-op">]</tt> </tt>
-<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">      <tt class="py-name">mediaPathUrl</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">rootDesc</tt><tt class="py-op">[</tt><tt class="py-string">'rootUrl'</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-string">'upload/'</tt> <tt class="py-op">+</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">[</tt><tt class="py-string">'servicePath'</tt><tt class="py-op">]</tt> </tt>
-<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">                      <tt class="py-op">+</tt> <tt class="py-name">pathUrl</tt><tt class="py-op">)</tt> </tt>
-<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">      <tt id="link-90" class="py-name"><a title="apiclient.model.BaseModel.accept
+apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-90', 'accept', 'link-90');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">  <tt class="py-name">maxSize</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'mediaUpload'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">    <tt class="py-name">mediaUpload</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'mediaUpload'</tt><tt class="py-op">]</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">    <tt class="py-name">mediaPathUrl</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">rootDesc</tt><tt class="py-op">[</tt><tt class="py-string">'rootUrl'</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-string">'upload/'</tt> <tt class="py-op">+</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">[</tt><tt class="py-string">'servicePath'</tt><tt class="py-op">]</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">                    <tt class="py-op">+</tt> <tt class="py-name">pathUrl</tt><tt class="py-op">)</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line">    <tt id="link-91" class="py-name"><a title="apiclient.model.BaseModel.accept
 apiclient.model.JsonModel.accept
 apiclient.model.MediaModel.accept
 apiclient.model.ProtocolBufferModel.accept
-apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-90', 'accept', 'link-89');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-name">mediaUpload</tt><tt class="py-op">[</tt><tt class="py-string">'accept'</tt><tt class="py-op">]</tt> </tt>
-<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line">      <tt class="py-name">maxSize</tt> <tt class="py-op">=</tt> <tt id="link-91" class="py-name" targets="Function apiclient.discovery._media_size_to_long()=apiclient.discovery-module.html#_media_size_to_long"><a title="apiclient.discovery._media_size_to_long" class="py-name" href="#" onclick="return doclink('link-91', '_media_size_to_long', 'link-91');">_media_size_to_long</a></tt><tt class="py-op">(</tt><tt class="py-name">mediaUpload</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="apiclient.schema.Schemas.get
+apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-91', 'accept', 'link-90');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-name">mediaUpload</tt><tt class="py-op">[</tt><tt class="py-string">'accept'</tt><tt class="py-op">]</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line">    <tt class="py-name">maxSize</tt> <tt class="py-op">=</tt> <tt id="link-92" class="py-name" targets="Function apiclient.discovery._media_size_to_long()=apiclient.discovery-module.html#_media_size_to_long"><a title="apiclient.discovery._media_size_to_long" class="py-name" href="#" onclick="return doclink('link-92', '_media_size_to_long', 'link-92');">_media_size_to_long</a></tt><tt class="py-op">(</tt><tt class="py-name">mediaUpload</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-92', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'maxSize'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line"> </tt>
-<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'parameters'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">      <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line"> </tt>
-<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line">    <tt class="py-comment"># Add in the parameters common to all methods.</tt> </tt>
-<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-93', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'maxSize'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line"> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'parameters'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line">    <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line"> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">  <tt class="py-comment"># Add in the parameters common to all methods.</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-93', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line">      <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt> </tt>
-<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line"> </tt>
-<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">    <tt class="py-comment"># Add in undocumented query parameters.</tt> </tt>
-<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt id="link-94" class="py-name"><a title="apiclient.discovery.STACK_QUERY_PARAMETERS" class="py-name" href="#" onclick="return doclink('link-94', 'STACK_QUERY_PARAMETERS', 'link-50');">STACK_QUERY_PARAMETERS</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">      <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line">          <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'string'</tt><tt class="py-op">,</tt> </tt>
-<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line">          <tt class="py-string">'location'</tt><tt class="py-op">:</tt> <tt class="py-string">'query'</tt> </tt>
-<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line">          <tt class="py-op">}</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-94', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">    <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line"> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">  <tt class="py-comment"># Add in undocumented query parameters.</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt id="link-95" class="py-name"><a title="apiclient.discovery.STACK_QUERY_PARAMETERS" class="py-name" href="#" onclick="return doclink('link-95', 'STACK_QUERY_PARAMETERS', 'link-50');">STACK_QUERY_PARAMETERS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line">    <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">        <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'string'</tt><tt class="py-op">,</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">        <tt class="py-string">'location'</tt><tt class="py-op">:</tt> <tt class="py-string">'query'</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line"> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">httpMethod</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'PUT'</tt><tt class="py-op">,</tt> <tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt class="py-string">'PATCH'</tt><tt class="py-op">]</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'request'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">    <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">        <tt class="py-string">'description'</tt><tt class="py-op">:</tt> <tt class="py-string">'The request body.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line">        <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'object'</tt><tt class="py-op">,</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line">        <tt class="py-string">'required'</tt><tt class="py-op">:</tt> <tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'request'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line">      <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'request'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line">      <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'object'</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'mediaUpload'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">    <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'media_body'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">        <tt class="py-string">'description'</tt><tt class="py-op">:</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">          <tt class="py-string">'The filename of the media request body, or an instance of a '</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line">          <tt class="py-string">'MediaUpload object.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line">        <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'string'</tt><tt class="py-op">,</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line">        <tt class="py-string">'required'</tt><tt class="py-op">:</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'body'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line">      <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'required'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line"> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line">  <tt class="py-name">argmap</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> <tt class="py-comment"># Map from method parameter name to query parameter name</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line">  <tt class="py-name">required_params</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-comment"># Required parameters</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">  <tt class="py-name">repeated_params</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-comment"># Repeated parameters</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line">  <tt class="py-name">pattern_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt>  <tt class="py-comment"># Parameters that must match a regex</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">  <tt id="link-96" class="py-name" targets="Variable oauth2client.tools.ClientRedirectServer.query_params=oauth2client.tools.ClientRedirectServer-class.html#query_params"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-96', 'query_params', 'link-96');">query_params</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-comment"># Parameters that will be used in the query string</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line">  <tt class="py-name">path_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> <tt class="py-comment"># Parameters that will be used in the base URL</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line">  <tt class="py-name">param_type</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> <tt class="py-comment"># The type of the parameter</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line">  <tt class="py-name">enum_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> <tt class="py-comment"># Allowable enumeration values for each parameter</tt> </tt>
 <a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line"> </tt>
-<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">httpMethod</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'PUT'</tt><tt class="py-op">,</tt> <tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt class="py-string">'PATCH'</tt><tt class="py-op">]</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'request'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line">      <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">          <tt class="py-string">'description'</tt><tt class="py-op">:</tt> <tt class="py-string">'The request body.'</tt><tt class="py-op">,</tt> </tt>
-<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">          <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'object'</tt><tt class="py-op">,</tt> </tt>
-<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line">          <tt class="py-string">'required'</tt><tt class="py-op">:</tt> <tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
-<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">          <tt class="py-op">}</tt> </tt>
-<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'request'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line">        <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'request'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line">        <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'object'</tt> </tt>
-<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'mediaUpload'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line">      <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'media_body'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">          <tt class="py-string">'description'</tt><tt class="py-op">:</tt> </tt>
-<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">            <tt class="py-string">'The filename of the media request body, or an instance of a '</tt> </tt>
-<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">            <tt class="py-string">'MediaUpload object.'</tt><tt class="py-op">,</tt> </tt>
-<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line">          <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'string'</tt><tt class="py-op">,</tt> </tt>
-<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">          <tt class="py-string">'required'</tt><tt class="py-op">:</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
-<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">          <tt class="py-op">}</tt> </tt>
-<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'body'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line">        <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'required'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line"> </tt>
-<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line">    <tt class="py-name">argmap</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> <tt class="py-comment"># Map from method parameter name to query parameter name</tt> </tt>
-<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line">    <tt class="py-name">required_params</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-comment"># Required parameters</tt> </tt>
-<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">    <tt class="py-name">repeated_params</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-comment"># Repeated parameters</tt> </tt>
-<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">    <tt class="py-name">pattern_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt>  <tt class="py-comment"># Parameters that must match a regex</tt> </tt>
-<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">    <tt id="link-95" class="py-name" targets="Variable oauth2client.tools.ClientRedirectServer.query_params=oauth2client.tools.ClientRedirectServer-class.html#query_params"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-95', 'query_params', 'link-95');">query_params</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-comment"># Parameters that will be used in the query string</tt> </tt>
-<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line">    <tt class="py-name">path_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> <tt class="py-comment"># Parameters that will be used in the base URL</tt> </tt>
-<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line">    <tt class="py-name">param_type</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> <tt class="py-comment"># The type of the parameter</tt> </tt>
-<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line">    <tt class="py-name">enum_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> <tt class="py-comment"># Allowable enumeration values for each parameter</tt> </tt>
-<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line"> </tt>
-<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line"> </tt>
-<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'parameters'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">        <tt class="py-name">param</tt> <tt class="py-op">=</tt> <tt id="link-96" class="py-name" targets="Function apiclient.discovery.key2param()=apiclient.discovery-module.html#key2param"><a title="apiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-96', 'key2param', 'link-96');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">)</tt> </tt>
-<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line">        <tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">arg</tt> </tt>
-<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line"> </tt>
-<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'parameters'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">      <tt class="py-name">param</tt> <tt class="py-op">=</tt> <tt id="link-97" class="py-name" targets="Function apiclient.discovery.key2param()=apiclient.discovery-module.html#key2param"><a title="apiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-97', 'key2param', 'link-97');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">)</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">      <tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">arg</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line"> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-97', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'pattern'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line">          <tt class="py-name">pattern_params</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">[</tt><tt class="py-string">'pattern'</tt><tt class="py-op">]</tt> </tt>
-<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-98', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'pattern'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line">        <tt class="py-name">pattern_params</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">[</tt><tt class="py-string">'pattern'</tt><tt class="py-op">]</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-98', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enum'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line">          <tt class="py-name">enum_params</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">[</tt><tt class="py-string">'enum'</tt><tt class="py-op">]</tt> </tt>
-<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-99', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enum'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line">        <tt class="py-name">enum_params</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">[</tt><tt class="py-string">'enum'</tt><tt class="py-op">]</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-99', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'required'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line">          <tt class="py-name">required_params</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
-<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-100', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'required'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line">        <tt class="py-name">required_params</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-100', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'repeated'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line">          <tt class="py-name">repeated_params</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
-<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-101', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'repeated'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">        <tt class="py-name">repeated_params</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-101', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'location'</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'query'</tt><tt class="py-op">:</tt> </tt>
-<a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line">          <tt id="link-102" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-102', 'query_params', 'link-95');">query_params</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
-<a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-102', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'location'</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'query'</tt><tt class="py-op">:</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">        <tt id="link-103" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-103', 'query_params', 'link-96');">query_params</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-103', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'location'</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'path'</tt><tt class="py-op">:</tt> </tt>
-<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line">          <tt class="py-name">path_params</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">param</tt> </tt>
-<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line">        <tt class="py-name">param_type</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-104', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'location'</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'path'</tt><tt class="py-op">:</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">        <tt class="py-name">path_params</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">param</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">      <tt class="py-name">param_type</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-104', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
-<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line"> </tt>
-<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">match</tt> <tt class="py-keyword">in</tt> <tt id="link-105" class="py-name"><a title="apiclient.discovery.URITEMPLATE" class="py-name" href="#" onclick="return doclink('link-105', 'URITEMPLATE', 'link-46');">URITEMPLATE</a></tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt class="py-name">pathUrl</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">namematch</tt> <tt class="py-keyword">in</tt> <tt id="link-106" class="py-name"><a title="apiclient.discovery.VARNAME" class="py-name" href="#" onclick="return doclink('link-106', 'VARNAME', 'link-47');">VARNAME</a></tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line">        <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt id="link-107" class="py-name"><a title="apiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-107', 'key2param', 'link-96');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">namematch</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line">        <tt class="py-name">path_params</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">name</tt> </tt>
-<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt id="link-108" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-108', 'query_params', 'link-95');">query_params</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line">          <tt id="link-109" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-109', 'query_params', 'link-95');">query_params</a></tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
-<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line"> </tt>
-<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">method</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line">      <tt class="py-comment"># Don't bother with doc string, it will be over-written by createMethod.</tt> </tt>
-<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line"> </tt>
-<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">iterkeys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">argmap</tt><tt class="py-op">:</tt> </tt>
-<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Got an unexpected keyword argument "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
-<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line"> </tt>
-<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line">      <tt class="py-comment"># Remove args that have a value of None.</tt> </tt>
-<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line">      <tt class="py-name">keys</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">keys</tt><tt class="py-op">:</tt> </tt>
-<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line">          <tt class="py-keyword">del</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
-<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line"> </tt>
-<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">required_params</tt><tt class="py-op">:</tt> </tt>
-<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
-<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Missing required parameter "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
-<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line"> </tt>
-<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">regex</tt> <tt class="py-keyword">in</tt> <tt class="py-name">pattern_params</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
-<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line">            <tt class="py-name">pvalues</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
-<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line">          <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">            <tt class="py-name">pvalues</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
-<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">          <tt class="py-keyword">for</tt> <tt class="py-name">pvalue</tt> <tt class="py-keyword">in</tt> <tt class="py-name">pvalues</tt><tt class="py-op">:</tt> </tt>
-<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">regex</tt><tt class="py-op">,</tt> <tt class="py-name">pvalue</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line">              <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt> </tt>
-<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line">                  <tt class="py-string">'Parameter "%s" value "%s" does not match the pattern "%s"'</tt> <tt class="py-op">%</tt> </tt>
-<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line">                  <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">pvalue</tt><tt class="py-op">,</tt> <tt class="py-name">regex</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line"> </tt>
-<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">enums</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enum_params</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
-<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">          <tt class="py-comment"># We need to handle the case of a repeated enum</tt> </tt>
-<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line">          <tt class="py-comment"># name differently, since we want to handle both</tt> </tt>
-<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line">          <tt class="py-comment"># arg='value' and arg=['value1', 'value2']</tt> </tt>
-<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">repeated_params</tt> <tt class="py-keyword">and</tt> </tt>
-<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line">              <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line">            <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
-<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line">          <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line">            <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
-<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line">          <tt class="py-keyword">for</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">values</tt><tt class="py-op">:</tt> </tt>
-<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enums</tt><tt class="py-op">:</tt> </tt>
-<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line">              <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt> </tt>
-<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line">                  <tt class="py-string">'Parameter "%s" value "%s" is not an allowed value in "%s"'</tt> <tt class="py-op">%</tt> </tt>
-<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line">                  <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">enums</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line"> </tt>
-<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line">      <tt class="py-name">actual_query_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line">      <tt class="py-name">actual_path_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line">        <tt class="py-name">to_type</tt> <tt class="py-op">=</tt> <tt class="py-name">param_type</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-105', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line"> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">match</tt> <tt class="py-keyword">in</tt> <tt id="link-106" class="py-name"><a title="apiclient.discovery.URITEMPLATE" class="py-name" href="#" onclick="return doclink('link-106', 'URITEMPLATE', 'link-46');">URITEMPLATE</a></tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt class="py-name">pathUrl</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">namematch</tt> <tt class="py-keyword">in</tt> <tt id="link-107" class="py-name"><a title="apiclient.discovery.VARNAME" class="py-name" href="#" onclick="return doclink('link-107', 'VARNAME', 'link-47');">VARNAME</a></tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line">      <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt id="link-108" class="py-name"><a title="apiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-108', 'key2param', 'link-97');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">namematch</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line">      <tt class="py-name">path_params</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">name</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt id="link-109" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-109', 'query_params', 'link-96');">query_params</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">        <tt id="link-110" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-110', 'query_params', 'link-96');">query_params</a></tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line"> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">method</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line">    <tt class="py-comment"># Don't bother with doc string, it will be over-written by createMethod.</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line"> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">iterkeys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">argmap</tt><tt class="py-op">:</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Got an unexpected keyword argument "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line"> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">    <tt class="py-comment"># Remove args that have a value of None.</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line">    <tt class="py-name">keys</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">keys</tt><tt class="py-op">:</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line"> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">required_params</tt><tt class="py-op">:</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Missing required parameter "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line"> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">regex</tt> <tt class="py-keyword">in</tt> <tt class="py-name">pattern_params</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line">          <tt class="py-name">pvalues</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line">          <tt class="py-name">pvalues</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">pvalue</tt> <tt class="py-keyword">in</tt> <tt class="py-name">pvalues</tt><tt class="py-op">:</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">regex</tt><tt class="py-op">,</tt> <tt class="py-name">pvalue</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line">                <tt class="py-string">'Parameter "%s" value "%s" does not match the pattern "%s"'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">pvalue</tt><tt class="py-op">,</tt> <tt class="py-name">regex</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line"> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">enums</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enum_params</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line">        <tt class="py-comment"># We need to handle the case of a repeated enum</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line">        <tt class="py-comment"># name differently, since we want to handle both</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line">        <tt class="py-comment"># arg='value' and arg=['value1', 'value2']</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">repeated_params</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line">            <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line">          <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line">          <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">values</tt><tt class="py-op">:</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enums</tt><tt class="py-op">:</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line">                <tt class="py-string">'Parameter "%s" value "%s" is not an allowed value in "%s"'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">enums</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line"> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line">    <tt class="py-name">actual_query_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">    <tt class="py-name">actual_path_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line">      <tt class="py-name">to_type</tt> <tt class="py-op">=</tt> <tt class="py-name">param_type</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-110', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
-<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line">        <tt class="py-comment"># For repeated parameters we cast each member of the list.</tt> </tt>
-<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">repeated_params</tt> <tt class="py-keyword">and</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line">          <tt class="py-name">cast_value</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-111" class="py-name" targets="Function apiclient.discovery._cast()=apiclient.discovery-module.html#_cast"><a title="apiclient.discovery._cast" class="py-name" href="#" onclick="return doclink('link-111', '_cast', 'link-111');">_cast</a></tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">to_type</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt><tt class="py-op">]</tt> </tt>
-<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line">          <tt class="py-name">cast_value</tt> <tt class="py-op">=</tt> <tt id="link-112" class="py-name"><a title="apiclient.discovery._cast" class="py-name" href="#" onclick="return doclink('link-112', '_cast', 'link-111');">_cast</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">to_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt id="link-113" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-113', 'query_params', 'link-95');">query_params</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line">          <tt class="py-name">actual_query_params</tt><tt class="py-op">[</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cast_value</tt> </tt>
-<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">path_params</tt><tt class="py-op">:</tt> </tt>
-<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line">          <tt class="py-name">actual_path_params</tt><tt class="py-op">[</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cast_value</tt> </tt>
-<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line">      <tt class="py-name">body_value</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-111', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line">      <tt class="py-comment"># For repeated parameters we cast each member of the list.</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">repeated_params</tt> <tt class="py-keyword">and</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line">        <tt class="py-name">cast_value</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-112" class="py-name" targets="Function apiclient.discovery._cast()=apiclient.discovery-module.html#_cast"><a title="apiclient.discovery._cast" class="py-name" href="#" onclick="return doclink('link-112', '_cast', 'link-112');">_cast</a></tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">to_type</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt><tt class="py-op">]</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">        <tt class="py-name">cast_value</tt> <tt class="py-op">=</tt> <tt id="link-113" class="py-name"><a title="apiclient.discovery._cast" class="py-name" href="#" onclick="return doclink('link-113', '_cast', 'link-112');">_cast</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">to_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt id="link-114" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-114', 'query_params', 'link-96');">query_params</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line">        <tt class="py-name">actual_query_params</tt><tt class="py-op">[</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cast_value</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">path_params</tt><tt class="py-op">:</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line">        <tt class="py-name">actual_path_params</tt><tt class="py-op">[</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cast_value</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line">    <tt class="py-name">body_value</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-114', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line">      <tt class="py-name">media_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-115', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line">    <tt class="py-name">media_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-115', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'media_body'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line"> </tt>
-<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt><tt class="py-op">:</tt> </tt>
-<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">        <tt class="py-name">actual_query_params</tt><tt class="py-op">[</tt><tt class="py-string">'key'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt> </tt>
-<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line"> </tt>
-<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line">      <tt id="link-116" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-116', 'model', 'link-29');">model</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> </tt>
-<a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">methodName</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'_media'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line">        <tt id="link-117" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-117', 'model', 'link-29');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-118" class="py-name"><a title="apiclient.model.MediaModel" class="py-name" href="#" onclick="return doclink('link-118', 'MediaModel', 'link-33');">MediaModel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line">      <tt class="py-keyword">elif</tt> <tt class="py-string">'response'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line">        <tt id="link-119" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-119', 'model', 'link-29');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-120" class="py-name"><a title="apiclient.model.RawModel" class="py-name" href="#" onclick="return doclink('link-120', 'RawModel', 'link-36');">RawModel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line"> </tt>
-<a name="L517"></a><tt class="py-lineno">517</tt>  <tt class="py-line">      <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt id="link-121" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-121', 'model', 'link-29');">model</a></tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="apiclient.http.HttpMock.request
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-116', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'media_body'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line"> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt><tt class="py-op">:</tt> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">      <tt class="py-name">actual_query_params</tt><tt class="py-op">[</tt><tt class="py-string">'key'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line"> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line">    <tt id="link-117" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-117', 'model', 'link-29');">model</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">methodName</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'_media'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line">      <tt id="link-118" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-118', 'model', 'link-29');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-119" class="py-name"><a title="apiclient.model.MediaModel" class="py-name" href="#" onclick="return doclink('link-119', 'MediaModel', 'link-33');">MediaModel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-string">'response'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line">      <tt id="link-120" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-120', 'model', 'link-29');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-121" class="py-name"><a title="apiclient.model.RawModel" class="py-name" href="#" onclick="return doclink('link-121', 'RawModel', 'link-36');">RawModel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line"> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line">    <tt class="py-name">headers</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt id="link-122" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-122', 'model', 'link-29');">model</a></tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-122', 'request', 'link-60');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
-<a name="L519"></a><tt class="py-lineno">519</tt>  <tt class="py-line">          <tt class="py-name">actual_path_params</tt><tt class="py-op">,</tt> <tt class="py-name">actual_query_params</tt><tt class="py-op">,</tt> <tt class="py-name">body_value</tt><tt class="py-op">)</tt> </tt>
-<a name="L520"></a><tt class="py-lineno">520</tt>  <tt class="py-line"> </tt>
-<a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line">      <tt class="py-name">expanded_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt class="py-name">pathUrl</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
-<a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line">      <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urljoin</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> <tt class="py-name">expanded_url</tt> <tt class="py-op">+</tt> <tt class="py-name">query</tt><tt class="py-op">)</tt> </tt>
-<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line"> </tt>
-<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line">      <tt id="link-123" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.resumable()=apiclient.http.MediaIoBaseUpload-class.html#resumable,Method apiclient.http.MediaUpload.resumable()=apiclient.http.MediaUpload-class.html#resumable"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-123', 'resumable', 'link-123');">resumable</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line">      <tt class="py-name">multipart_boundary</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-<a name="L526"></a><tt class="py-lineno">526</tt>  <tt class="py-line"> </tt>
-<a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">media_filename</tt><tt class="py-op">:</tt> </tt>
-<a name="L528"></a><tt class="py-lineno">528</tt>  <tt class="py-line">        <tt class="py-comment"># Ensure we end up with a valid MediaUpload object.</tt> </tt>
-<a name="L529"></a><tt class="py-lineno">529</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L530"></a><tt class="py-lineno">530</tt>  <tt class="py-line">          <tt class="py-op">(</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">,</tt> <tt class="py-name">encoding</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">mimetypes</tt><tt class="py-op">.</tt><tt class="py-name">guess_type</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">)</tt> </tt>
-<a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">media_mime_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">UnknownFileType</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">)</tt> </tt>
-<a name="L533"></a><tt class="py-lineno">533</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-124" class="py-name"><a title="apiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-124', 'mimeparse', 'link-0');">mimeparse</a></tt><tt class="py-op">.</tt><tt id="link-125" class="py-name" targets="Function apiclient.mimeparse.best_match()=apiclient.mimeparse-module.html#best_match"><a title="apiclient.mimeparse.best_match" class="py-name" href="#" onclick="return doclink('link-125', 'best_match', 'link-125');">best_match</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-126" class="py-name"><a title="apiclient.model.BaseModel.accept
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-123', 'request', 'link-60');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line">        <tt class="py-name">actual_path_params</tt><tt class="py-op">,</tt> <tt class="py-name">actual_query_params</tt><tt class="py-op">,</tt> <tt class="py-name">body_value</tt><tt class="py-op">)</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line"> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line">    <tt class="py-name">expanded_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt class="py-name">pathUrl</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line">    <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urljoin</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> <tt class="py-name">expanded_url</tt> <tt class="py-op">+</tt> <tt class="py-name">query</tt><tt class="py-op">)</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line"> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line">    <tt id="link-124" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.resumable()=apiclient.http.MediaIoBaseUpload-class.html#resumable,Method apiclient.http.MediaUpload.resumable()=apiclient.http.MediaUpload-class.html#resumable"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-124', 'resumable', 'link-124');">resumable</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line">    <tt class="py-name">multipart_boundary</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line"> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">media_filename</tt><tt class="py-op">:</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line">      <tt class="py-comment"># Ensure we end up with a valid MediaUpload object.</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">,</tt> <tt class="py-name">encoding</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">mimetypes</tt><tt class="py-op">.</tt><tt class="py-name">guess_type</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">media_mime_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-125" class="py-name"><a title="apiclient.errors.UnknownFileType" class="py-name" href="#" onclick="return doclink('link-125', 'UnknownFileType', 'link-18');">UnknownFileType</a></tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-126" class="py-name"><a title="apiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-126', 'mimeparse', 'link-0');">mimeparse</a></tt><tt class="py-op">.</tt><tt id="link-127" class="py-name" targets="Function apiclient.mimeparse.best_match()=apiclient.mimeparse-module.html#best_match"><a title="apiclient.mimeparse.best_match" class="py-name" href="#" onclick="return doclink('link-127', 'best_match', 'link-127');">best_match</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-128" class="py-name"><a title="apiclient.model.BaseModel.accept
 apiclient.model.JsonModel.accept
 apiclient.model.MediaModel.accept
 apiclient.model.ProtocolBufferModel.accept
-apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-126', 'accept', 'link-89');">accept</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L534"></a><tt class="py-lineno">534</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-127" class="py-name"><a title="apiclient.errors.UnacceptableMimeTypeError" class="py-name" href="#" onclick="return doclink('link-127', 'UnacceptableMimeTypeError', 'link-12');">UnacceptableMimeTypeError</a></tt><tt class="py-op">(</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L535"></a><tt class="py-lineno">535</tt>  <tt class="py-line">          <tt class="py-name">media_upload</tt> <tt class="py-op">=</tt> <tt id="link-128" class="py-name"><a title="apiclient.http.MediaFileUpload" class="py-name" href="#" onclick="return doclink('link-128', 'MediaFileUpload', 'link-24');">MediaFileUpload</a></tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> </tt>
-<a name="L536"></a><tt class="py-lineno">536</tt>  <tt class="py-line">                                         <tt id="link-129" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.mimetype()=apiclient.http.MediaIoBaseUpload-class.html#mimetype,Method apiclient.http.MediaUpload.mimetype()=apiclient.http.MediaUpload-class.html#mimetype"><a title="apiclient.http.MediaIoBaseUpload.mimetype
-apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-129', 'mimetype', 'link-129');">mimetype</a></tt><tt class="py-op">=</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L537"></a><tt class="py-lineno">537</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> <tt id="link-130" class="py-name"><a title="apiclient.http.MediaUpload" class="py-name" href="#" onclick="return doclink('link-130', 'MediaUpload', 'link-27');">MediaUpload</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L538"></a><tt class="py-lineno">538</tt>  <tt class="py-line">          <tt class="py-name">media_upload</tt> <tt class="py-op">=</tt> <tt class="py-name">media_filename</tt> </tt>
-<a name="L539"></a><tt class="py-lineno">539</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L540"></a><tt class="py-lineno">540</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'media_filename must be str or MediaUpload.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L541"></a><tt class="py-lineno">541</tt>  <tt class="py-line"> </tt>
-<a name="L542"></a><tt class="py-lineno">542</tt>  <tt class="py-line">        <tt class="py-comment"># Check the maxSize</tt> </tt>
-<a name="L543"></a><tt class="py-lineno">543</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">maxSize</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt> <tt class="py-keyword">and</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.size()=apiclient.http.MediaIoBaseUpload-class.html#size,Method apiclient.http.MediaUpload.size()=apiclient.http.MediaUpload-class.html#size"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-131', 'size', 'link-131');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">maxSize</tt><tt class="py-op">:</tt> </tt>
-<a name="L544"></a><tt class="py-lineno">544</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-132" class="py-name"><a title="apiclient.errors.MediaUploadSizeError" class="py-name" href="#" onclick="return doclink('link-132', 'MediaUploadSizeError', 'link-9');">MediaUploadSizeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Media larger than: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">maxSize</tt><tt class="py-op">)</tt> </tt>
-<a name="L545"></a><tt class="py-lineno">545</tt>  <tt class="py-line"> </tt>
-<a name="L546"></a><tt class="py-lineno">546</tt>  <tt class="py-line">        <tt class="py-comment"># Use the media path uri for media uploads</tt> </tt>
-<a name="L547"></a><tt class="py-lineno">547</tt>  <tt class="py-line">        <tt class="py-name">expanded_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt class="py-name">mediaPathUrl</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
-<a name="L548"></a><tt class="py-lineno">548</tt>  <tt class="py-line">        <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urljoin</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> <tt class="py-name">expanded_url</tt> <tt class="py-op">+</tt> <tt class="py-name">query</tt><tt class="py-op">)</tt> </tt>
-<a name="L549"></a><tt class="py-lineno">549</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-133', 'resumable', 'link-123');">resumable</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L550"></a><tt class="py-lineno">550</tt>  <tt class="py-line">          <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-134" class="py-name"><a title="apiclient.discovery._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-134', '_add_query_parameter', 'link-57');">_add_query_parameter</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'resumable'</tt><tt class="py-op">)</tt> </tt>
+apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-128', 'accept', 'link-90');">accept</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-129" class="py-name"><a title="apiclient.errors.UnacceptableMimeTypeError" class="py-name" href="#" onclick="return doclink('link-129', 'UnacceptableMimeTypeError', 'link-12');">UnacceptableMimeTypeError</a></tt><tt class="py-op">(</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line">        <tt class="py-name">media_upload</tt> <tt class="py-op">=</tt> <tt id="link-130" class="py-name"><a title="apiclient.http.MediaFileUpload" class="py-name" href="#" onclick="return doclink('link-130', 'MediaFileUpload', 'link-24');">MediaFileUpload</a></tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line">                                       <tt id="link-131" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.mimetype()=apiclient.http.MediaIoBaseUpload-class.html#mimetype,Method apiclient.http.MediaUpload.mimetype()=apiclient.http.MediaUpload-class.html#mimetype"><a title="apiclient.http.MediaIoBaseUpload.mimetype
+apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-131', 'mimetype', 'link-131');">mimetype</a></tt><tt class="py-op">=</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line">      <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> <tt id="link-132" class="py-name"><a title="apiclient.http.MediaUpload" class="py-name" href="#" onclick="return doclink('link-132', 'MediaUpload', 'link-27');">MediaUpload</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line">        <tt class="py-name">media_upload</tt> <tt class="py-op">=</tt> <tt class="py-name">media_filename</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'media_filename must be str or MediaUpload.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line"> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line">      <tt class="py-comment"># Check the maxSize</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">maxSize</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt> <tt class="py-keyword">and</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.size()=apiclient.http.MediaIoBaseUpload-class.html#size,Method apiclient.http.MediaUpload.size()=apiclient.http.MediaUpload-class.html#size"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-133', 'size', 'link-133');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">maxSize</tt><tt class="py-op">:</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-134" class="py-name"><a title="apiclient.errors.MediaUploadSizeError" class="py-name" href="#" onclick="return doclink('link-134', 'MediaUploadSizeError', 'link-9');">MediaUploadSizeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Media larger than: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">maxSize</tt><tt class="py-op">)</tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line"> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line">      <tt class="py-comment"># Use the media path uri for media uploads</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line">      <tt class="py-name">expanded_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt class="py-name">mediaPathUrl</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt>  <tt class="py-line">      <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urljoin</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> <tt class="py-name">expanded_url</tt> <tt class="py-op">+</tt> <tt class="py-name">query</tt><tt class="py-op">)</tt> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-135', 'resumable', 'link-124');">resumable</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt>  <tt class="py-line">        <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-136" class="py-name"><a title="apiclient.discovery._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-136', '_add_query_parameter', 'link-57');">_add_query_parameter</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'resumable'</tt><tt class="py-op">)</tt> </tt>
+<a name="L520"></a><tt class="py-lineno">520</tt>  <tt class="py-line"> </tt>
+<a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-137', 'resumable', 'link-124');">resumable</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line">        <tt class="py-comment"># This is all we need to do for resumable, if the body exists it gets</tt> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line">        <tt class="py-comment"># sent in the first request, otherwise an empty body is sent.</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line">        <tt id="link-138" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-138', 'resumable', 'link-124');">resumable</a></tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt> </tt>
+<a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt>  <tt class="py-line">        <tt class="py-comment"># A non-resumable upload</tt> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">body</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L528"></a><tt class="py-lineno">528</tt>  <tt class="py-line">          <tt class="py-comment"># This is a simple media upload</tt> </tt>
+<a name="L529"></a><tt class="py-lineno">529</tt>  <tt class="py-line">          <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
+apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-139', 'mimetype', 'link-131');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt>  <tt class="py-line">          <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.getbytes()=apiclient.http.MediaIoBaseUpload-class.html#getbytes,Method apiclient.http.MediaUpload.getbytes()=apiclient.http.MediaUpload-class.html#getbytes"><a title="apiclient.http.MediaIoBaseUpload.getbytes
+apiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-140', 'getbytes', 'link-140');">getbytes</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-141', 'size', 'link-133');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line">          <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-142" class="py-name"><a title="apiclient.discovery._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-142', '_add_query_parameter', 'link-57');">_add_query_parameter</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'media'</tt><tt class="py-op">)</tt> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L533"></a><tt class="py-lineno">533</tt>  <tt class="py-line">          <tt class="py-comment"># This is a multipart/related upload.</tt> </tt>
+<a name="L534"></a><tt class="py-lineno">534</tt>  <tt class="py-line">          <tt class="py-name">msgRoot</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMEMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'related'</tt><tt class="py-op">)</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt>  <tt class="py-line">          <tt class="py-comment"># msgRoot should not write out it's own headers</tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt>  <tt class="py-line">          <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">msgRoot</tt><tt class="py-op">,</tt> <tt class="py-string">'_write_headers'</tt><tt class="py-op">,</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">self</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt>  <tt class="py-line"> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt>  <tt class="py-line">          <tt class="py-comment"># attach the body as one part</tt> </tt>
+<a name="L539"></a><tt class="py-lineno">539</tt>  <tt class="py-line">          <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L540"></a><tt class="py-lineno">540</tt>  <tt class="py-line">          <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
+<a name="L541"></a><tt class="py-lineno">541</tt>  <tt class="py-line">          <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L542"></a><tt class="py-lineno">542</tt>  <tt class="py-line"> </tt>
+<a name="L543"></a><tt class="py-lineno">543</tt>  <tt class="py-line">          <tt class="py-comment"># attach the media as the second part</tt> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt>  <tt class="py-line">          <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
+apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-143', 'mimetype', 'link-131');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L545"></a><tt class="py-lineno">545</tt>  <tt class="py-line">          <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-Transfer-Encoding'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'binary'</tt> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt>  <tt class="py-line"> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt>  <tt class="py-line">          <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.getbytes
+apiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-144', 'getbytes', 'link-140');">getbytes</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-145', 'size', 'link-133');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L548"></a><tt class="py-lineno">548</tt>  <tt class="py-line">          <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt>  <tt class="py-line">          <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L550"></a><tt class="py-lineno">550</tt>  <tt class="py-line">          <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">as_string</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 <a name="L551"></a><tt class="py-lineno">551</tt>  <tt class="py-line"> </tt>
-<a name="L552"></a><tt class="py-lineno">552</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-135', 'resumable', 'link-123');">resumable</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L553"></a><tt class="py-lineno">553</tt>  <tt class="py-line">          <tt class="py-comment"># This is all we need to do for resumable, if the body exists it gets</tt> </tt>
-<a name="L554"></a><tt class="py-lineno">554</tt>  <tt class="py-line">          <tt class="py-comment"># sent in the first request, otherwise an empty body is sent.</tt> </tt>
-<a name="L555"></a><tt class="py-lineno">555</tt>  <tt class="py-line">          <tt id="link-136" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-136', 'resumable', 'link-123');">resumable</a></tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt> </tt>
-<a name="L556"></a><tt class="py-lineno">556</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L557"></a><tt class="py-lineno">557</tt>  <tt class="py-line">          <tt class="py-comment"># A non-resumable upload</tt> </tt>
-<a name="L558"></a><tt class="py-lineno">558</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">body</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L559"></a><tt class="py-lineno">559</tt>  <tt class="py-line">            <tt class="py-comment"># This is a simple media upload</tt> </tt>
-<a name="L560"></a><tt class="py-lineno">560</tt>  <tt class="py-line">            <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
-apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-137', 'mimetype', 'link-129');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L561"></a><tt class="py-lineno">561</tt>  <tt class="py-line">            <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.getbytes()=apiclient.http.MediaIoBaseUpload-class.html#getbytes,Method apiclient.http.MediaUpload.getbytes()=apiclient.http.MediaUpload-class.html#getbytes"><a title="apiclient.http.MediaIoBaseUpload.getbytes
-apiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-138', 'getbytes', 'link-138');">getbytes</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-139', 'size', 'link-131');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L562"></a><tt class="py-lineno">562</tt>  <tt class="py-line">            <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-140" class="py-name"><a title="apiclient.discovery._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-140', '_add_query_parameter', 'link-57');">_add_query_parameter</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'media'</tt><tt class="py-op">)</tt> </tt>
-<a name="L563"></a><tt class="py-lineno">563</tt>  <tt class="py-line">          <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L564"></a><tt class="py-lineno">564</tt>  <tt class="py-line">            <tt class="py-comment"># This is a multipart/related upload.</tt> </tt>
-<a name="L565"></a><tt class="py-lineno">565</tt>  <tt class="py-line">            <tt class="py-name">msgRoot</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMEMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'related'</tt><tt class="py-op">)</tt> </tt>
-<a name="L566"></a><tt class="py-lineno">566</tt>  <tt class="py-line">            <tt class="py-comment"># msgRoot should not write out it's own headers</tt> </tt>
-<a name="L567"></a><tt class="py-lineno">567</tt>  <tt class="py-line">            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">msgRoot</tt><tt class="py-op">,</tt> <tt class="py-string">'_write_headers'</tt><tt class="py-op">,</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">self</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L568"></a><tt class="py-lineno">568</tt>  <tt class="py-line"> </tt>
-<a name="L569"></a><tt class="py-lineno">569</tt>  <tt class="py-line">            <tt class="py-comment"># attach the body as one part</tt> </tt>
-<a name="L570"></a><tt class="py-lineno">570</tt>  <tt class="py-line">            <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L571"></a><tt class="py-lineno">571</tt>  <tt class="py-line">            <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L572"></a><tt class="py-lineno">572</tt>  <tt class="py-line">            <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
-<a name="L573"></a><tt class="py-lineno">573</tt>  <tt class="py-line"> </tt>
-<a name="L574"></a><tt class="py-lineno">574</tt>  <tt class="py-line">            <tt class="py-comment"># attach the media as the second part</tt> </tt>
-<a name="L575"></a><tt class="py-lineno">575</tt>  <tt class="py-line">            <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
-apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-141', 'mimetype', 'link-129');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L576"></a><tt class="py-lineno">576</tt>  <tt class="py-line">            <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-Transfer-Encoding'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'binary'</tt> </tt>
+<a name="L552"></a><tt class="py-lineno">552</tt>  <tt class="py-line">          <tt class="py-name">multipart_boundary</tt> <tt class="py-op">=</tt> <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">get_boundary</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L553"></a><tt class="py-lineno">553</tt>  <tt class="py-line">          <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'multipart/related; '</tt> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt>  <tt class="py-line">                                     <tt class="py-string">'boundary="%s"'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">multipart_boundary</tt> </tt>
+<a name="L555"></a><tt class="py-lineno">555</tt>  <tt class="py-line">          <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-146" class="py-name"><a title="apiclient.discovery._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-146', '_add_query_parameter', 'link-57');">_add_query_parameter</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'multipart'</tt><tt class="py-op">)</tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt>  <tt class="py-line"> </tt>
+<a name="L557"></a><tt class="py-lineno">557</tt>  <tt class="py-line">    <tt id="link-147" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.appengine.logger
+oauth2client.client.logger
+oauth2client.crypt.logger
+oauth2client.gce.logger
+oauth2client.locked_file.logger
+oauth2client.multistore_file.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-147', 'logger', 'link-45');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'URL being requested: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requestBuilder</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt><tt class="py-op">,</tt> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt>  <tt class="py-line">                                <tt id="link-148" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-148', 'model', 'link-29');">model</a></tt><tt class="py-op">.</tt><tt id="link-149" class="py-name" targets="Method apiclient.model.BaseModel.response()=apiclient.model.BaseModel-class.html#response,Method apiclient.model.Model.response()=apiclient.model.Model-class.html#response"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-149', 'response', 'link-149');">response</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L560"></a><tt class="py-lineno">560</tt>  <tt class="py-line">                                <tt class="py-name">url</tt><tt class="py-op">,</tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt>  <tt class="py-line">                                <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">httpMethod</tt><tt class="py-op">,</tt> </tt>
+<a name="L562"></a><tt class="py-lineno">562</tt>  <tt class="py-line">                                <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> </tt>
+<a name="L563"></a><tt class="py-lineno">563</tt>  <tt class="py-line">                                <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
+<a name="L564"></a><tt class="py-lineno">564</tt>  <tt class="py-line">                                <tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">methodId</tt><tt class="py-op">,</tt> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt>  <tt class="py-line">                                <tt id="link-150" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-150', 'resumable', 'link-124');">resumable</a></tt><tt class="py-op">=</tt><tt id="link-151" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-151', 'resumable', 'link-124');">resumable</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L566"></a><tt class="py-lineno">566</tt>  <tt class="py-line"> </tt>
+<a name="L567"></a><tt class="py-lineno">567</tt>  <tt class="py-line">  <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-152', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'description'</tt><tt class="py-op">,</tt> <tt id="link-153" class="py-name"><a title="apiclient.discovery.DEFAULT_METHOD_DOC" class="py-name" href="#" onclick="return doclink('link-153', 'DEFAULT_METHOD_DOC', 'link-49');">DEFAULT_METHOD_DOC</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'\n\n'</tt><tt class="py-op">]</tt> </tt>
+<a name="L568"></a><tt class="py-lineno">568</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">argmap</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L569"></a><tt class="py-lineno">569</tt>  <tt class="py-line">    <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'Args:\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L570"></a><tt class="py-lineno">570</tt>  <tt class="py-line"> </tt>
+<a name="L571"></a><tt class="py-lineno">571</tt>  <tt class="py-line">  <tt class="py-comment"># Skip undocumented params and params common to all methods.</tt> </tt>
+<a name="L572"></a><tt class="py-lineno">572</tt>  <tt class="py-line">  <tt class="py-name">skip_parameters</tt> <tt class="py-op">=</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-154', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L573"></a><tt class="py-lineno">573</tt>  <tt class="py-line">  <tt class="py-name">skip_parameters</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-155" class="py-name"><a title="apiclient.discovery.STACK_QUERY_PARAMETERS" class="py-name" href="#" onclick="return doclink('link-155', 'STACK_QUERY_PARAMETERS', 'link-50');">STACK_QUERY_PARAMETERS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L574"></a><tt class="py-lineno">574</tt>  <tt class="py-line"> </tt>
+<a name="L575"></a><tt class="py-lineno">575</tt>  <tt class="py-line">  <tt class="py-name">all_args</tt> <tt class="py-op">=</tt> <tt class="py-name">argmap</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L576"></a><tt class="py-lineno">576</tt>  <tt class="py-line">  <tt class="py-name">args_ordered</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-156" class="py-name"><a title="apiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-156', 'key2param', 'link-97');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-157', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameterOrder'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
 <a name="L577"></a><tt class="py-lineno">577</tt>  <tt class="py-line"> </tt>
-<a name="L578"></a><tt class="py-lineno">578</tt>  <tt class="py-line">            <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.getbytes
-apiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-142', 'getbytes', 'link-138');">getbytes</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-143', 'size', 'link-131');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L579"></a><tt class="py-lineno">579</tt>  <tt class="py-line">            <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
-<a name="L580"></a><tt class="py-lineno">580</tt>  <tt class="py-line">            <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
-<a name="L581"></a><tt class="py-lineno">581</tt>  <tt class="py-line">            <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">as_string</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L582"></a><tt class="py-lineno">582</tt>  <tt class="py-line"> </tt>
-<a name="L583"></a><tt class="py-lineno">583</tt>  <tt class="py-line">            <tt class="py-name">multipart_boundary</tt> <tt class="py-op">=</tt> <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">get_boundary</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L584"></a><tt class="py-lineno">584</tt>  <tt class="py-line">            <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'multipart/related; '</tt> </tt>
-<a name="L585"></a><tt class="py-lineno">585</tt>  <tt class="py-line">                                       <tt class="py-string">'boundary="%s"'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">multipart_boundary</tt> </tt>
-<a name="L586"></a><tt class="py-lineno">586</tt>  <tt class="py-line">            <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-144" class="py-name"><a title="apiclient.discovery._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-144', '_add_query_parameter', 'link-57');">_add_query_parameter</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'multipart'</tt><tt class="py-op">)</tt> </tt>
-<a name="L587"></a><tt class="py-lineno">587</tt>  <tt class="py-line"> </tt>
-<a name="L588"></a><tt class="py-lineno">588</tt>  <tt class="py-line">      <tt id="link-145" class="py-name"><a title="apiclient.discovery.logger
-oauth2client.appengine.logger
-oauth2client.client.logger
-oauth2client.crypt.logger
-oauth2client.gce.logger
-oauth2client.locked_file.logger
-oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-145', 'logger', 'link-45');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'URL being requested: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
-<a name="L589"></a><tt class="py-lineno">589</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requestBuilder</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt><tt class="py-op">,</tt> </tt>
-<a name="L590"></a><tt class="py-lineno">590</tt>  <tt class="py-line">                                  <tt id="link-146" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-146', 'model', 'link-29');">model</a></tt><tt class="py-op">.</tt><tt id="link-147" class="py-name" targets="Method apiclient.model.BaseModel.response()=apiclient.model.BaseModel-class.html#response,Method apiclient.model.Model.response()=apiclient.model.Model-class.html#response"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-147', 'response', 'link-147');">response</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L591"></a><tt class="py-lineno">591</tt>  <tt class="py-line">                                  <tt class="py-name">url</tt><tt class="py-op">,</tt> </tt>
-<a name="L592"></a><tt class="py-lineno">592</tt>  <tt class="py-line">                                  <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">httpMethod</tt><tt class="py-op">,</tt> </tt>
-<a name="L593"></a><tt class="py-lineno">593</tt>  <tt class="py-line">                                  <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> </tt>
-<a name="L594"></a><tt class="py-lineno">594</tt>  <tt class="py-line">                                  <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
-<a name="L595"></a><tt class="py-lineno">595</tt>  <tt class="py-line">                                  <tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">methodId</tt><tt class="py-op">,</tt> </tt>
-<a name="L596"></a><tt class="py-lineno">596</tt>  <tt class="py-line">                                  <tt id="link-148" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-148', 'resumable', 'link-123');">resumable</a></tt><tt class="py-op">=</tt><tt id="link-149" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-149', 'resumable', 'link-123');">resumable</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L597"></a><tt class="py-lineno">597</tt>  <tt class="py-line"> </tt>
-<a name="L598"></a><tt class="py-lineno">598</tt>  <tt class="py-line">    <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L578"></a><tt class="py-lineno">578</tt>  <tt class="py-line">  <tt class="py-comment"># Move body to the front of the line.</tt> </tt>
+<a name="L579"></a><tt class="py-lineno">579</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'body'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">all_args</tt><tt class="py-op">:</tt> </tt>
+<a name="L580"></a><tt class="py-lineno">580</tt>  <tt class="py-line">    <tt class="py-name">args_ordered</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">)</tt> </tt>
+<a name="L581"></a><tt class="py-lineno">581</tt>  <tt class="py-line"> </tt>
+<a name="L582"></a><tt class="py-lineno">582</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">all_args</tt><tt class="py-op">:</tt> </tt>
+<a name="L583"></a><tt class="py-lineno">583</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args_ordered</tt><tt class="py-op">:</tt> </tt>
+<a name="L584"></a><tt class="py-lineno">584</tt>  <tt class="py-line">      <tt class="py-name">args_ordered</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
+<a name="L585"></a><tt class="py-lineno">585</tt>  <tt class="py-line"> </tt>
+<a name="L586"></a><tt class="py-lineno">586</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args_ordered</tt><tt class="py-op">:</tt> </tt>
+<a name="L587"></a><tt class="py-lineno">587</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">skip_parameters</tt><tt class="py-op">:</tt> </tt>
+<a name="L588"></a><tt class="py-lineno">588</tt>  <tt class="py-line">      <tt class="py-keyword">continue</tt> </tt>
+<a name="L589"></a><tt class="py-lineno">589</tt>  <tt class="py-line"> </tt>
+<a name="L590"></a><tt class="py-lineno">590</tt>  <tt class="py-line">    <tt class="py-name">repeated</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L591"></a><tt class="py-lineno">591</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">repeated_params</tt><tt class="py-op">:</tt> </tt>
+<a name="L592"></a><tt class="py-lineno">592</tt>  <tt class="py-line">      <tt class="py-name">repeated</tt> <tt class="py-op">=</tt> <tt class="py-string">' (repeated)'</tt> </tt>
+<a name="L593"></a><tt class="py-lineno">593</tt>  <tt class="py-line">    <tt class="py-name">required</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L594"></a><tt class="py-lineno">594</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">required_params</tt><tt class="py-op">:</tt> </tt>
+<a name="L595"></a><tt class="py-lineno">595</tt>  <tt class="py-line">      <tt class="py-name">required</tt> <tt class="py-op">=</tt> <tt class="py-string">' (required)'</tt> </tt>
+<a name="L596"></a><tt class="py-lineno">596</tt>  <tt class="py-line">    <tt class="py-name">paramdesc</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">arg</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
+<a name="L597"></a><tt class="py-lineno">597</tt>  <tt class="py-line">    <tt class="py-name">paramdoc</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-150', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'description'</tt><tt class="py-op">,</tt> <tt id="link-151" class="py-name"><a title="apiclient.discovery.DEFAULT_METHOD_DOC" class="py-name" href="#" onclick="return doclink('link-151', 'DEFAULT_METHOD_DOC', 'link-49');">DEFAULT_METHOD_DOC</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'\n\n'</tt><tt class="py-op">]</tt> </tt>
-<a name="L599"></a><tt class="py-lineno">599</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">argmap</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
-<a name="L600"></a><tt class="py-lineno">600</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'Args:\n'</tt><tt class="py-op">)</tt> </tt>
-<a name="L601"></a><tt class="py-lineno">601</tt>  <tt class="py-line"> </tt>
-<a name="L602"></a><tt class="py-lineno">602</tt>  <tt class="py-line">    <tt class="py-comment"># Skip undocumented params and params common to all methods.</tt> </tt>
-<a name="L603"></a><tt class="py-lineno">603</tt>  <tt class="py-line">    <tt class="py-name">skip_parameters</tt> <tt class="py-op">=</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-158', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'description'</tt><tt class="py-op">,</tt> <tt class="py-string">'A parameter'</tt><tt class="py-op">)</tt> </tt>
+<a name="L598"></a><tt class="py-lineno">598</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'$ref'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L599"></a><tt class="py-lineno">599</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> </tt>
+<a name="L600"></a><tt class="py-lineno">600</tt>  <tt class="py-line">          <tt class="py-op">(</tt><tt class="py-string">'  %s: object, %s%s%s\n    The object takes the'</tt> </tt>
+<a name="L601"></a><tt class="py-lineno">601</tt>  <tt class="py-line">          <tt class="py-string">' form of:\n\n%s\n\n'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">paramdoc</tt><tt class="py-op">,</tt> <tt class="py-name">required</tt><tt class="py-op">,</tt> <tt class="py-name">repeated</tt><tt class="py-op">,</tt> </tt>
+<a name="L602"></a><tt class="py-lineno">602</tt>  <tt class="py-line">            <tt id="link-159" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-159', 'schema', 'link-38');">schema</a></tt><tt class="py-op">.</tt><tt id="link-160" class="py-name" targets="Method apiclient.schema.Schemas.prettyPrintByName()=apiclient.schema.Schemas-class.html#prettyPrintByName"><a title="apiclient.schema.Schemas.prettyPrintByName" class="py-name" href="#" onclick="return doclink('link-160', 'prettyPrintByName', 'link-160');">prettyPrintByName</a></tt><tt class="py-op">(</tt><tt class="py-name">paramdesc</tt><tt class="py-op">[</tt><tt class="py-string">'$ref'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L603"></a><tt class="py-lineno">603</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L604"></a><tt class="py-lineno">604</tt>  <tt class="py-line">      <tt class="py-name">paramtype</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-152', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L604"></a><tt class="py-lineno">604</tt>  <tt class="py-line">    <tt class="py-name">skip_parameters</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-153" class="py-name"><a title="apiclient.discovery.STACK_QUERY_PARAMETERS" class="py-name" href="#" onclick="return doclink('link-153', 'STACK_QUERY_PARAMETERS', 'link-50');">STACK_QUERY_PARAMETERS</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L605"></a><tt class="py-lineno">605</tt>  <tt class="py-line"> </tt>
-<a name="L606"></a><tt class="py-lineno">606</tt>  <tt class="py-line">    <tt class="py-name">all_args</tt> <tt class="py-op">=</tt> <tt class="py-name">argmap</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L607"></a><tt class="py-lineno">607</tt>  <tt class="py-line">    <tt class="py-name">args_ordered</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-154" class="py-name"><a title="apiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-154', 'key2param', 'link-96');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-161', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
+<a name="L605"></a><tt class="py-lineno">605</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'  %s: %s, %s%s%s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">paramtype</tt><tt class="py-op">,</tt> <tt class="py-name">paramdoc</tt><tt class="py-op">,</tt> <tt class="py-name">required</tt><tt class="py-op">,</tt> </tt>
+<a name="L606"></a><tt class="py-lineno">606</tt>  <tt class="py-line">                                          <tt class="py-name">repeated</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L607"></a><tt class="py-lineno">607</tt>  <tt class="py-line">    <tt class="py-name">enum</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-155', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameterOrder'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
-<a name="L608"></a><tt class="py-lineno">608</tt>  <tt class="py-line"> </tt>
-<a name="L609"></a><tt class="py-lineno">609</tt>  <tt class="py-line">    <tt class="py-comment"># Move body to the front of the line.</tt> </tt>
-<a name="L610"></a><tt class="py-lineno">610</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'body'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">all_args</tt><tt class="py-op">:</tt> </tt>
-<a name="L611"></a><tt class="py-lineno">611</tt>  <tt class="py-line">      <tt class="py-name">args_ordered</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">)</tt> </tt>
-<a name="L612"></a><tt class="py-lineno">612</tt>  <tt class="py-line"> </tt>
-<a name="L613"></a><tt class="py-lineno">613</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">all_args</tt><tt class="py-op">:</tt> </tt>
-<a name="L614"></a><tt class="py-lineno">614</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args_ordered</tt><tt class="py-op">:</tt> </tt>
-<a name="L615"></a><tt class="py-lineno">615</tt>  <tt class="py-line">        <tt class="py-name">args_ordered</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
-<a name="L616"></a><tt class="py-lineno">616</tt>  <tt class="py-line"> </tt>
-<a name="L617"></a><tt class="py-lineno">617</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args_ordered</tt><tt class="py-op">:</tt> </tt>
-<a name="L618"></a><tt class="py-lineno">618</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">skip_parameters</tt><tt class="py-op">:</tt> </tt>
-<a name="L619"></a><tt class="py-lineno">619</tt>  <tt class="py-line">        <tt class="py-keyword">continue</tt> </tt>
-<a name="L620"></a><tt class="py-lineno">620</tt>  <tt class="py-line"> </tt>
-<a name="L621"></a><tt class="py-lineno">621</tt>  <tt class="py-line">      <tt class="py-name">repeated</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-<a name="L622"></a><tt class="py-lineno">622</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">repeated_params</tt><tt class="py-op">:</tt> </tt>
-<a name="L623"></a><tt class="py-lineno">623</tt>  <tt class="py-line">        <tt class="py-name">repeated</tt> <tt class="py-op">=</tt> <tt class="py-string">' (repeated)'</tt> </tt>
-<a name="L624"></a><tt class="py-lineno">624</tt>  <tt class="py-line">      <tt class="py-name">required</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-<a name="L625"></a><tt class="py-lineno">625</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">required_params</tt><tt class="py-op">:</tt> </tt>
-<a name="L626"></a><tt class="py-lineno">626</tt>  <tt class="py-line">        <tt class="py-name">required</tt> <tt class="py-op">=</tt> <tt class="py-string">' (required)'</tt> </tt>
-<a name="L627"></a><tt class="py-lineno">627</tt>  <tt class="py-line">      <tt class="py-name">paramdesc</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">arg</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
-<a name="L628"></a><tt class="py-lineno">628</tt>  <tt class="py-line">      <tt class="py-name">paramdoc</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-162', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enum'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L608"></a><tt class="py-lineno">608</tt>  <tt class="py-line">    <tt class="py-name">enumDesc</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-156', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'description'</tt><tt class="py-op">,</tt> <tt class="py-string">'A parameter'</tt><tt class="py-op">)</tt> </tt>
-<a name="L629"></a><tt class="py-lineno">629</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'$ref'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L630"></a><tt class="py-lineno">630</tt>  <tt class="py-line">        <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> </tt>
-<a name="L631"></a><tt class="py-lineno">631</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'  %s: object, %s%s%s\n    The object takes the'</tt> </tt>
-<a name="L632"></a><tt class="py-lineno">632</tt>  <tt class="py-line">            <tt class="py-string">' form of:\n\n%s\n\n'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">paramdoc</tt><tt class="py-op">,</tt> <tt class="py-name">required</tt><tt class="py-op">,</tt> <tt class="py-name">repeated</tt><tt class="py-op">,</tt> </tt>
-<a name="L633"></a><tt class="py-lineno">633</tt>  <tt class="py-line">              <tt id="link-157" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-157', 'schema', 'link-38');">schema</a></tt><tt class="py-op">.</tt><tt id="link-158" class="py-name" targets="Method apiclient.schema.Schemas.prettyPrintByName()=apiclient.schema.Schemas-class.html#prettyPrintByName"><a title="apiclient.schema.Schemas.prettyPrintByName" class="py-name" href="#" onclick="return doclink('link-158', 'prettyPrintByName', 'link-158');">prettyPrintByName</a></tt><tt class="py-op">(</tt><tt class="py-name">paramdesc</tt><tt class="py-op">[</tt><tt class="py-string">'$ref'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L634"></a><tt class="py-lineno">634</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L635"></a><tt class="py-lineno">635</tt>  <tt class="py-line">        <tt class="py-name">paramtype</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="apiclient.schema.Schemas.get
-oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-159', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
-<a name="L636"></a><tt class="py-lineno">636</tt>  <tt class="py-line">        <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'  %s: %s, %s%s%s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">paramtype</tt><tt class="py-op">,</tt> <tt class="py-name">paramdoc</tt><tt class="py-op">,</tt> <tt class="py-name">required</tt><tt class="py-op">,</tt> </tt>
-<a name="L637"></a><tt class="py-lineno">637</tt>  <tt class="py-line">                                            <tt class="py-name">repeated</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L638"></a><tt class="py-lineno">638</tt>  <tt class="py-line">      <tt class="py-name">enum</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="apiclient.schema.Schemas.get
-oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-160', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enum'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L639"></a><tt class="py-lineno">639</tt>  <tt class="py-line">      <tt class="py-name">enumDesc</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="apiclient.schema.Schemas.get
-oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-161', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enumDescriptions'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L640"></a><tt class="py-lineno">640</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">enum</tt> <tt class="py-keyword">and</tt> <tt class="py-name">enumDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L641"></a><tt class="py-lineno">641</tt>  <tt class="py-line">        <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'    Allowed values\n'</tt><tt class="py-op">)</tt> </tt>
-<a name="L642"></a><tt class="py-lineno">642</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">enum</tt><tt class="py-op">,</tt> <tt class="py-name">enumDesc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L643"></a><tt class="py-lineno">643</tt>  <tt class="py-line">          <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'      %s - %s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L644"></a><tt class="py-lineno">644</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'response'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L645"></a><tt class="py-lineno">645</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">methodName</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'_media'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L646"></a><tt class="py-lineno">646</tt>  <tt class="py-line">        <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'\nReturns:\n  The media object as a string.\n\n    '</tt><tt class="py-op">)</tt> </tt>
-<a name="L647"></a><tt class="py-lineno">647</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L648"></a><tt class="py-lineno">648</tt>  <tt class="py-line">        <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'\nReturns:\n  An object of the form:\n\n    '</tt><tt class="py-op">)</tt> </tt>
-<a name="L649"></a><tt class="py-lineno">649</tt>  <tt class="py-line">        <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-162" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-162', 'schema', 'link-38');">schema</a></tt><tt class="py-op">.</tt><tt id="link-163" class="py-name" targets="Method apiclient.schema.Schemas.prettyPrintSchema()=apiclient.schema.Schemas-class.html#prettyPrintSchema"><a title="apiclient.schema.Schemas.prettyPrintSchema" class="py-name" href="#" onclick="return doclink('link-163', 'prettyPrintSchema', 'link-163');">prettyPrintSchema</a></tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'response'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-163', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enumDescriptions'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L609"></a><tt class="py-lineno">609</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">enum</tt> <tt class="py-keyword">and</tt> <tt class="py-name">enumDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L610"></a><tt class="py-lineno">610</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'    Allowed values\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L611"></a><tt class="py-lineno">611</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">enum</tt><tt class="py-op">,</tt> <tt class="py-name">enumDesc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L612"></a><tt class="py-lineno">612</tt>  <tt class="py-line">        <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'      %s - %s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L613"></a><tt class="py-lineno">613</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'response'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L614"></a><tt class="py-lineno">614</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">methodName</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'_media'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L615"></a><tt class="py-lineno">615</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'\nReturns:\n  The media object as a string.\n\n    '</tt><tt class="py-op">)</tt> </tt>
+<a name="L616"></a><tt class="py-lineno">616</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L617"></a><tt class="py-lineno">617</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'\nReturns:\n  An object of the form:\n\n    '</tt><tt class="py-op">)</tt> </tt>
+<a name="L618"></a><tt class="py-lineno">618</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-164" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-164', 'schema', 'link-38');">schema</a></tt><tt class="py-op">.</tt><tt id="link-165" class="py-name" targets="Method apiclient.schema.Schemas.prettyPrintSchema()=apiclient.schema.Schemas-class.html#prettyPrintSchema"><a title="apiclient.schema.Schemas.prettyPrintSchema" class="py-name" href="#" onclick="return doclink('link-165', 'prettyPrintSchema', 'link-165');">prettyPrintSchema</a></tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'response'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L619"></a><tt class="py-lineno">619</tt>  <tt class="py-line"> </tt>
+<a name="L620"></a><tt class="py-lineno">620</tt>  <tt class="py-line">  <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-string">'__doc__'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">docs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L621"></a><tt class="py-lineno">621</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L622"></a><tt class="py-lineno">622</tt>  <tt class="py-line"> </tt>
+<a name="createNextMethod"></a><div id="createNextMethod-def"><a name="L623"></a><tt class="py-lineno">623</tt>  <tt class="py-line"> </tt>
+<a name="L624"></a><tt class="py-lineno">624</tt> <a class="py-toggle" href="#" id="createNextMethod-toggle" onclick="return toggle('createNextMethod');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#createNextMethod">createNextMethod</a><tt class="py-op">(</tt><tt class="py-param">methodName</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="createNextMethod-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="createNextMethod-expanded"><a name="L625"></a><tt class="py-lineno">625</tt>  <tt class="py-line">  <tt class="py-docstring">"""Creates any _next methods for attaching to a Resource.</tt> </tt>
+<a name="L626"></a><tt class="py-lineno">626</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L627"></a><tt class="py-lineno">627</tt>  <tt class="py-line"><tt class="py-docstring">  The _next methods allow for easy iteration through list() responses.</tt> </tt>
+<a name="L628"></a><tt class="py-lineno">628</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L629"></a><tt class="py-lineno">629</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L630"></a><tt class="py-lineno">630</tt>  <tt class="py-line"><tt class="py-docstring">    methodName: string, name of the method to use.</tt> </tt>
+<a name="L631"></a><tt class="py-lineno">631</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L632"></a><tt class="py-lineno">632</tt>  <tt class="py-line">  <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-166" class="py-name"><a title="apiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-166', 'fix_method_name', 'link-89');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
+<a name="L633"></a><tt class="py-lineno">633</tt>  <tt class="py-line"> </tt>
+<a name="L634"></a><tt class="py-lineno">634</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">methodNext</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">previous_request</tt><tt class="py-op">,</tt> <tt class="py-param">previous_response</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L635"></a><tt class="py-lineno">635</tt>  <tt class="py-line">    <tt class="py-docstring">"""Retrieves the next page of results.</tt> </tt>
+<a name="L636"></a><tt class="py-lineno">636</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L637"></a><tt class="py-lineno">637</tt>  <tt class="py-line"><tt class="py-docstring">Args:</tt> </tt>
+<a name="L638"></a><tt class="py-lineno">638</tt>  <tt class="py-line"><tt class="py-docstring">  previous_request: The request for the previous page. (required)</tt> </tt>
+<a name="L639"></a><tt class="py-lineno">639</tt>  <tt class="py-line"><tt class="py-docstring">  previous_response: The response from the request for the previous page. (required)</tt> </tt>
+<a name="L640"></a><tt class="py-lineno">640</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L641"></a><tt class="py-lineno">641</tt>  <tt class="py-line"><tt class="py-docstring">Returns:</tt> </tt>
+<a name="L642"></a><tt class="py-lineno">642</tt>  <tt class="py-line"><tt class="py-docstring">  A request object that you can call 'execute()' on to request the next</tt> </tt>
+<a name="L643"></a><tt class="py-lineno">643</tt>  <tt class="py-line"><tt class="py-docstring">  page. Returns None if there are no more items in the collection.</tt> </tt>
+<a name="L644"></a><tt class="py-lineno">644</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L645"></a><tt class="py-lineno">645</tt>  <tt class="py-line">    <tt class="py-comment"># Retrieve nextPageToken from previous_response</tt> </tt>
+<a name="L646"></a><tt class="py-lineno">646</tt>  <tt class="py-line">    <tt class="py-comment"># Use as pageToken in previous_request to create new request.</tt> </tt>
+<a name="L647"></a><tt class="py-lineno">647</tt>  <tt class="py-line"> </tt>
+<a name="L648"></a><tt class="py-lineno">648</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'nextPageToken'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">previous_response</tt><tt class="py-op">:</tt> </tt>
+<a name="L649"></a><tt class="py-lineno">649</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
 <a name="L650"></a><tt class="py-lineno">650</tt>  <tt class="py-line"> </tt>
-<a name="L651"></a><tt class="py-lineno">651</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-string">'__doc__'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">docs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L652"></a><tt class="py-lineno">652</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">theclass</tt><tt class="py-op">,</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L653"></a><tt class="py-lineno">653</tt>  <tt class="py-line"> </tt>
-<a name="L654"></a><tt class="py-lineno">654</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">createNextMethod</tt><tt class="py-op">(</tt><tt class="py-param">theclass</tt><tt class="py-op">,</tt> <tt class="py-param">methodName</tt><tt class="py-op">,</tt> <tt class="py-param">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L655"></a><tt class="py-lineno">655</tt>  <tt class="py-line">    <tt class="py-docstring">"""Creates any _next methods for attaching to a Resource.</tt> </tt>
-<a name="L656"></a><tt class="py-lineno">656</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L657"></a><tt class="py-lineno">657</tt>  <tt class="py-line"><tt class="py-docstring">    The _next methods allow for easy iteration through list() responses.</tt> </tt>
-<a name="L658"></a><tt class="py-lineno">658</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L659"></a><tt class="py-lineno">659</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L660"></a><tt class="py-lineno">660</tt>  <tt class="py-line"><tt class="py-docstring">      theclass: type, the class to attach methods to.</tt> </tt>
-<a name="L661"></a><tt class="py-lineno">661</tt>  <tt class="py-line"><tt class="py-docstring">      methodName: string, name of the method to use.</tt> </tt>
-<a name="L662"></a><tt class="py-lineno">662</tt>  <tt class="py-line"><tt class="py-docstring">      methodDesc: object, fragment of deserialized discovery document that</tt> </tt>
-<a name="L663"></a><tt class="py-lineno">663</tt>  <tt class="py-line"><tt class="py-docstring">        describes the method.</tt> </tt>
-<a name="L664"></a><tt class="py-lineno">664</tt>  <tt class="py-line"><tt class="py-docstring">      rootDesc: object, the entire deserialized discovery document.</tt> </tt>
-<a name="L665"></a><tt class="py-lineno">665</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L666"></a><tt class="py-lineno">666</tt>  <tt class="py-line">    <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-164" class="py-name"><a title="apiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-164', 'fix_method_name', 'link-88');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
-<a name="L667"></a><tt class="py-lineno">667</tt>  <tt class="py-line">    <tt class="py-name">methodId</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'id'</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-string">'.next'</tt> </tt>
-<a name="L668"></a><tt class="py-lineno">668</tt>  <tt class="py-line"> </tt>
-<a name="L669"></a><tt class="py-lineno">669</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">methodNext</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">previous_request</tt><tt class="py-op">,</tt> <tt class="py-param">previous_response</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L670"></a><tt class="py-lineno">670</tt>  <tt class="py-line">      <tt class="py-docstring">"""Retrieves the next page of results.</tt> </tt>
-<a name="L671"></a><tt class="py-lineno">671</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L672"></a><tt class="py-lineno">672</tt>  <tt class="py-line"><tt class="py-docstring">Args:</tt> </tt>
-<a name="L673"></a><tt class="py-lineno">673</tt>  <tt class="py-line"><tt class="py-docstring">  previous_request: The request for the previous page. (required)</tt> </tt>
-<a name="L674"></a><tt class="py-lineno">674</tt>  <tt class="py-line"><tt class="py-docstring">  previous_response: The response from the request for the previous page. (required)</tt> </tt>
-<a name="L675"></a><tt class="py-lineno">675</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L676"></a><tt class="py-lineno">676</tt>  <tt class="py-line"><tt class="py-docstring">Returns:</tt> </tt>
-<a name="L677"></a><tt class="py-lineno">677</tt>  <tt class="py-line"><tt class="py-docstring">  A request object that you can call 'execute()' on to request the next</tt> </tt>
-<a name="L678"></a><tt class="py-lineno">678</tt>  <tt class="py-line"><tt class="py-docstring">  page. Returns None if there are no more items in the collection.</tt> </tt>
-<a name="L679"></a><tt class="py-lineno">679</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
-<a name="L680"></a><tt class="py-lineno">680</tt>  <tt class="py-line">      <tt class="py-comment"># Retrieve nextPageToken from previous_response</tt> </tt>
-<a name="L681"></a><tt class="py-lineno">681</tt>  <tt class="py-line">      <tt class="py-comment"># Use as pageToken in previous_request to create new request.</tt> </tt>
-<a name="L682"></a><tt class="py-lineno">682</tt>  <tt class="py-line"> </tt>
-<a name="L683"></a><tt class="py-lineno">683</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'nextPageToken'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">previous_response</tt><tt class="py-op">:</tt> </tt>
-<a name="L684"></a><tt class="py-lineno">684</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
-<a name="L685"></a><tt class="py-lineno">685</tt>  <tt class="py-line"> </tt>
-<a name="L686"></a><tt class="py-lineno">686</tt>  <tt class="py-line">      <tt id="link-165" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L651"></a><tt class="py-lineno">651</tt>  <tt class="py-line">    <tt id="link-167" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-165', 'request', 'link-60');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">previous_request</tt><tt class="py-op">)</tt> </tt>
-<a name="L687"></a><tt class="py-lineno">687</tt>  <tt class="py-line"> </tt>
-<a name="L688"></a><tt class="py-lineno">688</tt>  <tt class="py-line">      <tt class="py-name">pageToken</tt> <tt class="py-op">=</tt> <tt class="py-name">previous_response</tt><tt class="py-op">[</tt><tt class="py-string">'nextPageToken'</tt><tt class="py-op">]</tt> </tt>
-<a name="L689"></a><tt class="py-lineno">689</tt>  <tt class="py-line">      <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt id="link-166" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-167', 'request', 'link-60');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">previous_request</tt><tt class="py-op">)</tt> </tt>
+<a name="L652"></a><tt class="py-lineno">652</tt>  <tt class="py-line"> </tt>
+<a name="L653"></a><tt class="py-lineno">653</tt>  <tt class="py-line">    <tt class="py-name">pageToken</tt> <tt class="py-op">=</tt> <tt class="py-name">previous_response</tt><tt class="py-op">[</tt><tt class="py-string">'nextPageToken'</tt><tt class="py-op">]</tt> </tt>
+<a name="L654"></a><tt class="py-lineno">654</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt id="link-168" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-166', 'request', 'link-60');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L690"></a><tt class="py-lineno">690</tt>  <tt class="py-line">      <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L691"></a><tt class="py-lineno">691</tt>  <tt class="py-line"> </tt>
-<a name="L692"></a><tt class="py-lineno">692</tt>  <tt class="py-line">      <tt class="py-comment"># Find and remove old 'pageToken' value from URI</tt> </tt>
-<a name="L693"></a><tt class="py-lineno">693</tt>  <tt class="py-line">      <tt class="py-name">newq</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">q</tt> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-op">!=</tt> <tt class="py-string">'pageToken'</tt><tt class="py-op">]</tt> </tt>
-<a name="L694"></a><tt class="py-lineno">694</tt>  <tt class="py-line">      <tt class="py-name">newq</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'pageToken'</tt><tt class="py-op">,</tt> <tt class="py-name">pageToken</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L695"></a><tt class="py-lineno">695</tt>  <tt class="py-line">      <tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">newq</tt><tt class="py-op">)</tt> </tt>
-<a name="L696"></a><tt class="py-lineno">696</tt>  <tt class="py-line">      <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">)</tt> </tt>
-<a name="L697"></a><tt class="py-lineno">697</tt>  <tt class="py-line"> </tt>
-<a name="L698"></a><tt class="py-lineno">698</tt>  <tt class="py-line">      <tt id="link-167" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-168', 'request', 'link-60');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L655"></a><tt class="py-lineno">655</tt>  <tt class="py-line">    <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L656"></a><tt class="py-lineno">656</tt>  <tt class="py-line"> </tt>
+<a name="L657"></a><tt class="py-lineno">657</tt>  <tt class="py-line">    <tt class="py-comment"># Find and remove old 'pageToken' value from URI</tt> </tt>
+<a name="L658"></a><tt class="py-lineno">658</tt>  <tt class="py-line">    <tt class="py-name">newq</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">q</tt> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-op">!=</tt> <tt class="py-string">'pageToken'</tt><tt class="py-op">]</tt> </tt>
+<a name="L659"></a><tt class="py-lineno">659</tt>  <tt class="py-line">    <tt class="py-name">newq</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'pageToken'</tt><tt class="py-op">,</tt> <tt class="py-name">pageToken</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L660"></a><tt class="py-lineno">660</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">newq</tt><tt class="py-op">)</tt> </tt>
+<a name="L661"></a><tt class="py-lineno">661</tt>  <tt class="py-line">    <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">)</tt> </tt>
+<a name="L662"></a><tt class="py-lineno">662</tt>  <tt class="py-line"> </tt>
+<a name="L663"></a><tt class="py-lineno">663</tt>  <tt class="py-line">    <tt id="link-169" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-167', 'request', 'link-60');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
-<a name="L699"></a><tt class="py-lineno">699</tt>  <tt class="py-line"> </tt>
-<a name="L700"></a><tt class="py-lineno">700</tt>  <tt class="py-line">      <tt id="link-168" class="py-name"><a title="apiclient.discovery.logger
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-169', 'request', 'link-60');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
+<a name="L664"></a><tt class="py-lineno">664</tt>  <tt class="py-line"> </tt>
+<a name="L665"></a><tt class="py-lineno">665</tt>  <tt class="py-line">    <tt id="link-170" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-168', 'logger', 'link-45');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'URL being requested: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L701"></a><tt class="py-lineno">701</tt>  <tt class="py-line"> </tt>
-<a name="L702"></a><tt class="py-lineno">702</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-169" class="py-name"><a title="apiclient.http.HttpMock.request
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-170', 'logger', 'link-45');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'URL being requested: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L666"></a><tt class="py-lineno">666</tt>  <tt class="py-line"> </tt>
+<a name="L667"></a><tt class="py-lineno">667</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-171" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-169', 'request', 'link-60');">request</a></tt> </tt>
-</div><a name="L703"></a><tt class="py-lineno">703</tt>  <tt class="py-line"> </tt>
-<a name="L704"></a><tt class="py-lineno">704</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">theclass</tt><tt class="py-op">,</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodNext</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L705"></a><tt class="py-lineno">705</tt>  <tt class="py-line"> </tt>
-<a name="L706"></a><tt class="py-lineno">706</tt>  <tt class="py-line">  <tt class="py-comment"># Add basic methods to Resource</tt> </tt>
-<a name="L707"></a><tt class="py-lineno">707</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'methods'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L708"></a><tt class="py-lineno">708</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">[</tt><tt class="py-string">'methods'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L709"></a><tt class="py-lineno">709</tt>  <tt class="py-line">      <tt class="py-name">createMethod</tt><tt class="py-op">(</tt><tt class="py-name">Resource</tt><tt class="py-op">,</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">)</tt> </tt>
-<a name="L710"></a><tt class="py-lineno">710</tt>  <tt class="py-line">      <tt class="py-comment"># Add in _media methods. The functionality of the attached method will</tt> </tt>
-<a name="L711"></a><tt class="py-lineno">711</tt>  <tt class="py-line">      <tt class="py-comment"># change when it sees that the method name ends in _media.</tt> </tt>
-<a name="L712"></a><tt class="py-lineno">712</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="apiclient.schema.Schemas.get
-oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-170', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'supportsMediaDownload'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L713"></a><tt class="py-lineno">713</tt>  <tt class="py-line">        <tt class="py-name">createMethod</tt><tt class="py-op">(</tt><tt class="py-name">Resource</tt><tt class="py-op">,</tt> <tt class="py-name">methodName</tt> <tt class="py-op">+</tt> <tt class="py-string">'_media'</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">)</tt> </tt>
-<a name="L714"></a><tt class="py-lineno">714</tt>  <tt class="py-line"> </tt>
-<a name="L715"></a><tt class="py-lineno">715</tt>  <tt class="py-line">  <tt class="py-comment"># Add in nested resources</tt> </tt>
-<a name="L716"></a><tt class="py-lineno">716</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'resources'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L717"></a><tt class="py-lineno">717</tt>  <tt class="py-line"> </tt>
-<a name="L718"></a><tt class="py-lineno">718</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">createResourceMethod</tt><tt class="py-op">(</tt><tt class="py-param">theclass</tt><tt class="py-op">,</tt> <tt class="py-param">methodName</tt><tt class="py-op">,</tt> <tt class="py-param">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L719"></a><tt class="py-lineno">719</tt>  <tt class="py-line">      <tt class="py-docstring">"""Create a method on the Resource to access a nested Resource.</tt> </tt>
-<a name="L720"></a><tt class="py-lineno">720</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L721"></a><tt class="py-lineno">721</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
-<a name="L722"></a><tt class="py-lineno">722</tt>  <tt class="py-line"><tt class="py-docstring">        theclass: type, the class to attach methods to.</tt> </tt>
-<a name="L723"></a><tt class="py-lineno">723</tt>  <tt class="py-line"><tt class="py-docstring">        methodName: string, name of the method to use.</tt> </tt>
-<a name="L724"></a><tt class="py-lineno">724</tt>  <tt class="py-line"><tt class="py-docstring">        methodDesc: object, fragment of deserialized discovery document that</tt> </tt>
-<a name="L725"></a><tt class="py-lineno">725</tt>  <tt class="py-line"><tt class="py-docstring">          describes the method.</tt> </tt>
-<a name="L726"></a><tt class="py-lineno">726</tt>  <tt class="py-line"><tt class="py-docstring">        rootDesc: object, the entire deserialized discovery document.</tt> </tt>
-<a name="L727"></a><tt class="py-lineno">727</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
-<a name="L728"></a><tt class="py-lineno">728</tt>  <tt class="py-line">      <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-171" class="py-name"><a title="apiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-171', 'fix_method_name', 'link-88');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
-<a name="L729"></a><tt class="py-lineno">729</tt>  <tt class="py-line"> </tt>
-<a name="L730"></a><tt class="py-lineno">730</tt>  <tt class="py-line">      <tt class="py-keyword">def</tt> <tt class="py-def-name">methodResource</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L731"></a><tt class="py-lineno">731</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-172" class="py-name"><a title="apiclient.discovery._createResource" class="py-name" href="#" onclick="return doclink('link-172', '_createResource', 'link-79');">_createResource</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> </tt>
-<a name="L732"></a><tt class="py-lineno">732</tt>  <tt class="py-line">                              <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requestBuilder</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt><tt class="py-op">,</tt> </tt>
-<a name="L733"></a><tt class="py-lineno">733</tt>  <tt class="py-line">                              <tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">,</tt> <tt id="link-173" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-173', 'schema', 'link-38');">schema</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L734"></a><tt class="py-lineno">734</tt>  <tt class="py-line"> </tt>
-<a name="L735"></a><tt class="py-lineno">735</tt>  <tt class="py-line">      <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">methodResource</tt><tt class="py-op">,</tt> <tt class="py-string">'__doc__'</tt><tt class="py-op">,</tt> <tt class="py-string">'A collection resource.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L736"></a><tt class="py-lineno">736</tt>  <tt class="py-line">      <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">methodResource</tt><tt class="py-op">,</tt> <tt class="py-string">'__is_resource__'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
-<a name="L737"></a><tt class="py-lineno">737</tt>  <tt class="py-line">      <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">theclass</tt><tt class="py-op">,</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodResource</tt><tt class="py-op">)</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-171', 'request', 'link-60');">request</a></tt> </tt>
+</div><a name="L668"></a><tt class="py-lineno">668</tt>  <tt class="py-line"> </tt>
+<a name="L669"></a><tt class="py-lineno">669</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodNext</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L670"></a><tt class="py-lineno">670</tt>  <tt class="py-line"> </tt>
+<a name="Resource"></a><div id="Resource-def"><a name="L671"></a><tt class="py-lineno">671</tt>  <tt class="py-line"> </tt>
+<a name="L672"></a><tt class="py-lineno">672</tt> <a class="py-toggle" href="#" id="Resource-toggle" onclick="return toggle('Resource');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.discovery.Resource-class.html">Resource</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Resource-expanded"><a name="L673"></a><tt class="py-lineno">673</tt>  <tt class="py-line">  <tt class="py-docstring">"""A class for interacting with a resource."""</tt> </tt>
+<a name="L674"></a><tt class="py-lineno">674</tt>  <tt class="py-line"> </tt>
+<a name="Resource.__init__"></a><div id="Resource.__init__-def"><a name="L675"></a><tt class="py-lineno">675</tt> <a class="py-toggle" href="#" id="Resource.__init__-toggle" onclick="return toggle('Resource.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery.Resource-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">baseUrl</tt><tt class="py-op">,</tt> <tt class="py-param">model</tt><tt class="py-op">,</tt> <tt class="py-param">requestBuilder</tt><tt class="py-op">,</tt> <tt class="py-param">developerKey</tt><tt class="py-op">,</tt> </tt>
+<a name="L676"></a><tt class="py-lineno">676</tt>  <tt class="py-line">               <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Resource.__init__-expanded"><a name="L677"></a><tt class="py-lineno">677</tt>  <tt class="py-line">    <tt class="py-docstring">"""Build a Resource from the API description.</tt> </tt>
+<a name="L678"></a><tt class="py-lineno">678</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L679"></a><tt class="py-lineno">679</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L680"></a><tt class="py-lineno">680</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, Object to make http requests with.</tt> </tt>
+<a name="L681"></a><tt class="py-lineno">681</tt>  <tt class="py-line"><tt class="py-docstring">      baseUrl: string, base URL for the API. All requests are relative to this</tt> </tt>
+<a name="L682"></a><tt class="py-lineno">682</tt>  <tt class="py-line"><tt class="py-docstring">          URI.</tt> </tt>
+<a name="L683"></a><tt class="py-lineno">683</tt>  <tt class="py-line"><tt class="py-docstring">      model: apiclient.Model, converts to and from the wire format.</tt> </tt>
+<a name="L684"></a><tt class="py-lineno">684</tt>  <tt class="py-line"><tt class="py-docstring">      requestBuilder: class or callable that instantiates an</tt> </tt>
+<a name="L685"></a><tt class="py-lineno">685</tt>  <tt class="py-line"><tt class="py-docstring">          apiclient.HttpRequest object.</tt> </tt>
+<a name="L686"></a><tt class="py-lineno">686</tt>  <tt class="py-line"><tt class="py-docstring">      developerKey: string, key obtained from</tt> </tt>
+<a name="L687"></a><tt class="py-lineno">687</tt>  <tt class="py-line"><tt class="py-docstring">          https://code.google.com/apis/console</tt> </tt>
+<a name="L688"></a><tt class="py-lineno">688</tt>  <tt class="py-line"><tt class="py-docstring">      resourceDesc: object, section of deserialized discovery document that</tt> </tt>
+<a name="L689"></a><tt class="py-lineno">689</tt>  <tt class="py-line"><tt class="py-docstring">          describes a resource. Note that the top level discovery document</tt> </tt>
+<a name="L690"></a><tt class="py-lineno">690</tt>  <tt class="py-line"><tt class="py-docstring">          is considered a resource.</tt> </tt>
+<a name="L691"></a><tt class="py-lineno">691</tt>  <tt class="py-line"><tt class="py-docstring">      rootDesc: object, the entire deserialized discovery document.</tt> </tt>
+<a name="L692"></a><tt class="py-lineno">692</tt>  <tt class="py-line"><tt class="py-docstring">      schema: object, mapping of schema names to schema descriptions.</tt> </tt>
+<a name="L693"></a><tt class="py-lineno">693</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L694"></a><tt class="py-lineno">694</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dynamic_attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L695"></a><tt class="py-lineno">695</tt>  <tt class="py-line"> </tt>
+<a name="L696"></a><tt class="py-lineno">696</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt> <tt class="py-op">=</tt> <tt id="link-172" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-172', 'http', 'link-20');">http</a></tt> </tt>
+<a name="L697"></a><tt class="py-lineno">697</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt> <tt class="py-op">=</tt> <tt class="py-name">baseUrl</tt> </tt>
+<a name="L698"></a><tt class="py-lineno">698</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> <tt class="py-op">=</tt> <tt id="link-173" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-173', 'model', 'link-29');">model</a></tt> </tt>
+<a name="L699"></a><tt class="py-lineno">699</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt> <tt class="py-op">=</tt> <tt class="py-name">developerKey</tt> </tt>
+<a name="L700"></a><tt class="py-lineno">700</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requestBuilder</tt> <tt class="py-op">=</tt> <tt class="py-name">requestBuilder</tt> </tt>
+<a name="L701"></a><tt class="py-lineno">701</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt> <tt class="py-op">=</tt> <tt class="py-name">resourceDesc</tt> </tt>
+<a name="L702"></a><tt class="py-lineno">702</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootDesc</tt> <tt class="py-op">=</tt> <tt class="py-name">rootDesc</tt> </tt>
+<a name="L703"></a><tt class="py-lineno">703</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt> <tt class="py-op">=</tt> <tt id="link-174" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-174', 'schema', 'link-38');">schema</a></tt> </tt>
+<a name="L704"></a><tt class="py-lineno">704</tt>  <tt class="py-line"> </tt>
+<a name="L705"></a><tt class="py-lineno">705</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name" targets="Method apiclient.discovery.Resource._set_service_methods()=apiclient.discovery.Resource-class.html#_set_service_methods"><a title="apiclient.discovery.Resource._set_service_methods" class="py-name" href="#" onclick="return doclink('link-175', '_set_service_methods', 'link-175');">_set_service_methods</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L706"></a><tt class="py-lineno">706</tt>  <tt class="py-line"> </tt>
+<a name="Resource._set_dynamic_attr"></a><div id="Resource._set_dynamic_attr-def"><a name="L707"></a><tt class="py-lineno">707</tt> <a class="py-toggle" href="#" id="Resource._set_dynamic_attr-toggle" onclick="return toggle('Resource._set_dynamic_attr');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery.Resource-class.html#_set_dynamic_attr">_set_dynamic_attr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">attr_name</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource._set_dynamic_attr-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Resource._set_dynamic_attr-expanded"><a name="L708"></a><tt class="py-lineno">708</tt>  <tt class="py-line">    <tt class="py-docstring">"""Sets an instance attribute and tracks it in a list of dynamic attributes.</tt> </tt>
+<a name="L709"></a><tt class="py-lineno">709</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L710"></a><tt class="py-lineno">710</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L711"></a><tt class="py-lineno">711</tt>  <tt class="py-line"><tt class="py-docstring">      attr_name: string; The name of the attribute to be set</tt> </tt>
+<a name="L712"></a><tt class="py-lineno">712</tt>  <tt class="py-line"><tt class="py-docstring">      value: The value being set on the object and tracked in the dynamic cache.</tt> </tt>
+<a name="L713"></a><tt class="py-lineno">713</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L714"></a><tt class="py-lineno">714</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dynamic_attrs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">attr_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L715"></a><tt class="py-lineno">715</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">attr_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+</div><a name="L716"></a><tt class="py-lineno">716</tt>  <tt class="py-line"> </tt>
+<a name="Resource.__getstate__"></a><div id="Resource.__getstate__-def"><a name="L717"></a><tt class="py-lineno">717</tt> <a class="py-toggle" href="#" id="Resource.__getstate__-toggle" onclick="return toggle('Resource.__getstate__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery.Resource-class.html#__getstate__">__getstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource.__getstate__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Resource.__getstate__-expanded"><a name="L718"></a><tt class="py-lineno">718</tt>  <tt class="py-line">    <tt class="py-docstring">"""Trim the state down to something that can be pickled.</tt> </tt>
+<a name="L719"></a><tt class="py-lineno">719</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L720"></a><tt class="py-lineno">720</tt>  <tt class="py-line"><tt class="py-docstring">    Uses the fact that the instance variable _dynamic_attrs holds attrs that</tt> </tt>
+<a name="L721"></a><tt class="py-lineno">721</tt>  <tt class="py-line"><tt class="py-docstring">    will be wiped and restored on pickle serialization.</tt> </tt>
+<a name="L722"></a><tt class="py-lineno">722</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L723"></a><tt class="py-lineno">723</tt>  <tt class="py-line">    <tt class="py-name">state_dict</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
+<a name="L724"></a><tt class="py-lineno">724</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">dynamic_attr</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dynamic_attrs</tt><tt class="py-op">:</tt> </tt>
+<a name="L725"></a><tt class="py-lineno">725</tt>  <tt class="py-line">      <tt class="py-keyword">del</tt> <tt class="py-name">state_dict</tt><tt class="py-op">[</tt><tt class="py-name">dynamic_attr</tt><tt class="py-op">]</tt> </tt>
+<a name="L726"></a><tt class="py-lineno">726</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">state_dict</tt><tt class="py-op">[</tt><tt class="py-string">'_dynamic_attrs'</tt><tt class="py-op">]</tt> </tt>
+<a name="L727"></a><tt class="py-lineno">727</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">state_dict</tt> </tt>
+</div><a name="L728"></a><tt class="py-lineno">728</tt>  <tt class="py-line"> </tt>
+<a name="Resource.__setstate__"></a><div id="Resource.__setstate__-def"><a name="L729"></a><tt class="py-lineno">729</tt> <a class="py-toggle" href="#" id="Resource.__setstate__-toggle" onclick="return toggle('Resource.__setstate__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery.Resource-class.html#__setstate__">__setstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">state</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource.__setstate__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Resource.__setstate__-expanded"><a name="L730"></a><tt class="py-lineno">730</tt>  <tt class="py-line">    <tt class="py-docstring">"""Reconstitute the state of the object from being pickled.</tt> </tt>
+<a name="L731"></a><tt class="py-lineno">731</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L732"></a><tt class="py-lineno">732</tt>  <tt class="py-line"><tt class="py-docstring">    Uses the fact that the instance variable _dynamic_attrs holds attrs that</tt> </tt>
+<a name="L733"></a><tt class="py-lineno">733</tt>  <tt class="py-line"><tt class="py-docstring">    will be wiped and restored on pickle serialization.</tt> </tt>
+<a name="L734"></a><tt class="py-lineno">734</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L735"></a><tt class="py-lineno">735</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">state</tt><tt class="py-op">)</tt> </tt>
+<a name="L736"></a><tt class="py-lineno">736</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dynamic_attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L737"></a><tt class="py-lineno">737</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="apiclient.discovery.Resource._set_service_methods" class="py-name" href="#" onclick="return doclink('link-176', '_set_service_methods', 'link-175');">_set_service_methods</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 </div><a name="L738"></a><tt class="py-lineno">738</tt>  <tt class="py-line"> </tt>
-<a name="L739"></a><tt class="py-lineno">739</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L740"></a><tt class="py-lineno">740</tt>  <tt class="py-line">      <tt class="py-name">createResourceMethod</tt><tt class="py-op">(</tt><tt class="py-name">Resource</tt><tt class="py-op">,</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">)</tt> </tt>
-<a name="L741"></a><tt class="py-lineno">741</tt>  <tt class="py-line"> </tt>
-<a name="L742"></a><tt class="py-lineno">742</tt>  <tt class="py-line">  <tt class="py-comment"># Add _next() methods</tt> </tt>
-<a name="L743"></a><tt class="py-lineno">743</tt>  <tt class="py-line">  <tt class="py-comment"># Look for response bodies in schema that contain nextPageToken, and methods</tt> </tt>
-<a name="L744"></a><tt class="py-lineno">744</tt>  <tt class="py-line">  <tt class="py-comment"># that take a pageToken parameter.</tt> </tt>
-<a name="L745"></a><tt class="py-lineno">745</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'methods'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L746"></a><tt class="py-lineno">746</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">[</tt><tt class="py-string">'methods'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L747"></a><tt class="py-lineno">747</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'response'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L748"></a><tt class="py-lineno">748</tt>  <tt class="py-line">        <tt class="py-name">responseSchema</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'response'</tt><tt class="py-op">]</tt> </tt>
-<a name="L749"></a><tt class="py-lineno">749</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'$ref'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">responseSchema</tt><tt class="py-op">:</tt> </tt>
-<a name="L750"></a><tt class="py-lineno">750</tt>  <tt class="py-line">          <tt class="py-name">responseSchema</tt> <tt class="py-op">=</tt> <tt id="link-174" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-174', 'schema', 'link-38');">schema</a></tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="Resource._set_service_methods"></a><div id="Resource._set_service_methods-def"><a name="L739"></a><tt class="py-lineno">739</tt> <a class="py-toggle" href="#" id="Resource._set_service_methods-toggle" onclick="return toggle('Resource._set_service_methods');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery.Resource-class.html#_set_service_methods">_set_service_methods</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource._set_service_methods-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Resource._set_service_methods-expanded"><a name="L740"></a><tt class="py-lineno">740</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name" targets="Method apiclient.discovery.Resource._add_basic_methods()=apiclient.discovery.Resource-class.html#_add_basic_methods"><a title="apiclient.discovery.Resource._add_basic_methods" class="py-name" href="#" onclick="return doclink('link-177', '_add_basic_methods', 'link-177');">_add_basic_methods</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt><tt class="py-op">)</tt> </tt>
+<a name="L741"></a><tt class="py-lineno">741</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name" targets="Method apiclient.discovery.Resource._add_nested_resources()=apiclient.discovery.Resource-class.html#_add_nested_resources"><a title="apiclient.discovery.Resource._add_nested_resources" class="py-name" href="#" onclick="return doclink('link-178', '_add_nested_resources', 'link-178');">_add_nested_resources</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt><tt class="py-op">)</tt> </tt>
+<a name="L742"></a><tt class="py-lineno">742</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name" targets="Method apiclient.discovery.Resource._add_next_methods()=apiclient.discovery.Resource-class.html#_add_next_methods"><a title="apiclient.discovery.Resource._add_next_methods" class="py-name" href="#" onclick="return doclink('link-179', '_add_next_methods', 'link-179');">_add_next_methods</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L743"></a><tt class="py-lineno">743</tt>  <tt class="py-line"> </tt>
+<a name="Resource._add_basic_methods"></a><div id="Resource._add_basic_methods-def"><a name="L744"></a><tt class="py-lineno">744</tt> <a class="py-toggle" href="#" id="Resource._add_basic_methods-toggle" onclick="return toggle('Resource._add_basic_methods');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery.Resource-class.html#_add_basic_methods">_add_basic_methods</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource._add_basic_methods-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Resource._add_basic_methods-expanded"><a name="L745"></a><tt class="py-lineno">745</tt>  <tt class="py-line">    <tt class="py-comment"># Add basic methods to Resource</tt> </tt>
+<a name="L746"></a><tt class="py-lineno">746</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'methods'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L747"></a><tt class="py-lineno">747</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">[</tt><tt class="py-string">'methods'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L748"></a><tt class="py-lineno">748</tt>  <tt class="py-line">        <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt id="link-180" class="py-name" targets="Function apiclient.discovery.createMethod()=apiclient.discovery-module.html#createMethod"><a title="apiclient.discovery.createMethod" class="py-name" href="#" onclick="return doclink('link-180', 'createMethod', 'link-180');">createMethod</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L749"></a><tt class="py-lineno">749</tt>  <tt class="py-line">            <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">,</tt> <tt id="link-181" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-181', 'schema', 'link-38');">schema</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L750"></a><tt class="py-lineno">750</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name" targets="Method apiclient.discovery.Resource._set_dynamic_attr()=apiclient.discovery.Resource-class.html#_set_dynamic_attr"><a title="apiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-182', '_set_dynamic_attr', 'link-182');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
+<a name="L751"></a><tt class="py-lineno">751</tt>  <tt class="py-line">                               <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L752"></a><tt class="py-lineno">752</tt>  <tt class="py-line">        <tt class="py-comment"># Add in _media methods. The functionality of the attached method will</tt> </tt>
+<a name="L753"></a><tt class="py-lineno">753</tt>  <tt class="py-line">        <tt class="py-comment"># change when it sees that the method name ends in _media.</tt> </tt>
+<a name="L754"></a><tt class="py-lineno">754</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-175', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">responseSchema</tt><tt class="py-op">[</tt><tt class="py-string">'$ref'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L751"></a><tt class="py-lineno">751</tt>  <tt class="py-line">        <tt class="py-name">hasNextPageToken</tt> <tt class="py-op">=</tt> <tt class="py-string">'nextPageToken'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">responseSchema</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-183', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'supportsMediaDownload'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L755"></a><tt class="py-lineno">755</tt>  <tt class="py-line">          <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt id="link-184" class="py-name"><a title="apiclient.discovery.createMethod" class="py-name" href="#" onclick="return doclink('link-184', 'createMethod', 'link-180');">createMethod</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L756"></a><tt class="py-lineno">756</tt>  <tt class="py-line">              <tt class="py-name">methodName</tt> <tt class="py-op">+</tt> <tt class="py-string">'_media'</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">,</tt> <tt id="link-185" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-185', 'schema', 'link-38');">schema</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L757"></a><tt class="py-lineno">757</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="apiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-186', '_set_dynamic_attr', 'link-182');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
+<a name="L758"></a><tt class="py-lineno">758</tt>  <tt class="py-line">                                 <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L759"></a><tt class="py-lineno">759</tt>  <tt class="py-line"> </tt>
+<a name="Resource._add_nested_resources"></a><div id="Resource._add_nested_resources-def"><a name="L760"></a><tt class="py-lineno">760</tt> <a class="py-toggle" href="#" id="Resource._add_nested_resources-toggle" onclick="return toggle('Resource._add_nested_resources');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery.Resource-class.html#_add_nested_resources">_add_nested_resources</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource._add_nested_resources-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Resource._add_nested_resources-expanded"><a name="L761"></a><tt class="py-lineno">761</tt>  <tt class="py-line">    <tt class="py-comment"># Add in nested resources</tt> </tt>
+<a name="L762"></a><tt class="py-lineno">762</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'resources'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L763"></a><tt class="py-lineno">763</tt>  <tt class="py-line"> </tt>
+<a name="L764"></a><tt class="py-lineno">764</tt>  <tt class="py-line">      <tt class="py-keyword">def</tt> <tt class="py-def-name">createResourceMethod</tt><tt class="py-op">(</tt><tt class="py-param">methodName</tt><tt class="py-op">,</tt> <tt class="py-param">methodDesc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L765"></a><tt class="py-lineno">765</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create a method on the Resource to access a nested Resource.</tt> </tt>
+<a name="L766"></a><tt class="py-lineno">766</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L767"></a><tt class="py-lineno">767</tt>  <tt class="py-line"><tt class="py-docstring">        Args:</tt> </tt>
+<a name="L768"></a><tt class="py-lineno">768</tt>  <tt class="py-line"><tt class="py-docstring">          methodName: string, name of the method to use.</tt> </tt>
+<a name="L769"></a><tt class="py-lineno">769</tt>  <tt class="py-line"><tt class="py-docstring">          methodDesc: object, fragment of deserialized discovery document that</tt> </tt>
+<a name="L770"></a><tt class="py-lineno">770</tt>  <tt class="py-line"><tt class="py-docstring">            describes the method.</tt> </tt>
+<a name="L771"></a><tt class="py-lineno">771</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L772"></a><tt class="py-lineno">772</tt>  <tt class="py-line">        <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-187" class="py-name"><a title="apiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-187', 'fix_method_name', 'link-89');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
+<a name="L773"></a><tt class="py-lineno">773</tt>  <tt class="py-line"> </tt>
+<a name="L774"></a><tt class="py-lineno">774</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">methodResource</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L775"></a><tt class="py-lineno">775</tt>  <tt class="py-line">          <tt class="py-keyword">return</tt> <tt id="link-188" class="py-name"><a title="apiclient.discovery.Resource" class="py-name" href="#" onclick="return doclink('link-188', 'Resource', 'link-79');">Resource</a></tt><tt class="py-op">(</tt><tt id="link-189" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-189', 'http', 'link-20');">http</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt><tt class="py-op">,</tt> <tt class="py-name">baseUrl</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> </tt>
+<a name="L776"></a><tt class="py-lineno">776</tt>  <tt class="py-line">                          <tt id="link-190" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-190', 'model', 'link-29');">model</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt class="py-name">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt><tt class="py-op">,</tt> </tt>
+<a name="L777"></a><tt class="py-lineno">777</tt>  <tt class="py-line">                          <tt class="py-name">requestBuilder</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requestBuilder</tt><tt class="py-op">,</tt> </tt>
+<a name="L778"></a><tt class="py-lineno">778</tt>  <tt class="py-line">                          <tt class="py-name">resourceDesc</tt><tt class="py-op">=</tt><tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">=</tt><tt class="py-name">rootDesc</tt><tt class="py-op">,</tt> </tt>
+<a name="L779"></a><tt class="py-lineno">779</tt>  <tt class="py-line">                          <tt id="link-191" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-191', 'schema', 'link-38');">schema</a></tt><tt class="py-op">=</tt><tt id="link-192" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-192', 'schema', 'link-38');">schema</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L780"></a><tt class="py-lineno">780</tt>  <tt class="py-line"> </tt>
+<a name="L781"></a><tt class="py-lineno">781</tt>  <tt class="py-line">        <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">methodResource</tt><tt class="py-op">,</tt> <tt class="py-string">'__doc__'</tt><tt class="py-op">,</tt> <tt class="py-string">'A collection resource.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L782"></a><tt class="py-lineno">782</tt>  <tt class="py-line">        <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">methodResource</tt><tt class="py-op">,</tt> <tt class="py-string">'__is_resource__'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L783"></a><tt class="py-lineno">783</tt>  <tt class="py-line"> </tt>
+<a name="L784"></a><tt class="py-lineno">784</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodResource</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L785"></a><tt class="py-lineno">785</tt>  <tt class="py-line"> </tt>
+<a name="L786"></a><tt class="py-lineno">786</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L787"></a><tt class="py-lineno">787</tt>  <tt class="py-line">        <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">createResourceMethod</tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">)</tt> </tt>
+<a name="L788"></a><tt class="py-lineno">788</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="apiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-193', '_set_dynamic_attr', 'link-182');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
+<a name="L789"></a><tt class="py-lineno">789</tt>  <tt class="py-line">                               <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L790"></a><tt class="py-lineno">790</tt>  <tt class="py-line"> </tt>
+<a name="Resource._add_next_methods"></a><div id="Resource._add_next_methods-def"><a name="L791"></a><tt class="py-lineno">791</tt> <a class="py-toggle" href="#" id="Resource._add_next_methods-toggle" onclick="return toggle('Resource._add_next_methods');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery.Resource-class.html#_add_next_methods">_add_next_methods</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource._add_next_methods-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Resource._add_next_methods-expanded"><a name="L792"></a><tt class="py-lineno">792</tt>  <tt class="py-line">    <tt class="py-comment"># Add _next() methods</tt> </tt>
+<a name="L793"></a><tt class="py-lineno">793</tt>  <tt class="py-line">    <tt class="py-comment"># Look for response bodies in schema that contain nextPageToken, and methods</tt> </tt>
+<a name="L794"></a><tt class="py-lineno">794</tt>  <tt class="py-line">    <tt class="py-comment"># that take a pageToken parameter.</tt> </tt>
+<a name="L795"></a><tt class="py-lineno">795</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'methods'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L796"></a><tt class="py-lineno">796</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">[</tt><tt class="py-string">'methods'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L797"></a><tt class="py-lineno">797</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'response'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L798"></a><tt class="py-lineno">798</tt>  <tt class="py-line">          <tt class="py-name">responseSchema</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'response'</tt><tt class="py-op">]</tt> </tt>
+<a name="L799"></a><tt class="py-lineno">799</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-string">'$ref'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">responseSchema</tt><tt class="py-op">:</tt> </tt>
+<a name="L800"></a><tt class="py-lineno">800</tt>  <tt class="py-line">            <tt class="py-name">responseSchema</tt> <tt class="py-op">=</tt> <tt id="link-194" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-194', 'schema', 'link-38');">schema</a></tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-176', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'properties'</tt><tt class="py-op">,</tt> </tt>
-<a name="L752"></a><tt class="py-lineno">752</tt>  <tt class="py-line">                                                                 <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L753"></a><tt class="py-lineno">753</tt>  <tt class="py-line">        <tt class="py-name">hasPageToken</tt> <tt class="py-op">=</tt> <tt class="py-string">'pageToken'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-195', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">responseSchema</tt><tt class="py-op">[</tt><tt class="py-string">'$ref'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L801"></a><tt class="py-lineno">801</tt>  <tt class="py-line">          <tt class="py-name">hasNextPageToken</tt> <tt class="py-op">=</tt> <tt class="py-string">'nextPageToken'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">responseSchema</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-177', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L754"></a><tt class="py-lineno">754</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasNextPageToken</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasPageToken</tt><tt class="py-op">:</tt> </tt>
-<a name="L755"></a><tt class="py-lineno">755</tt>  <tt class="py-line">          <tt class="py-name">createNextMethod</tt><tt class="py-op">(</tt><tt class="py-name">Resource</tt><tt class="py-op">,</tt> <tt class="py-name">methodName</tt> <tt class="py-op">+</tt> <tt class="py-string">'_next'</tt><tt class="py-op">,</tt> </tt>
-<a name="L756"></a><tt class="py-lineno">756</tt>  <tt class="py-line">                           <tt class="py-name">resourceDesc</tt><tt class="py-op">[</tt><tt class="py-string">'methods'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">methodName</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L757"></a><tt class="py-lineno">757</tt>  <tt class="py-line">                           <tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
-<a name="L758"></a><tt class="py-lineno">758</tt>  <tt class="py-line"> </tt>
-<a name="L759"></a><tt class="py-lineno">759</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">Resource</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L760"></a><tt class="py-lineno">760</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-196', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'properties'</tt><tt class="py-op">,</tt> </tt>
+<a name="L802"></a><tt class="py-lineno">802</tt>  <tt class="py-line">                                                                   <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L803"></a><tt class="py-lineno">803</tt>  <tt class="py-line">          <tt class="py-name">hasPageToken</tt> <tt class="py-op">=</tt> <tt class="py-string">'pageToken'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-197', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L804"></a><tt class="py-lineno">804</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">hasNextPageToken</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasPageToken</tt><tt class="py-op">:</tt> </tt>
+<a name="L805"></a><tt class="py-lineno">805</tt>  <tt class="py-line">            <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt id="link-198" class="py-name" targets="Function apiclient.discovery.createNextMethod()=apiclient.discovery-module.html#createNextMethod"><a title="apiclient.discovery.createNextMethod" class="py-name" href="#" onclick="return doclink('link-198', 'createNextMethod', 'link-198');">createNextMethod</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt> <tt class="py-op">+</tt> <tt class="py-string">'_next'</tt><tt class="py-op">)</tt> </tt>
+<a name="L806"></a><tt class="py-lineno">806</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="apiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-199', '_set_dynamic_attr', 'link-182');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
+<a name="L807"></a><tt class="py-lineno">807</tt>  <tt class="py-line">                                   <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L808"></a><tt class="py-lineno">808</tt>  <tt class="py-line"> </tt><script type="text/javascript">
 <!--
 expandto(location.href);
 // -->
@@ -982,7 +1032,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:47 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.discovery.Resource-class.html b/docs/epy/apiclient.discovery.Resource-class.html
new file mode 100644
index 0000000..061c331
--- /dev/null
+++ b/docs/epy/apiclient.discovery.Resource-class.html
@@ -0,0 +1,471 @@
+<?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>apiclient.discovery.Resource</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>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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%">
+      <span class="breadcrumbs">
+        <a href="apiclient-module.html">Package&nbsp;apiclient</a> ::
+        <a href="apiclient.discovery-module.html">Module&nbsp;discovery</a> ::
+        Class&nbsp;Resource
+      </span>
+    </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="apiclient.discovery.Resource-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Resource</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.discovery-pysrc.html#Resource">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_resource" name="class_hierarchy_for_resource">
+<area shape="rect" id="node1" href="apiclient.discovery.Resource-class.html" title="Resource" alt="" coords="5,6,83,34"/>
+</map>
+  <img src="class_hierarchy_for_resource.gif" alt='' usemap="#class_hierarchy_for_resource" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<pre class="literalblock">
+A class for interacting with a resource.
+
+</pre>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.discovery.Resource-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">http</span>,
+        <span class="summary-sig-arg">baseUrl</span>,
+        <span class="summary-sig-arg">model</span>,
+        <span class="summary-sig-arg">requestBuilder</span>,
+        <span class="summary-sig-arg">developerKey</span>,
+        <span class="summary-sig-arg">resourceDesc</span>,
+        <span class="summary-sig-arg">rootDesc</span>,
+        <span class="summary-sig-arg">schema</span>)</span><br />
+      Build a Resource from the API description.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.discovery-pysrc.html#Resource.__init__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.discovery.Resource-class.html#_set_dynamic_attr" class="summary-sig-name" onclick="show_private();">_set_dynamic_attr</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">attr_name</span>,
+        <span class="summary-sig-arg">value</span>)</span><br />
+      Sets an instance attribute and tracks it in a list of dynamic attributes.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.discovery-pysrc.html#Resource._set_dynamic_attr">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.discovery.Resource-class.html#__getstate__" class="summary-sig-name">__getstate__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Trim the state down to something that can be pickled.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.discovery-pysrc.html#Resource.__getstate__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.discovery.Resource-class.html#__setstate__" class="summary-sig-name">__setstate__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">state</span>)</span><br />
+      Reconstitute the state of the object from being pickled.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.discovery-pysrc.html#Resource.__setstate__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_set_service_methods"></a><span class="summary-sig-name">_set_service_methods</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.discovery-pysrc.html#Resource._set_service_methods">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_add_basic_methods"></a><span class="summary-sig-name">_add_basic_methods</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">resourceDesc</span>,
+        <span class="summary-sig-arg">rootDesc</span>,
+        <span class="summary-sig-arg">schema</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.discovery-pysrc.html#Resource._add_basic_methods">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_add_nested_resources"></a><span class="summary-sig-name">_add_nested_resources</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">resourceDesc</span>,
+        <span class="summary-sig-arg">rootDesc</span>,
+        <span class="summary-sig-arg">schema</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.discovery-pysrc.html#Resource._add_nested_resources">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_add_next_methods"></a><span class="summary-sig-name">_add_next_methods</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">resourceDesc</span>,
+        <span class="summary-sig-arg">schema</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.discovery-pysrc.html#Resource._add_next_methods">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__format__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__sizeof__</code>,
+      <code>__str__</code>,
+      <code>__subclasshook__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">http</span>,
+        <span class="sig-arg">baseUrl</span>,
+        <span class="sig-arg">model</span>,
+        <span class="sig-arg">requestBuilder</span>,
+        <span class="sig-arg">developerKey</span>,
+        <span class="sig-arg">resourceDesc</span>,
+        <span class="sig-arg">rootDesc</span>,
+        <span class="sig-arg">schema</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.discovery-pysrc.html#Resource.__init__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Build a Resource from the API description.
+
+Args:
+  http: httplib2.Http, Object to make http requests with.
+  baseUrl: string, base URL for the API. All requests are relative to this
+      URI.
+  model: apiclient.Model, converts to and from the wire format.
+  requestBuilder: class or callable that instantiates an
+      apiclient.HttpRequest object.
+  developerKey: string, key obtained from
+      https://code.google.com/apis/console
+  resourceDesc: object, section of deserialized discovery document that
+      describes a resource. Note that the top level discovery document
+      is considered a resource.
+  rootDesc: object, the entire deserialized discovery document.
+  schema: object, mapping of schema names to schema descriptions.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_set_dynamic_attr"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_set_dynamic_attr</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">attr_name</span>,
+        <span class="sig-arg">value</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.discovery-pysrc.html#Resource._set_dynamic_attr">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Sets an instance attribute and tracks it in a list of dynamic attributes.
+
+Args:
+  attr_name: string; The name of the attribute to be set
+  value: The value being set on the object and tracked in the dynamic cache.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="__getstate__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__getstate__</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.discovery-pysrc.html#Resource.__getstate__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Trim the state down to something that can be pickled.
+
+Uses the fact that the instance variable _dynamic_attrs holds attrs that
+will be wiped and restored on pickle serialization.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="__setstate__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__setstate__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">state</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.discovery-pysrc.html#Resource.__setstate__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Reconstitute the state of the object from being pickled.
+
+Uses the fact that the instance variable _dynamic_attrs holds attrs that
+will be wiped and restored on pickle serialization.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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 Thu Jan 24 16:14:32 2013
+    </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>
diff --git a/docs/epy/apiclient.errors-module.html b/docs/epy/apiclient.errors-module.html
index b6cfc38..bce77c8 100644
--- a/docs/epy/apiclient.errors-module.html
+++ b/docs/epy/apiclient.errors-module.html
@@ -110,6 +110,14 @@
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
+        <a href="apiclient.errors.UnknownFileType-class.html" class="summary-name">UnknownFileType</a><br />
+      File type unknown or unexpected.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
         <a href="apiclient.errors.UnknownLinkType-class.html" class="summary-name">UnknownLinkType</a><br />
       Link type unknown or unexpected.
     </td>
@@ -202,7 +210,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors-pysrc.html b/docs/epy/apiclient.errors-pysrc.html
index 053f7ba..c9e9986 100644
--- a/docs/epy/apiclient.errors-pysrc.html
+++ b/docs/epy/apiclient.errors-pysrc.html
@@ -121,60 +121,66 @@
 </div><div id="InvalidJsonError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InvalidJsonError-expanded"><a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">  <tt class="py-docstring">"""The JSON returned could not be parsed."""</tt> </tt>
 <a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
 </div><a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"> </tt>
-<a name="UnknownLinkType"></a><div id="UnknownLinkType-def"><a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"> </tt>
-<a name="L69"></a><tt class="py-lineno"> 69</tt> <a class="py-toggle" href="#" id="UnknownLinkType-toggle" onclick="return toggle('UnknownLinkType');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.UnknownLinkType-class.html">UnknownLinkType</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="UnknownLinkType-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnknownLinkType-expanded"><a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">  <tt class="py-docstring">"""Link type unknown or unexpected."""</tt> </tt>
+<a name="UnknownFileType"></a><div id="UnknownFileType-def"><a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <a class="py-toggle" href="#" id="UnknownFileType-toggle" onclick="return toggle('UnknownFileType');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.UnknownFileType-class.html">UnknownFileType</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnknownFileType-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnknownFileType-expanded"><a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">  <tt class="py-docstring">"""File type unknown or unexpected."""</tt> </tt>
 <a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
 </div><a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"> </tt>
-<a name="UnknownApiNameOrVersion"></a><div id="UnknownApiNameOrVersion-def"><a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"> </tt>
-<a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="UnknownApiNameOrVersion-toggle" onclick="return toggle('UnknownApiNameOrVersion');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.UnknownApiNameOrVersion-class.html">UnknownApiNameOrVersion</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="UnknownApiNameOrVersion-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnknownApiNameOrVersion-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">  <tt class="py-docstring">"""No API with that name and version exists."""</tt> </tt>
+<a name="UnknownLinkType"></a><div id="UnknownLinkType-def"><a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="UnknownLinkType-toggle" onclick="return toggle('UnknownLinkType');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.UnknownLinkType-class.html">UnknownLinkType</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnknownLinkType-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnknownLinkType-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">  <tt class="py-docstring">"""Link type unknown or unexpected."""</tt> </tt>
 <a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
 </div><a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"> </tt>
-<a name="UnacceptableMimeTypeError"></a><div id="UnacceptableMimeTypeError-def"><a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"> </tt>
-<a name="L79"></a><tt class="py-lineno"> 79</tt> <a class="py-toggle" href="#" id="UnacceptableMimeTypeError-toggle" onclick="return toggle('UnacceptableMimeTypeError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.UnacceptableMimeTypeError-class.html">UnacceptableMimeTypeError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="UnacceptableMimeTypeError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnacceptableMimeTypeError-expanded"><a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">  <tt class="py-docstring">"""That is an unacceptable mimetype for this operation."""</tt> </tt>
+<a name="UnknownApiNameOrVersion"></a><div id="UnknownApiNameOrVersion-def"><a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <a class="py-toggle" href="#" id="UnknownApiNameOrVersion-toggle" onclick="return toggle('UnknownApiNameOrVersion');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.UnknownApiNameOrVersion-class.html">UnknownApiNameOrVersion</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnknownApiNameOrVersion-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnknownApiNameOrVersion-expanded"><a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">  <tt class="py-docstring">"""No API with that name and version exists."""</tt> </tt>
 <a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
 </div><a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"> </tt>
-<a name="MediaUploadSizeError"></a><div id="MediaUploadSizeError-def"><a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"> </tt>
-<a name="L84"></a><tt class="py-lineno"> 84</tt> <a class="py-toggle" href="#" id="MediaUploadSizeError-toggle" onclick="return toggle('MediaUploadSizeError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.MediaUploadSizeError-class.html">MediaUploadSizeError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaUploadSizeError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="MediaUploadSizeError-expanded"><a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">  <tt class="py-docstring">"""Media is larger than the method can accept."""</tt> </tt>
+<a name="UnacceptableMimeTypeError"></a><div id="UnacceptableMimeTypeError-def"><a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <a class="py-toggle" href="#" id="UnacceptableMimeTypeError-toggle" onclick="return toggle('UnacceptableMimeTypeError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.UnacceptableMimeTypeError-class.html">UnacceptableMimeTypeError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnacceptableMimeTypeError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnacceptableMimeTypeError-expanded"><a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">  <tt class="py-docstring">"""That is an unacceptable mimetype for this operation."""</tt> </tt>
 <a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
 </div><a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"> </tt>
-<a name="ResumableUploadError"></a><div id="ResumableUploadError-def"><a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"> </tt>
-<a name="L89"></a><tt class="py-lineno"> 89</tt> <a class="py-toggle" href="#" id="ResumableUploadError-toggle" onclick="return toggle('ResumableUploadError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.ResumableUploadError-class.html">ResumableUploadError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ResumableUploadError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ResumableUploadError-expanded"><a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">  <tt class="py-docstring">"""Error occured during resumable upload."""</tt> </tt>
+<a name="MediaUploadSizeError"></a><div id="MediaUploadSizeError-def"><a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <a class="py-toggle" href="#" id="MediaUploadSizeError-toggle" onclick="return toggle('MediaUploadSizeError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.MediaUploadSizeError-class.html">MediaUploadSizeError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaUploadSizeError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="MediaUploadSizeError-expanded"><a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">  <tt class="py-docstring">"""Media is larger than the method can accept."""</tt> </tt>
 <a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
 </div><a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"> </tt>
-<a name="InvalidChunkSizeError"></a><div id="InvalidChunkSizeError-def"><a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"> </tt>
-<a name="L94"></a><tt class="py-lineno"> 94</tt> <a class="py-toggle" href="#" id="InvalidChunkSizeError-toggle" onclick="return toggle('InvalidChunkSizeError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.InvalidChunkSizeError-class.html">InvalidChunkSizeError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="InvalidChunkSizeError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InvalidChunkSizeError-expanded"><a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">  <tt class="py-docstring">"""The given chunksize is not valid."""</tt> </tt>
+<a name="ResumableUploadError"></a><div id="ResumableUploadError-def"><a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <a class="py-toggle" href="#" id="ResumableUploadError-toggle" onclick="return toggle('ResumableUploadError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.ResumableUploadError-class.html">ResumableUploadError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ResumableUploadError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ResumableUploadError-expanded"><a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">  <tt class="py-docstring">"""Error occured during resumable upload."""</tt> </tt>
 <a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
 </div><a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"> </tt>
-<a name="BatchError"></a><div id="BatchError-def"><a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"> </tt>
-<a name="L99"></a><tt class="py-lineno"> 99</tt> <a class="py-toggle" href="#" id="BatchError-toggle" onclick="return toggle('BatchError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.BatchError-class.html">BatchError</a><tt class="py-op">(</tt><tt class="py-base-class">HttpError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="BatchError-expanded"><a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">  <tt class="py-docstring">"""Error occured during batch operations."""</tt> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"> </tt>
-<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-9', 'positional', 'link-4');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="BatchError.__init__"></a><div id="BatchError.__init__-def"><a name="L103"></a><tt class="py-lineno">103</tt> <a class="py-toggle" href="#" id="BatchError.__init__-toggle" onclick="return toggle('BatchError.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.BatchError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">reason</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BatchError.__init__-expanded"><a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt> </tt>
-<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt> </tt>
-<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">reason</tt> </tt>
-</div><a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"> </tt>
-<a name="BatchError.__repr__"></a><div id="BatchError.__repr__-def"><a name="L108"></a><tt class="py-lineno">108</tt> <a class="py-toggle" href="#" id="BatchError.__repr__-toggle" onclick="return toggle('BatchError.__repr__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.BatchError-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchError.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BatchError.__repr__-expanded"><a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-string">'&lt;BatchError %s "%s"&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"> </tt>
-<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">  <tt class="py-name">__str__</tt> <tt class="py-op">=</tt> <tt id="link-10" class="py-name"><a title="apiclient.errors.BatchError.__repr__
-apiclient.errors.HttpError.__repr__" class="py-name" href="#" onclick="return doclink('link-10', '__repr__', 'link-8');">__repr__</a></tt> </tt>
+<a name="InvalidChunkSizeError"></a><div id="InvalidChunkSizeError-def"><a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <a class="py-toggle" href="#" id="InvalidChunkSizeError-toggle" onclick="return toggle('InvalidChunkSizeError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.InvalidChunkSizeError-class.html">InvalidChunkSizeError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="InvalidChunkSizeError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InvalidChunkSizeError-expanded"><a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">  <tt class="py-docstring">"""The given chunksize is not valid."""</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"> </tt>
+<a name="BatchError"></a><div id="BatchError-def"><a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <a class="py-toggle" href="#" id="BatchError-toggle" onclick="return toggle('BatchError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.BatchError-class.html">BatchError</a><tt class="py-op">(</tt><tt class="py-base-class">HttpError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="BatchError-expanded"><a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">  <tt class="py-docstring">"""Error occured during batch operations."""</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-9', 'positional', 'link-4');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="BatchError.__init__"></a><div id="BatchError.__init__-def"><a name="L108"></a><tt class="py-lineno">108</tt> <a class="py-toggle" href="#" id="BatchError.__init__-toggle" onclick="return toggle('BatchError.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.BatchError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">reason</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BatchError.__init__-expanded"><a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">reason</tt> </tt>
 </div><a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"> </tt>
-<a name="UnexpectedMethodError"></a><div id="UnexpectedMethodError-def"><a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"> </tt>
-<a name="L114"></a><tt class="py-lineno">114</tt> <a class="py-toggle" href="#" id="UnexpectedMethodError-toggle" onclick="return toggle('UnexpectedMethodError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedMethodError-class.html">UnexpectedMethodError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="UnexpectedMethodError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnexpectedMethodError-expanded"><a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">  <tt class="py-docstring">"""Exception raised by RequestMockBuilder on unexpected calls."""</tt> </tt>
-<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"> </tt>
-<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-11', 'positional', 'link-4');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="UnexpectedMethodError.__init__"></a><div id="UnexpectedMethodError.__init__-def"><a name="L118"></a><tt class="py-lineno">118</tt> <a class="py-toggle" href="#" id="UnexpectedMethodError.__init__-toggle" onclick="return toggle('UnexpectedMethodError.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedMethodError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">methodId</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="UnexpectedMethodError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="UnexpectedMethodError.__init__-expanded"><a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for an UnexpectedMethodError."""</tt> </tt>
-<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-12" class="py-name" targets="Class apiclient.errors.UnexpectedMethodError=apiclient.errors.UnexpectedMethodError-class.html"><a title="apiclient.errors.UnexpectedMethodError" class="py-name" href="#" onclick="return doclink('link-12', 'UnexpectedMethodError', 'link-12');">UnexpectedMethodError</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.crypt.Signer.__init__()=oauth2client.crypt.Signer-class.html#__init__,Method oauth2client.crypt.Verifier.__init__()=oauth2client.crypt.Verifier-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.errors.BatchError.__init__
+<a name="BatchError.__repr__"></a><div id="BatchError.__repr__-def"><a name="L113"></a><tt class="py-lineno">113</tt> <a class="py-toggle" href="#" id="BatchError.__repr__-toggle" onclick="return toggle('BatchError.__repr__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.BatchError-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchError.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BatchError.__repr__-expanded"><a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-string">'&lt;BatchError %s "%s"&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">  <tt class="py-name">__str__</tt> <tt class="py-op">=</tt> <tt id="link-10" class="py-name"><a title="apiclient.errors.BatchError.__repr__
+apiclient.errors.HttpError.__repr__" class="py-name" href="#" onclick="return doclink('link-10', '__repr__', 'link-8');">__repr__</a></tt> </tt>
+</div><a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"> </tt>
+<a name="UnexpectedMethodError"></a><div id="UnexpectedMethodError-def"><a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <a class="py-toggle" href="#" id="UnexpectedMethodError-toggle" onclick="return toggle('UnexpectedMethodError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedMethodError-class.html">UnexpectedMethodError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnexpectedMethodError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnexpectedMethodError-expanded"><a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">  <tt class="py-docstring">"""Exception raised by RequestMockBuilder on unexpected calls."""</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-11', 'positional', 'link-4');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="UnexpectedMethodError.__init__"></a><div id="UnexpectedMethodError.__init__-def"><a name="L123"></a><tt class="py-lineno">123</tt> <a class="py-toggle" href="#" id="UnexpectedMethodError.__init__-toggle" onclick="return toggle('UnexpectedMethodError.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedMethodError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">methodId</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnexpectedMethodError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="UnexpectedMethodError.__init__-expanded"><a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for an UnexpectedMethodError."""</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-12" class="py-name" targets="Class apiclient.errors.UnexpectedMethodError=apiclient.errors.UnexpectedMethodError-class.html"><a title="apiclient.errors.UnexpectedMethodError" class="py-name" href="#" onclick="return doclink('link-12', 'UnexpectedMethodError', 'link-12');">UnexpectedMethodError</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.push.Channel.__init__()=apiclient.push.Channel-class.html#__init__,Method apiclient.push.Headers.__init__()=apiclient.push.Headers-class.html#__init__,Method apiclient.push.Subscription.__init__()=apiclient.push.Subscription-class.html#__init__,Method apiclient.push.WebhookChannel.__init__()=apiclient.push.WebhookChannel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.discovery.Resource.__init__
+apiclient.errors.BatchError.__init__
 apiclient.errors.HttpError.__init__
 apiclient.errors.UnexpectedBodyError.__init__
 apiclient.errors.UnexpectedMethodError.__init__
@@ -193,6 +199,10 @@
 apiclient.http._StreamSlice.__init__
 apiclient.model.JsonModel.__init__
 apiclient.model.ProtocolBufferModel.__init__
+apiclient.push.Channel.__init__
+apiclient.push.Headers.__init__
+apiclient.push.Subscription.__init__
+apiclient.push.WebhookChannel.__init__
 apiclient.schema.Schemas.__init__
 apiclient.schema._SchemaToStruct.__init__
 oauth2client.appengine.AppAssertionCredentials.__init__
@@ -205,8 +215,6 @@
 oauth2client.client.OAuth2Credentials.__init__
 oauth2client.client.OAuth2WebServerFlow.__init__
 oauth2client.client.SignedJwtAssertionCredentials.__init__
-oauth2client.crypt.Signer.__init__
-oauth2client.crypt.Verifier.__init__
 oauth2client.django_orm.CredentialsField.__init__
 oauth2client.django_orm.FlowField.__init__
 oauth2client.django_orm.Storage.__init__
@@ -217,15 +225,16 @@
 oauth2client.locked_file._Opener.__init__
 oauth2client.multistore_file._MultiStore._Storage.__init__
 oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-13', '__init__', 'link-13');">__init__</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">        <tt class="py-string">'Received unexpected call %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">methodId</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"> </tt>
-<a name="UnexpectedBodyError"></a><div id="UnexpectedBodyError-def"><a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"> </tt>
-<a name="L124"></a><tt class="py-lineno">124</tt> <a class="py-toggle" href="#" id="UnexpectedBodyError-toggle" onclick="return toggle('UnexpectedBodyError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedBodyError-class.html">UnexpectedBodyError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="UnexpectedBodyError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnexpectedBodyError-expanded"><a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">  <tt class="py-docstring">"""Exception raised by RequestMockBuilder on unexpected bodies."""</tt> </tt>
-<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"> </tt>
-<a name="UnexpectedBodyError.__init__"></a><div id="UnexpectedBodyError.__init__-def"><a name="L127"></a><tt class="py-lineno">127</tt> <a class="py-toggle" href="#" id="UnexpectedBodyError.__init__-toggle" onclick="return toggle('UnexpectedBodyError.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedBodyError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expected</tt><tt class="py-op">,</tt> <tt class="py-param">provided</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="UnexpectedBodyError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="UnexpectedBodyError.__init__-expanded"><a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for an UnexpectedMethodError."""</tt> </tt>
-<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-14" class="py-name" targets="Class apiclient.errors.UnexpectedBodyError=apiclient.errors.UnexpectedBodyError-class.html"><a title="apiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-14', 'UnexpectedBodyError', 'link-14');">UnexpectedBodyError</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="apiclient.errors.BatchError.__init__
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">        <tt class="py-string">'Received unexpected call %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">methodId</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"> </tt>
+<a name="UnexpectedBodyError"></a><div id="UnexpectedBodyError-def"><a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <a class="py-toggle" href="#" id="UnexpectedBodyError-toggle" onclick="return toggle('UnexpectedBodyError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedBodyError-class.html">UnexpectedBodyError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnexpectedBodyError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnexpectedBodyError-expanded"><a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">  <tt class="py-docstring">"""Exception raised by RequestMockBuilder on unexpected bodies."""</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"> </tt>
+<a name="UnexpectedBodyError.__init__"></a><div id="UnexpectedBodyError.__init__-def"><a name="L132"></a><tt class="py-lineno">132</tt> <a class="py-toggle" href="#" id="UnexpectedBodyError.__init__-toggle" onclick="return toggle('UnexpectedBodyError.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedBodyError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expected</tt><tt class="py-op">,</tt> <tt class="py-param">provided</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnexpectedBodyError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="UnexpectedBodyError.__init__-expanded"><a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for an UnexpectedMethodError."""</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-14" class="py-name" targets="Class apiclient.errors.UnexpectedBodyError=apiclient.errors.UnexpectedBodyError-class.html"><a title="apiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-14', 'UnexpectedBodyError', 'link-14');">UnexpectedBodyError</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="apiclient.discovery.Resource.__init__
+apiclient.errors.BatchError.__init__
 apiclient.errors.HttpError.__init__
 apiclient.errors.UnexpectedBodyError.__init__
 apiclient.errors.UnexpectedMethodError.__init__
@@ -244,6 +253,10 @@
 apiclient.http._StreamSlice.__init__
 apiclient.model.JsonModel.__init__
 apiclient.model.ProtocolBufferModel.__init__
+apiclient.push.Channel.__init__
+apiclient.push.Headers.__init__
+apiclient.push.Subscription.__init__
+apiclient.push.WebhookChannel.__init__
 apiclient.schema.Schemas.__init__
 apiclient.schema._SchemaToStruct.__init__
 oauth2client.appengine.AppAssertionCredentials.__init__
@@ -256,8 +269,6 @@
 oauth2client.client.OAuth2Credentials.__init__
 oauth2client.client.OAuth2WebServerFlow.__init__
 oauth2client.client.SignedJwtAssertionCredentials.__init__
-oauth2client.crypt.Signer.__init__
-oauth2client.crypt.Verifier.__init__
 oauth2client.django_orm.CredentialsField.__init__
 oauth2client.django_orm.FlowField.__init__
 oauth2client.django_orm.Storage.__init__
@@ -268,8 +279,8 @@
 oauth2client.locked_file._Opener.__init__
 oauth2client.multistore_file._MultiStore._Storage.__init__
 oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-15', '__init__', 'link-13');">__init__</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">        <tt class="py-string">'Expected: [%s] - Provided: [%s]'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">expected</tt><tt class="py-op">,</tt> <tt class="py-name">provided</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">        <tt class="py-string">'Expected: [%s] - Provided: [%s]'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">expected</tt><tt class="py-op">,</tt> <tt class="py-name">provided</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"> </tt><script type="text/javascript">
 <!--
 expandto(location.href);
 // -->
@@ -299,7 +310,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:48 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.BatchError-class.html b/docs/epy/apiclient.errors.BatchError-class.html
index ce8628f..bb51bc0 100644
--- a/docs/epy/apiclient.errors.BatchError-class.html
+++ b/docs/epy/apiclient.errors.BatchError-class.html
@@ -56,11 +56,11 @@
 <h1 class="epydoc">Class BatchError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#BatchError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_batcherror" name="class_hierarchy_for_batcherror">
-<area shape="rect" href="apiclient.errors.BatchError-class.html" title="BatchError" alt="" coords="5,5,88,32"/>
-<area shape="rect" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="176,117,224,144"/>
-<area shape="rect" href="apiclient.errors.HttpError-class.html" title="HttpError" alt="" coords="312,5,384,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="112,5,288,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="127,61,273,88"/>
+<area shape="rect" id="node1" href="apiclient.errors.BatchError-class.html" title="BatchError" alt="" coords="5,6,88,34"/>
+<area shape="rect" id="node2" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="175,123,225,151"/>
+<area shape="rect" id="node3" href="apiclient.errors.HttpError-class.html" title="HttpError" alt="" coords="312,6,387,34"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="112,6,288,34"/>
+<area shape="rect" id="node5" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="127,65,273,93"/>
 </map>
   <img src="class_hierarchy_for_batcherror.gif" alt='' usemap="#class_hierarchy_for_batcherror" ismap="ismap" class="graph-without-title" />
 </center>
@@ -98,7 +98,7 @@
         <span class="summary-sig-arg">reason</span>,
         <span class="summary-sig-arg">resp</span>=<span class="summary-sig-default">None</span>,
         <span class="summary-sig-arg">content</span>=<span class="summary-sig-default">None</span>)</span><br />
-      x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+      x.__init__(...) initializes x; see help(type(x)) for signature</td>
           <td align="right" valign="top">
             <span class="codelink"><a href="apiclient.errors-pysrc.html#BatchError.__init__">source&nbsp;code</a></span>
             
@@ -236,7 +236,7 @@
   </tr></table>
   
   <pre class="literalblock">
-x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+x.__init__(...) initializes x; see help(type(x)) for signature
 
 </pre>
   <dl class="fields">
@@ -329,7 +329,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:32 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.Error-class.html b/docs/epy/apiclient.errors.Error-class.html
index af2aa2c..70b5c2a 100644
--- a/docs/epy/apiclient.errors.Error-class.html
+++ b/docs/epy/apiclient.errors.Error-class.html
@@ -56,9 +56,9 @@
 <h1 class="epydoc">Class Error</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#Error">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_error" name="class_hierarchy_for_error">
-<area shape="rect" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
+<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
 </map>
   <img src="class_hierarchy_for_error.gif" alt='' usemap="#class_hierarchy_for_error" ismap="ismap" class="graph-without-title" />
 </center>
@@ -166,7 +166,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:32 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.HttpError-class.html b/docs/epy/apiclient.errors.HttpError-class.html
index 6278448..14b7619 100644
--- a/docs/epy/apiclient.errors.HttpError-class.html
+++ b/docs/epy/apiclient.errors.HttpError-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class HttpError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#HttpError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_httperror" name="class_hierarchy_for_httperror">
-<area shape="rect" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="apiclient.errors.HttpError-class.html" title="HttpError" alt="" coords="205,5,277,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
+<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node2" href="apiclient.errors.HttpError-class.html" title="HttpError" alt="" coords="205,6,280,34"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
 </map>
   <img src="class_hierarchy_for_httperror.gif" alt='' usemap="#class_hierarchy_for_httperror" ismap="ismap" class="graph-without-title" />
 </center>
@@ -97,7 +97,7 @@
         <span class="summary-sig-arg">resp</span>,
         <span class="summary-sig-arg">content</span>,
         <span class="summary-sig-arg">uri</span>=<span class="summary-sig-default">None</span>)</span><br />
-      x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+      x.__init__(...) initializes x; see help(type(x)) for signature</td>
           <td align="right" valign="top">
             <span class="codelink"><a href="apiclient.errors-pysrc.html#HttpError.__init__">source&nbsp;code</a></span>
             
@@ -249,7 +249,7 @@
   </tr></table>
   
   <pre class="literalblock">
-x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+x.__init__(...) initializes x; see help(type(x)) for signature
 
 </pre>
   <dl class="fields">
@@ -342,7 +342,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:32 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.InvalidChunkSizeError-class.html b/docs/epy/apiclient.errors.InvalidChunkSizeError-class.html
index 4177bed..bb788ae 100644
--- a/docs/epy/apiclient.errors.InvalidChunkSizeError-class.html
+++ b/docs/epy/apiclient.errors.InvalidChunkSizeError-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class InvalidChunkSizeError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#InvalidChunkSizeError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_invalidchu" name="class_hierarchy_for_invalidchu">
-<area shape="rect" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="apiclient.errors.InvalidChunkSizeError-class.html" title="InvalidChunkSizeError" alt="" coords="205,5,352,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
+<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node2" href="apiclient.errors.InvalidChunkSizeError-class.html" title="InvalidChunkSizeError" alt="" coords="205,6,357,34"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
 </map>
   <img src="class_hierarchy_for_invalidchu.gif" alt='' usemap="#class_hierarchy_for_invalidchu" ismap="ismap" class="graph-without-title" />
 </center>
@@ -167,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:32 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.InvalidJsonError-class.html b/docs/epy/apiclient.errors.InvalidJsonError-class.html
index 7ca7a7e..06f2772 100644
--- a/docs/epy/apiclient.errors.InvalidJsonError-class.html
+++ b/docs/epy/apiclient.errors.InvalidJsonError-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class InvalidJsonError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#InvalidJsonError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_invalidjso" name="class_hierarchy_for_invalidjso">
-<area shape="rect" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="apiclient.errors.InvalidJsonError-class.html" title="InvalidJsonError" alt="" coords="205,5,317,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
+<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node2" href="apiclient.errors.InvalidJsonError-class.html" title="InvalidJsonError" alt="" coords="205,6,320,34"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
 </map>
   <img src="class_hierarchy_for_invalidjso.gif" alt='' usemap="#class_hierarchy_for_invalidjso" ismap="ismap" class="graph-without-title" />
 </center>
@@ -167,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:33 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.MediaUploadSizeError-class.html b/docs/epy/apiclient.errors.MediaUploadSizeError-class.html
index 0217342..53353b7 100644
--- a/docs/epy/apiclient.errors.MediaUploadSizeError-class.html
+++ b/docs/epy/apiclient.errors.MediaUploadSizeError-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class MediaUploadSizeError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#MediaUploadSizeError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_mediauploa" name="class_hierarchy_for_mediauploa">
-<area shape="rect" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="apiclient.errors.MediaUploadSizeError-class.html" title="MediaUploadSizeError" alt="" coords="205,5,355,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
+<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node2" href="apiclient.errors.MediaUploadSizeError-class.html" title="MediaUploadSizeError" alt="" coords="205,6,357,34"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
 </map>
   <img src="class_hierarchy_for_mediauploa.gif" alt='' usemap="#class_hierarchy_for_mediauploa" ismap="ismap" class="graph-without-title" />
 </center>
@@ -167,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:33 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.ResumableUploadError-class.html b/docs/epy/apiclient.errors.ResumableUploadError-class.html
index 17840bd..e87848b 100644
--- a/docs/epy/apiclient.errors.ResumableUploadError-class.html
+++ b/docs/epy/apiclient.errors.ResumableUploadError-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class ResumableUploadError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#ResumableUploadError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_resumableu" name="class_hierarchy_for_resumableu">
-<area shape="rect" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="apiclient.errors.ResumableUploadError-class.html" title="ResumableUploadError" alt="" coords="205,5,360,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
+<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node2" href="apiclient.errors.ResumableUploadError-class.html" title="ResumableUploadError" alt="" coords="205,6,363,34"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
 </map>
   <img src="class_hierarchy_for_resumableu.gif" alt='' usemap="#class_hierarchy_for_resumableu" ismap="ismap" class="graph-without-title" />
 </center>
@@ -167,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:33 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.UnacceptableMimeTypeError-class.html b/docs/epy/apiclient.errors.UnacceptableMimeTypeError-class.html
index c973b63..c1074db 100644
--- a/docs/epy/apiclient.errors.UnacceptableMimeTypeError-class.html
+++ b/docs/epy/apiclient.errors.UnacceptableMimeTypeError-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class UnacceptableMimeTypeError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#UnacceptableMimeTypeError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_unacceptab" name="class_hierarchy_for_unacceptab">
-<area shape="rect" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="apiclient.errors.UnacceptableMimeTypeError-class.html" title="UnacceptableMimeTypeError" alt="" coords="205,5,392,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
+<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node2" href="apiclient.errors.UnacceptableMimeTypeError-class.html" title="UnacceptableMimeTypeError" alt="" coords="205,6,395,34"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
 </map>
   <img src="class_hierarchy_for_unacceptab.gif" alt='' usemap="#class_hierarchy_for_unacceptab" ismap="ismap" class="graph-without-title" />
 </center>
@@ -167,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:33 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.UnexpectedBodyError-class.html b/docs/epy/apiclient.errors.UnexpectedBodyError-class.html
index ee73b91..1adb1bd 100644
--- a/docs/epy/apiclient.errors.UnexpectedBodyError-class.html
+++ b/docs/epy/apiclient.errors.UnexpectedBodyError-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class UnexpectedBodyError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#UnexpectedBodyError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_unexpected" name="class_hierarchy_for_unexpected">
-<area shape="rect" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="apiclient.errors.UnexpectedBodyError-class.html" title="UnexpectedBodyError" alt="" coords="205,5,352,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
+<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node2" href="apiclient.errors.UnexpectedBodyError-class.html" title="UnexpectedBodyError" alt="" coords="205,6,355,34"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
 </map>
   <img src="class_hierarchy_for_unexpected.gif" alt='' usemap="#class_hierarchy_for_unexpected" ismap="ismap" class="graph-without-title" />
 </center>
@@ -232,7 +232,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:33 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.UnexpectedMethodError-class.html b/docs/epy/apiclient.errors.UnexpectedMethodError-class.html
index 6637bb7..e0700f9 100644
--- a/docs/epy/apiclient.errors.UnexpectedMethodError-class.html
+++ b/docs/epy/apiclient.errors.UnexpectedMethodError-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class UnexpectedMethodError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#UnexpectedMethodError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_unexpected_2" name="class_hierarchy_for_unexpected_2">
-<area shape="rect" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="apiclient.errors.UnexpectedMethodError-class.html" title="UnexpectedMethodError" alt="" coords="205,5,365,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
+<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node2" href="apiclient.errors.UnexpectedMethodError-class.html" title="UnexpectedMethodError" alt="" coords="205,6,368,34"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
 </map>
   <img src="class_hierarchy_for_unexpected_2.gif" alt='' usemap="#class_hierarchy_for_unexpected_2" ismap="ismap" class="graph-without-title" />
 </center>
@@ -234,7 +234,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:33 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.UnknownApiNameOrVersion-class.html b/docs/epy/apiclient.errors.UnknownApiNameOrVersion-class.html
index b24d50c..3a068c9 100644
--- a/docs/epy/apiclient.errors.UnknownApiNameOrVersion-class.html
+++ b/docs/epy/apiclient.errors.UnknownApiNameOrVersion-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class UnknownApiNameOrVersion</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#UnknownApiNameOrVersion">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_unknownapi" name="class_hierarchy_for_unknownapi">
-<area shape="rect" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="apiclient.errors.UnknownApiNameOrVersion-class.html" title="UnknownApiNameOrVersion" alt="" coords="205,5,389,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
+<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node2" href="apiclient.errors.UnknownApiNameOrVersion-class.html" title="UnknownApiNameOrVersion" alt="" coords="205,6,395,34"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
 </map>
   <img src="class_hierarchy_for_unknownapi.gif" alt='' usemap="#class_hierarchy_for_unknownapi" ismap="ismap" class="graph-without-title" />
 </center>
@@ -167,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:33 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.UnknownFileType-class.html b/docs/epy/apiclient.errors.UnknownFileType-class.html
new file mode 100644
index 0000000..5cccf08
--- /dev/null
+++ b/docs/epy/apiclient.errors.UnknownFileType-class.html
@@ -0,0 +1,189 @@
+<?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>apiclient.errors.UnknownFileType</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>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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%">
+      <span class="breadcrumbs">
+        <a href="apiclient-module.html">Package&nbsp;apiclient</a> ::
+        <a href="apiclient.errors-module.html">Module&nbsp;errors</a> ::
+        Class&nbsp;UnknownFileType
+      </span>
+    </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="apiclient.errors.UnknownFileType-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class UnknownFileType</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#UnknownFileType">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_unknownfil" name="class_hierarchy_for_unknownfil">
+<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node2" href="apiclient.errors.UnknownFileType-class.html" title="UnknownFileType" alt="" coords="205,6,331,34"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+</map>
+  <img src="class_hierarchy_for_unknownfil.gif" alt='' usemap="#class_hierarchy_for_unknownfil" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<pre class="literalblock">
+File type unknown or unexpected.
+
+</pre>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+      <code>__init__</code>,
+      <code>__new__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__getitem__</code>,
+      <code>__getslice__</code>,
+      <code>__reduce__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__setstate__</code>,
+      <code>__str__</code>,
+      <code>__unicode__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__format__</code>,
+      <code>__hash__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__sizeof__</code>,
+      <code>__subclasshook__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+      <code>args</code>,
+      <code>message</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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 Thu Jan 24 16:14:34 2013
+    </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>
diff --git a/docs/epy/apiclient.errors.UnknownLinkType-class.html b/docs/epy/apiclient.errors.UnknownLinkType-class.html
index 9237ff0..65fb5bc 100644
--- a/docs/epy/apiclient.errors.UnknownLinkType-class.html
+++ b/docs/epy/apiclient.errors.UnknownLinkType-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class UnknownLinkType</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#UnknownLinkType">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_unknownlin" name="class_hierarchy_for_unknownlin">
-<area shape="rect" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="apiclient.errors.UnknownLinkType-class.html" title="UnknownLinkType" alt="" coords="205,5,331,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
+<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node2" href="apiclient.errors.UnknownLinkType-class.html" title="UnknownLinkType" alt="" coords="205,6,336,34"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
 </map>
   <img src="class_hierarchy_for_unknownlin.gif" alt='' usemap="#class_hierarchy_for_unknownlin" ismap="ismap" class="graph-without-title" />
 </center>
@@ -167,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:34 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.ext-module.html b/docs/epy/apiclient.ext-module.html
index c62e09d..a1990bd 100644
--- a/docs/epy/apiclient.ext-module.html
+++ b/docs/epy/apiclient.ext-module.html
@@ -76,7 +76,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.ext-pysrc.html b/docs/epy/apiclient.ext-pysrc.html
index 7d73a30..a701683 100644
--- a/docs/epy/apiclient.ext-pysrc.html
+++ b/docs/epy/apiclient.ext-pysrc.html
@@ -84,7 +84,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:47 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http-module.html b/docs/epy/apiclient.http-module.html
index 07b1b0b..c43587e 100644
--- a/docs/epy/apiclient.http-module.html
+++ b/docs/epy/apiclient.http-module.html
@@ -277,7 +277,7 @@
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="MAX_URI_LENGTH"></a><span class="summary-name">MAX_URI_LENGTH</span> = <code title="4000">4000</code>
+        <a name="MAX_URI_LENGTH"></a><span class="summary-name">MAX_URI_LENGTH</span> = <code title="2048">2048</code>
     </td>
   </tr>
 </table>
@@ -399,7 +399,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http-pysrc.html b/docs/epy/apiclient.http-pysrc.html
index df9950b..a8c7ded 100644
--- a/docs/epy/apiclient.http-pysrc.html
+++ b/docs/epy/apiclient.http-pysrc.html
@@ -106,7 +106,7 @@
 <a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"> </tt>
 <a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt id="link-19" class="py-name" targets="Variable apiclient.http.DEFAULT_CHUNK_SIZE=apiclient.http-module.html#DEFAULT_CHUNK_SIZE"><a title="apiclient.http.DEFAULT_CHUNK_SIZE" class="py-name" href="#" onclick="return doclink('link-19', 'DEFAULT_CHUNK_SIZE', 'link-19');">DEFAULT_CHUNK_SIZE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">512</tt><tt class="py-op">*</tt><tt class="py-number">1024</tt> </tt>
 <a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"> </tt>
-<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt id="link-20" class="py-name" targets="Variable apiclient.http.MAX_URI_LENGTH=apiclient.http-module.html#MAX_URI_LENGTH"><a title="apiclient.http.MAX_URI_LENGTH" class="py-name" href="#" onclick="return doclink('link-20', 'MAX_URI_LENGTH', 'link-20');">MAX_URI_LENGTH</a></tt> <tt class="py-op">=</tt> <tt class="py-number">4000</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt id="link-20" class="py-name" targets="Variable apiclient.http.MAX_URI_LENGTH=apiclient.http-module.html#MAX_URI_LENGTH"><a title="apiclient.http.MAX_URI_LENGTH" class="py-name" href="#" onclick="return doclink('link-20', 'MAX_URI_LENGTH', 'link-20');">MAX_URI_LENGTH</a></tt> <tt class="py-op">=</tt> <tt class="py-number">2048</tt> </tt>
 <a name="MediaUploadProgress"></a><div id="MediaUploadProgress-def"><a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"> </tt>
 <a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"> </tt>
 <a name="L57"></a><tt class="py-lineno">  57</tt> <a class="py-toggle" href="#" id="MediaUploadProgress-toggle" onclick="return toggle('MediaUploadProgress');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.MediaUploadProgress-class.html">MediaUploadProgress</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -362,7 +362,8 @@
 <a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line"><tt class="py-docstring">      resumable: bool, True if this is a resumable upload. False means upload</tt> </tt>
 <a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line"><tt class="py-docstring">        in a single request.</tt> </tt>
 <a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-28" class="py-name" targets="Class apiclient.http.MediaIoBaseUpload=apiclient.http.MediaIoBaseUpload-class.html"><a title="apiclient.http.MediaIoBaseUpload" class="py-name" href="#" onclick="return doclink('link-28', 'MediaIoBaseUpload', 'link-28');">MediaIoBaseUpload</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.crypt.Signer.__init__()=oauth2client.crypt.Signer-class.html#__init__,Method oauth2client.crypt.Verifier.__init__()=oauth2client.crypt.Verifier-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.errors.BatchError.__init__
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-28" class="py-name" targets="Class apiclient.http.MediaIoBaseUpload=apiclient.http.MediaIoBaseUpload-class.html"><a title="apiclient.http.MediaIoBaseUpload" class="py-name" href="#" onclick="return doclink('link-28', 'MediaIoBaseUpload', 'link-28');">MediaIoBaseUpload</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.push.Channel.__init__()=apiclient.push.Channel-class.html#__init__,Method apiclient.push.Headers.__init__()=apiclient.push.Headers-class.html#__init__,Method apiclient.push.Subscription.__init__()=apiclient.push.Subscription-class.html#__init__,Method apiclient.push.WebhookChannel.__init__()=apiclient.push.WebhookChannel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.discovery.Resource.__init__
+apiclient.errors.BatchError.__init__
 apiclient.errors.HttpError.__init__
 apiclient.errors.UnexpectedBodyError.__init__
 apiclient.errors.UnexpectedMethodError.__init__
@@ -381,6 +382,10 @@
 apiclient.http._StreamSlice.__init__
 apiclient.model.JsonModel.__init__
 apiclient.model.ProtocolBufferModel.__init__
+apiclient.push.Channel.__init__
+apiclient.push.Headers.__init__
+apiclient.push.Subscription.__init__
+apiclient.push.WebhookChannel.__init__
 apiclient.schema.Schemas.__init__
 apiclient.schema._SchemaToStruct.__init__
 oauth2client.appengine.AppAssertionCredentials.__init__
@@ -393,8 +398,6 @@
 oauth2client.client.OAuth2Credentials.__init__
 oauth2client.client.OAuth2WebServerFlow.__init__
 oauth2client.client.SignedJwtAssertionCredentials.__init__
-oauth2client.crypt.Signer.__init__
-oauth2client.crypt.Verifier.__init__
 oauth2client.django_orm.CredentialsField.__init__
 oauth2client.django_orm.FlowField.__init__
 oauth2client.django_orm.Storage.__init__
@@ -464,7 +467,8 @@
 <a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line"><tt class="py-docstring">      first.</tt> </tt>
 <a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
 <a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-name">begin</tt><tt class="py-op">)</tt> </tt>
-<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method apiclient.http._StreamSlice.read()=apiclient.http._StreamSlice-class.html#read"><a title="apiclient.http._StreamSlice.read" class="py-name" href="#" onclick="return doclink('link-36', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">length</tt><tt class="py-op">)</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method apiclient.http._StreamSlice.read()=apiclient.http._StreamSlice-class.html#read,Method apiclient.push.Headers.read()=apiclient.push.Headers-class.html#read"><a title="apiclient.http._StreamSlice.read
+apiclient.push.Headers.read" class="py-name" href="#" onclick="return doclink('link-36', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">length</tt><tt class="py-op">)</tt> </tt>
 </div><a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line"> </tt>
 <a name="MediaIoBaseUpload.has_stream"></a><div id="MediaIoBaseUpload.has_stream-def"><a name="L352"></a><tt class="py-lineno"> 352</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.has_stream-toggle" onclick="return toggle('MediaIoBaseUpload.has_stream');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#has_stream">has_stream</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
 </div><div id="MediaIoBaseUpload.has_stream-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.has_stream-expanded"><a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">    <tt class="py-docstring">"""Does the underlying upload support a streaming interface.</tt> </tt>
@@ -540,7 +544,8 @@
 <a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">      <tt class="py-op">(</tt><tt id="link-41" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
 apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-41', 'mimetype', 'link-30');">mimetype</a></tt><tt class="py-op">,</tt> <tt class="py-name">encoding</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">mimetypes</tt><tt class="py-op">.</tt><tt class="py-name">guess_type</tt><tt class="py-op">(</tt><tt id="link-42" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
 oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-42', 'filename', 'link-39');">filename</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-43" class="py-name" targets="Class apiclient.http.MediaFileUpload=apiclient.http.MediaFileUpload-class.html"><a title="apiclient.http.MediaFileUpload" class="py-name" href="#" onclick="return doclink('link-43', 'MediaFileUpload', 'link-43');">MediaFileUpload</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="apiclient.errors.BatchError.__init__
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-43" class="py-name" targets="Class apiclient.http.MediaFileUpload=apiclient.http.MediaFileUpload-class.html"><a title="apiclient.http.MediaFileUpload" class="py-name" href="#" onclick="return doclink('link-43', 'MediaFileUpload', 'link-43');">MediaFileUpload</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="apiclient.discovery.Resource.__init__
+apiclient.errors.BatchError.__init__
 apiclient.errors.HttpError.__init__
 apiclient.errors.UnexpectedBodyError.__init__
 apiclient.errors.UnexpectedMethodError.__init__
@@ -559,6 +564,10 @@
 apiclient.http._StreamSlice.__init__
 apiclient.model.JsonModel.__init__
 apiclient.model.ProtocolBufferModel.__init__
+apiclient.push.Channel.__init__
+apiclient.push.Headers.__init__
+apiclient.push.Subscription.__init__
+apiclient.push.WebhookChannel.__init__
 apiclient.schema.Schemas.__init__
 apiclient.schema._SchemaToStruct.__init__
 oauth2client.appengine.AppAssertionCredentials.__init__
@@ -571,8 +580,6 @@
 oauth2client.client.OAuth2Credentials.__init__
 oauth2client.client.OAuth2WebServerFlow.__init__
 oauth2client.client.SignedJwtAssertionCredentials.__init__
-oauth2client.crypt.Signer.__init__
-oauth2client.crypt.Verifier.__init__
 oauth2client.django_orm.CredentialsField.__init__
 oauth2client.django_orm.FlowField.__init__
 oauth2client.django_orm.Storage.__init__
@@ -635,7 +642,8 @@
 <a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line"><tt class="py-docstring">      in a single request.</tt> </tt>
 <a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
 <a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">    <tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">.</tt><tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-58" class="py-name" targets="Class apiclient.http.MediaInMemoryUpload=apiclient.http.MediaInMemoryUpload-class.html"><a title="apiclient.http.MediaInMemoryUpload" class="py-name" href="#" onclick="return doclink('link-58', 'MediaInMemoryUpload', 'link-58');">MediaInMemoryUpload</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="apiclient.errors.BatchError.__init__
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-58" class="py-name" targets="Class apiclient.http.MediaInMemoryUpload=apiclient.http.MediaInMemoryUpload-class.html"><a title="apiclient.http.MediaInMemoryUpload" class="py-name" href="#" onclick="return doclink('link-58', 'MediaInMemoryUpload', 'link-58');">MediaInMemoryUpload</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="apiclient.discovery.Resource.__init__
+apiclient.errors.BatchError.__init__
 apiclient.errors.HttpError.__init__
 apiclient.errors.UnexpectedBodyError.__init__
 apiclient.errors.UnexpectedMethodError.__init__
@@ -654,6 +662,10 @@
 apiclient.http._StreamSlice.__init__
 apiclient.model.JsonModel.__init__
 apiclient.model.ProtocolBufferModel.__init__
+apiclient.push.Channel.__init__
+apiclient.push.Headers.__init__
+apiclient.push.Subscription.__init__
+apiclient.push.WebhookChannel.__init__
 apiclient.schema.Schemas.__init__
 apiclient.schema._SchemaToStruct.__init__
 oauth2client.appengine.AppAssertionCredentials.__init__
@@ -666,8 +678,6 @@
 oauth2client.client.OAuth2Credentials.__init__
 oauth2client.client.OAuth2WebServerFlow.__init__
 oauth2client.client.SignedJwtAssertionCredentials.__init__
-oauth2client.crypt.Signer.__init__
-oauth2client.crypt.Verifier.__init__
 oauth2client.django_orm.CredentialsField.__init__
 oauth2client.django_orm.FlowField.__init__
 oauth2client.django_orm.Storage.__init__
@@ -768,7 +778,7 @@
 apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-76', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_uri</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
 <a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-number">200</tt><tt class="py-op">,</tt> <tt class="py-number">206</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
 <a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Method apiclient.push.Headers.write()=apiclient.push.Headers-class.html#write"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-77', 'write', 'link-77');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
 <a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line"> </tt>
 <a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'content-range'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
 <a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line">        <tt class="py-name">content_range</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'content-range'</tt><tt class="py-op">]</tt> </tt>
@@ -777,9 +787,9 @@
 <a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line"> </tt>
 <a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_total_size</tt><tt class="py-op">:</tt> </tt>
 <a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_done</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-77" class="py-name" targets="Class apiclient.http.MediaDownloadProgress=apiclient.http.MediaDownloadProgress-class.html"><a title="apiclient.http.MediaDownloadProgress" class="py-name" href="#" onclick="return doclink('link-77', 'MediaDownloadProgress', 'link-77');">MediaDownloadProgress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_total_size</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_done</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-78" class="py-name" targets="Class apiclient.http.MediaDownloadProgress=apiclient.http.MediaDownloadProgress-class.html"><a title="apiclient.http.MediaDownloadProgress" class="py-name" href="#" onclick="return doclink('link-78', 'MediaDownloadProgress', 'link-78');">MediaDownloadProgress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_total_size</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_done</tt> </tt>
 <a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-78" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-78', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-79" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-79', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_uri</tt><tt class="py-op">)</tt> </tt>
 </div></div><a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"> </tt>
 <a name="_StreamSlice"></a><div id="_StreamSlice-def"><a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line"> </tt>
 <a name="L548"></a><tt class="py-lineno"> 548</tt> <a class="py-toggle" href="#" id="_StreamSlice-toggle" onclick="return toggle('_StreamSlice');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http._StreamSlice-class.html">_StreamSlice</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -800,11 +810,11 @@
 <a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line"><tt class="py-docstring">      begin: int, the seek position the chunk begins at.</tt> </tt>
 <a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line"><tt class="py-docstring">      chunksize: int, the size of the chunk.</tt> </tt>
 <a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stream</tt> <tt class="py-op">=</tt> <tt id="link-79" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.stream()=apiclient.http.MediaIoBaseUpload-class.html#stream,Method apiclient.http.MediaUpload.stream()=apiclient.http.MediaUpload-class.html#stream"><a title="apiclient.http.MediaIoBaseUpload.stream
-apiclient.http.MediaUpload.stream" class="py-name" href="#" onclick="return doclink('link-79', 'stream', 'link-79');">stream</a></tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stream</tt> <tt class="py-op">=</tt> <tt id="link-80" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.stream()=apiclient.http.MediaIoBaseUpload-class.html#stream,Method apiclient.http.MediaUpload.stream()=apiclient.http.MediaUpload-class.html#stream"><a title="apiclient.http.MediaIoBaseUpload.stream
+apiclient.http.MediaUpload.stream" class="py-name" href="#" onclick="return doclink('link-80', 'stream', 'link-80');">stream</a></tt> </tt>
 <a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_begin</tt> <tt class="py-op">=</tt> <tt class="py-name">begin</tt> </tt>
-<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_chunksize</tt> <tt class="py-op">=</tt> <tt id="link-80" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
-apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-80', 'chunksize', 'link-31');">chunksize</a></tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_chunksize</tt> <tt class="py-op">=</tt> <tt id="link-81" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-81', 'chunksize', 'link-31');">chunksize</a></tt> </tt>
 <a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stream</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-name">begin</tt><tt class="py-op">)</tt> </tt>
 </div><a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line"> </tt>
 <a name="_StreamSlice.read"></a><div id="_StreamSlice.read-def"><a name="L571"></a><tt class="py-lineno"> 571</tt> <a class="py-toggle" href="#" id="_StreamSlice.read-toggle" onclick="return toggle('_StreamSlice.read');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http._StreamSlice-class.html#read">read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">n</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -821,13 +831,14 @@
 <a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line">    <tt class="py-name">end</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_begin</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_chunksize</tt> </tt>
 <a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">n</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> <tt class="py-keyword">or</tt> <tt class="py-name">cur</tt> <tt class="py-op">+</tt> <tt class="py-name">n</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">end</tt><tt class="py-op">:</tt> </tt>
 <a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">      <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">end</tt> <tt class="py-op">-</tt> <tt class="py-name">cur</tt> </tt>
-<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stream</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="apiclient.http._StreamSlice.read" class="py-name" href="#" onclick="return doclink('link-81', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stream</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="apiclient.http._StreamSlice.read
+apiclient.push.Headers.read" class="py-name" href="#" onclick="return doclink('link-82', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
 </div></div><a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line"> </tt>
 <a name="HttpRequest"></a><div id="HttpRequest-def"><a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line"> </tt>
 <a name="L588"></a><tt class="py-lineno"> 588</tt> <a class="py-toggle" href="#" id="HttpRequest-toggle" onclick="return toggle('HttpRequest');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html">HttpRequest</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
 </div><div id="HttpRequest-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpRequest-expanded"><a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line">  <tt class="py-docstring">"""Encapsulates a single HTTP request."""</tt> </tt>
 <a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line"> </tt>
-<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-82', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-83', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
 <a name="HttpRequest.__init__"></a><div id="HttpRequest.__init__-def"><a name="L592"></a><tt class="py-lineno"> 592</tt> <a class="py-toggle" href="#" id="HttpRequest.__init__-toggle" onclick="return toggle('HttpRequest.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> </tt>
 <a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">               <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> </tt>
 <a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">               <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
@@ -853,1148 +864,1181 @@
 <a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">body</tt> </tt>
 <a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">or</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
 <a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">methodId</tt> <tt class="py-op">=</tt> <tt class="py-name">methodId</tt> </tt>
-<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-83', 'http', 'link-70');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-84" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-84', 'http', 'link-70');">http</a></tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-84', 'http', 'link-70');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-85" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-85', 'http', 'link-70');">http</a></tt> </tt>
 <a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt> <tt class="py-op">=</tt> <tt class="py-name">postproc</tt> </tt>
-<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-85', 'resumable', 'link-35');">resumable</a></tt> <tt class="py-op">=</tt> <tt id="link-86" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-86', 'resumable', 'link-35');">resumable</a></tt> </tt>
-<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line"> </tt>
-<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">    <tt class="py-comment"># Pull the multipart boundary out of the content-type header.</tt> </tt>
-<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">    <tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="apiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-87', 'mimeparse', 'link-0');">mimeparse</a></tt><tt class="py-op">.</tt><tt id="link-88" class="py-name" targets="Function apiclient.mimeparse.parse_mime_type()=apiclient.mimeparse-module.html#parse_mime_type"><a title="apiclient.mimeparse.parse_mime_type" class="py-name" href="#" onclick="return doclink('link-88', 'parse_mime_type', 'link-88');">parse_mime_type</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">        <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-86', 'resumable', 'link-35');">resumable</a></tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-87', 'resumable', 'link-35');">resumable</a></tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_callbacks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line"> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">    <tt class="py-comment"># Pull the multipart boundary out of the content-type header.</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">    <tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt id="link-88" class="py-name"><a title="apiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-88', 'mimeparse', 'link-0');">mimeparse</a></tt><tt class="py-op">.</tt><tt id="link-89" class="py-name" targets="Function apiclient.mimeparse.parse_mime_type()=apiclient.mimeparse-module.html#parse_mime_type"><a title="apiclient.mimeparse.parse_mime_type" class="py-name" href="#" onclick="return doclink('link-89', 'parse_mime_type', 'link-89');">parse_mime_type</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">        <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-89', 'get', 'link-89');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'content-type'</tt><tt class="py-op">,</tt> <tt class="py-string">'application/json'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line"> </tt>
-<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">    <tt class="py-comment"># The size of the non-media part of the request.</tt> </tt>
-<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body_size</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
-<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line"> </tt>
-<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">    <tt class="py-comment"># The resumable URI to send chunks to.</tt> </tt>
-<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line"> </tt>
-<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line">    <tt class="py-comment"># The bytes that have been uploaded.</tt> </tt>
-<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-</div><a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line"> </tt>
-<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-90', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="HttpRequest.execute"></a><div id="HttpRequest.execute-def"><a name="L636"></a><tt class="py-lineno"> 636</tt> <a class="py-toggle" href="#" id="HttpRequest.execute-toggle" onclick="return toggle('HttpRequest.execute');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequest.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.execute-expanded"><a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">    <tt class="py-docstring">"""Execute the request.</tt> </tt>
-<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, an http object to be used in place of the</tt> </tt>
-<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line"><tt class="py-docstring">            one the HttpRequest request object was constructed with.</tt> </tt>
-<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line"><tt class="py-docstring">      A deserialized object model of the response body as determined</tt> </tt>
-<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line"><tt class="py-docstring">      by the postproc.</tt> </tt>
-<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line"><tt class="py-docstring">      apiclient.errors.HttpError if the response was not a 2xx.</tt> </tt>
-<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line"><tt class="py-docstring">      httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
-<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-91" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-91', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">      <tt id="link-92" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-92', 'http', 'link-70');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-93', 'http', 'link-70');">http</a></tt> </tt>
-<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-94', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">      <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">      <tt class="py-keyword">while</tt> <tt class="py-name">body</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">        <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name" targets="Method apiclient.http.HttpRequest.next_chunk()=apiclient.http.HttpRequest-class.html#next_chunk,Method apiclient.http.MediaIoBaseDownload.next_chunk()=apiclient.http.MediaIoBaseDownload-class.html#next_chunk"><a title="apiclient.http.HttpRequest.next_chunk
-apiclient.http.MediaIoBaseDownload.next_chunk" class="py-name" href="#" onclick="return doclink('link-95', 'next_chunk', 'link-95');">next_chunk</a></tt><tt class="py-op">(</tt><tt id="link-96" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-96', 'http', 'link-70');">http</a></tt><tt class="py-op">=</tt><tt id="link-97" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-97', 'http', 'link-70');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">body</tt> </tt>
-<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'content-length'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
-<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body_size</tt><tt class="py-op">)</tt> </tt>
-<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">      <tt class="py-comment"># If the request URI is too long then turn it into a POST request.</tt> </tt>
-<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt id="link-98" class="py-name"><a title="apiclient.http.MAX_URI_LENGTH" class="py-name" href="#" onclick="return doclink('link-98', 'MAX_URI_LENGTH', 'link-20');">MAX_URI_LENGTH</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">==</tt> <tt class="py-string">'GET'</tt><tt class="py-op">:</tt> </tt>
-<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-string">'POST'</tt> </tt>
-<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'x-http-method-override'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'GET'</tt> </tt>
-<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'application/x-www-form-urlencoded'</tt> </tt>
-<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">        <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt> </tt>
-<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">scheme</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">netloc</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">             <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">            <tt class="py-op">)</tt> </tt>
-<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">query</tt> </tt>
-<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line"> </tt>
-<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-99" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-99', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="apiclient.http.HttpMock.request
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-90', 'get', 'link-90');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'content-type'</tt><tt class="py-op">,</tt> <tt class="py-string">'application/json'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line"> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">    <tt class="py-comment"># The size of the non-media part of the request.</tt> </tt>
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body_size</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line"> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">    <tt class="py-comment"># The resumable URI to send chunks to.</tt> </tt>
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line"> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">    <tt class="py-comment"># The bytes that have been uploaded.</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+</div><a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line"> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-91', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="HttpRequest.execute"></a><div id="HttpRequest.execute-def"><a name="L637"></a><tt class="py-lineno"> 637</tt> <a class="py-toggle" href="#" id="HttpRequest.execute-toggle" onclick="return toggle('HttpRequest.execute');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.execute-expanded"><a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line">    <tt class="py-docstring">"""Execute the request.</tt> </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, an http object to be used in place of the</tt> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line"><tt class="py-docstring">            one the HttpRequest request object was constructed with.</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line"><tt class="py-docstring">      A deserialized object model of the response body as determined</tt> </tt>
+<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line"><tt class="py-docstring">      by the postproc.</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line"><tt class="py-docstring">      apiclient.errors.HttpError if the response was not a 2xx.</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line"><tt class="py-docstring">      httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-92" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-92', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">      <tt id="link-93" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-93', 'http', 'link-70');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-94', 'http', 'link-70');">http</a></tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-95', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">      <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">      <tt class="py-keyword">while</tt> <tt class="py-name">body</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">        <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method apiclient.http.HttpRequest.next_chunk()=apiclient.http.HttpRequest-class.html#next_chunk,Method apiclient.http.MediaIoBaseDownload.next_chunk()=apiclient.http.MediaIoBaseDownload-class.html#next_chunk"><a title="apiclient.http.HttpRequest.next_chunk
+apiclient.http.MediaIoBaseDownload.next_chunk" class="py-name" href="#" onclick="return doclink('link-96', 'next_chunk', 'link-96');">next_chunk</a></tt><tt class="py-op">(</tt><tt id="link-97" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-97', 'http', 'link-70');">http</a></tt><tt class="py-op">=</tt><tt id="link-98" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-98', 'http', 'link-70');">http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">body</tt> </tt>
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'content-length'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body_size</tt><tt class="py-op">)</tt> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">      <tt class="py-comment"># If the request URI is too long then turn it into a POST request.</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt id="link-99" class="py-name"><a title="apiclient.http.MAX_URI_LENGTH" class="py-name" href="#" onclick="return doclink('link-99', 'MAX_URI_LENGTH', 'link-20');">MAX_URI_LENGTH</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">==</tt> <tt class="py-string">'GET'</tt><tt class="py-op">:</tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-string">'POST'</tt> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'x-http-method-override'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'GET'</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'application/x-www-form-urlencoded'</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">        <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">scheme</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">netloc</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">             <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">            <tt class="py-op">)</tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">query</tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line"> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-100" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-100', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-100', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> </tt>
-<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">                                   <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> </tt>
-<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">                                   <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
-<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-101" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-101', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line"> </tt>
-<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-102', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="HttpRequest.next_chunk"></a><div id="HttpRequest.next_chunk-def"><a name="L682"></a><tt class="py-lineno"> 682</tt> <a class="py-toggle" href="#" id="HttpRequest.next_chunk-toggle" onclick="return toggle('HttpRequest.next_chunk');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#next_chunk">next_chunk</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequest.next_chunk-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.next_chunk-expanded"><a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">    <tt class="py-docstring">"""Execute the next step of a resumable upload.</tt> </tt>
-<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line"><tt class="py-docstring">    Can only be used if the method being executed supports media uploads and</tt> </tt>
-<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line"><tt class="py-docstring">    the MediaUpload object passed in was flagged as using resumable upload.</tt> </tt>
-<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line"><tt class="py-docstring">    Example:</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-101', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">                                   <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">callback</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_callbacks</tt><tt class="py-op">:</tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">        <tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-102" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-102', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line"> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-103', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="HttpRequest.add_response_callback"></a><div id="HttpRequest.add_response_callback-def"><a name="L684"></a><tt class="py-lineno"> 684</tt> <a class="py-toggle" href="#" id="HttpRequest.add_response_callback-toggle" onclick="return toggle('HttpRequest.add_response_callback');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#add_response_callback">add_response_callback</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cb</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest.add_response_callback-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.add_response_callback-expanded"><a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">    <tt class="py-docstring">"""add_response_headers_callback</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line"><tt class="py-docstring">      cb: Callback to be called on receiving the response headers, of signature:</tt> </tt>
 <a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line"><tt class="py-docstring">      media = MediaFileUpload('cow.png', mimetype='image/png',</tt> </tt>
-<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line"><tt class="py-docstring">                              chunksize=1000, resumable=True)</tt> </tt>
-<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line"><tt class="py-docstring">      request = farm.animals().insert(</tt> </tt>
-<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line"><tt class="py-docstring">          id='cow',</tt> </tt>
-<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line"><tt class="py-docstring">          name='cow.png',</tt> </tt>
-<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line"><tt class="py-docstring">          media_body=media)</tt> </tt>
-<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line"><tt class="py-docstring">      response = None</tt> </tt>
-<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line"><tt class="py-docstring">      while response is None:</tt> </tt>
-<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line"><tt class="py-docstring">        status, response = request.next_chunk()</tt> </tt>
-<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line"><tt class="py-docstring">        if status:</tt> </tt>
-<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line"><tt class="py-docstring">          print "Upload %d%% complete." % int(status.progress() * 100)</tt> </tt>
-<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line"><tt class="py-docstring">      def cb(resp):</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line"><tt class="py-docstring">        # Where resp is an instance of httplib2.Response</tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_callbacks</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">cb</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line"> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-104', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="HttpRequest.next_chunk"></a><div id="HttpRequest.next_chunk-def"><a name="L696"></a><tt class="py-lineno"> 696</tt> <a class="py-toggle" href="#" id="HttpRequest.next_chunk-toggle" onclick="return toggle('HttpRequest.next_chunk');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#next_chunk">next_chunk</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest.next_chunk-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.next_chunk-expanded"><a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line">    <tt class="py-docstring">"""Execute the next step of a resumable upload.</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line"><tt class="py-docstring">    Can only be used if the method being executed supports media uploads and</tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line"><tt class="py-docstring">    the MediaUpload object passed in was flagged as using resumable upload.</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line"><tt class="py-docstring">    Example:</tt> </tt>
 <a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line"><tt class="py-docstring">      (status, body): (ResumableMediaStatus, object)</tt> </tt>
-<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line"><tt class="py-docstring">         The body will be None until the resumable media is fully uploaded.</tt> </tt>
-<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line"><tt class="py-docstring">      apiclient.errors.HttpError if the response was not a 2xx.</tt> </tt>
-<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line"><tt class="py-docstring">      httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
-<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-103" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-103', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line">      <tt id="link-104" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-104', 'http', 'link-70');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-105', 'http', 'link-70');">http</a></tt> </tt>
-<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line"> </tt>
-<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-106', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.size()=apiclient.http.MediaIoBaseUpload-class.html#size,Method apiclient.http.MediaUpload.size()=apiclient.http.MediaUpload-class.html#size"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-107', 'size', 'link-107');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">      <tt id="link-108" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-108', 'size', 'link-107');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'*'</tt> </tt>
-<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line">      <tt id="link-109" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-109', 'size', 'link-107');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-110', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-111', 'size', 'link-107');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line"> </tt>
-<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line">      <tt class="py-name">start_headers</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">      <tt class="py-name">start_headers</tt><tt class="py-op">[</tt><tt class="py-string">'X-Upload-Content-Type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-112', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
-apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-113', 'mimetype', 'link-30');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt id="link-114" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-114', 'size', 'link-107');">size</a></tt> <tt class="py-op">!=</tt> <tt class="py-string">'*'</tt><tt class="py-op">:</tt> </tt>
-<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">        <tt class="py-name">start_headers</tt><tt class="py-op">[</tt><tt class="py-string">'X-Upload-Content-Length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-115" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-115', 'size', 'link-107');">size</a></tt> </tt>
-<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line">      <tt class="py-name">start_headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body_size</tt><tt class="py-op">)</tt> </tt>
-<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line"> </tt>
-<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-116" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-116', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line"><tt class="py-docstring">      media = MediaFileUpload('cow.png', mimetype='image/png',</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line"><tt class="py-docstring">                              chunksize=1000, resumable=True)</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line"><tt class="py-docstring">      request = farm.animals().insert(</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line"><tt class="py-docstring">          id='cow',</tt> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line"><tt class="py-docstring">          name='cow.png',</tt> </tt>
+<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line"><tt class="py-docstring">          media_body=media)</tt> </tt>
+<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line"><tt class="py-docstring">      response = None</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line"><tt class="py-docstring">      while response is None:</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line"><tt class="py-docstring">        status, response = request.next_chunk()</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line"><tt class="py-docstring">        if status:</tt> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line"><tt class="py-docstring">          print "Upload %d%% complete." % int(status.progress() * 100)</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line"><tt class="py-docstring">      (status, body): (ResumableMediaStatus, object)</tt> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line"><tt class="py-docstring">         The body will be None until the resumable media is fully uploaded.</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line"><tt class="py-docstring">      apiclient.errors.HttpError if the response was not a 2xx.</tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line"><tt class="py-docstring">      httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-105" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-105', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">      <tt id="link-106" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-106', 'http', 'link-70');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-107', 'http', 'link-70');">http</a></tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line"> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-108', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.size()=apiclient.http.MediaIoBaseUpload-class.html#size,Method apiclient.http.MediaUpload.size()=apiclient.http.MediaUpload-class.html#size"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-109', 'size', 'link-109');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">      <tt id="link-110" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-110', 'size', 'link-109');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'*'</tt> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line">      <tt id="link-111" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-111', 'size', 'link-109');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-112', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-113', 'size', 'link-109');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line"> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line">      <tt class="py-name">start_headers</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line">      <tt class="py-name">start_headers</tt><tt class="py-op">[</tt><tt class="py-string">'X-Upload-Content-Type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-114', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
+apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-115', 'mimetype', 'link-30');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt id="link-116" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-116', 'size', 'link-109');">size</a></tt> <tt class="py-op">!=</tt> <tt class="py-string">'*'</tt><tt class="py-op">:</tt> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line">        <tt class="py-name">start_headers</tt><tt class="py-op">[</tt><tt class="py-string">'X-Upload-Content-Length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-117" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-117', 'size', 'link-109');">size</a></tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line">      <tt class="py-name">start_headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body_size</tt><tt class="py-op">)</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-118" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-118', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-117', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> </tt>
-<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line">                                   <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> </tt>
-<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">                                   <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">start_headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'location'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
-<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'location'</tt><tt class="py-op">]</tt> </tt>
-<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-118" class="py-name"><a title="apiclient.errors.ResumableUploadError" class="py-name" href="#" onclick="return doclink('link-118', 'ResumableUploadError', 'link-8');">ResumableUploadError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Failed to retrieve starting URI."</tt><tt class="py-op">)</tt> </tt>
-<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt><tt class="py-op">:</tt> </tt>
-<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line">      <tt class="py-comment"># If we are in an error state then query the server for current state of</tt> </tt>
-<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line">      <tt class="py-comment"># the upload by sending an empty PUT and reading the 'range' header in</tt> </tt>
-<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line">      <tt class="py-comment"># the response.</tt> </tt>
-<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line">      <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line">          <tt class="py-string">'Content-Range'</tt><tt class="py-op">:</tt> <tt class="py-string">'bytes */%s'</tt> <tt class="py-op">%</tt> <tt id="link-119" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-119', 'size', 'link-107');">size</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line">          <tt class="py-string">'content-length'</tt><tt class="py-op">:</tt> <tt class="py-string">'0'</tt> </tt>
-<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line">          <tt class="py-op">}</tt> </tt>
-<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-120" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-120', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-119', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line">                                   <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line">                                   <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">start_headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'location'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'location'</tt><tt class="py-op">]</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-120" class="py-name"><a title="apiclient.errors.ResumableUploadError" class="py-name" href="#" onclick="return doclink('link-120', 'ResumableUploadError', 'link-8');">ResumableUploadError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Failed to retrieve starting URI."</tt><tt class="py-op">)</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt><tt class="py-op">:</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line">      <tt class="py-comment"># If we are in an error state then query the server for current state of</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">      <tt class="py-comment"># the upload by sending an empty PUT and reading the 'range' header in</tt> </tt>
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">      <tt class="py-comment"># the response.</tt> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">      <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">          <tt class="py-string">'Content-Range'</tt><tt class="py-op">:</tt> <tt class="py-string">'bytes */%s'</tt> <tt class="py-op">%</tt> <tt id="link-121" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-121', 'size', 'link-109');">size</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">          <tt class="py-string">'content-length'</tt><tt class="py-op">:</tt> <tt class="py-string">'0'</tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">          <tt class="py-op">}</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-122" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-122', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-121', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt><tt class="py-op">,</tt> <tt class="py-string">'PUT'</tt><tt class="py-op">,</tt> </tt>
-<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line">                                   <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line">      <tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name" targets="Method apiclient.http.HttpRequest._process_response()=apiclient.http.HttpRequest-class.html#_process_response"><a title="apiclient.http.HttpRequest._process_response" class="py-name" href="#" onclick="return doclink('link-122', '_process_response', 'link-122');">_process_response</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">body</tt><tt class="py-op">:</tt> </tt>
-<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">        <tt class="py-comment"># The upload was complete.</tt> </tt>
-<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line"> </tt>
-<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line">    <tt class="py-comment"># The httplib.request method can take streams for the body parameter, but</tt> </tt>
-<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">    <tt class="py-comment"># only in Python 2.6 or later. If a stream is available under those</tt> </tt>
-<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">    <tt class="py-comment"># conditions then use it as the body argument.</tt> </tt>
-<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-123', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-124" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.has_stream()=apiclient.http.MediaIoBaseUpload-class.html#has_stream,Method apiclient.http.MediaUpload.has_stream()=apiclient.http.MediaUpload-class.html#has_stream"><a title="apiclient.http.MediaIoBaseUpload.has_stream
-apiclient.http.MediaUpload.has_stream" class="py-name" href="#" onclick="return doclink('link-124', 'has_stream', 'link-124');">has_stream</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version_info</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">6</tt><tt class="py-op">:</tt> </tt>
-<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">      <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-125', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.stream
-apiclient.http.MediaUpload.stream" class="py-name" href="#" onclick="return doclink('link-126', 'stream', 'link-79');">stream</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-127', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
-apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-128', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
-<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">)</tt> </tt>
-<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">        <tt class="py-name">chunk_end</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-129', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-130', 'size', 'link-107');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
-<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">        <tt class="py-comment"># Doing chunking with a stream, so wrap a slice of the stream.</tt> </tt>
-<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">        <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt id="link-131" class="py-name" targets="Class apiclient.http._StreamSlice=apiclient.http._StreamSlice-class.html"><a title="apiclient.http._StreamSlice" class="py-name" href="#" onclick="return doclink('link-131', '_StreamSlice', 'link-131');">_StreamSlice</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> </tt>
-<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-132', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
-apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-133', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">        <tt class="py-name">chunk_end</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt> </tt>
-<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-123', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt><tt class="py-op">,</tt> <tt class="py-string">'PUT'</tt><tt class="py-op">,</tt> </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">                                   <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">      <tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name" targets="Method apiclient.http.HttpRequest._process_response()=apiclient.http.HttpRequest-class.html#_process_response"><a title="apiclient.http.HttpRequest._process_response" class="py-name" href="#" onclick="return doclink('link-124', '_process_response', 'link-124');">_process_response</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">body</tt><tt class="py-op">:</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">        <tt class="py-comment"># The upload was complete.</tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line"> </tt>
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">    <tt class="py-comment"># The httplib.request method can take streams for the body parameter, but</tt> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">    <tt class="py-comment"># only in Python 2.6 or later. If a stream is available under those</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line">    <tt class="py-comment"># conditions then use it as the body argument.</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-125', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-126" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.has_stream()=apiclient.http.MediaIoBaseUpload-class.html#has_stream,Method apiclient.http.MediaUpload.has_stream()=apiclient.http.MediaUpload-class.html#has_stream"><a title="apiclient.http.MediaIoBaseUpload.has_stream
+apiclient.http.MediaUpload.has_stream" class="py-name" href="#" onclick="return doclink('link-126', 'has_stream', 'link-126');">has_stream</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version_info</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">6</tt><tt class="py-op">:</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">      <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-127', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.stream
+apiclient.http.MediaUpload.stream" class="py-name" href="#" onclick="return doclink('link-128', 'stream', 'link-80');">stream</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-129', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-130', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">)</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">        <tt class="py-name">chunk_end</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-131', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-132', 'size', 'link-109');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">        <tt class="py-comment"># Doing chunking with a stream, so wrap a slice of the stream.</tt> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">        <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt id="link-133" class="py-name" targets="Class apiclient.http._StreamSlice=apiclient.http._StreamSlice-class.html"><a title="apiclient.http._StreamSlice" class="py-name" href="#" onclick="return doclink('link-133', '_StreamSlice', 'link-133');">_StreamSlice</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
 apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-134', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
-apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-135', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
-<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-136', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-137', 'size', 'link-107');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line">      <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-138', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-139" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.getbytes()=apiclient.http.MediaIoBaseUpload-class.html#getbytes,Method apiclient.http.MediaUpload.getbytes()=apiclient.http.MediaUpload-class.html#getbytes"><a title="apiclient.http.MediaIoBaseUpload.getbytes
-apiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-139', 'getbytes', 'link-139');">getbytes</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-140', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
-apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-141', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line"> </tt>
-<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">      <tt class="py-comment"># A short read implies that we are at EOF, so finish the upload.</tt> </tt>
-<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-135', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">        <tt class="py-name">chunk_end</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-136', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-137', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-138', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-139', 'size', 'link-109');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">      <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-140', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-141" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.getbytes()=apiclient.http.MediaIoBaseUpload-class.html#getbytes,Method apiclient.http.MediaUpload.getbytes()=apiclient.http.MediaUpload-class.html#getbytes"><a title="apiclient.http.MediaIoBaseUpload.getbytes
+apiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-141', 'getbytes', 'link-141');">getbytes</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
 apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-142', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
-apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-143', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">        <tt id="link-144" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-144', 'size', 'link-107');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line"> </tt>
-<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">      <tt class="py-name">chunk_end</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
-<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line"> </tt>
-<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">        <tt class="py-string">'Content-Range'</tt><tt class="py-op">:</tt> <tt class="py-string">'bytes %d-%d/%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
-<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_end</tt><tt class="py-op">,</tt> <tt id="link-145" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-145', 'size', 'link-107');">size</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">        <tt class="py-comment"># Must set the content-length header here because httplib can't</tt> </tt>
-<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">        <tt class="py-comment"># calculate the size when working with _StreamSlice.</tt> </tt>
-<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">        <tt class="py-string">'Content-Length'</tt><tt class="py-op">:</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">chunk_end</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
-<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-146" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-146', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-143', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line"> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">      <tt class="py-comment"># A short read implies that we are at EOF, so finish the upload.</tt> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-144', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-145', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">        <tt id="link-146" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-146', 'size', 'link-109');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line"> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">      <tt class="py-name">chunk_end</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line"> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">        <tt class="py-string">'Content-Range'</tt><tt class="py-op">:</tt> <tt class="py-string">'bytes %d-%d/%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_end</tt><tt class="py-op">,</tt> <tt id="link-147" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-147', 'size', 'link-109');">size</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">        <tt class="py-comment"># Must set the content-length header here because httplib can't</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">        <tt class="py-comment"># calculate the size when working with _StreamSlice.</tt> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">        <tt class="py-string">'Content-Length'</tt><tt class="py-op">:</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">chunk_end</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-148" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-148', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-147', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt><tt class="py-op">,</tt> <tt class="py-string">'PUT'</tt><tt class="py-op">,</tt> </tt>
-<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line">                                   <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> </tt>
-<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">                                   <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
-<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> </tt>
-<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line"> </tt>
-<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="apiclient.http.HttpRequest._process_response" class="py-name" href="#" onclick="return doclink('link-148', '_process_response', 'link-122');">_process_response</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line"> </tt>
-<a name="HttpRequest._process_response"></a><div id="HttpRequest._process_response-def"><a name="L791"></a><tt class="py-lineno"> 791</tt> <a class="py-toggle" href="#" id="HttpRequest._process_response-toggle" onclick="return toggle('HttpRequest._process_response');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#_process_response">_process_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequest._process_response-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest._process_response-expanded"><a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">    <tt class="py-docstring">"""Process the response from a single chunk upload.</tt> </tt>
-<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line"><tt class="py-docstring">      resp: httplib2.Response, the response object.</tt> </tt>
-<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line"><tt class="py-docstring">      content: string, the content of the response.</tt> </tt>
-<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line"><tt class="py-docstring">      (status, body): (ResumableMediaStatus, object)</tt> </tt>
-<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line"><tt class="py-docstring">         The body will be None until the resumable media is fully uploaded.</tt> </tt>
-<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line"><tt class="py-docstring">      apiclient.errors.HttpError if the response was not a 2xx or a 308.</tt> </tt>
-<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-number">200</tt><tt class="py-op">,</tt> <tt class="py-number">201</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">308</tt><tt class="py-op">:</tt> </tt>
-<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line">      <tt class="py-comment"># A "308 Resume Incomplete" indicates we are not done.</tt> </tt>
-<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'range'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'-'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
-<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'location'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
-<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'location'</tt><tt class="py-op">]</tt> </tt>
-<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-149" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-149', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line"> </tt>
-<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt id="link-150" class="py-name" targets="Class apiclient.http.MediaUploadProgress=apiclient.http.MediaUploadProgress-class.html"><a title="apiclient.http.MediaUploadProgress" class="py-name" href="#" onclick="return doclink('link-150', 'MediaUploadProgress', 'link-150');">MediaUploadProgress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-151', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-152', 'size', 'link-107');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line">            <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line"> </tt>
-<a name="HttpRequest.to_json"></a><div id="HttpRequest.to_json-def"><a name="L821"></a><tt class="py-lineno"> 821</tt> <a class="py-toggle" href="#" id="HttpRequest.to_json-toggle" onclick="return toggle('HttpRequest.to_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequest.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.to_json-expanded"><a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns a JSON representation of the HttpRequest."""</tt> </tt>
-<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">    <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
-<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">      <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-153', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-154" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-149', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt><tt class="py-op">,</tt> <tt class="py-string">'PUT'</tt><tt class="py-op">,</tt> </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">                                   <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">                                   <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line"> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="apiclient.http.HttpRequest._process_response" class="py-name" href="#" onclick="return doclink('link-150', '_process_response', 'link-124');">_process_response</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line"> </tt>
+<a name="HttpRequest._process_response"></a><div id="HttpRequest._process_response-def"><a name="L805"></a><tt class="py-lineno"> 805</tt> <a class="py-toggle" href="#" id="HttpRequest._process_response-toggle" onclick="return toggle('HttpRequest._process_response');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#_process_response">_process_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest._process_response-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest._process_response-expanded"><a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">    <tt class="py-docstring">"""Process the response from a single chunk upload.</tt> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line"><tt class="py-docstring">      resp: httplib2.Response, the response object.</tt> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line"><tt class="py-docstring">      content: string, the content of the response.</tt> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line"><tt class="py-docstring">      (status, body): (ResumableMediaStatus, object)</tt> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line"><tt class="py-docstring">         The body will be None until the resumable media is fully uploaded.</tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line"><tt class="py-docstring">      apiclient.errors.HttpError if the response was not a 2xx or a 308.</tt> </tt>
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-number">200</tt><tt class="py-op">,</tt> <tt class="py-number">201</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">308</tt><tt class="py-op">:</tt> </tt>
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">      <tt class="py-comment"># A "308 Resume Incomplete" indicates we are not done.</tt> </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'range'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'-'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'location'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
+<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'location'</tt><tt class="py-op">]</tt> </tt>
+<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-151" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-151', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line"> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt id="link-152" class="py-name" targets="Class apiclient.http.MediaUploadProgress=apiclient.http.MediaUploadProgress-class.html"><a title="apiclient.http.MediaUploadProgress" class="py-name" href="#" onclick="return doclink('link-152', 'MediaUploadProgress', 'link-152');">MediaUploadProgress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-153', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-154', 'size', 'link-109');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">            <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line"> </tt>
+<a name="HttpRequest.to_json"></a><div id="HttpRequest.to_json-def"><a name="L835"></a><tt class="py-lineno"> 835</tt> <a class="py-toggle" href="#" id="HttpRequest.to_json-toggle" onclick="return toggle('HttpRequest.to_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.to_json-expanded"><a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns a JSON representation of the HttpRequest."""</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">    <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">      <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-155', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-156" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
 apiclient.http.MediaFileUpload.to_json
 apiclient.http.MediaIoBaseUpload.to_json
 apiclient.http.MediaUpload.to_json
 oauth2client.client.Credentials.to_json
-oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-154', 'to_json', 'link-154');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'http'</tt><tt class="py-op">]</tt> </tt>
-<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'postproc'</tt><tt class="py-op">]</tt> </tt>
-<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line"> </tt>
-<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line"> </tt>
-<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
-<a name="HttpRequest.from_json"></a><div id="HttpRequest.from_json-def"><a name="L832"></a><tt class="py-lineno"> 832</tt> <a class="py-toggle" href="#" id="HttpRequest.from_json-toggle" onclick="return toggle('HttpRequest.from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequest.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.from_json-expanded"><a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns an HttpRequest populated with info from a JSON object."""</tt> </tt>
-<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">    <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-155', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">      <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-156" class="py-name" targets="Class apiclient.http.MediaUpload=apiclient.http.MediaUpload-class.html"><a title="apiclient.http.MediaUpload" class="py-name" href="#" onclick="return doclink('link-156', 'MediaUpload', 'link-156');">MediaUpload</a></tt><tt class="py-op">.</tt><tt id="link-157" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
-oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-157', 'new_from_json', 'link-157');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-158" class="py-name" targets="Class apiclient.http.HttpRequest=apiclient.http.HttpRequest-class.html"><a title="apiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-158', 'HttpRequest', 'link-158');">HttpRequest</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">        <tt id="link-159" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-159', 'http', 'link-70');">http</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">        <tt class="py-name">postproc</tt><tt class="py-op">,</tt> </tt>
-<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">        <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">        <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'method'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line">        <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">        <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'headers'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">        <tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'methodId'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">        <tt id="link-160" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-160', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest"></a><div id="BatchHttpRequest-def"><a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line"> </tt>
-<a name="L848"></a><tt class="py-lineno"> 848</tt> <a class="py-toggle" href="#" id="BatchHttpRequest-toggle" onclick="return toggle('BatchHttpRequest');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="BatchHttpRequest-expanded"><a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">  <tt class="py-docstring">"""Batches multiple HttpRequest objects into a single HTTP request.</tt> </tt>
-<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
-<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line"><tt class="py-docstring">    from apiclient.http import BatchHttpRequest</tt> </tt>
-<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line"><tt class="py-docstring">    def list_animals(request_id, response, exception):</tt> </tt>
-<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line"><tt class="py-docstring">      \"\"\"Do something with the animals list response.\"\"\"</tt> </tt>
-<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"><tt class="py-docstring">      if exception is not None:</tt> </tt>
-<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the exception.</tt> </tt>
-<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
-<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"><tt class="py-docstring">      else:</tt> </tt>
-<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the response.</tt> </tt>
-<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
-<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line"><tt class="py-docstring">    def list_farmers(request_id, response, exception):</tt> </tt>
-<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line"><tt class="py-docstring">      \"\"\"Do something with the farmers list response.\"\"\"</tt> </tt>
-<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line"><tt class="py-docstring">      if exception is not None:</tt> </tt>
-<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the exception.</tt> </tt>
-<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
-<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line"><tt class="py-docstring">      else:</tt> </tt>
-<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the response.</tt> </tt>
-<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
-<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line"><tt class="py-docstring">    service = build('farm', 'v2')</tt> </tt>
-<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line"><tt class="py-docstring">    batch = BatchHttpRequest()</tt> </tt>
-<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line"><tt class="py-docstring">    batch.add(service.animals().list(), list_animals)</tt> </tt>
-<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line"><tt class="py-docstring">    batch.add(service.farmers().list(), list_farmers)</tt> </tt>
-<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line"><tt class="py-docstring">    batch.execute(http=http)</tt> </tt>
-<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line"> </tt>
-<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-161', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="BatchHttpRequest.__init__"></a><div id="BatchHttpRequest.__init__-def"><a name="L882"></a><tt class="py-lineno"> 882</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.__init__-toggle" onclick="return toggle('BatchHttpRequest.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">batch_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.__init__-expanded"><a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for a BatchHttpRequest.</tt> </tt>
-<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line"><tt class="py-docstring">      callback: callable, A callback to be called for each response, of the</tt> </tt>
-<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line"><tt class="py-docstring">        form callback(id, response, exception). The first parameter is the</tt> </tt>
-<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line"><tt class="py-docstring">        request id, and the second is the deserialized response object. The</tt> </tt>
-<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line"><tt class="py-docstring">        third is an apiclient.errors.HttpError exception object if an HTTP error</tt> </tt>
-<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line"><tt class="py-docstring">        occurred while processing the request, or None if no error occurred.</tt> </tt>
-<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line"><tt class="py-docstring">      batch_uri: string, URI to send batch requests to.</tt> </tt>
-<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">batch_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">      <tt class="py-name">batch_uri</tt> <tt class="py-op">=</tt> <tt class="py-string">'https://www.googleapis.com/batch'</tt> </tt>
-<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">batch_uri</tt> </tt>
-<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line"> </tt>
-<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line">    <tt class="py-comment"># Global callback to be called for each individual response in the batch.</tt> </tt>
-<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt> <tt class="py-op">=</tt> <tt class="py-name">callback</tt> </tt>
-<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line"> </tt>
-<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line">    <tt class="py-comment"># A map from id to request.</tt> </tt>
-<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line"> </tt>
-<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">    <tt class="py-comment"># A map from id to callback.</tt> </tt>
-<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line"> </tt>
-<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line">    <tt class="py-comment"># List of request ids, in the order in which they were added.</tt> </tt>
-<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line"> </tt>
-<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line">    <tt class="py-comment"># The last auto generated id.</tt> </tt>
-<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line"> </tt>
-<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">    <tt class="py-comment"># Unique ID on which to base the Content-ID headers.</tt> </tt>
-<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line"> </tt>
-<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">    <tt class="py-comment"># A map from request id to (httplib2.Response, content) response pairs</tt> </tt>
-<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line"> </tt>
-<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">    <tt class="py-comment"># A map of id(Credentials) that have been refreshed.</tt> </tt>
-<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-</div><a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._refresh_and_apply_credentials"></a><div id="BatchHttpRequest._refresh_and_apply_credentials-def"><a name="L921"></a><tt class="py-lineno"> 921</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._refresh_and_apply_credentials-toggle" onclick="return toggle('BatchHttpRequest._refresh_and_apply_credentials');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials">_refresh_and_apply_credentials</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._refresh_and_apply_credentials-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._refresh_and_apply_credentials-expanded"><a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">    <tt class="py-docstring">"""Refresh the credentials and apply to the request.</tt> </tt>
-<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line"><tt class="py-docstring">      request: HttpRequest, the request.</tt> </tt>
-<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, the global http object for the batch.</tt> </tt>
-<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line">    <tt class="py-comment"># For the credentials to refresh, but only once per refresh_token</tt> </tt>
-<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line">    <tt class="py-comment"># If there is no http per the request then refresh the http passed in</tt> </tt>
-<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line">    <tt class="py-comment"># via execute()</tt> </tt>
-<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line">    <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-162" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-162', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-163', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-164" class="py-name"><a title="apiclient.http.HttpMock.request
+oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-156', 'to_json', 'link-156');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'http'</tt><tt class="py-op">]</tt> </tt>
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'postproc'</tt><tt class="py-op">]</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line"> </tt>
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line"> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
+<a name="HttpRequest.from_json"></a><div id="HttpRequest.from_json-def"><a name="L846"></a><tt class="py-lineno"> 846</tt> <a class="py-toggle" href="#" id="HttpRequest.from_json-toggle" onclick="return toggle('HttpRequest.from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.from_json-expanded"><a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns an HttpRequest populated with info from a JSON object."""</tt> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">    <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-157', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">      <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-158" class="py-name" targets="Class apiclient.http.MediaUpload=apiclient.http.MediaUpload-class.html"><a title="apiclient.http.MediaUpload" class="py-name" href="#" onclick="return doclink('link-158', 'MediaUpload', 'link-158');">MediaUpload</a></tt><tt class="py-op">.</tt><tt id="link-159" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
+oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-159', 'new_from_json', 'link-159');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-160" class="py-name" targets="Class apiclient.http.HttpRequest=apiclient.http.HttpRequest-class.html"><a title="apiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-160', 'HttpRequest', 'link-160');">HttpRequest</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">        <tt id="link-161" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-161', 'http', 'link-70');">http</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line">        <tt class="py-name">postproc</tt><tt class="py-op">,</tt> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">        <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line">        <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'method'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line">        <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line">        <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'headers'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line">        <tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'methodId'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line">        <tt id="link-162" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-162', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest"></a><div id="BatchHttpRequest-def"><a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line"> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt> <a class="py-toggle" href="#" id="BatchHttpRequest-toggle" onclick="return toggle('BatchHttpRequest');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="BatchHttpRequest-expanded"><a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line">  <tt class="py-docstring">"""Batches multiple HttpRequest objects into a single HTTP request.</tt> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line"><tt class="py-docstring">    from apiclient.http import BatchHttpRequest</tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line"><tt class="py-docstring">    def list_animals(request_id, response, exception):</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line"><tt class="py-docstring">      \"\"\"Do something with the animals list response.\"\"\"</tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line"><tt class="py-docstring">      if exception is not None:</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the exception.</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line"><tt class="py-docstring">      else:</tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the response.</tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line"><tt class="py-docstring">    def list_farmers(request_id, response, exception):</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line"><tt class="py-docstring">      \"\"\"Do something with the farmers list response.\"\"\"</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line"><tt class="py-docstring">      if exception is not None:</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the exception.</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line"><tt class="py-docstring">      else:</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the response.</tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line"><tt class="py-docstring">    service = build('farm', 'v2')</tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line"><tt class="py-docstring">    batch = BatchHttpRequest()</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line"><tt class="py-docstring">    batch.add(service.animals().list(), list_animals)</tt> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line"><tt class="py-docstring">    batch.add(service.farmers().list(), list_farmers)</tt> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line"><tt class="py-docstring">    batch.execute(http=http)</tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line"> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-163', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="BatchHttpRequest.__init__"></a><div id="BatchHttpRequest.__init__-def"><a name="L896"></a><tt class="py-lineno"> 896</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.__init__-toggle" onclick="return toggle('BatchHttpRequest.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">batch_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.__init__-expanded"><a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for a BatchHttpRequest.</tt> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line"><tt class="py-docstring">      callback: callable, A callback to be called for each response, of the</tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line"><tt class="py-docstring">        form callback(id, response, exception). The first parameter is the</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line"><tt class="py-docstring">        request id, and the second is the deserialized response object. The</tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line"><tt class="py-docstring">        third is an apiclient.errors.HttpError exception object if an HTTP error</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line"><tt class="py-docstring">        occurred while processing the request, or None if no error occurred.</tt> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line"><tt class="py-docstring">      batch_uri: string, URI to send batch requests to.</tt> </tt>
+<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">batch_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">      <tt class="py-name">batch_uri</tt> <tt class="py-op">=</tt> <tt class="py-string">'https://www.googleapis.com/batch'</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">batch_uri</tt> </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line"> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">    <tt class="py-comment"># Global callback to be called for each individual response in the batch.</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt> <tt class="py-op">=</tt> <tt class="py-name">callback</tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line"> </tt>
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">    <tt class="py-comment"># A map from id to request.</tt> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line"> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">    <tt class="py-comment"># A map from id to callback.</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line"> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">    <tt class="py-comment"># List of request ids, in the order in which they were added.</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line"> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line">    <tt class="py-comment"># The last auto generated id.</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line"> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line">    <tt class="py-comment"># Unique ID on which to base the Content-ID headers.</tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line"> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line">    <tt class="py-comment"># A map from request id to (httplib2.Response, content) response pairs</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line"> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">    <tt class="py-comment"># A map of id(Credentials) that have been refreshed.</tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+</div><a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._refresh_and_apply_credentials"></a><div id="BatchHttpRequest._refresh_and_apply_credentials-def"><a name="L935"></a><tt class="py-lineno"> 935</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._refresh_and_apply_credentials-toggle" onclick="return toggle('BatchHttpRequest._refresh_and_apply_credentials');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials">_refresh_and_apply_credentials</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._refresh_and_apply_credentials-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._refresh_and_apply_credentials-expanded"><a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">    <tt class="py-docstring">"""Refresh the credentials and apply to the request.</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line"><tt class="py-docstring">      request: HttpRequest, the request.</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, the global http object for the batch.</tt> </tt>
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">    <tt class="py-comment"># For the credentials to refresh, but only once per refresh_token</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">    <tt class="py-comment"># If there is no http per the request then refresh the http passed in</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">    <tt class="py-comment"># via execute()</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line">    <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-164" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
 apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-164', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-165', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="apiclient.http.HttpMock.request
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-165', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-166" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-166', 'request', 'link-67');">request</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line">        <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line">      <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt id="link-167" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-166', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-167', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-167', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-168', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-168', 'request', 'link-67');">request</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line">        <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">      <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt id="link-169" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-169', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-170" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-170', 'credentials', 'link-170');">credentials</a></tt> </tt>
-<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-171" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-171', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-172" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-172', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-169', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-170', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-173', 'request', 'link-67');">request</a></tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">      <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt id="link-174" class="py-name"><a title="apiclient.http
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-171', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-172" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-172', 'credentials', 'link-172');">credentials</a></tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-173" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-173', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-174" class="py-name"><a title="apiclient.http
 oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-174', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-175', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-176', 'credentials', 'link-170');">credentials</a></tt> </tt>
-<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">creds</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">creds</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt><tt class="py-op">:</tt> </tt>
-<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line">        <tt class="py-name">creds</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name" targets="Method oauth2client.client.Credentials.refresh()=oauth2client.client.Credentials-class.html#refresh,Method oauth2client.client.OAuth2Credentials.refresh()=oauth2client.client.OAuth2Credentials-class.html#refresh"><a title="oauth2client.client.Credentials.refresh
-oauth2client.client.OAuth2Credentials.refresh" class="py-name" href="#" onclick="return doclink('link-177', 'refresh', 'link-177');">refresh</a></tt><tt class="py-op">(</tt><tt id="link-178" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-178', 'http', 'link-70');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt><tt class="py-op">[</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">creds</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line"> </tt>
-<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">    <tt class="py-comment"># Only apply the credentials if we are using the http object passed in,</tt> </tt>
-<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">    <tt class="py-comment"># otherwise apply() will get called during _serialize_request().</tt> </tt>
-<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-179" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-175', 'request', 'link-67');">request</a></tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line">      <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt id="link-176" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-176', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-179', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-180', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-181" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-177', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-178', 'credentials', 'link-172');">credentials</a></tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">creds</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">creds</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt><tt class="py-op">:</tt> </tt>
+<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">        <tt class="py-name">creds</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name" targets="Method oauth2client.client.Credentials.refresh()=oauth2client.client.Credentials-class.html#refresh,Method oauth2client.client.OAuth2Credentials.refresh()=oauth2client.client.OAuth2Credentials-class.html#refresh"><a title="oauth2client.client.Credentials.refresh
+oauth2client.client.OAuth2Credentials.refresh" class="py-name" href="#" onclick="return doclink('link-179', 'refresh', 'link-179');">refresh</a></tt><tt class="py-op">(</tt><tt id="link-180" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-180', 'http', 'link-70');">http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt><tt class="py-op">[</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">creds</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line"> </tt>
+<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">    <tt class="py-comment"># Only apply the credentials if we are using the http object passed in,</tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">    <tt class="py-comment"># otherwise apply() will get called during _serialize_request().</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-181" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
 apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-181', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-182', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="apiclient.http.HttpMock.request
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-182', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-183" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-183', 'request', 'link-67');">request</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line">        <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">      <tt class="py-name">creds</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name" targets="Method oauth2client.client.Credentials.apply()=oauth2client.client.Credentials-class.html#apply,Method oauth2client.client.OAuth2Credentials.apply()=oauth2client.client.OAuth2Credentials-class.html#apply"><a title="oauth2client.client.Credentials.apply
-oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-184', 'apply', 'link-184');">apply</a></tt><tt class="py-op">(</tt><tt id="link-185" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-183', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-184', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-185', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._id_to_header"></a><div id="BatchHttpRequest._id_to_header-def"><a name="L948"></a><tt class="py-lineno"> 948</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._id_to_header-toggle" onclick="return toggle('BatchHttpRequest._id_to_header');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_id_to_header">_id_to_header</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">id_</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._id_to_header-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._id_to_header-expanded"><a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert an id to a Content-ID header value.</tt> </tt>
-<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line"><tt class="py-docstring">      id_: string, identifier of individual request.</tt> </tt>
-<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line"><tt class="py-docstring">      A Content-ID header with the id_ encoded into it. A UUID is prepended to</tt> </tt>
-<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line"><tt class="py-docstring">      the value because Content-ID headers are supposed to be universally</tt> </tt>
-<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line"><tt class="py-docstring">      unique.</tt> </tt>
-<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-op">=</tt> <tt class="py-name">uuid</tt><tt class="py-op">.</tt><tt class="py-name">uuid4</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line"> </tt>
-<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">'&lt;%s+%s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt><tt class="py-op">,</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._header_to_id"></a><div id="BatchHttpRequest._header_to_id-def"><a name="L964"></a><tt class="py-lineno"> 964</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._header_to_id-toggle" onclick="return toggle('BatchHttpRequest._header_to_id');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_header_to_id">_header_to_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">header</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._header_to_id-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._header_to_id-expanded"><a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert a Content-ID header value to an id.</tt> </tt>
-<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line"><tt class="py-docstring">    Presumes the Content-ID header conforms to the format that _id_to_header()</tt> </tt>
-<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line"><tt class="py-docstring">    returns.</tt> </tt>
-<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"><tt class="py-docstring">      header: string, Content-ID header value.</tt> </tt>
-<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line"><tt class="py-docstring">      The extracted id value.</tt> </tt>
-<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line"><tt class="py-docstring">      BatchError if the header is not in the expected format.</tt> </tt>
-<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'&lt;'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'&gt;'</tt><tt class="py-op">:</tt> </tt>
-<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-186" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-186', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Invalid value for Content-ID: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
-<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'+'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">header</tt><tt class="py-op">:</tt> </tt>
-<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-187" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-187', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Invalid value for Content-ID: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
-<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line">    <tt class="py-name">base</tt><tt class="py-op">,</tt> <tt class="py-name">id_</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">rsplit</tt><tt class="py-op">(</tt><tt class="py-string">'+'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line"> </tt>
-<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">unquote</tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._serialize_request"></a><div id="BatchHttpRequest._serialize_request-def"><a name="L987"></a><tt class="py-lineno"> 987</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._serialize_request-toggle" onclick="return toggle('BatchHttpRequest._serialize_request');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_serialize_request">_serialize_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._serialize_request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._serialize_request-expanded"><a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert an HttpRequest object into a string.</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-185', 'request', 'link-67');">request</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">        <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">      <tt class="py-name">creds</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name" targets="Method oauth2client.client.Credentials.apply()=oauth2client.client.Credentials-class.html#apply,Method oauth2client.client.OAuth2Credentials.apply()=oauth2client.client.OAuth2Credentials-class.html#apply"><a title="oauth2client.client.Credentials.apply
+oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-186', 'apply', 'link-186');">apply</a></tt><tt class="py-op">(</tt><tt id="link-187" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-187', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._id_to_header"></a><div id="BatchHttpRequest._id_to_header-def"><a name="L962"></a><tt class="py-lineno"> 962</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._id_to_header-toggle" onclick="return toggle('BatchHttpRequest._id_to_header');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_id_to_header">_id_to_header</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">id_</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._id_to_header-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._id_to_header-expanded"><a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert an id to a Content-ID header value.</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line"><tt class="py-docstring">      id_: string, identifier of individual request.</tt> </tt>
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line"><tt class="py-docstring">      A Content-ID header with the id_ encoded into it. A UUID is prepended to</tt> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line"><tt class="py-docstring">      the value because Content-ID headers are supposed to be universally</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"><tt class="py-docstring">      unique.</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-op">=</tt> <tt class="py-name">uuid</tt><tt class="py-op">.</tt><tt class="py-name">uuid4</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line"> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">'&lt;%s+%s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt><tt class="py-op">,</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._header_to_id"></a><div id="BatchHttpRequest._header_to_id-def"><a name="L978"></a><tt class="py-lineno"> 978</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._header_to_id-toggle" onclick="return toggle('BatchHttpRequest._header_to_id');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_header_to_id">_header_to_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">header</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._header_to_id-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._header_to_id-expanded"><a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert a Content-ID header value to an id.</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line"><tt class="py-docstring">    Presumes the Content-ID header conforms to the format that _id_to_header()</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line"><tt class="py-docstring">    returns.</tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line"><tt class="py-docstring">      header: string, Content-ID header value.</tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line"><tt class="py-docstring">      The extracted id value.</tt> </tt>
 <a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line"><tt class="py-docstring">      request: HttpRequest, the request to serialize.</tt> </tt>
-<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line"><tt class="py-docstring">      The request as a string in application/http format.</tt> </tt>
-<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line">    <tt class="py-comment"># Construct status line</tt> </tt>
-<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt id="link-188" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line"><tt class="py-docstring">      BatchError if the header is not in the expected format.</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'&lt;'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'&gt;'</tt><tt class="py-op">:</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-188" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-188', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Invalid value for Content-ID: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'+'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">header</tt><tt class="py-op">:</tt> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-189" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-189', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Invalid value for Content-ID: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
+<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line">    <tt class="py-name">base</tt><tt class="py-op">,</tt> <tt class="py-name">id_</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">rsplit</tt><tt class="py-op">(</tt><tt class="py-string">'+'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line"> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">unquote</tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._serialize_request"></a><div id="BatchHttpRequest._serialize_request-def"><a name="L1001"></a><tt class="py-lineno">1001</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._serialize_request-toggle" onclick="return toggle('BatchHttpRequest._serialize_request');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_serialize_request">_serialize_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._serialize_request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._serialize_request-expanded"><a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert an HttpRequest object into a string.</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"><tt class="py-docstring">      request: HttpRequest, the request to serialize.</tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line"><tt class="py-docstring">      The request as a string in application/http format.</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">    <tt class="py-comment"># Construct status line</tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt id="link-190" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-188', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">    <tt class="py-name">request_line</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt> </tt>
-<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
-<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">    <tt class="py-name">status_line</tt> <tt class="py-op">=</tt> <tt id="link-189" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-190', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">    <tt class="py-name">request_line</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">    <tt class="py-name">status_line</tt> <tt class="py-op">=</tt> <tt id="link-191" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-189', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">request_line</tt> <tt class="py-op">+</tt> <tt class="py-string">' HTTP/1.1\n'</tt> </tt>
-<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">    <tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt> <tt class="py-op">=</tt> <tt id="link-190" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-191', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">request_line</tt> <tt class="py-op">+</tt> <tt class="py-string">' HTTP/1.1\n'</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">    <tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt> <tt class="py-op">=</tt> <tt id="link-192" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-190', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="apiclient.schema.Schemas.get
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-192', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-191', 'get', 'link-89');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'content-type'</tt><tt class="py-op">,</tt> <tt class="py-string">'application/json'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line">    <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt><tt class="py-op">)</tt> </tt>
-<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt id="link-192" class="py-name"><a title="apiclient.http.HttpMock.request
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-193', 'get', 'link-90');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'content-type'</tt><tt class="py-op">,</tt> <tt class="py-string">'application/json'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">    <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt><tt class="py-op">)</tt> </tt>
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt id="link-194" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-192', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"> </tt>
-<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-193" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-193', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-194', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-195" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-194', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line"> </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-195" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
 apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-195', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-196', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="apiclient.http.HttpMock.request
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-196', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-197" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-197', 'request', 'link-67');">request</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">        <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">      <tt id="link-198" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-197', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-198', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-198', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-199', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-199', 'request', 'link-67');">request</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">        <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">      <tt id="link-200" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-200', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-201', 'credentials', 'link-170');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="oauth2client.client.Credentials.apply
-oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-202', 'apply', 'link-184');">apply</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line"> </tt>
-<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">    <tt class="py-comment"># MIMENonMultipart adds its own Content-Type header.</tt> </tt>
-<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'content-type'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
-<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">      <tt class="py-keyword">del</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line"> </tt>
-<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
-<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">    <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Host'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">netloc</tt> </tt>
-<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">    <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_unixfrom</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line"> </tt>
-<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-203" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-200', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-201', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-203', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt id="link-204" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-202', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-203', 'credentials', 'link-172');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="oauth2client.client.Credentials.apply
+oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-204', 'apply', 'link-186');">apply</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line"> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">    <tt class="py-comment"># MIMENonMultipart adds its own Content-Type header.</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'content-type'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">      <tt class="py-keyword">del</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line"> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">    <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Host'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">netloc</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">    <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_unixfrom</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line"> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-205" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-204', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-205" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-205', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt id="link-206" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-205', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line"> </tt>
-<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">    <tt class="py-comment"># Serialize the mime message.</tt> </tt>
-<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">    <tt class="py-name">fp</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">.</tt><tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">    <tt class="py-comment"># maxheaderlen=0 means don't line wrap headers.</tt> </tt>
-<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">    <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt class="py-name">Generator</tt><tt class="py-op">(</tt><tt class="py-name">fp</tt><tt class="py-op">,</tt> <tt class="py-name">maxheaderlen</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">    <tt class="py-name">g</tt><tt class="py-op">.</tt><tt class="py-name">flatten</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-name">unixfrom</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line">    <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">fp</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line"> </tt>
-<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">    <tt class="py-comment"># Strip off the \n\n that the MIME lib tacks onto the end of the payload.</tt> </tt>
-<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-206" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-206', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-207" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-206', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">      <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">body</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
-<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line"> </tt>
-<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">status_line</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">body</tt> </tt>
-</div><a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._deserialize_response"></a><div id="BatchHttpRequest._deserialize_response-def"><a name="L1036"></a><tt class="py-lineno">1036</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._deserialize_response-toggle" onclick="return toggle('BatchHttpRequest._deserialize_response');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_deserialize_response">_deserialize_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._deserialize_response-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._deserialize_response-expanded"><a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert string into httplib2 response and content.</tt> </tt>
-<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line"><tt class="py-docstring">      payload: string, headers and body as a string.</tt> </tt>
-<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line"><tt class="py-docstring">      A pair (resp, content), such as would be returned from httplib2.request.</tt> </tt>
-<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">    <tt class="py-comment"># Strip off the status line</tt> </tt>
-<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">    <tt class="py-name">status_line</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">    <tt class="py-name">protocol</tt><tt class="py-op">,</tt> <tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">status_line</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"> </tt>
-<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line">    <tt class="py-comment"># Parse the rest of the response</tt> </tt>
-<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">    <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">FeedParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">    <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">feed</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
-<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line">    <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">    <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">status</tt> </tt>
-<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"> </tt>
-<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line">    <tt class="py-comment"># Create httplib2.Response from the parsed headers.</tt> </tt>
-<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line">    <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
-<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">reason</tt> </tt>
-<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">protocol</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line"> </tt>
-<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">    <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\r\n\r\n'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line"> </tt>
-<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
-</div><a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._new_id"></a><div id="BatchHttpRequest._new_id-def"><a name="L1064"></a><tt class="py-lineno">1064</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._new_id-toggle" onclick="return toggle('BatchHttpRequest._new_id');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_new_id">_new_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._new_id-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._new_id-expanded"><a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create a new id.</tt> </tt>
-<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line"><tt class="py-docstring">    Auto incrementing number that avoids conflicts with ids already used.</tt> </tt>
-<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line"><tt class="py-docstring">       string, a new unique id.</tt> </tt>
-<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">:</tt> </tt>
-<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line"> </tt>
-<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-207', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="BatchHttpRequest.add"></a><div id="BatchHttpRequest.add-def"><a name="L1078"></a><tt class="py-lineno">1078</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.add-toggle" onclick="return toggle('BatchHttpRequest.add');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#add">add</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">request_id</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest.add-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.add-expanded"><a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">    <tt class="py-docstring">"""Add a new request.</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-207', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line"> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">    <tt class="py-comment"># Serialize the mime message.</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">    <tt class="py-name">fp</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">.</tt><tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">    <tt class="py-comment"># maxheaderlen=0 means don't line wrap headers.</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">    <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt class="py-name">Generator</tt><tt class="py-op">(</tt><tt class="py-name">fp</tt><tt class="py-op">,</tt> <tt class="py-name">maxheaderlen</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">    <tt class="py-name">g</tt><tt class="py-op">.</tt><tt class="py-name">flatten</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-name">unixfrom</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">    <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">fp</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line"> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">    <tt class="py-comment"># Strip off the \n\n that the MIME lib tacks onto the end of the payload.</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-208" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-208', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">      <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">body</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line"> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">status_line</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">body</tt> </tt>
+</div><a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._deserialize_response"></a><div id="BatchHttpRequest._deserialize_response-def"><a name="L1050"></a><tt class="py-lineno">1050</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._deserialize_response-toggle" onclick="return toggle('BatchHttpRequest._deserialize_response');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_deserialize_response">_deserialize_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._deserialize_response-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._deserialize_response-expanded"><a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert string into httplib2 response and content.</tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"><tt class="py-docstring">      payload: string, headers and body as a string.</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"><tt class="py-docstring">      A pair (resp, content), such as would be returned from httplib2.request.</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">    <tt class="py-comment"># Strip off the status line</tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">    <tt class="py-name">status_line</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line">    <tt class="py-name">protocol</tt><tt class="py-op">,</tt> <tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">status_line</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line"> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line">    <tt class="py-comment"># Parse the rest of the response</tt> </tt>
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">    <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">FeedParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">    <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">feed</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">    <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">    <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">status</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line"> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">    <tt class="py-comment"># Create httplib2.Response from the parsed headers.</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">    <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">reason</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">protocol</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line"> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">    <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\r\n\r\n'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line"> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
+</div><a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._new_id"></a><div id="BatchHttpRequest._new_id-def"><a name="L1078"></a><tt class="py-lineno">1078</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._new_id-toggle" onclick="return toggle('BatchHttpRequest._new_id');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_new_id">_new_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._new_id-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._new_id-expanded"><a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create a new id.</tt> </tt>
 <a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line"><tt class="py-docstring">    Every callback added will be paired with a unique id, the request_id. That</tt> </tt>
-<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line"><tt class="py-docstring">    unique id will be passed back to the callback when the response comes back</tt> </tt>
-<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line"><tt class="py-docstring">    from the server. The default behavior is to have the library generate it's</tt> </tt>
-<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line"><tt class="py-docstring">    own unique id. If the caller passes in a request_id then they must ensure</tt> </tt>
-<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line"><tt class="py-docstring">    uniqueness for each request_id, and if they are not an exception is</tt> </tt>
-<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"><tt class="py-docstring">    raised. Callers should either supply all request_ids or nevery supply a</tt> </tt>
-<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line"><tt class="py-docstring">    request id, to avoid such an error.</tt> </tt>
-<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line"><tt class="py-docstring">      request: HttpRequest, Request to add to the batch.</tt> </tt>
-<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line"><tt class="py-docstring">      callback: callable, A callback to be called for this response, of the</tt> </tt>
-<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line"><tt class="py-docstring">        form callback(id, response, exception). The first parameter is the</tt> </tt>
-<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line"><tt class="py-docstring">        request id, and the second is the deserialized response object. The</tt> </tt>
-<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line"><tt class="py-docstring">        third is an apiclient.errors.HttpError exception object if an HTTP error</tt> </tt>
-<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line"><tt class="py-docstring">        occurred while processing the request, or None if no errors occurred.</tt> </tt>
-<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"><tt class="py-docstring">      request_id: string, A unique id for the request. The id will be passed to</tt> </tt>
-<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line"><tt class="py-docstring">        the callback with the response.</tt> </tt>
-<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line"><tt class="py-docstring">      None</tt> </tt>
-<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line"><tt class="py-docstring">      BatchError if a media request is added to a batch.</tt> </tt>
-<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line"><tt class="py-docstring">      KeyError is the request_id is not unique.</tt> </tt>
-<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line">      <tt class="py-name">request_id</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name" targets="Method apiclient.http.BatchHttpRequest._new_id()=apiclient.http.BatchHttpRequest-class.html#_new_id"><a title="apiclient.http.BatchHttpRequest._new_id" class="py-name" href="#" onclick="return doclink('link-208', '_new_id', 'link-208');">_new_id</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-209" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line"><tt class="py-docstring">    Auto incrementing number that avoids conflicts with ids already used.</tt> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line"><tt class="py-docstring">       string, a new unique id.</tt> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">:</tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line"> </tt>
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-209', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="BatchHttpRequest.add"></a><div id="BatchHttpRequest.add-def"><a name="L1092"></a><tt class="py-lineno">1092</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.add-toggle" onclick="return toggle('BatchHttpRequest.add');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#add">add</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">request_id</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest.add-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.add-expanded"><a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">    <tt class="py-docstring">"""Add a new request.</tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line"><tt class="py-docstring">    Every callback added will be paired with a unique id, the request_id. That</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"><tt class="py-docstring">    unique id will be passed back to the callback when the response comes back</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line"><tt class="py-docstring">    from the server. The default behavior is to have the library generate it's</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line"><tt class="py-docstring">    own unique id. If the caller passes in a request_id then they must ensure</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line"><tt class="py-docstring">    uniqueness for each request_id, and if they are not an exception is</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line"><tt class="py-docstring">    raised. Callers should either supply all request_ids or nevery supply a</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line"><tt class="py-docstring">    request id, to avoid such an error.</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line"><tt class="py-docstring">      request: HttpRequest, Request to add to the batch.</tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line"><tt class="py-docstring">      callback: callable, A callback to be called for this response, of the</tt> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line"><tt class="py-docstring">        form callback(id, response, exception). The first parameter is the</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line"><tt class="py-docstring">        request id, and the second is the deserialized response object. The</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line"><tt class="py-docstring">        third is an apiclient.errors.HttpError exception object if an HTTP error</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line"><tt class="py-docstring">        occurred while processing the request, or None if no errors occurred.</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line"><tt class="py-docstring">      request_id: string, A unique id for the request. The id will be passed to</tt> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line"><tt class="py-docstring">        the callback with the response.</tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line"><tt class="py-docstring">      None</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line"><tt class="py-docstring">      BatchError if a media request is added to a batch.</tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line"><tt class="py-docstring">      KeyError is the request_id is not unique.</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">      <tt class="py-name">request_id</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name" targets="Method apiclient.http.BatchHttpRequest._new_id()=apiclient.http.BatchHttpRequest-class.html#_new_id"><a title="apiclient.http.BatchHttpRequest._new_id" class="py-name" href="#" onclick="return doclink('link-210', '_new_id', 'link-210');">_new_id</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-211" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-209', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-210', 'resumable', 'link-35');">resumable</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-211" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-211', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Media requests cannot be used in a batch request."</tt><tt class="py-op">)</tt> </tt>
-<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">:</tt> </tt>
-<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">(</tt><tt class="py-string">"A request with this ID already exists: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
-<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-212" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-211', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-212', 'resumable', 'link-35');">resumable</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-213" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-213', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Media requests cannot be used in a batch request."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">:</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">(</tt><tt class="py-string">"A request with this ID already exists: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-214" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-212', 'request', 'link-67');">request</a></tt> </tt>
-<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">callback</tt> </tt>
-<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._execute"></a><div id="BatchHttpRequest._execute-def"><a name="L1116"></a><tt class="py-lineno">1116</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._execute-toggle" onclick="return toggle('BatchHttpRequest._execute');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_execute">_execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">order</tt><tt class="py-op">,</tt> <tt class="py-param">requests</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._execute-expanded"><a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">    <tt class="py-docstring">"""Serialize batch request, send to server, process response.</tt> </tt>
-<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, an http object to be used to make the request with.</tt> </tt>
-<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line"><tt class="py-docstring">      order: list, list of request ids in the order they were added to the</tt> </tt>
-<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line"><tt class="py-docstring">        batch.</tt> </tt>
-<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line"><tt class="py-docstring">      request: list, list of request objects to send.</tt> </tt>
-<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line"><tt class="py-docstring">      httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
-<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line"><tt class="py-docstring">      apiclient.errors.BatchError if the response is the wrong format.</tt> </tt>
-<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">    <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMEMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'mixed'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">    <tt class="py-comment"># Message should not write out it's own headers.</tt> </tt>
-<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">'_write_headers'</tt><tt class="py-op">,</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">self</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line"> </tt>
-<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">    <tt class="py-comment"># Add all the individual requests.</tt> </tt>
-<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">order</tt><tt class="py-op">:</tt> </tt>
-<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">      <tt id="link-213" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-213', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line"> </tt>
-<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line">      <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'application'</tt><tt class="py-op">,</tt> <tt class="py-string">'http'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-Transfer-Encoding'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'binary'</tt> </tt>
-<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-ID'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name" targets="Method apiclient.http.BatchHttpRequest._id_to_header()=apiclient.http.BatchHttpRequest-class.html#_id_to_header"><a title="apiclient.http.BatchHttpRequest._id_to_header" class="py-name" href="#" onclick="return doclink('link-214', '_id_to_header', 'link-214');">_id_to_header</a></tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
-<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line"> </tt>
-<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">      <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name" targets="Method apiclient.http.BatchHttpRequest._serialize_request()=apiclient.http.BatchHttpRequest-class.html#_serialize_request"><a title="apiclient.http.BatchHttpRequest._serialize_request" class="py-name" href="#" onclick="return doclink('link-215', '_serialize_request', 'link-215');">_serialize_request</a></tt><tt class="py-op">(</tt><tt id="link-216" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-216', 'request', 'link-67');">request</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line">      <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
-<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line"> </tt>
-<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">    <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">as_string</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-214', 'request', 'link-67');">request</a></tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">callback</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._execute"></a><div id="BatchHttpRequest._execute-def"><a name="L1130"></a><tt class="py-lineno">1130</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._execute-toggle" onclick="return toggle('BatchHttpRequest._execute');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_execute">_execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">order</tt><tt class="py-op">,</tt> <tt class="py-param">requests</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._execute-expanded"><a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">    <tt class="py-docstring">"""Serialize batch request, send to server, process response.</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, an http object to be used to make the request with.</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line"><tt class="py-docstring">      order: list, list of request ids in the order they were added to the</tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line"><tt class="py-docstring">        batch.</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line"><tt class="py-docstring">      request: list, list of request objects to send.</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line"><tt class="py-docstring">      httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line"><tt class="py-docstring">      apiclient.errors.BatchError if the response is the wrong format.</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line">    <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMEMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'mixed'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line">    <tt class="py-comment"># Message should not write out it's own headers.</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">'_write_headers'</tt><tt class="py-op">,</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">self</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
 <a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line"> </tt>
-<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line">    <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'multipart/mixed; '</tt> </tt>
-<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line">                               <tt class="py-string">'boundary="%s"'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">get_boundary</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line">    <tt class="py-comment"># Add all the individual requests.</tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">order</tt><tt class="py-op">:</tt> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line">      <tt id="link-215" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-215', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
 <a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line"> </tt>
-<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-217" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-217', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line">      <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'application'</tt><tt class="py-op">,</tt> <tt class="py-string">'http'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-Transfer-Encoding'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'binary'</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-ID'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name" targets="Method apiclient.http.BatchHttpRequest._id_to_header()=apiclient.http.BatchHttpRequest-class.html#_id_to_header"><a title="apiclient.http.BatchHttpRequest._id_to_header" class="py-name" href="#" onclick="return doclink('link-216', '_id_to_header', 'link-216');">_id_to_header</a></tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line"> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">      <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name" targets="Method apiclient.http.BatchHttpRequest._serialize_request()=apiclient.http.BatchHttpRequest-class.html#_serialize_request"><a title="apiclient.http.BatchHttpRequest._serialize_request" class="py-name" href="#" onclick="return doclink('link-217', '_serialize_request', 'link-217');">_serialize_request</a></tt><tt class="py-op">(</tt><tt id="link-218" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-218', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt><tt class="py-op">,</tt> <tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> </tt>
-<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line">                                 <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line"> </tt>
-<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
-<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-219" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-219', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line"> </tt>
-<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">    <tt class="py-comment"># Now break out the individual responses and store each one.</tt> </tt>
-<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line">    <tt class="py-name">boundary</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line"> </tt>
-<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">    <tt class="py-comment"># Prepend with a content-type header so FeedParser can handle it.</tt> </tt>
-<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line">    <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt class="py-string">'content-type: %s\r\n\r\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line">    <tt class="py-name">for_parser</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt> <tt class="py-op">+</tt> <tt class="py-name">content</tt> </tt>
-<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line"> </tt>
-<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">    <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">FeedParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line">    <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">feed</tt><tt class="py-op">(</tt><tt class="py-name">for_parser</tt><tt class="py-op">)</tt> </tt>
-<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">    <tt class="py-name">mime_response</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-218', 'request', 'link-67');">request</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">      <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line"> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">    <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">as_string</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line"> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line">    <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'multipart/mixed; '</tt> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line">                               <tt class="py-string">'boundary="%s"'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">get_boundary</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line"> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-219" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-219', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-220', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt><tt class="py-op">,</tt> <tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">                                 <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
 <a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line"> </tt>
-<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">mime_response</tt><tt class="py-op">.</tt><tt class="py-name">is_multipart</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-220" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-220', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Response not in multipart/mixed format."</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">=</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> </tt>
-<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line">                       <tt class="py-name">content</tt><tt class="py-op">=</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line"> </tt>
-<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">part</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mime_response</tt><tt class="py-op">.</tt><tt class="py-name">get_payload</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line">      <tt class="py-name">request_id</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name" targets="Method apiclient.http.BatchHttpRequest._header_to_id()=apiclient.http.BatchHttpRequest-class.html#_header_to_id"><a title="apiclient.http.BatchHttpRequest._header_to_id" class="py-name" href="#" onclick="return doclink('link-221', '_header_to_id', 'link-221');">_header_to_id</a></tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">[</tt><tt class="py-string">'Content-ID'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line">      <tt id="link-222" class="py-name" targets="Method apiclient.model.BaseModel.response()=apiclient.model.BaseModel-class.html#response,Method apiclient.model.Model.response()=apiclient.model.Model-class.html#response"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-222', 'response', 'link-222');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name" targets="Method apiclient.http.BatchHttpRequest._deserialize_response()=apiclient.http.BatchHttpRequest-class.html#_deserialize_response"><a title="apiclient.http.BatchHttpRequest._deserialize_response" class="py-name" href="#" onclick="return doclink('link-223', '_deserialize_response', 'link-223');">_deserialize_response</a></tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">.</tt><tt class="py-name">get_payload</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-224" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-224', 'response', 'link-222');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line"> </tt>
-<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-225', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="BatchHttpRequest.execute"></a><div id="BatchHttpRequest.execute-def"><a name="L1178"></a><tt class="py-lineno">1178</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.execute-toggle" onclick="return toggle('BatchHttpRequest.execute');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.execute-expanded"><a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">    <tt class="py-docstring">"""Execute all the requests as a single batched HTTP request.</tt> </tt>
-<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, an http object to be used in place of the one the</tt> </tt>
-<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line"><tt class="py-docstring">        HttpRequest request object was constructed with.  If one isn't supplied</tt> </tt>
-<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line"><tt class="py-docstring">        then use a http object from the requests in this batch.</tt> </tt>
-<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line"><tt class="py-docstring">      None</tt> </tt>
-<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line"><tt class="py-docstring">      httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
-<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line"><tt class="py-docstring">      apiclient.errors.BatchError if the response is the wrong format.</tt> </tt>
-<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line"> </tt>
-<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">    <tt class="py-comment"># If http is not supplied use the first valid one given in the requests.</tt> </tt>
-<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-226" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-226', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
-<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line">        <tt id="link-227" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-221" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-221', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line"> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">    <tt class="py-comment"># Now break out the individual responses and store each one.</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">    <tt class="py-name">boundary</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line"> </tt>
+<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line">    <tt class="py-comment"># Prepend with a content-type header so FeedParser can handle it.</tt> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line">    <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt class="py-string">'content-type: %s\r\n\r\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line">    <tt class="py-name">for_parser</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt> <tt class="py-op">+</tt> <tt class="py-name">content</tt> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line"> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line">    <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">FeedParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">    <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">feed</tt><tt class="py-op">(</tt><tt class="py-name">for_parser</tt><tt class="py-op">)</tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line">    <tt class="py-name">mime_response</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line"> </tt>
+<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">mime_response</tt><tt class="py-op">.</tt><tt class="py-name">is_multipart</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-222" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-222', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Response not in multipart/mixed format."</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">=</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> </tt>
+<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line">                       <tt class="py-name">content</tt><tt class="py-op">=</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line"> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">part</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mime_response</tt><tt class="py-op">.</tt><tt class="py-name">get_payload</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line">      <tt class="py-name">request_id</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name" targets="Method apiclient.http.BatchHttpRequest._header_to_id()=apiclient.http.BatchHttpRequest-class.html#_header_to_id"><a title="apiclient.http.BatchHttpRequest._header_to_id" class="py-name" href="#" onclick="return doclink('link-223', '_header_to_id', 'link-223');">_header_to_id</a></tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">[</tt><tt class="py-string">'Content-ID'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line">      <tt id="link-224" class="py-name" targets="Method apiclient.model.BaseModel.response()=apiclient.model.BaseModel-class.html#response,Method apiclient.model.Model.response()=apiclient.model.Model-class.html#response"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-224', 'response', 'link-224');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name" targets="Method apiclient.http.BatchHttpRequest._deserialize_response()=apiclient.http.BatchHttpRequest-class.html#_deserialize_response"><a title="apiclient.http.BatchHttpRequest._deserialize_response" class="py-name" href="#" onclick="return doclink('link-225', '_deserialize_response', 'link-225');">_deserialize_response</a></tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">.</tt><tt class="py-name">get_payload</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-226" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-226', 'response', 'link-224');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line"> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-227', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="BatchHttpRequest.execute"></a><div id="BatchHttpRequest.execute-def"><a name="L1192"></a><tt class="py-lineno">1192</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.execute-toggle" onclick="return toggle('BatchHttpRequest.execute');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.execute-expanded"><a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line">    <tt class="py-docstring">"""Execute all the requests as a single batched HTTP request.</tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, an http object to be used in place of the one the</tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line"><tt class="py-docstring">        HttpRequest request object was constructed with. If one isn't supplied</tt> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line"><tt class="py-docstring">        then use a http object from the requests in this batch.</tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line"><tt class="py-docstring">      None</tt> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line"><tt class="py-docstring">      httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line"><tt class="py-docstring">      apiclient.errors.BatchError if the response is the wrong format.</tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line"> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line">    <tt class="py-comment"># If http is not supplied use the first valid one given in the requests.</tt> </tt>
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-228" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-228', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
+<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line">        <tt id="link-229" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-227', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-228" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-229', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-230" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-228', 'request', 'link-67');">request</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line">          <tt id="link-229" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-229', 'http', 'link-70');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-230" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-230', 'request', 'link-67');">request</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line">          <tt id="link-231" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-231', 'http', 'link-70');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-232" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-230', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-231', 'http', 'link-70');">http</a></tt> </tt>
-<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">          <tt class="py-keyword">break</tt> </tt>
-<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line"> </tt>
-<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-232" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-232', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Missing a valid http object."</tt><tt class="py-op">)</tt> </tt>
-<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line"> </tt>
-<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name" targets="Method apiclient.http.BatchHttpRequest._execute()=apiclient.http.BatchHttpRequest-class.html#_execute"><a title="apiclient.http.BatchHttpRequest._execute" class="py-name" href="#" onclick="return doclink('link-233', '_execute', 'link-233');">_execute</a></tt><tt class="py-op">(</tt><tt id="link-234" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-234', 'http', 'link-70');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">)</tt> </tt>
-<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line"> </tt>
-<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line">    <tt class="py-comment"># Loop over all the requests and check for 401s. For each 401 request the</tt> </tt>
-<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line">    <tt class="py-comment"># credentials should be refreshed and then sent again in a separate batch.</tt> </tt>
-<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line">    <tt class="py-name">redo_requests</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line">    <tt class="py-name">redo_order</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line"> </tt>
-<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
-<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'401'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">        <tt class="py-name">redo_order</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
-<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line">        <tt id="link-235" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-232', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-233', 'http', 'link-70');">http</a></tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">          <tt class="py-keyword">break</tt> </tt>
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line"> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-234" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-234', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Missing a valid http object."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line"> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name" targets="Method apiclient.http.BatchHttpRequest._execute()=apiclient.http.BatchHttpRequest-class.html#_execute"><a title="apiclient.http.BatchHttpRequest._execute" class="py-name" href="#" onclick="return doclink('link-235', '_execute', 'link-235');">_execute</a></tt><tt class="py-op">(</tt><tt id="link-236" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-236', 'http', 'link-70');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">)</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line"> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line">    <tt class="py-comment"># Loop over all the requests and check for 401s. For each 401 request the</tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line">    <tt class="py-comment"># credentials should be refreshed and then sent again in a separate batch.</tt> </tt>
+<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line">    <tt class="py-name">redo_requests</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line">    <tt class="py-name">redo_order</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line"> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'401'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line">        <tt class="py-name">redo_order</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line">        <tt id="link-237" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-235', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name" targets="Method apiclient.http.BatchHttpRequest._refresh_and_apply_credentials()=apiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials"><a title="apiclient.http.BatchHttpRequest._refresh_and_apply_credentials" class="py-name" href="#" onclick="return doclink('link-236', '_refresh_and_apply_credentials', 'link-236');">_refresh_and_apply_credentials</a></tt><tt class="py-op">(</tt><tt id="link-237" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-237', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-238" class="py-name" targets="Method apiclient.http.BatchHttpRequest._refresh_and_apply_credentials()=apiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials"><a title="apiclient.http.BatchHttpRequest._refresh_and_apply_credentials" class="py-name" href="#" onclick="return doclink('link-238', '_refresh_and_apply_credentials', 'link-238');">_refresh_and_apply_credentials</a></tt><tt class="py-op">(</tt><tt id="link-239" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-237', 'request', 'link-67');">request</a></tt><tt class="py-op">,</tt> <tt id="link-238" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-238', 'http', 'link-70');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line">        <tt class="py-name">redo_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-239" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-239', 'request', 'link-67');">request</a></tt><tt class="py-op">,</tt> <tt id="link-240" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-240', 'http', 'link-70');">http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line">        <tt class="py-name">redo_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-241" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-239', 'request', 'link-67');">request</a></tt> </tt>
-<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line"> </tt>
-<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">redo_requests</tt><tt class="py-op">:</tt> </tt>
-<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="apiclient.http.BatchHttpRequest._execute" class="py-name" href="#" onclick="return doclink('link-240', '_execute', 'link-233');">_execute</a></tt><tt class="py-op">(</tt><tt id="link-241" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-241', 'http', 'link-70');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">redo_order</tt><tt class="py-op">,</tt> <tt class="py-name">redo_requests</tt><tt class="py-op">)</tt> </tt>
-<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line"> </tt>
-<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line">    <tt class="py-comment"># Now process all callbacks that are erroring, and raise an exception for</tt> </tt>
-<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line">    <tt class="py-comment"># ones that return a non-2xx response? Or add extra parameter to callback</tt> </tt>
-<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line">    <tt class="py-comment"># that contains an HttpError?</tt> </tt>
-<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line"> </tt>
-<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
-<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line"> </tt>
-<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line">      <tt id="link-242" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-241', 'request', 'link-67');">request</a></tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line"> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">redo_requests</tt><tt class="py-op">:</tt> </tt>
+<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="apiclient.http.BatchHttpRequest._execute" class="py-name" href="#" onclick="return doclink('link-242', '_execute', 'link-235');">_execute</a></tt><tt class="py-op">(</tt><tt id="link-243" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-243', 'http', 'link-70');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">redo_order</tt><tt class="py-op">,</tt> <tt class="py-name">redo_requests</tt><tt class="py-op">)</tt> </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line"> </tt>
+<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line">    <tt class="py-comment"># Now process all callbacks that are erroring, and raise an exception for</tt> </tt>
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">    <tt class="py-comment"># ones that return a non-2xx response? Or add extra parameter to callback</tt> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">    <tt class="py-comment"># that contains an HttpError?</tt> </tt>
+<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line"> </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line"> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line">      <tt id="link-244" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-242', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line">      <tt class="py-name">callback</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line"> </tt>
-<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line">      <tt id="link-243" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-243', 'response', 'link-222');">response</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line">      <tt class="py-name">exception</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
-<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-244" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-244', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt id="link-245" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-244', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line">      <tt class="py-name">callback</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line"> </tt>
+<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line">      <tt id="link-245" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-245', 'response', 'link-224');">response</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line">      <tt class="py-name">exception</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
+<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-246" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-246', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt id="link-247" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-245', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">        <tt id="link-246" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-246', 'response', 'link-222');">response</a></tt> <tt class="py-op">=</tt> <tt id="link-247" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-247', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line">        <tt id="link-248" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-248', 'response', 'link-224');">response</a></tt> <tt class="py-op">=</tt> <tt id="link-249" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-247', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt> <tt id="link-248" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-248', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line">        <tt class="py-name">exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt>
-<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line"> </tt>
-<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line">        <tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">,</tt> <tt id="link-249" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-249', 'response', 'link-222');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">exception</tt><tt class="py-op">)</tt> </tt>
-<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">,</tt> <tt id="link-250" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-250', 'response', 'link-222');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">exception</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line"> </tt>
-<a name="HttpRequestMock"></a><div id="HttpRequestMock-def"><a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line"> </tt>
-<a name="L1248"></a><tt class="py-lineno">1248</tt> <a class="py-toggle" href="#" id="HttpRequestMock-toggle" onclick="return toggle('HttpRequestMock');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.HttpRequestMock-class.html">HttpRequestMock</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequestMock-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpRequestMock-expanded"><a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line">  <tt class="py-docstring">"""Mock of HttpRequest.</tt> </tt>
-<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line"><tt class="py-docstring">  Do not construct directly, instead use RequestMockBuilder.</tt> </tt>
-<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line"> </tt>
-<a name="HttpRequestMock.__init__"></a><div id="HttpRequestMock.__init__-def"><a name="L1254"></a><tt class="py-lineno">1254</tt> <a class="py-toggle" href="#" id="HttpRequestMock.__init__-toggle" onclick="return toggle('HttpRequestMock.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequestMock-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequestMock.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequestMock.__init__-expanded"><a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for HttpRequestMock</tt> </tt>
-<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line"><tt class="py-docstring">      resp: httplib2.Response, the response to emulate coming from the request</tt> </tt>
-<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line"><tt class="py-docstring">      content: string, the response body</tt> </tt>
-<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line"><tt class="py-docstring">      postproc: callable, the post processing function usually supplied by</tt> </tt>
-<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line"><tt class="py-docstring">                the model class. See model.JsonModel.response() as an example.</tt> </tt>
-<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt> </tt>
-<a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt> </tt>
-<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt> <tt class="py-op">=</tt> <tt class="py-name">postproc</tt> </tt>
-<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'status'</tt><tt class="py-op">:</tt> <tt class="py-number">200</tt><tt class="py-op">,</tt> <tt class="py-string">'reason'</tt><tt class="py-op">:</tt> <tt class="py-string">'OK'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'reason'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
-<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'reason'</tt><tt class="py-op">]</tt> </tt>
-</div><a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line"> </tt>
-<a name="HttpRequestMock.execute"></a><div id="HttpRequestMock.execute-def"><a name="L1271"></a><tt class="py-lineno">1271</tt> <a class="py-toggle" href="#" id="HttpRequestMock.execute-toggle" onclick="return toggle('HttpRequestMock.execute');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequestMock-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequestMock.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequestMock.execute-expanded"><a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line">    <tt class="py-docstring">"""Execute the request.</tt> </tt>
-<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line"><tt class="py-docstring">    Same behavior as HttpRequest.execute(), but the response is</tt> </tt>
-<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line"><tt class="py-docstring">    mocked and not really from an HTTP request/response.</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-249', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt> <tt id="link-250" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-250', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line">        <tt class="py-name">exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt>
+<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line"> </tt>
+<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line">        <tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">,</tt> <tt id="link-251" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-251', 'response', 'link-224');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">exception</tt><tt class="py-op">)</tt> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">,</tt> <tt id="link-252" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-252', 'response', 'link-224');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">exception</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line"> </tt>
+<a name="HttpRequestMock"></a><div id="HttpRequestMock-def"><a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line"> </tt>
+<a name="L1262"></a><tt class="py-lineno">1262</tt> <a class="py-toggle" href="#" id="HttpRequestMock-toggle" onclick="return toggle('HttpRequestMock');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.HttpRequestMock-class.html">HttpRequestMock</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequestMock-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpRequestMock-expanded"><a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">  <tt class="py-docstring">"""Mock of HttpRequest.</tt> </tt>
+<a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line"><tt class="py-docstring">  Do not construct directly, instead use RequestMockBuilder.</tt> </tt>
+<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line"> </tt>
+<a name="HttpRequestMock.__init__"></a><div id="HttpRequestMock.__init__-def"><a name="L1268"></a><tt class="py-lineno">1268</tt> <a class="py-toggle" href="#" id="HttpRequestMock.__init__-toggle" onclick="return toggle('HttpRequestMock.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequestMock-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequestMock.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequestMock.__init__-expanded"><a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for HttpRequestMock</tt> </tt>
+<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line"><tt class="py-docstring">      resp: httplib2.Response, the response to emulate coming from the request</tt> </tt>
+<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line"><tt class="py-docstring">      content: string, the response body</tt> </tt>
+<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line"><tt class="py-docstring">      postproc: callable, the post processing function usually supplied by</tt> </tt>
+<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line"><tt class="py-docstring">                the model class. See model.JsonModel.response() as an example.</tt> </tt>
 <a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line"> </tt>
-<a name="RequestMockBuilder"></a><div id="RequestMockBuilder-def"><a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line"> </tt>
-<a name="L1280"></a><tt class="py-lineno">1280</tt> <a class="py-toggle" href="#" id="RequestMockBuilder-toggle" onclick="return toggle('RequestMockBuilder');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.RequestMockBuilder-class.html">RequestMockBuilder</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="RequestMockBuilder-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="RequestMockBuilder-expanded"><a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line">  <tt class="py-docstring">"""A simple mock of HttpRequest</tt> </tt>
-<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line"><tt class="py-docstring">    Pass in a dictionary to the constructor that maps request methodIds to</tt> </tt>
-<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line"><tt class="py-docstring">    tuples of (httplib2.Response, content, opt_expected_body) that should be</tt> </tt>
-<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line"><tt class="py-docstring">    returned when that method is called. None may also be passed in for the</tt> </tt>
-<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line"><tt class="py-docstring">    httplib2.Response, in which case a 200 OK response will be generated.</tt> </tt>
-<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line"><tt class="py-docstring">    If an opt_expected_body (str or dict) is provided, it will be compared to</tt> </tt>
-<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line"><tt class="py-docstring">    the body and UnexpectedBodyError will be raised on inequality.</tt> </tt>
-<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line"><tt class="py-docstring">    Example:</tt> </tt>
-<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line"><tt class="py-docstring">      response = '{"data": {"id": "tag:google.c...'</tt> </tt>
-<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line"><tt class="py-docstring">      requestBuilder = RequestMockBuilder(</tt> </tt>
-<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line"><tt class="py-docstring">        {</tt> </tt>
-<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line"><tt class="py-docstring">          'plus.activities.get': (None, response),</tt> </tt>
-<a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line"><tt class="py-docstring">        }</tt> </tt>
-<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line"><tt class="py-docstring">      )</tt> </tt>
-<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line"><tt class="py-docstring">      apiclient.discovery.build("plus", "v1", requestBuilder=requestBuilder)</tt> </tt>
-<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line"><tt class="py-docstring">    Methods that you do not supply a response for will return a</tt> </tt>
-<a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line"><tt class="py-docstring">    200 OK with an empty string as the response content or raise an excpetion</tt> </tt>
-<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line"><tt class="py-docstring">    if check_unexpected is set to True. The methodId is taken from the rpcName</tt> </tt>
-<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line"><tt class="py-docstring">    in the discovery document.</tt> </tt>
+<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt> </tt>
+<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt> </tt>
+<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt> <tt class="py-op">=</tt> <tt class="py-name">postproc</tt> </tt>
+<a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'status'</tt><tt class="py-op">:</tt> <tt class="py-number">200</tt><tt class="py-op">,</tt> <tt class="py-string">'reason'</tt><tt class="py-op">:</tt> <tt class="py-string">'OK'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'reason'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'reason'</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line"> </tt>
+<a name="HttpRequestMock.execute"></a><div id="HttpRequestMock.execute-def"><a name="L1285"></a><tt class="py-lineno">1285</tt> <a class="py-toggle" href="#" id="HttpRequestMock.execute-toggle" onclick="return toggle('HttpRequestMock.execute');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequestMock-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequestMock.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequestMock.execute-expanded"><a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line">    <tt class="py-docstring">"""Execute the request.</tt> </tt>
+<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line"><tt class="py-docstring">    Same behavior as HttpRequest.execute(), but the response is</tt> </tt>
+<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line"><tt class="py-docstring">    mocked and not really from an HTTP request/response.</tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line"> </tt>
+<a name="RequestMockBuilder"></a><div id="RequestMockBuilder-def"><a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line"> </tt>
+<a name="L1294"></a><tt class="py-lineno">1294</tt> <a class="py-toggle" href="#" id="RequestMockBuilder-toggle" onclick="return toggle('RequestMockBuilder');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.RequestMockBuilder-class.html">RequestMockBuilder</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RequestMockBuilder-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="RequestMockBuilder-expanded"><a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line">  <tt class="py-docstring">"""A simple mock of HttpRequest</tt> </tt>
+<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line"><tt class="py-docstring">    Pass in a dictionary to the constructor that maps request methodIds to</tt> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line"><tt class="py-docstring">    tuples of (httplib2.Response, content, opt_expected_body) that should be</tt> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line"><tt class="py-docstring">    returned when that method is called. None may also be passed in for the</tt> </tt>
+<a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line"><tt class="py-docstring">    httplib2.Response, in which case a 200 OK response will be generated.</tt> </tt>
+<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line"><tt class="py-docstring">    If an opt_expected_body (str or dict) is provided, it will be compared to</tt> </tt>
+<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line"><tt class="py-docstring">    the body and UnexpectedBodyError will be raised on inequality.</tt> </tt>
 <a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line"><tt class="py-docstring">    For more details see the project wiki.</tt> </tt>
-<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line"> </tt>
-<a name="RequestMockBuilder.__init__"></a><div id="RequestMockBuilder.__init__-def"><a name="L1307"></a><tt class="py-lineno">1307</tt> <a class="py-toggle" href="#" id="RequestMockBuilder.__init__-toggle" onclick="return toggle('RequestMockBuilder.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.RequestMockBuilder-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">responses</tt><tt class="py-op">,</tt> <tt class="py-param">check_unexpected</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="RequestMockBuilder.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="RequestMockBuilder.__init__-expanded"><a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for RequestMockBuilder</tt> </tt>
-<a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line"><tt class="py-docstring">    The constructed object should be a callable object</tt> </tt>
-<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line"><tt class="py-docstring">    that can replace the class HttpResponse.</tt> </tt>
+<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line"><tt class="py-docstring">    Example:</tt> </tt>
+<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line"><tt class="py-docstring">      response = '{"data": {"id": "tag:google.c...'</tt> </tt>
+<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line"><tt class="py-docstring">      requestBuilder = RequestMockBuilder(</tt> </tt>
+<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line"><tt class="py-docstring">        {</tt> </tt>
+<a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line"><tt class="py-docstring">          'plus.activities.get': (None, response),</tt> </tt>
+<a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line"><tt class="py-docstring">        }</tt> </tt>
+<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line"><tt class="py-docstring">      )</tt> </tt>
+<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line"><tt class="py-docstring">      apiclient.discovery.build("plus", "v1", requestBuilder=requestBuilder)</tt> </tt>
 <a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line"><tt class="py-docstring">    responses - A dictionary that maps methodIds into tuples</tt> </tt>
-<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line"><tt class="py-docstring">                of (httplib2.Response, content). The methodId</tt> </tt>
-<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line"><tt class="py-docstring">                comes from the 'rpcName' field in the discovery</tt> </tt>
-<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line"><tt class="py-docstring">                document.</tt> </tt>
-<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line"><tt class="py-docstring">    check_unexpected - A boolean setting whether or not UnexpectedMethodError</tt> </tt>
-<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line"><tt class="py-docstring">                       should be raised on unsupplied method.</tt> </tt>
-<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt> <tt class="py-op">=</tt> <tt class="py-name">responses</tt> </tt>
-<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">check_unexpected</tt> <tt class="py-op">=</tt> <tt class="py-name">check_unexpected</tt> </tt>
-</div><a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line"> </tt>
-<a name="RequestMockBuilder.__call__"></a><div id="RequestMockBuilder.__call__-def"><a name="L1323"></a><tt class="py-lineno">1323</tt> <a class="py-toggle" href="#" id="RequestMockBuilder.__call__-toggle" onclick="return toggle('RequestMockBuilder.__call__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.RequestMockBuilder-class.html#__call__">__call__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line">               <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">methodId</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">resumable</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="RequestMockBuilder.__call__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="RequestMockBuilder.__call__-expanded"><a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line">    <tt class="py-docstring">"""Implements the callable interface that discovery.build() expects</tt> </tt>
-<a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line"><tt class="py-docstring">    of requestBuilder, which is to build an object compatible with</tt> </tt>
-<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line"><tt class="py-docstring">    HttpRequest.execute(). See that method for the description of the</tt> </tt>
-<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line"><tt class="py-docstring">    parameters and the expected response.</tt> </tt>
-<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">methodId</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt><tt class="py-op">:</tt> </tt>
-<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">      <tt id="link-251" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-251', 'response', 'link-222');">response</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt><tt class="py-op">[</tt><tt class="py-name">methodId</tt><tt class="py-op">]</tt> </tt>
-<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-252" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-252', 'response', 'link-222');">response</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
-<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-253" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-253', 'response', 'link-222');">response</a></tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
-<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line">        <tt class="py-comment"># Test the body against the supplied expected_body.</tt> </tt>
-<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line">        <tt class="py-name">expected_body</tt> <tt class="py-op">=</tt> <tt id="link-254" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-254', 'response', 'link-222');">response</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
-<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line">          <tt class="py-comment"># Not expecting a body and provided one</tt> </tt>
-<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">          <tt class="py-comment"># or expecting a body and not provided one.</tt> </tt>
-<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-255" class="py-name"><a title="apiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-255', 'UnexpectedBodyError', 'link-10');">UnexpectedBodyError</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line">          <tt class="py-name">expected_body</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-256', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">)</tt> </tt>
-<a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line">        <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-257" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-257', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">body</tt> <tt class="py-op">!=</tt> <tt class="py-name">expected_body</tt><tt class="py-op">:</tt> </tt>
-<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-258" class="py-name"><a title="apiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-258', 'UnexpectedBodyError', 'link-10');">UnexpectedBodyError</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-259" class="py-name" targets="Class apiclient.http.HttpRequestMock=apiclient.http.HttpRequestMock-class.html"><a title="apiclient.http.HttpRequestMock" class="py-name" href="#" onclick="return doclink('link-259', 'HttpRequestMock', 'link-259');">HttpRequestMock</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">postproc</tt><tt class="py-op">)</tt> </tt>
-<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">check_unexpected</tt><tt class="py-op">:</tt> </tt>
-<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-260" class="py-name"><a title="apiclient.errors.UnexpectedMethodError" class="py-name" href="#" onclick="return doclink('link-260', 'UnexpectedMethodError', 'link-12');">UnexpectedMethodError</a></tt><tt class="py-op">(</tt><tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">methodId</tt><tt class="py-op">)</tt> </tt>
-<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">      <tt id="link-261" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-261', 'model', 'link-13');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-262" class="py-name"><a title="apiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-262', 'JsonModel', 'link-14');">JsonModel</a></tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-263" class="py-name"><a title="apiclient.http.HttpRequestMock" class="py-name" href="#" onclick="return doclink('link-263', 'HttpRequestMock', 'link-259');">HttpRequestMock</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">'{}'</tt><tt class="py-op">,</tt> <tt id="link-264" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-264', 'model', 'link-13');">model</a></tt><tt class="py-op">.</tt><tt id="link-265" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-265', 'response', 'link-222');">response</a></tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line"> </tt>
-<a name="HttpMock"></a><div id="HttpMock-def"><a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line"> </tt>
-<a name="L1353"></a><tt class="py-lineno">1353</tt> <a class="py-toggle" href="#" id="HttpMock-toggle" onclick="return toggle('HttpMock');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.HttpMock-class.html">HttpMock</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMock-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpMock-expanded"><a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line">  <tt class="py-docstring">"""Mock of httplib2.Http"""</tt> </tt>
-<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line"> </tt>
-<a name="HttpMock.__init__"></a><div id="HttpMock.__init__-def"><a name="L1356"></a><tt class="py-lineno">1356</tt> <a class="py-toggle" href="#" id="HttpMock.__init__-toggle" onclick="return toggle('HttpMock.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMock-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMock.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMock.__init__-expanded"><a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
-<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line"><tt class="py-docstring">      filename: string, absolute filename to read response from</tt> </tt>
-<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line"><tt class="py-docstring">      headers: dict, header to return with response</tt> </tt>
-<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line">      <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'status'</tt><tt class="py-op">:</tt> <tt class="py-string">'200 OK'</tt><tt class="py-op">}</tt> </tt>
-<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line">    <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-266" class="py-name" targets="Module oauth2client.file=oauth2client.file-module.html"><a title="oauth2client.file" class="py-name" href="#" onclick="return doclink('link-266', 'file', 'link-266');">file</a></tt><tt class="py-op">(</tt><tt id="link-267" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-267', 'filename', 'link-39');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-string">'r'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-268" class="py-name"><a title="apiclient.http._StreamSlice.read" class="py-name" href="#" onclick="return doclink('link-268', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line">    <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
-</div><a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line"> </tt>
-<a name="HttpMock.request"></a><div id="HttpMock.request-def"><a name="L1369"></a><tt class="py-lineno">1369</tt> <a class="py-toggle" href="#" id="HttpMock.request-toggle" onclick="return toggle('HttpMock.request');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMock-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line">              <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line">              <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line">              <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line">              <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
-<a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line">              <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMock.request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMock.request-expanded"><a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> </tt>
-</div></div><a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line"> </tt>
-<a name="HttpMockSequence"></a><div id="HttpMockSequence-def"><a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line"> </tt>
-<a name="L1378"></a><tt class="py-lineno">1378</tt> <a class="py-toggle" href="#" id="HttpMockSequence-toggle" onclick="return toggle('HttpMockSequence');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.HttpMockSequence-class.html">HttpMockSequence</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMockSequence-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpMockSequence-expanded"><a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line">  <tt class="py-docstring">"""Mock of httplib2.Http</tt> </tt>
-<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line"><tt class="py-docstring">  Mocks a sequence of calls to request returning different responses for each</tt> </tt>
-<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line"><tt class="py-docstring">  call. Create an instance initialized with the desired response headers</tt> </tt>
-<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line"><tt class="py-docstring">  and content and then use as if an httplib2.Http instance.</tt> </tt>
-<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line"><tt class="py-docstring">    http = HttpMockSequence([</tt> </tt>
-<a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line"><tt class="py-docstring">      ({'status': '401'}, ''),</tt> </tt>
-<a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line"><tt class="py-docstring">      ({'status': '200'}, '{"access_token":"1/3w","expires_in":3600}'),</tt> </tt>
-<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line"><tt class="py-docstring">      ({'status': '200'}, 'echo_request_headers'),</tt> </tt>
-<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line"><tt class="py-docstring">      ])</tt> </tt>
-<a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line"><tt class="py-docstring">    resp, content = http.request("http://examples.com")</tt> </tt>
-<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line"><tt class="py-docstring">  There are special values you can pass in for content to trigger</tt> </tt>
-<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line"><tt class="py-docstring">  behavours that are helpful in testing.</tt> </tt>
-<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_headers' means return the request headers in the response body</tt> </tt>
-<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_headers_as_json' means return the request headers in</tt> </tt>
-<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line"><tt class="py-docstring">     the response body</tt> </tt>
-<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_body' means return the request body in the response body</tt> </tt>
-<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_uri' means return the request uri in the response body</tt> </tt>
-<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line"> </tt>
-<a name="HttpMockSequence.__init__"></a><div id="HttpMockSequence.__init__-def"><a name="L1402"></a><tt class="py-lineno">1402</tt> <a class="py-toggle" href="#" id="HttpMockSequence.__init__-toggle" onclick="return toggle('HttpMockSequence.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMockSequence-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">iterable</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMockSequence.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMockSequence.__init__-expanded"><a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
-<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line"><tt class="py-docstring">      iterable: iterable, a sequence of pairs of (headers, body)</tt> </tt>
-<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_iterable</tt> <tt class="py-op">=</tt> <tt class="py-name">iterable</tt> </tt>
-<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">follow_redirects</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-</div><a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line"> </tt>
-<a name="HttpMockSequence.request"></a><div id="HttpMockSequence.request-def"><a name="L1410"></a><tt class="py-lineno">1410</tt> <a class="py-toggle" href="#" id="HttpMockSequence.request-toggle" onclick="return toggle('HttpMockSequence.request');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMockSequence-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line">              <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line">              <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line">              <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line">              <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
-<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line">              <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMockSequence.request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMockSequence.request-expanded"><a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_iterable</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_headers'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
-<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_headers_as_json'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_body'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-string">'read'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line">        <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">body</tt><tt class="py-op">.</tt><tt id="link-269" class="py-name"><a title="apiclient.http._StreamSlice.read" class="py-name" href="#" onclick="return doclink('link-269', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line">        <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">body</tt> </tt>
-<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_uri'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
-<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
-</div></div><a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line"> </tt>
-<a name="set_user_agent"></a><div id="set_user_agent-def"><a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line"> </tt>
-<a name="L1431"></a><tt class="py-lineno">1431</tt> <a class="py-toggle" href="#" id="set_user_agent-toggle" onclick="return toggle('set_user_agent');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http-module.html#set_user_agent">set_user_agent</a><tt class="py-op">(</tt><tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="set_user_agent-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="set_user_agent-expanded"><a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line">  <tt class="py-docstring">"""Set the user-agent on every request.</tt> </tt>
-<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line"><tt class="py-docstring">     http - An instance of httplib2.Http</tt> </tt>
-<a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line"><tt class="py-docstring">         or something that acts like it.</tt> </tt>
-<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line"><tt class="py-docstring">     user_agent: string, the value for the user-agent header.</tt> </tt>
-<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line"><tt class="py-docstring">     A modified instance of http that was passed in.</tt> </tt>
-<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
-<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line"><tt class="py-docstring">    h = httplib2.Http()</tt> </tt>
-<a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line"><tt class="py-docstring">    h = set_user_agent(h, "my-app-name/6.0")</tt> </tt>
-<a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line"><tt class="py-docstring">  Most of the time the user-agent will be set doing auth, this is for the rare</tt> </tt>
-<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line"><tt class="py-docstring">  cases where you are accessing an unauthenticated endpoint.</tt> </tt>
-<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line">  <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-270" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-270', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line"><tt class="py-docstring">    Methods that you do not supply a response for will return a</tt> </tt>
+<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line"><tt class="py-docstring">    200 OK with an empty string as the response content or raise an excpetion</tt> </tt>
+<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line"><tt class="py-docstring">    if check_unexpected is set to True. The methodId is taken from the rpcName</tt> </tt>
+<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line"><tt class="py-docstring">    in the discovery document.</tt> </tt>
+<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line"><tt class="py-docstring">    For more details see the project wiki.</tt> </tt>
+<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line"> </tt>
+<a name="RequestMockBuilder.__init__"></a><div id="RequestMockBuilder.__init__-def"><a name="L1321"></a><tt class="py-lineno">1321</tt> <a class="py-toggle" href="#" id="RequestMockBuilder.__init__-toggle" onclick="return toggle('RequestMockBuilder.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.RequestMockBuilder-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">responses</tt><tt class="py-op">,</tt> <tt class="py-param">check_unexpected</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RequestMockBuilder.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="RequestMockBuilder.__init__-expanded"><a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for RequestMockBuilder</tt> </tt>
+<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line"><tt class="py-docstring">    The constructed object should be a callable object</tt> </tt>
+<a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line"><tt class="py-docstring">    that can replace the class HttpResponse.</tt> </tt>
+<a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line"><tt class="py-docstring">    responses - A dictionary that maps methodIds into tuples</tt> </tt>
+<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line"><tt class="py-docstring">                of (httplib2.Response, content). The methodId</tt> </tt>
+<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line"><tt class="py-docstring">                comes from the 'rpcName' field in the discovery</tt> </tt>
+<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line"><tt class="py-docstring">                document.</tt> </tt>
+<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line"><tt class="py-docstring">    check_unexpected - A boolean setting whether or not UnexpectedMethodError</tt> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line"><tt class="py-docstring">                       should be raised on unsupplied method.</tt> </tt>
+<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt> <tt class="py-op">=</tt> <tt class="py-name">responses</tt> </tt>
+<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">check_unexpected</tt> <tt class="py-op">=</tt> <tt class="py-name">check_unexpected</tt> </tt>
+</div><a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line"> </tt>
+<a name="RequestMockBuilder.__call__"></a><div id="RequestMockBuilder.__call__-def"><a name="L1337"></a><tt class="py-lineno">1337</tt> <a class="py-toggle" href="#" id="RequestMockBuilder.__call__-toggle" onclick="return toggle('RequestMockBuilder.__call__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.RequestMockBuilder-class.html#__call__">__call__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">               <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">methodId</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">resumable</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RequestMockBuilder.__call__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="RequestMockBuilder.__call__-expanded"><a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line">    <tt class="py-docstring">"""Implements the callable interface that discovery.build() expects</tt> </tt>
+<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line"><tt class="py-docstring">    of requestBuilder, which is to build an object compatible with</tt> </tt>
+<a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line"><tt class="py-docstring">    HttpRequest.execute(). See that method for the description of the</tt> </tt>
+<a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line"><tt class="py-docstring">    parameters and the expected response.</tt> </tt>
+<a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">methodId</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt><tt class="py-op">:</tt> </tt>
+<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line">      <tt id="link-253" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-253', 'response', 'link-224');">response</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt><tt class="py-op">[</tt><tt class="py-name">methodId</tt><tt class="py-op">]</tt> </tt>
+<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-254" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-254', 'response', 'link-224');">response</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-255" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-255', 'response', 'link-224');">response</a></tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line">        <tt class="py-comment"># Test the body against the supplied expected_body.</tt> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">        <tt class="py-name">expected_body</tt> <tt class="py-op">=</tt> <tt id="link-256" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-256', 'response', 'link-224');">response</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line">          <tt class="py-comment"># Not expecting a body and provided one</tt> </tt>
+<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line">          <tt class="py-comment"># or expecting a body and not provided one.</tt> </tt>
+<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-257" class="py-name"><a title="apiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-257', 'UnexpectedBodyError', 'link-10');">UnexpectedBodyError</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
+<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line">          <tt class="py-name">expected_body</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-258" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-258', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">)</tt> </tt>
+<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line">        <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-259', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
+<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">body</tt> <tt class="py-op">!=</tt> <tt class="py-name">expected_body</tt><tt class="py-op">:</tt> </tt>
+<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-260" class="py-name"><a title="apiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-260', 'UnexpectedBodyError', 'link-10');">UnexpectedBodyError</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
+<a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-261" class="py-name" targets="Class apiclient.http.HttpRequestMock=apiclient.http.HttpRequestMock-class.html"><a title="apiclient.http.HttpRequestMock" class="py-name" href="#" onclick="return doclink('link-261', 'HttpRequestMock', 'link-261');">HttpRequestMock</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">postproc</tt><tt class="py-op">)</tt> </tt>
+<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">check_unexpected</tt><tt class="py-op">:</tt> </tt>
+<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-262" class="py-name"><a title="apiclient.errors.UnexpectedMethodError" class="py-name" href="#" onclick="return doclink('link-262', 'UnexpectedMethodError', 'link-12');">UnexpectedMethodError</a></tt><tt class="py-op">(</tt><tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">methodId</tt><tt class="py-op">)</tt> </tt>
+<a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line">      <tt id="link-263" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-263', 'model', 'link-13');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-264" class="py-name"><a title="apiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-264', 'JsonModel', 'link-14');">JsonModel</a></tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-265" class="py-name"><a title="apiclient.http.HttpRequestMock" class="py-name" href="#" onclick="return doclink('link-265', 'HttpRequestMock', 'link-261');">HttpRequestMock</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">'{}'</tt><tt class="py-op">,</tt> <tt id="link-266" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-266', 'model', 'link-13');">model</a></tt><tt class="py-op">.</tt><tt id="link-267" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-267', 'response', 'link-224');">response</a></tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line"> </tt>
+<a name="HttpMock"></a><div id="HttpMock-def"><a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line"> </tt>
+<a name="L1367"></a><tt class="py-lineno">1367</tt> <a class="py-toggle" href="#" id="HttpMock-toggle" onclick="return toggle('HttpMock');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.HttpMock-class.html">HttpMock</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMock-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpMock-expanded"><a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line">  <tt class="py-docstring">"""Mock of httplib2.Http"""</tt> </tt>
+<a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line"> </tt>
+<a name="HttpMock.__init__"></a><div id="HttpMock.__init__-def"><a name="L1370"></a><tt class="py-lineno">1370</tt> <a class="py-toggle" href="#" id="HttpMock.__init__-toggle" onclick="return toggle('HttpMock.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMock-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMock.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMock.__init__-expanded"><a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line"><tt class="py-docstring">      filename: string, absolute filename to read response from</tt> </tt>
+<a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line"><tt class="py-docstring">      headers: dict, header to return with response</tt> </tt>
+<a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line">      <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'status'</tt><tt class="py-op">:</tt> <tt class="py-string">'200 OK'</tt><tt class="py-op">}</tt> </tt>
+<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-268" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-268', 'filename', 'link-39');">filename</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line">      <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-269" class="py-name" targets="Module oauth2client.file=oauth2client.file-module.html"><a title="oauth2client.file" class="py-name" href="#" onclick="return doclink('link-269', 'file', 'link-269');">file</a></tt><tt class="py-op">(</tt><tt id="link-270" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-270', 'filename', 'link-39');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-string">'r'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="apiclient.http._StreamSlice.read
+apiclient.push.Headers.read" class="py-name" href="#" onclick="return doclink('link-271', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line">      <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_headers</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
+<a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line"> </tt>
+<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line"> </tt>
+<a name="HttpMock.request"></a><div id="HttpMock.request-def"><a name="L1392"></a><tt class="py-lineno">1392</tt> <a class="py-toggle" href="#" id="HttpMock.request-toggle" onclick="return toggle('HttpMock.request');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMock-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line">              <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line">              <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line">              <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line">              <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line">              <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMock.request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMock.request-expanded"><a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
+<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">method</tt> </tt>
+<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">body</tt> </tt>
+<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
+<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_headers</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> </tt>
+</div></div><a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line"> </tt>
+<a name="HttpMockSequence"></a><div id="HttpMockSequence-def"><a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line"> </tt>
+<a name="L1405"></a><tt class="py-lineno">1405</tt> <a class="py-toggle" href="#" id="HttpMockSequence-toggle" onclick="return toggle('HttpMockSequence');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.HttpMockSequence-class.html">HttpMockSequence</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMockSequence-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpMockSequence-expanded"><a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line">  <tt class="py-docstring">"""Mock of httplib2.Http</tt> </tt>
+<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line"><tt class="py-docstring">  Mocks a sequence of calls to request returning different responses for each</tt> </tt>
+<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line"><tt class="py-docstring">  call. Create an instance initialized with the desired response headers</tt> </tt>
+<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line"><tt class="py-docstring">  and content and then use as if an httplib2.Http instance.</tt> </tt>
+<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line"><tt class="py-docstring">    http = HttpMockSequence([</tt> </tt>
+<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line"><tt class="py-docstring">      ({'status': '401'}, ''),</tt> </tt>
+<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line"><tt class="py-docstring">      ({'status': '200'}, '{"access_token":"1/3w","expires_in":3600}'),</tt> </tt>
+<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line"><tt class="py-docstring">      ({'status': '200'}, 'echo_request_headers'),</tt> </tt>
+<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line"><tt class="py-docstring">      ])</tt> </tt>
+<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line"><tt class="py-docstring">    resp, content = http.request("http://examples.com")</tt> </tt>
+<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line"><tt class="py-docstring">  There are special values you can pass in for content to trigger</tt> </tt>
+<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line"><tt class="py-docstring">  behavours that are helpful in testing.</tt> </tt>
+<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_headers' means return the request headers in the response body</tt> </tt>
+<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_headers_as_json' means return the request headers in</tt> </tt>
+<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line"><tt class="py-docstring">     the response body</tt> </tt>
+<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_body' means return the request body in the response body</tt> </tt>
+<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_uri' means return the request uri in the response body</tt> </tt>
+<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line"> </tt>
+<a name="HttpMockSequence.__init__"></a><div id="HttpMockSequence.__init__-def"><a name="L1429"></a><tt class="py-lineno">1429</tt> <a class="py-toggle" href="#" id="HttpMockSequence.__init__-toggle" onclick="return toggle('HttpMockSequence.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMockSequence-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">iterable</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMockSequence.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMockSequence.__init__-expanded"><a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line"><tt class="py-docstring">      iterable: iterable, a sequence of pairs of (headers, body)</tt> </tt>
+<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_iterable</tt> <tt class="py-op">=</tt> <tt class="py-name">iterable</tt> </tt>
+<a name="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">follow_redirects</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line"> </tt>
+<a name="HttpMockSequence.request"></a><div id="HttpMockSequence.request-def"><a name="L1437"></a><tt class="py-lineno">1437</tt> <a class="py-toggle" href="#" id="HttpMockSequence.request-toggle" onclick="return toggle('HttpMockSequence.request');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMockSequence-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line">              <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line">              <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line">              <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line">              <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line">              <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMockSequence.request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMockSequence.request-expanded"><a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_iterable</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_headers'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
+<a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_headers_as_json'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_body'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-string">'read'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line">        <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">body</tt><tt class="py-op">.</tt><tt id="link-272" class="py-name"><a title="apiclient.http._StreamSlice.read
+apiclient.push.Headers.read" class="py-name" href="#" onclick="return doclink('link-272', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line">        <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">body</tt> </tt>
+<a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_uri'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
+<a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
+</div></div><a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line"> </tt>
+<a name="set_user_agent"></a><div id="set_user_agent-def"><a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line"> </tt>
+<a name="L1458"></a><tt class="py-lineno">1458</tt> <a class="py-toggle" href="#" id="set_user_agent-toggle" onclick="return toggle('set_user_agent');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http-module.html#set_user_agent">set_user_agent</a><tt class="py-op">(</tt><tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="set_user_agent-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="set_user_agent-expanded"><a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line">  <tt class="py-docstring">"""Set the user-agent on every request.</tt> </tt>
+<a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line"><tt class="py-docstring">     http - An instance of httplib2.Http</tt> </tt>
+<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line"><tt class="py-docstring">         or something that acts like it.</tt> </tt>
+<a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line"><tt class="py-docstring">     user_agent: string, the value for the user-agent header.</tt> </tt>
+<a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line"><tt class="py-docstring">     A modified instance of http that was passed in.</tt> </tt>
+<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
+<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line"><tt class="py-docstring">    h = httplib2.Http()</tt> </tt>
+<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line"><tt class="py-docstring">    h = set_user_agent(h, "my-app-name/6.0")</tt> </tt>
+<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1474"></a><tt class="py-lineno">1474</tt>  <tt class="py-line"><tt class="py-docstring">  Most of the time the user-agent will be set doing auth, this is for the rare</tt> </tt>
+<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line"><tt class="py-docstring">  cases where you are accessing an unauthenticated endpoint.</tt> </tt>
+<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line">  <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-273" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-273', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-271', 'request', 'link-67');">request</a></tt> </tt>
-<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line"> </tt>
-<a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line">  <tt class="py-comment"># The closure that will replace 'httplib2.Http.request'.</tt> </tt>
-<a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">new_request</tt><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line">                  <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">DEFAULT_MAX_REDIRECTS</tt><tt class="py-op">,</tt> </tt>
-<a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line">                  <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line">    <tt class="py-docstring">"""Modify the request headers to add the user-agent."""</tt> </tt>
-<a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line">      <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'user-agent'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
-<a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
-<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
-<a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line">                        <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
-</div><a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line"> </tt>
-<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line">  <tt id="link-272" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-272', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-273', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new_request</tt> </tt>
-<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-274" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-274', 'http', 'link-70');">http</a></tt> </tt>
-</div><a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line"> </tt>
-<a name="tunnel_patch"></a><div id="tunnel_patch-def"><a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line"> </tt>
-<a name="L1471"></a><tt class="py-lineno">1471</tt> <a class="py-toggle" href="#" id="tunnel_patch-toggle" onclick="return toggle('tunnel_patch');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http-module.html#tunnel_patch">tunnel_patch</a><tt class="py-op">(</tt><tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="tunnel_patch-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="tunnel_patch-expanded"><a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line">  <tt class="py-docstring">"""Tunnel PATCH requests over POST.</tt> </tt>
-<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L1474"></a><tt class="py-lineno">1474</tt>  <tt class="py-line"><tt class="py-docstring">     http - An instance of httplib2.Http</tt> </tt>
-<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line"><tt class="py-docstring">         or something that acts like it.</tt> </tt>
-<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-line"><tt class="py-docstring">     A modified instance of http that was passed in.</tt> </tt>
-<a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
-<a name="L1481"></a><tt class="py-lineno">1481</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line"><tt class="py-docstring">    h = httplib2.Http()</tt> </tt>
-<a name="L1483"></a><tt class="py-lineno">1483</tt>  <tt class="py-line"><tt class="py-docstring">    h = tunnel_patch(h, "my-app-name/6.0")</tt> </tt>
-<a name="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1485"></a><tt class="py-lineno">1485</tt>  <tt class="py-line"><tt class="py-docstring">  Useful if you are running on a platform that doesn't support PATCH.</tt> </tt>
-<a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-line"><tt class="py-docstring">  Apply this last if you are using OAuth 1.0, as changing the method</tt> </tt>
-<a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line"><tt class="py-docstring">  will result in a different signature.</tt> </tt>
-<a name="L1488"></a><tt class="py-lineno">1488</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line">  <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-275" class="py-name"><a title="apiclient.http
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-274', 'request', 'link-67');">request</a></tt> </tt>
+<a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-line"> </tt>
+<a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line">  <tt class="py-comment"># The closure that will replace 'httplib2.Http.request'.</tt> </tt>
+<a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">new_request</tt><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1481"></a><tt class="py-lineno">1481</tt>  <tt class="py-line">                  <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">DEFAULT_MAX_REDIRECTS</tt><tt class="py-op">,</tt> </tt>
+<a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line">                  <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1483"></a><tt class="py-lineno">1483</tt>  <tt class="py-line">    <tt class="py-docstring">"""Modify the request headers to add the user-agent."""</tt> </tt>
+<a name="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1485"></a><tt class="py-lineno">1485</tt>  <tt class="py-line">      <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'user-agent'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
+<a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1488"></a><tt class="py-lineno">1488</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
+<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
+<a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line">                        <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
+</div><a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line"> </tt>
+<a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line">  <tt id="link-275" class="py-name"><a title="apiclient.http
 oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-275', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-276" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-276', 'request', 'link-67');">request</a></tt> </tt>
-<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-line"> </tt>
-<a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line">  <tt class="py-comment"># The closure that will replace 'httplib2.Http.request'.</tt> </tt>
-<a name="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">new_request</tt><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line">                  <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">DEFAULT_MAX_REDIRECTS</tt><tt class="py-op">,</tt> </tt>
-<a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line">                  <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line">    <tt class="py-docstring">"""Modify the request headers to add the user-agent."""</tt> </tt>
-<a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line">      <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">method</tt> <tt class="py-op">==</tt> <tt class="py-string">'PATCH'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'oauth_token'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-277" class="py-name"><a title="apiclient.schema.Schemas.get
-oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-277', 'get', 'link-89');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'authorization'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line">        <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt> </tt>
-<a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line">            <tt class="py-string">'OAuth 1.0 request made with Credentials after tunnel_patch.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'x-http-method-override'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"PATCH"</tt> </tt>
-<a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line">      <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-string">'POST'</tt> </tt>
-<a name="L1504"></a><tt class="py-lineno">1504</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
-<a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line">                        <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
-</div><a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line"> </tt>
-<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line">  <tt id="link-278" class="py-name"><a title="apiclient.http
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-276', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new_request</tt> </tt>
+<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-277" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-277', 'http', 'link-70');">http</a></tt> </tt>
+</div><a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line"> </tt>
+<a name="tunnel_patch"></a><div id="tunnel_patch-def"><a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line"> </tt>
+<a name="L1498"></a><tt class="py-lineno">1498</tt> <a class="py-toggle" href="#" id="tunnel_patch-toggle" onclick="return toggle('tunnel_patch');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http-module.html#tunnel_patch">tunnel_patch</a><tt class="py-op">(</tt><tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="tunnel_patch-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="tunnel_patch-expanded"><a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line">  <tt class="py-docstring">"""Tunnel PATCH requests over POST.</tt> </tt>
+<a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line"><tt class="py-docstring">     http - An instance of httplib2.Http</tt> </tt>
+<a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line"><tt class="py-docstring">         or something that acts like it.</tt> </tt>
+<a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1504"></a><tt class="py-lineno">1504</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line"><tt class="py-docstring">     A modified instance of http that was passed in.</tt> </tt>
+<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
+<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line"><tt class="py-docstring">    h = httplib2.Http()</tt> </tt>
+<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line"><tt class="py-docstring">    h = tunnel_patch(h, "my-app-name/6.0")</tt> </tt>
+<a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-line"><tt class="py-docstring">  Useful if you are running on a platform that doesn't support PATCH.</tt> </tt>
+<a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-line"><tt class="py-docstring">  Apply this last if you are using OAuth 1.0, as changing the method</tt> </tt>
+<a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line"><tt class="py-docstring">  will result in a different signature.</tt> </tt>
+<a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-line">  <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-278" class="py-name"><a title="apiclient.http
 oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-278', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-279" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-279', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new_request</tt> </tt>
-<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-280" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-280', 'http', 'link-70');">http</a></tt> </tt>
-</div><a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-279', 'request', 'link-67');">request</a></tt> </tt>
+<a name="L1517"></a><tt class="py-lineno">1517</tt>  <tt class="py-line"> </tt>
+<a name="L1518"></a><tt class="py-lineno">1518</tt>  <tt class="py-line">  <tt class="py-comment"># The closure that will replace 'httplib2.Http.request'.</tt> </tt>
+<a name="L1519"></a><tt class="py-lineno">1519</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">new_request</tt><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line">                  <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">DEFAULT_MAX_REDIRECTS</tt><tt class="py-op">,</tt> </tt>
+<a name="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line">                  <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1522"></a><tt class="py-lineno">1522</tt>  <tt class="py-line">    <tt class="py-docstring">"""Modify the request headers to add the user-agent."""</tt> </tt>
+<a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line">      <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">method</tt> <tt class="py-op">==</tt> <tt class="py-string">'PATCH'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'oauth_token'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-280" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-280', 'get', 'link-90');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'authorization'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line">        <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt> </tt>
+<a name="L1528"></a><tt class="py-lineno">1528</tt>  <tt class="py-line">            <tt class="py-string">'OAuth 1.0 request made with Credentials after tunnel_patch.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'x-http-method-override'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"PATCH"</tt> </tt>
+<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line">      <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-string">'POST'</tt> </tt>
+<a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
+<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line">                        <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
+</div><a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line"> </tt>
+<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line">  <tt id="link-281" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-281', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-282" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-282', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new_request</tt> </tt>
+<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-283" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-283', 'http', 'link-70');">http</a></tt> </tt>
+</div><a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-line"> </tt><script type="text/javascript">
 <!--
 expandto(location.href);
 // -->
@@ -2024,7 +2068,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:46 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.BatchHttpRequest-class.html b/docs/epy/apiclient.http.BatchHttpRequest-class.html
index 9687890..c3b045c 100644
--- a/docs/epy/apiclient.http.BatchHttpRequest-class.html
+++ b/docs/epy/apiclient.http.BatchHttpRequest-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class BatchHttpRequest</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#BatchHttpRequest">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_batchhttpr" name="class_hierarchy_for_batchhttpr">
-<area shape="rect" href="apiclient.http.BatchHttpRequest-class.html" title="BatchHttpRequest" alt="" coords="5,5,133,32"/>
+<area shape="rect" id="node1" href="apiclient.http.BatchHttpRequest-class.html" title="BatchHttpRequest" alt="" coords="5,6,136,34"/>
 </map>
   <img src="class_hierarchy_for_batchhttpr.gif" alt='' usemap="#class_hierarchy_for_batchhttpr" ismap="ismap" class="graph-without-title" />
 </center>
@@ -688,7 +688,7 @@
 
 Args:
   http: httplib2.Http, an http object to be used in place of the one the
-    HttpRequest request object was constructed with.  If one isn't supplied
+    HttpRequest request object was constructed with. If one isn't supplied
     then use a http object from the requests in this batch.
 
 Returns:
@@ -731,7 +731,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:34 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.HttpMock-class.html b/docs/epy/apiclient.http.HttpMock-class.html
index 78b7a83..08dc819 100644
--- a/docs/epy/apiclient.http.HttpMock-class.html
+++ b/docs/epy/apiclient.http.HttpMock-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class HttpMock</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#HttpMock">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_httpmock" name="class_hierarchy_for_httpmock">
-<area shape="rect" href="apiclient.http.HttpMock-class.html" title="HttpMock" alt="" coords="5,5,83,32"/>
+<area shape="rect" id="node1" href="apiclient.http.HttpMock-class.html" title="HttpMock" alt="" coords="5,6,83,34"/>
 </map>
   <img src="class_hierarchy_for_httpmock.gif" alt='' usemap="#class_hierarchy_for_httpmock" ismap="ismap" class="graph-without-title" />
 </center>
@@ -91,7 +91,7 @@
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
           <td><span class="summary-sig"><a href="apiclient.http.HttpMock-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">filename</span>,
+        <span class="summary-sig-arg">filename</span>=<span class="summary-sig-default">None</span>,
         <span class="summary-sig-arg">headers</span>=<span class="summary-sig-default">None</span>)</span><br />
       Args:...</td>
           <td align="right" valign="top">
@@ -195,7 +195,7 @@
   <table width="100%" cellpadding="0" cellspacing="0" border="0">
   <tr valign="top"><td>
   <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">filename</span>,
+        <span class="sig-arg">filename</span>=<span class="sig-default">None</span>,
         <span class="sig-arg">headers</span>=<span class="sig-default">None</span>)</span>
     <br /><em class="fname">(Constructor)</em>
   </h3>
@@ -242,7 +242,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:12 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:34 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.HttpMockSequence-class.html b/docs/epy/apiclient.http.HttpMockSequence-class.html
index ac71363..7010354 100644
--- a/docs/epy/apiclient.http.HttpMockSequence-class.html
+++ b/docs/epy/apiclient.http.HttpMockSequence-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class HttpMockSequence</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#HttpMockSequence">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_httpmockse" name="class_hierarchy_for_httpmockse">
-<area shape="rect" href="apiclient.http.HttpMockSequence-class.html" title="HttpMockSequence" alt="" coords="5,5,141,32"/>
+<area shape="rect" id="node1" href="apiclient.http.HttpMockSequence-class.html" title="HttpMockSequence" alt="" coords="5,6,141,34"/>
 </map>
   <img src="class_hierarchy_for_httpmockse.gif" alt='' usemap="#class_hierarchy_for_httpmockse" ismap="ismap" class="graph-without-title" />
 </center>
@@ -259,7 +259,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:12 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:34 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.HttpRequest-class.html b/docs/epy/apiclient.http.HttpRequest-class.html
index 78bb820..d64fe78 100644
--- a/docs/epy/apiclient.http.HttpRequest-class.html
+++ b/docs/epy/apiclient.http.HttpRequest-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class HttpRequest</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#HttpRequest">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_httpreques" name="class_hierarchy_for_httpreques">
-<area shape="rect" href="apiclient.http.HttpRequest-class.html" title="HttpRequest" alt="" coords="5,5,99,32"/>
+<area shape="rect" id="node1" href="apiclient.http.HttpRequest-class.html" title="HttpRequest" alt="" coords="5,6,101,34"/>
 </map>
   <img src="class_hierarchy_for_httpreques.gif" alt='' usemap="#class_hierarchy_for_httpreques" ismap="ismap" class="graph-without-title" />
 </center>
@@ -133,6 +133,24 @@
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
+          <td><span class="summary-sig"><a href="apiclient.http.HttpRequest-class.html#add_response_callback" class="summary-sig-name">add_response_callback</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">cb</span>)</span><br />
+      add_response_headers_callback</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.http-pysrc.html#HttpRequest.add_response_callback">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
           <td><span class="summary-sig"><a href="apiclient.http.HttpRequest-class.html#next_chunk" class="summary-sig-name">next_chunk</a>(<span class="summary-sig-arg">self</span>,
         <span class="summary-sig-arg">http</span>=<span class="summary-sig-default">None</span>)</span><br />
       Execute the next step of a resumable upload.</td>
@@ -369,6 +387,39 @@
   </dl>
 </td></tr></table>
 </div>
+<a name="add_response_callback"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">add_response_callback</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">cb</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.http-pysrc.html#HttpRequest.add_response_callback">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+add_response_headers_callback
+
+Args:
+  cb: Callback to be called on receiving the response headers, of signature:
+
+  def cb(resp):
+    # Where resp is an instance of httplib2.Response
+
+</pre>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@util.positional(2)</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
 <a name="next_chunk"></a>
 <div>
 <table class="details" border="1" cellpadding="3"
@@ -482,7 +533,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:12 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:34 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.HttpRequestMock-class.html b/docs/epy/apiclient.http.HttpRequestMock-class.html
index 1d9236a..170fdc5 100644
--- a/docs/epy/apiclient.http.HttpRequestMock-class.html
+++ b/docs/epy/apiclient.http.HttpRequestMock-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class HttpRequestMock</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#HttpRequestMock">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_httpreques_2" name="class_hierarchy_for_httpreques_2">
-<area shape="rect" href="apiclient.http.HttpRequestMock-class.html" title="HttpRequestMock" alt="" coords="5,5,131,32"/>
+<area shape="rect" id="node1" href="apiclient.http.HttpRequestMock-class.html" title="HttpRequestMock" alt="" coords="5,6,133,34"/>
 </map>
   <img src="class_hierarchy_for_httpreques_2.gif" alt='' usemap="#class_hierarchy_for_httpreques_2" ismap="ismap" class="graph-without-title" />
 </center>
@@ -271,7 +271,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:12 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:35 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.MediaDownloadProgress-class.html b/docs/epy/apiclient.http.MediaDownloadProgress-class.html
index 9cf917c..028bcde 100644
--- a/docs/epy/apiclient.http.MediaDownloadProgress-class.html
+++ b/docs/epy/apiclient.http.MediaDownloadProgress-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class MediaDownloadProgress</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#MediaDownloadProgress">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_mediadownl" name="class_hierarchy_for_mediadownl">
-<area shape="rect" href="apiclient.http.MediaDownloadProgress-class.html" title="MediaDownloadProgress" alt="" coords="5,5,168,32"/>
+<area shape="rect" id="node1" href="apiclient.http.MediaDownloadProgress-class.html" title="MediaDownloadProgress" alt="" coords="5,6,171,34"/>
 </map>
   <img src="class_hierarchy_for_mediadownl.gif" alt='' usemap="#class_hierarchy_for_mediadownl" ismap="ismap" class="graph-without-title" />
 </center>
@@ -264,7 +264,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:12 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:35 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.MediaFileUpload-class.html b/docs/epy/apiclient.http.MediaFileUpload-class.html
index 0c80e7b..0fa532a 100644
--- a/docs/epy/apiclient.http.MediaFileUpload-class.html
+++ b/docs/epy/apiclient.http.MediaFileUpload-class.html
@@ -56,9 +56,9 @@
 <h1 class="epydoc">Class MediaFileUpload</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#MediaFileUpload">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_mediafileu" name="class_hierarchy_for_mediafileu">
-<area shape="rect" href="apiclient.http.MediaFileUpload-class.html" title="MediaFileUpload" alt="" coords="5,5,123,32"/>
-<area shape="rect" href="apiclient.http.MediaIoBaseUpload-class.html" title="MediaIoBaseUpload" alt="" coords="147,5,283,32"/>
-<area shape="rect" href="apiclient.http.MediaUpload-class.html" title="MediaUpload" alt="" coords="307,5,403,32"/>
+<area shape="rect" id="node1" href="apiclient.http.MediaFileUpload-class.html" title="MediaFileUpload" alt="" coords="5,6,123,34"/>
+<area shape="rect" id="node2" href="apiclient.http.MediaIoBaseUpload-class.html" title="MediaIoBaseUpload" alt="" coords="147,6,285,34"/>
+<area shape="rect" id="node3" href="apiclient.http.MediaUpload-class.html" title="MediaUpload" alt="" coords="309,6,408,34"/>
 </map>
   <img src="class_hierarchy_for_mediafileu.gif" alt='' usemap="#class_hierarchy_for_mediafileu" ismap="ismap" class="graph-without-title" />
 </center>
@@ -375,7 +375,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:12 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:35 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.MediaInMemoryUpload-class.html b/docs/epy/apiclient.http.MediaInMemoryUpload-class.html
index b3becc4..a6688d6 100644
--- a/docs/epy/apiclient.http.MediaInMemoryUpload-class.html
+++ b/docs/epy/apiclient.http.MediaInMemoryUpload-class.html
@@ -56,9 +56,9 @@
 <h1 class="epydoc">Class MediaInMemoryUpload</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#MediaInMemoryUpload">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_mediainmem" name="class_hierarchy_for_mediainmem">
-<area shape="rect" href="apiclient.http.MediaInMemoryUpload-class.html" title="MediaInMemoryUpload" alt="" coords="5,5,157,32"/>
-<area shape="rect" href="apiclient.http.MediaIoBaseUpload-class.html" title="MediaIoBaseUpload" alt="" coords="181,5,317,32"/>
-<area shape="rect" href="apiclient.http.MediaUpload-class.html" title="MediaUpload" alt="" coords="341,5,437,32"/>
+<area shape="rect" id="node1" href="apiclient.http.MediaInMemoryUpload-class.html" title="MediaInMemoryUpload" alt="" coords="5,6,160,34"/>
+<area shape="rect" id="node2" href="apiclient.http.MediaIoBaseUpload-class.html" title="MediaIoBaseUpload" alt="" coords="184,6,323,34"/>
+<area shape="rect" id="node3" href="apiclient.http.MediaUpload-class.html" title="MediaUpload" alt="" coords="347,6,445,34"/>
 </map>
   <img src="class_hierarchy_for_mediainmem.gif" alt='' usemap="#class_hierarchy_for_mediainmem" ismap="ismap" class="graph-without-title" />
 </center>
@@ -281,7 +281,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:12 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:35 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.MediaIoBaseDownload-class.html b/docs/epy/apiclient.http.MediaIoBaseDownload-class.html
index bbb7c5f..c3fa418 100644
--- a/docs/epy/apiclient.http.MediaIoBaseDownload-class.html
+++ b/docs/epy/apiclient.http.MediaIoBaseDownload-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class MediaIoBaseDownload</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#MediaIoBaseDownload">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_mediaiobas" name="class_hierarchy_for_mediaiobas">
-<area shape="rect" href="apiclient.http.MediaIoBaseDownload-class.html" title="MediaIoBaseDownload" alt="" coords="5,5,157,32"/>
+<area shape="rect" id="node1" href="apiclient.http.MediaIoBaseDownload-class.html" title="MediaIoBaseDownload" alt="" coords="5,6,160,34"/>
 </map>
   <img src="class_hierarchy_for_mediaiobas.gif" alt='' usemap="#class_hierarchy_for_mediaiobas" ismap="ismap" class="graph-without-title" />
 </center>
@@ -294,7 +294,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:12 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:35 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.MediaIoBaseUpload-class.html b/docs/epy/apiclient.http.MediaIoBaseUpload-class.html
index 45649ce..a262f22 100644
--- a/docs/epy/apiclient.http.MediaIoBaseUpload-class.html
+++ b/docs/epy/apiclient.http.MediaIoBaseUpload-class.html
@@ -56,8 +56,8 @@
 <h1 class="epydoc">Class MediaIoBaseUpload</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#MediaIoBaseUpload">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_mediaiobas_2" name="class_hierarchy_for_mediaiobas_2">
-<area shape="rect" href="apiclient.http.MediaIoBaseUpload-class.html" title="MediaIoBaseUpload" alt="" coords="5,5,141,32"/>
-<area shape="rect" href="apiclient.http.MediaUpload-class.html" title="MediaUpload" alt="" coords="165,5,261,32"/>
+<area shape="rect" id="node1" href="apiclient.http.MediaIoBaseUpload-class.html" title="MediaIoBaseUpload" alt="" coords="5,6,144,34"/>
+<area shape="rect" id="node2" href="apiclient.http.MediaUpload-class.html" title="MediaUpload" alt="" coords="168,6,267,34"/>
 </map>
   <img src="class_hierarchy_for_mediaiobas_2.gif" alt='' usemap="#class_hierarchy_for_mediaiobas_2" ismap="ismap" class="graph-without-title" />
 </center>
@@ -658,7 +658,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:12 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:35 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.MediaUpload-class.html b/docs/epy/apiclient.http.MediaUpload-class.html
index 02e8567..e9609dd 100644
--- a/docs/epy/apiclient.http.MediaUpload-class.html
+++ b/docs/epy/apiclient.http.MediaUpload-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class MediaUpload</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#MediaUpload">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_mediauploa_2" name="class_hierarchy_for_mediauploa_2">
-<area shape="rect" href="apiclient.http.MediaUpload-class.html" title="MediaUpload" alt="" coords="5,5,101,32"/>
+<area shape="rect" id="node1" href="apiclient.http.MediaUpload-class.html" title="MediaUpload" alt="" coords="5,6,104,34"/>
 </map>
   <img src="class_hierarchy_for_mediauploa_2.gif" alt='' usemap="#class_hierarchy_for_mediauploa_2" ismap="ismap" class="graph-without-title" />
 </center>
@@ -666,7 +666,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:12 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:35 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.MediaUploadProgress-class.html b/docs/epy/apiclient.http.MediaUploadProgress-class.html
index fc04bcd..336c35c 100644
--- a/docs/epy/apiclient.http.MediaUploadProgress-class.html
+++ b/docs/epy/apiclient.http.MediaUploadProgress-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class MediaUploadProgress</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#MediaUploadProgress">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_mediauploa_3" name="class_hierarchy_for_mediauploa_3">
-<area shape="rect" href="apiclient.http.MediaUploadProgress-class.html" title="MediaUploadProgress" alt="" coords="5,5,152,32"/>
+<area shape="rect" id="node1" href="apiclient.http.MediaUploadProgress-class.html" title="MediaUploadProgress" alt="" coords="5,6,155,34"/>
 </map>
   <img src="class_hierarchy_for_mediauploa_3.gif" alt='' usemap="#class_hierarchy_for_mediauploa_3" ismap="ismap" class="graph-without-title" />
 </center>
@@ -265,7 +265,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:12 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:36 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.RequestMockBuilder-class.html b/docs/epy/apiclient.http.RequestMockBuilder-class.html
index bf5848f..b66d5c0 100644
--- a/docs/epy/apiclient.http.RequestMockBuilder-class.html
+++ b/docs/epy/apiclient.http.RequestMockBuilder-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class RequestMockBuilder</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#RequestMockBuilder">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_requestmoc" name="class_hierarchy_for_requestmoc">
-<area shape="rect" href="apiclient.http.RequestMockBuilder-class.html" title="RequestMockBuilder" alt="" coords="5,5,147,32"/>
+<area shape="rect" id="node1" href="apiclient.http.RequestMockBuilder-class.html" title="RequestMockBuilder" alt="" coords="5,6,147,34"/>
 </map>
   <img src="class_hierarchy_for_requestmoc.gif" alt='' usemap="#class_hierarchy_for_requestmoc" ismap="ismap" class="graph-without-title" />
 </center>
@@ -311,7 +311,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:12 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:36 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http._StreamSlice-class.html b/docs/epy/apiclient.http._StreamSlice-class.html
index 0f48ad2..f83ae7e 100644
--- a/docs/epy/apiclient.http._StreamSlice-class.html
+++ b/docs/epy/apiclient.http._StreamSlice-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class _StreamSlice</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#_StreamSlice">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for__streamsli" name="class_hierarchy_for__streamsli">
-<area shape="rect" href="apiclient.http._StreamSlice-class.html" title="_StreamSlice" alt="" coords="5,5,104,32"/>
+<area shape="rect" id="node1" href="apiclient.http._StreamSlice-class.html" title="_StreamSlice" alt="" coords="5,6,104,34"/>
 </map>
   <img src="class_hierarchy_for__streamsli.gif" alt='' usemap="#class_hierarchy_for__streamsli" ismap="ismap" class="graph-without-title" />
 </center>
@@ -277,7 +277,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:12 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:36 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.mimeparse-module.html b/docs/epy/apiclient.mimeparse-module.html
index af96b59..e74b7f1 100644
--- a/docs/epy/apiclient.mimeparse-module.html
+++ b/docs/epy/apiclient.mimeparse-module.html
@@ -484,7 +484,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.mimeparse-pysrc.html b/docs/epy/apiclient.mimeparse-pysrc.html
index ecc3f55..f0f9967 100644
--- a/docs/epy/apiclient.mimeparse-pysrc.html
+++ b/docs/epy/apiclient.mimeparse-pysrc.html
@@ -255,7 +255,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:48 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model-module.html b/docs/epy/apiclient.model-module.html
index 29de86d..d22d3ec 100644
--- a/docs/epy/apiclient.model-module.html
+++ b/docs/epy/apiclient.model-module.html
@@ -293,7 +293,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model-pysrc.html b/docs/epy/apiclient.model-pysrc.html
index 4f07d80..6f601fb 100644
--- a/docs/epy/apiclient.model-pysrc.html
+++ b/docs/epy/apiclient.model-pysrc.html
@@ -572,7 +572,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:48 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model.BaseModel-class.html b/docs/epy/apiclient.model.BaseModel-class.html
index f7f1312..f4d8b4e 100644
--- a/docs/epy/apiclient.model.BaseModel-class.html
+++ b/docs/epy/apiclient.model.BaseModel-class.html
@@ -56,8 +56,8 @@
 <h1 class="epydoc">Class BaseModel</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.model-pysrc.html#BaseModel">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_basemodel" name="class_hierarchy_for_basemodel">
-<area shape="rect" href="apiclient.model.BaseModel-class.html" title="BaseModel" alt="" coords="5,5,91,32"/>
-<area shape="rect" href="apiclient.model.Model-class.html" title="Model" alt="" coords="115,5,171,32"/>
+<area shape="rect" id="node1" href="apiclient.model.BaseModel-class.html" title="BaseModel" alt="" coords="5,6,91,34"/>
+<area shape="rect" id="node2" href="apiclient.model.Model-class.html" title="Model" alt="" coords="115,6,171,34"/>
 </map>
   <img src="class_hierarchy_for_basemodel.gif" alt='' usemap="#class_hierarchy_for_basemodel" ismap="ismap" class="graph-without-title" />
 </center>
@@ -531,7 +531,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:13 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:36 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model.JsonModel-class.html b/docs/epy/apiclient.model.JsonModel-class.html
index bce83fb..16b4407 100644
--- a/docs/epy/apiclient.model.JsonModel-class.html
+++ b/docs/epy/apiclient.model.JsonModel-class.html
@@ -56,9 +56,9 @@
 <h1 class="epydoc">Class JsonModel</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.model-pysrc.html#JsonModel">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_jsonmodel" name="class_hierarchy_for_jsonmodel">
-<area shape="rect" href="apiclient.model.BaseModel-class.html" title="BaseModel" alt="" coords="5,5,91,32"/>
-<area shape="rect" href="apiclient.model.JsonModel-class.html" title="JsonModel" alt="" coords="115,5,197,32"/>
-<area shape="rect" href="apiclient.model.Model-class.html" title="Model" alt="" coords="221,5,277,32"/>
+<area shape="rect" id="node1" href="apiclient.model.BaseModel-class.html" title="BaseModel" alt="" coords="5,6,91,34"/>
+<area shape="rect" id="node2" href="apiclient.model.JsonModel-class.html" title="JsonModel" alt="" coords="115,6,200,34"/>
+<area shape="rect" id="node3" href="apiclient.model.Model-class.html" title="Model" alt="" coords="224,6,280,34"/>
 </map>
   <img src="class_hierarchy_for_jsonmodel.gif" alt='' usemap="#class_hierarchy_for_jsonmodel" ismap="ismap" class="graph-without-title" />
 </center>
@@ -417,7 +417,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:13 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:36 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model.MediaModel-class.html b/docs/epy/apiclient.model.MediaModel-class.html
index 5c47b91..8ff66f1 100644
--- a/docs/epy/apiclient.model.MediaModel-class.html
+++ b/docs/epy/apiclient.model.MediaModel-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class MediaModel</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.model-pysrc.html#MediaModel">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_mediamodel" name="class_hierarchy_for_mediamodel">
-<area shape="rect" href="apiclient.model.BaseModel-class.html" title="BaseModel" alt="" coords="5,5,91,32"/>
-<area shape="rect" href="apiclient.model.JsonModel-class.html" title="JsonModel" alt="" coords="115,5,197,32"/>
-<area shape="rect" href="apiclient.model.MediaModel-class.html" title="MediaModel" alt="" coords="221,5,312,32"/>
-<area shape="rect" href="apiclient.model.Model-class.html" title="Model" alt="" coords="336,5,392,32"/>
+<area shape="rect" id="node1" href="apiclient.model.BaseModel-class.html" title="BaseModel" alt="" coords="5,6,91,34"/>
+<area shape="rect" id="node2" href="apiclient.model.JsonModel-class.html" title="JsonModel" alt="" coords="115,6,200,34"/>
+<area shape="rect" id="node3" href="apiclient.model.MediaModel-class.html" title="MediaModel" alt="" coords="224,6,315,34"/>
+<area shape="rect" id="node4" href="apiclient.model.Model-class.html" title="Model" alt="" coords="339,6,395,34"/>
 </map>
   <img src="class_hierarchy_for_mediamodel.gif" alt='' usemap="#class_hierarchy_for_mediamodel" ismap="ismap" class="graph-without-title" />
 </center>
@@ -324,7 +324,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:13 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:36 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model.Model-class.html b/docs/epy/apiclient.model.Model-class.html
index e386aca..a9fb6a1 100644
--- a/docs/epy/apiclient.model.Model-class.html
+++ b/docs/epy/apiclient.model.Model-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class Model</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.model-pysrc.html#Model">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_model" name="class_hierarchy_for_model">
-<area shape="rect" href="apiclient.model.Model-class.html" title="Model" alt="" coords="5,5,61,32"/>
+<area shape="rect" id="node1" href="apiclient.model.Model-class.html" title="Model" alt="" coords="5,6,61,34"/>
 </map>
   <img src="class_hierarchy_for_model.gif" alt='' usemap="#class_hierarchy_for_model" ismap="ismap" class="graph-without-title" />
 </center>
@@ -289,7 +289,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:13 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:36 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model.ProtocolBufferModel-class.html b/docs/epy/apiclient.model.ProtocolBufferModel-class.html
index 720a336..bf4e822 100644
--- a/docs/epy/apiclient.model.ProtocolBufferModel-class.html
+++ b/docs/epy/apiclient.model.ProtocolBufferModel-class.html
@@ -56,9 +56,9 @@
 <h1 class="epydoc">Class ProtocolBufferModel</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.model-pysrc.html#ProtocolBufferModel">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_protocolbu" name="class_hierarchy_for_protocolbu">
-<area shape="rect" href="apiclient.model.BaseModel-class.html" title="BaseModel" alt="" coords="5,5,91,32"/>
-<area shape="rect" href="apiclient.model.Model-class.html" title="Model" alt="" coords="115,5,171,32"/>
-<area shape="rect" href="apiclient.model.ProtocolBufferModel-class.html" title="ProtocolBufferModel" alt="" coords="195,5,331,32"/>
+<area shape="rect" id="node1" href="apiclient.model.BaseModel-class.html" title="BaseModel" alt="" coords="5,6,91,34"/>
+<area shape="rect" id="node2" href="apiclient.model.Model-class.html" title="Model" alt="" coords="115,6,171,34"/>
+<area shape="rect" id="node3" href="apiclient.model.ProtocolBufferModel-class.html" title="ProtocolBufferModel" alt="" coords="195,6,333,34"/>
 </map>
   <img src="class_hierarchy_for_protocolbu.gif" alt='' usemap="#class_hierarchy_for_protocolbu" ismap="ismap" class="graph-without-title" />
 </center>
@@ -421,7 +421,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:13 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:37 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model.RawModel-class.html b/docs/epy/apiclient.model.RawModel-class.html
index e12ad04..4198c4b 100644
--- a/docs/epy/apiclient.model.RawModel-class.html
+++ b/docs/epy/apiclient.model.RawModel-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class RawModel</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.model-pysrc.html#RawModel">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_rawmodel" name="class_hierarchy_for_rawmodel">
-<area shape="rect" href="apiclient.model.BaseModel-class.html" title="BaseModel" alt="" coords="5,5,91,32"/>
-<area shape="rect" href="apiclient.model.JsonModel-class.html" title="JsonModel" alt="" coords="115,5,197,32"/>
-<area shape="rect" href="apiclient.model.Model-class.html" title="Model" alt="" coords="221,5,277,32"/>
-<area shape="rect" href="apiclient.model.RawModel-class.html" title="RawModel" alt="" coords="301,5,381,32"/>
+<area shape="rect" id="node1" href="apiclient.model.BaseModel-class.html" title="BaseModel" alt="" coords="5,6,91,34"/>
+<area shape="rect" id="node2" href="apiclient.model.JsonModel-class.html" title="JsonModel" alt="" coords="115,6,200,34"/>
+<area shape="rect" id="node3" href="apiclient.model.Model-class.html" title="Model" alt="" coords="224,6,280,34"/>
+<area shape="rect" id="node4" href="apiclient.model.RawModel-class.html" title="RawModel" alt="" coords="304,6,387,34"/>
 </map>
   <img src="class_hierarchy_for_rawmodel.gif" alt='' usemap="#class_hierarchy_for_rawmodel" ismap="ismap" class="graph-without-title" />
 </center>
@@ -324,7 +324,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:13 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:37 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.push-module.html b/docs/epy/apiclient.push-module.html
new file mode 100644
index 0000000..eb40b6c
--- /dev/null
+++ b/docs/epy/apiclient.push-module.html
@@ -0,0 +1,313 @@
+<?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>apiclient.push</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>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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%">
+      <span class="breadcrumbs">
+        <a href="apiclient-module.html">Package&nbsp;apiclient</a> ::
+        Module&nbsp;push
+      </span>
+    </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="apiclient.push-module.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module push</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.push-pysrc.html">source&nbsp;code</a></span></p>
+<pre class="literalblock">
+Push notifications support.
+
+This code is based on experimental APIs and is subject to change.
+
+</pre>
+
+<hr />
+<div class="fields">      <p><strong>Author:</strong>
+        afshar@google.com (Ali Afshar)
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="apiclient.push.InvalidSubscriptionRequestError-class.html" class="summary-name">InvalidSubscriptionRequestError</a><br />
+      The request cannot be subscribed.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="apiclient.push.Channel-class.html" class="summary-name">Channel</a><br />
+      Base class for channel types.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="apiclient.push.WebhookChannel-class.html" class="summary-name">WebhookChannel</a><br />
+      Channel for registering web hook notifications.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="apiclient.push.Headers-class.html" class="summary-name">Headers</a><br />
+      Headers for managing subscriptions.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="apiclient.push.Subscription-class.html" class="summary-name">Subscription</a><br />
+      Information about a subscription.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push-module.html#new_token" class="summary-sig-name">new_token</a>()</span><br />
+      Gets a random token for use as a client_token in push notifications.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#new_token">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="SUBSCRIBE"></a><span class="summary-name">SUBSCRIBE</span> = <code title="'X-GOOG-SUBSCRIBE'">'X-GOOG-SUBSCRIBE'</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="SUBSCRIPTION_ID"></a><span class="summary-name">SUBSCRIPTION_ID</span> = <code title="'X-GOOG-SUBSCRIPTION-ID'">'X-GOOG-SUBSCRIPTION-ID'</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="TOPIC_ID"></a><span class="summary-name">TOPIC_ID</span> = <code title="'X-GOOG-TOPIC-ID'">'X-GOOG-TOPIC-ID'</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="TOPIC_URI"></a><span class="summary-name">TOPIC_URI</span> = <code title="'X-GOOG-TOPIC-URI'">'X-GOOG-TOPIC-URI'</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="CLIENT_TOKEN"></a><span class="summary-name">CLIENT_TOKEN</span> = <code title="'X-GOOG-CLIENT-TOKEN'">'X-GOOG-CLIENT-TOKEN'</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="EVENT_TYPE"></a><span class="summary-name">EVENT_TYPE</span> = <code title="'X-GOOG-EVENT-TYPE'">'X-GOOG-EVENT-TYPE'</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="UNSUBSCRIBE"></a><span class="summary-name">UNSUBSCRIBE</span> = <code title="'X-GOOG-UNSUBSCRIBE'">'X-GOOG-UNSUBSCRIBE'</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="new_token"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">new_token</span>()</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#new_token">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Gets a random token for use as a client_token in push notifications.
+
+Returns:
+  str, a new random token.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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 Thu Jan 24 16:14:31 2013
+    </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>
diff --git a/docs/epy/apiclient.push-pysrc.html b/docs/epy/apiclient.push-pysrc.html
new file mode 100644
index 0000000..dbf8b94
--- /dev/null
+++ b/docs/epy/apiclient.push-pysrc.html
@@ -0,0 +1,484 @@
+<?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>apiclient.push</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>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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%">
+      <span class="breadcrumbs">
+        <a href="apiclient-module.html">Package&nbsp;apiclient</a> ::
+        Module&nbsp;push
+      </span>
+    </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="apiclient.push-pysrc.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="apiclient.push-module.html">Module apiclient.push</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># Licensed under the Apache License, Version 2.0 (the "License");</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"># you may not use this file except in compliance with the License.</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"># You may obtain a copy of the License at</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment">#      http://www.apache.org/licenses/LICENSE-2.0</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"># Unless required by applicable law or agreed to in writing, software</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"># distributed under the License is distributed on an "AS IS" BASIS,</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"># See the License for the specific language governing permissions and</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"># limitations under the License.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">"""Push notifications support.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">This code is based on experimental APIs and is subject to change.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-name">__author__</tt> <tt class="py-op">=</tt> <tt class="py-string">'afshar@google.com (Ali Afshar)'</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">binascii</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">collections</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable apiclient.push.SUBSCRIBE=apiclient.push-module.html#SUBSCRIBE"><a title="apiclient.push.SUBSCRIBE" class="py-name" href="#" onclick="return doclink('link-0', 'SUBSCRIBE', 'link-0');">SUBSCRIBE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X-GOOG-SUBSCRIBE'</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable apiclient.push.SUBSCRIPTION_ID=apiclient.push-module.html#SUBSCRIPTION_ID"><a title="apiclient.push.SUBSCRIPTION_ID" class="py-name" href="#" onclick="return doclink('link-1', 'SUBSCRIPTION_ID', 'link-1');">SUBSCRIPTION_ID</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X-GOOG-SUBSCRIPTION-ID'</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable apiclient.push.TOPIC_ID=apiclient.push-module.html#TOPIC_ID"><a title="apiclient.push.TOPIC_ID" class="py-name" href="#" onclick="return doclink('link-2', 'TOPIC_ID', 'link-2');">TOPIC_ID</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X-GOOG-TOPIC-ID'</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable apiclient.push.TOPIC_URI=apiclient.push-module.html#TOPIC_URI"><a title="apiclient.push.TOPIC_URI" class="py-name" href="#" onclick="return doclink('link-3', 'TOPIC_URI', 'link-3');">TOPIC_URI</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X-GOOG-TOPIC-URI'</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable apiclient.push.CLIENT_TOKEN=apiclient.push-module.html#CLIENT_TOKEN"><a title="apiclient.push.CLIENT_TOKEN" class="py-name" href="#" onclick="return doclink('link-4', 'CLIENT_TOKEN', 'link-4');">CLIENT_TOKEN</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X-GOOG-CLIENT-TOKEN'</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable apiclient.push.EVENT_TYPE=apiclient.push-module.html#EVENT_TYPE"><a title="apiclient.push.EVENT_TYPE" class="py-name" href="#" onclick="return doclink('link-5', 'EVENT_TYPE', 'link-5');">EVENT_TYPE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X-GOOG-EVENT-TYPE'</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable apiclient.push.UNSUBSCRIBE=apiclient.push-module.html#UNSUBSCRIBE"><a title="apiclient.push.UNSUBSCRIBE" class="py-name" href="#" onclick="return doclink('link-6', 'UNSUBSCRIBE', 'link-6');">UNSUBSCRIBE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X-GOOG-UNSUBSCRIBE'</tt> </tt>
+<a name="InvalidSubscriptionRequestError"></a><div id="InvalidSubscriptionRequestError-def"><a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <a class="py-toggle" href="#" id="InvalidSubscriptionRequestError-toggle" onclick="return toggle('InvalidSubscriptionRequestError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.push.InvalidSubscriptionRequestError-class.html">InvalidSubscriptionRequestError</a><tt class="py-op">(</tt><tt class="py-base-class">ValueError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="InvalidSubscriptionRequestError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InvalidSubscriptionRequestError-expanded"><a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">  <tt class="py-docstring">"""The request cannot be subscribed."""</tt> </tt>
+</div><a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"> </tt>
+<a name="new_token"></a><div id="new_token-def"><a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="new_token-toggle" onclick="return toggle('new_token');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push-module.html#new_token">new_token</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="new_token-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="new_token-expanded"><a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">  <tt class="py-docstring">"""Gets a random token for use as a client_token in push notifications.</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">    str, a new random token.</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">binascii</tt><tt class="py-op">.</tt><tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">urandom</tt><tt class="py-op">(</tt><tt class="py-number">32</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"> </tt>
+<a name="Channel"></a><div id="Channel-def"><a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <a class="py-toggle" href="#" id="Channel-toggle" onclick="return toggle('Channel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.push.Channel-class.html">Channel</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Channel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Channel-expanded"><a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">  <tt class="py-docstring">"""Base class for channel types."""</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"> </tt>
+<a name="Channel.__init__"></a><div id="Channel.__init__-def"><a name="L50"></a><tt class="py-lineno"> 50</tt> <a class="py-toggle" href="#" id="Channel.__init__-toggle" onclick="return toggle('Channel.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Channel-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">channel_type</tt><tt class="py-op">,</tt> <tt class="py-param">channel_args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Channel.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Channel.__init__-expanded"><a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create a new Channel.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">    You probably won't need to create this channel manually, since there are</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">    subclassed Channel for each specific type with a more customized set of</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">    arguments to pass. However, you may wish to just create it manually here.</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">      channel_type: str, the type of channel.</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">      channel_args: dict, arguments to pass to the channel.</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_type</tt> <tt class="py-op">=</tt> <tt class="py-name">channel_type</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_args</tt> <tt class="py-op">=</tt> <tt class="py-name">channel_args</tt> </tt>
+</div><a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"> </tt>
+<a name="Channel.as_header_value"></a><div id="Channel.as_header_value-def"><a name="L64"></a><tt class="py-lineno"> 64</tt> <a class="py-toggle" href="#" id="Channel.as_header_value-toggle" onclick="return toggle('Channel.as_header_value');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Channel-class.html#as_header_value">as_header_value</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Channel.as_header_value-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Channel.as_header_value-expanded"><a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create the appropriate header for this channel.</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">      str encoded channel description suitable for use as a header.</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">'%s?%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_type</tt><tt class="py-op">,</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"> </tt>
+<a name="Channel.write_header"></a><div id="Channel.write_header-def"><a name="L72"></a><tt class="py-lineno"> 72</tt> <a class="py-toggle" href="#" id="Channel.write_header-toggle" onclick="return toggle('Channel.write_header');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Channel-class.html#write_header">write_header</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Channel.write_header-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Channel.write_header-expanded"><a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">    <tt class="py-docstring">"""Write the appropriate subscribe header to a headers dict.</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">      headers: dict, headers to add subscribe header to.</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">    <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt id="link-7" class="py-name"><a title="apiclient.push.SUBSCRIBE" class="py-name" href="#" onclick="return doclink('link-7', 'SUBSCRIBE', 'link-0');">SUBSCRIBE</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Method apiclient.push.Channel.as_header_value()=apiclient.push.Channel-class.html#as_header_value"><a title="apiclient.push.Channel.as_header_value" class="py-name" href="#" onclick="return doclink('link-8', 'as_header_value', 'link-8');">as_header_value</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"> </tt>
+<a name="WebhookChannel"></a><div id="WebhookChannel-def"><a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <a class="py-toggle" href="#" id="WebhookChannel-toggle" onclick="return toggle('WebhookChannel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.push.WebhookChannel-class.html">WebhookChannel</a><tt class="py-op">(</tt><tt class="py-base-class">Channel</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="WebhookChannel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="WebhookChannel-expanded"><a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">  <tt class="py-docstring">"""Channel for registering web hook notifications."""</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"> </tt>
+<a name="WebhookChannel.__init__"></a><div id="WebhookChannel.__init__-def"><a name="L84"></a><tt class="py-lineno"> 84</tt> <a class="py-toggle" href="#" id="WebhookChannel.__init__-toggle" onclick="return toggle('WebhookChannel.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.WebhookChannel-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">url</tt><tt class="py-op">,</tt> <tt class="py-param">app_engine</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="WebhookChannel.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="WebhookChannel.__init__-expanded"><a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create a new WebhookChannel</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring">      url: str, URL to post notifications to.</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">      app_engine: bool, default=False, whether the destination for the</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">      notifications is an App Engine application.</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-9" class="py-name" targets="Class apiclient.push.WebhookChannel=apiclient.push.WebhookChannel-class.html"><a title="apiclient.push.WebhookChannel" class="py-name" href="#" onclick="return doclink('link-9', 'WebhookChannel', 'link-9');">WebhookChannel</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.push.Channel.__init__()=apiclient.push.Channel-class.html#__init__,Method apiclient.push.Headers.__init__()=apiclient.push.Headers-class.html#__init__,Method apiclient.push.Subscription.__init__()=apiclient.push.Subscription-class.html#__init__,Method apiclient.push.WebhookChannel.__init__()=apiclient.push.WebhookChannel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.discovery.Resource.__init__
+apiclient.errors.BatchError.__init__
+apiclient.errors.HttpError.__init__
+apiclient.errors.UnexpectedBodyError.__init__
+apiclient.errors.UnexpectedMethodError.__init__
+apiclient.http.BatchHttpRequest.__init__
+apiclient.http.HttpMock.__init__
+apiclient.http.HttpMockSequence.__init__
+apiclient.http.HttpRequest.__init__
+apiclient.http.HttpRequestMock.__init__
+apiclient.http.MediaDownloadProgress.__init__
+apiclient.http.MediaFileUpload.__init__
+apiclient.http.MediaInMemoryUpload.__init__
+apiclient.http.MediaIoBaseDownload.__init__
+apiclient.http.MediaIoBaseUpload.__init__
+apiclient.http.MediaUploadProgress.__init__
+apiclient.http.RequestMockBuilder.__init__
+apiclient.http._StreamSlice.__init__
+apiclient.model.JsonModel.__init__
+apiclient.model.ProtocolBufferModel.__init__
+apiclient.push.Channel.__init__
+apiclient.push.Headers.__init__
+apiclient.push.Subscription.__init__
+apiclient.push.WebhookChannel.__init__
+apiclient.schema.Schemas.__init__
+apiclient.schema._SchemaToStruct.__init__
+oauth2client.appengine.AppAssertionCredentials.__init__
+oauth2client.appengine.OAuth2Decorator.__init__
+oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__
+oauth2client.appengine.StorageByKeyName.__init__
+oauth2client.client.AccessTokenCredentials.__init__
+oauth2client.client.AssertionCredentials.__init__
+oauth2client.client.MemoryCache.__init__
+oauth2client.client.OAuth2Credentials.__init__
+oauth2client.client.OAuth2WebServerFlow.__init__
+oauth2client.client.SignedJwtAssertionCredentials.__init__
+oauth2client.django_orm.CredentialsField.__init__
+oauth2client.django_orm.FlowField.__init__
+oauth2client.django_orm.Storage.__init__
+oauth2client.file.Storage.__init__
+oauth2client.gce.AppAssertionCredentials.__init__
+oauth2client.keyring_storage.Storage.__init__
+oauth2client.locked_file.LockedFile.__init__
+oauth2client.locked_file._Opener.__init__
+oauth2client.multistore_file._MultiStore._Storage.__init__
+oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-10', '__init__', 'link-10');">__init__</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-name">channel_type</tt><tt class="py-op">=</tt><tt class="py-string">'web_hook'</tt><tt class="py-op">,</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt class="py-name">channel_args</tt><tt class="py-op">=</tt><tt class="py-op">{</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">            <tt class="py-string">'url'</tt><tt class="py-op">:</tt> <tt class="py-name">url</tt><tt class="py-op">,</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">            <tt class="py-string">'app_engine'</tt><tt class="py-op">:</tt> <tt class="py-name">app_engine</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'true'</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'false'</tt><tt class="py-op">,</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">    <tt class="py-op">)</tt> </tt>
+</div></div><a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"> </tt>
+<a name="Headers"></a><div id="Headers-def"><a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <a class="py-toggle" href="#" id="Headers-toggle" onclick="return toggle('Headers');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.push.Headers-class.html">Headers</a><tt class="py-op">(</tt><tt class="py-base-class">collections</tt><tt class="py-op">.</tt><tt class="py-base-class">defaultdict</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Headers-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Headers-expanded"><a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">  <tt class="py-docstring">"""Headers for managing subscriptions."""</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">  <tt id="link-11" class="py-name" targets="Variable apiclient.push.Headers.ALL_HEADERS=apiclient.push.Headers-class.html#ALL_HEADERS"><a title="apiclient.push.Headers.ALL_HEADERS" class="py-name" href="#" onclick="return doclink('link-11', 'ALL_HEADERS', 'link-11');">ALL_HEADERS</a></tt> <tt class="py-op">=</tt> <tt id="link-12" class="py-name" targets="Method oauth2client.client.MemoryCache.set()=oauth2client.client.MemoryCache-class.html#set"><a title="oauth2client.client.MemoryCache.set" class="py-name" href="#" onclick="return doclink('link-12', 'set', 'link-12');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-13" class="py-name"><a title="apiclient.push.SUBSCRIBE" class="py-name" href="#" onclick="return doclink('link-13', 'SUBSCRIBE', 'link-0');">SUBSCRIBE</a></tt><tt class="py-op">,</tt> <tt id="link-14" class="py-name"><a title="apiclient.push.SUBSCRIPTION_ID" class="py-name" href="#" onclick="return doclink('link-14', 'SUBSCRIPTION_ID', 'link-1');">SUBSCRIPTION_ID</a></tt><tt class="py-op">,</tt> <tt id="link-15" class="py-name"><a title="apiclient.push.TOPIC_ID" class="py-name" href="#" onclick="return doclink('link-15', 'TOPIC_ID', 'link-2');">TOPIC_ID</a></tt><tt class="py-op">,</tt> <tt id="link-16" class="py-name"><a title="apiclient.push.TOPIC_URI" class="py-name" href="#" onclick="return doclink('link-16', 'TOPIC_URI', 'link-3');">TOPIC_URI</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">                     <tt id="link-17" class="py-name"><a title="apiclient.push.CLIENT_TOKEN" class="py-name" href="#" onclick="return doclink('link-17', 'CLIENT_TOKEN', 'link-4');">CLIENT_TOKEN</a></tt><tt class="py-op">,</tt> <tt id="link-18" class="py-name"><a title="apiclient.push.EVENT_TYPE" class="py-name" href="#" onclick="return doclink('link-18', 'EVENT_TYPE', 'link-5');">EVENT_TYPE</a></tt><tt class="py-op">,</tt> <tt id="link-19" class="py-name"><a title="apiclient.push.UNSUBSCRIBE" class="py-name" href="#" onclick="return doclink('link-19', 'UNSUBSCRIBE', 'link-6');">UNSUBSCRIBE</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"> </tt>
+<a name="Headers.__init__"></a><div id="Headers.__init__-def"><a name="L108"></a><tt class="py-lineno">108</tt> <a class="py-toggle" href="#" id="Headers.__init__-toggle" onclick="return toggle('Headers.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Headers-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Headers.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Headers.__init__-expanded"><a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create a new subscription configuration instance."""</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">    <tt class="py-name">collections</tt><tt class="py-op">.</tt><tt class="py-name">defaultdict</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="apiclient.discovery.Resource.__init__
+apiclient.errors.BatchError.__init__
+apiclient.errors.HttpError.__init__
+apiclient.errors.UnexpectedBodyError.__init__
+apiclient.errors.UnexpectedMethodError.__init__
+apiclient.http.BatchHttpRequest.__init__
+apiclient.http.HttpMock.__init__
+apiclient.http.HttpMockSequence.__init__
+apiclient.http.HttpRequest.__init__
+apiclient.http.HttpRequestMock.__init__
+apiclient.http.MediaDownloadProgress.__init__
+apiclient.http.MediaFileUpload.__init__
+apiclient.http.MediaInMemoryUpload.__init__
+apiclient.http.MediaIoBaseDownload.__init__
+apiclient.http.MediaIoBaseUpload.__init__
+apiclient.http.MediaUploadProgress.__init__
+apiclient.http.RequestMockBuilder.__init__
+apiclient.http._StreamSlice.__init__
+apiclient.model.JsonModel.__init__
+apiclient.model.ProtocolBufferModel.__init__
+apiclient.push.Channel.__init__
+apiclient.push.Headers.__init__
+apiclient.push.Subscription.__init__
+apiclient.push.WebhookChannel.__init__
+apiclient.schema.Schemas.__init__
+apiclient.schema._SchemaToStruct.__init__
+oauth2client.appengine.AppAssertionCredentials.__init__
+oauth2client.appengine.OAuth2Decorator.__init__
+oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__
+oauth2client.appengine.StorageByKeyName.__init__
+oauth2client.client.AccessTokenCredentials.__init__
+oauth2client.client.AssertionCredentials.__init__
+oauth2client.client.MemoryCache.__init__
+oauth2client.client.OAuth2Credentials.__init__
+oauth2client.client.OAuth2WebServerFlow.__init__
+oauth2client.client.SignedJwtAssertionCredentials.__init__
+oauth2client.django_orm.CredentialsField.__init__
+oauth2client.django_orm.FlowField.__init__
+oauth2client.django_orm.Storage.__init__
+oauth2client.file.Storage.__init__
+oauth2client.gce.AppAssertionCredentials.__init__
+oauth2client.keyring_storage.Storage.__init__
+oauth2client.locked_file.LockedFile.__init__
+oauth2client.locked_file._Opener.__init__
+oauth2client.multistore_file._MultiStore._Storage.__init__
+oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-20', '__init__', 'link-10');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"> </tt>
+<a name="Headers.__setitem__"></a><div id="Headers.__setitem__-def"><a name="L112"></a><tt class="py-lineno">112</tt> <a class="py-toggle" href="#" id="Headers.__setitem__-toggle" onclick="return toggle('Headers.__setitem__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Headers-class.html#__setitem__">__setitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Headers.__setitem__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Headers.__setitem__-expanded"><a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">    <tt class="py-docstring">"""Set a header value, ensuring the key is an allowed value.</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-docstring">      key: str, the header key.</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring">      value: str, the header value.</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">      ValueError if key is not one of the accepted headers.</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">    <tt class="py-name">normal_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Method apiclient.push.Headers._normalize_key()=apiclient.push.Headers-class.html#_normalize_key"><a title="apiclient.push.Headers._normalize_key" class="py-name" href="#" onclick="return doclink('link-21', '_normalize_key', 'link-21');">_normalize_key</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">normal_key</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="apiclient.push.Headers.ALL_HEADERS" class="py-name" href="#" onclick="return doclink('link-22', 'ALL_HEADERS', 'link-11');">ALL_HEADERS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Header name must be one of %s.'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="apiclient.push.Headers.ALL_HEADERS" class="py-name" href="#" onclick="return doclink('link-23', 'ALL_HEADERS', 'link-11');">ALL_HEADERS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">collections</tt><tt class="py-op">.</tt><tt class="py-name">defaultdict</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method apiclient.push.Headers.__setitem__()=apiclient.push.Headers-class.html#__setitem__"><a title="apiclient.push.Headers.__setitem__" class="py-name" href="#" onclick="return doclink('link-24', '__setitem__', 'link-24');">__setitem__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">normal_key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"> </tt>
+<a name="Headers.__getitem__"></a><div id="Headers.__getitem__-def"><a name="L127"></a><tt class="py-lineno">127</tt> <a class="py-toggle" href="#" id="Headers.__getitem__-toggle" onclick="return toggle('Headers.__getitem__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Headers-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Headers.__getitem__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Headers.__getitem__-expanded"><a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">    <tt class="py-docstring">"""Get a header value, normalizing the key case.</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-docstring">      key: str, the header key.</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-docstring">      String header value.</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-docstring">      KeyError if the key is not one of the accepted headers.</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">    <tt class="py-name">normal_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="apiclient.push.Headers._normalize_key" class="py-name" href="#" onclick="return doclink('link-25', '_normalize_key', 'link-21');">_normalize_key</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">normal_key</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="apiclient.push.Headers.ALL_HEADERS" class="py-name" href="#" onclick="return doclink('link-26', 'ALL_HEADERS', 'link-11');">ALL_HEADERS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Header name must be one of %s.'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="apiclient.push.Headers.ALL_HEADERS" class="py-name" href="#" onclick="return doclink('link-27', 'ALL_HEADERS', 'link-11');">ALL_HEADERS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">collections</tt><tt class="py-op">.</tt><tt class="py-name">defaultdict</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method apiclient.push.Headers.__getitem__()=apiclient.push.Headers-class.html#__getitem__"><a title="apiclient.push.Headers.__getitem__" class="py-name" href="#" onclick="return doclink('link-28', '__getitem__', 'link-28');">__getitem__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">normal_key</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"> </tt>
+<a name="Headers._normalize_key"></a><div id="Headers._normalize_key-def"><a name="L143"></a><tt class="py-lineno">143</tt> <a class="py-toggle" href="#" id="Headers._normalize_key-toggle" onclick="return toggle('Headers._normalize_key');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Headers-class.html#_normalize_key">_normalize_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Headers._normalize_key-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Headers._normalize_key-expanded"><a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">    <tt class="py-docstring">"""Normalize a header name for use as a key."""</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"> </tt>
+<a name="Headers.items"></a><div id="Headers.items-def"><a name="L147"></a><tt class="py-lineno">147</tt> <a class="py-toggle" href="#" id="Headers.items-toggle" onclick="return toggle('Headers.items');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Headers-class.html#items">items</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Headers.items-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Headers.items-expanded"><a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">    <tt class="py-docstring">"""Generator for each header."""</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">header</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="apiclient.push.Headers.ALL_HEADERS" class="py-name" href="#" onclick="return doclink('link-29', 'ALL_HEADERS', 'link-11');">ALL_HEADERS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">      <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">header</tt><tt class="py-op">]</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">value</tt><tt class="py-op">:</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">        <tt class="py-keyword">yield</tt> <tt class="py-name">header</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> </tt>
+</div><a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"> </tt>
+<a name="Headers.write"></a><div id="Headers.write-def"><a name="L154"></a><tt class="py-lineno">154</tt> <a class="py-toggle" href="#" id="Headers.write-toggle" onclick="return toggle('Headers.write');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Headers-class.html#write">write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Headers.write-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Headers.write-expanded"><a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">    <tt class="py-docstring">"""Applies the subscription headers.</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-docstring">      headers: dict of headers to insert values into.</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">header</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method apiclient.push.Headers.items()=apiclient.push.Headers-class.html#items"><a title="apiclient.push.Headers.items" class="py-name" href="#" onclick="return doclink('link-30', 'items', 'link-30');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-name">header</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+</div><a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"> </tt>
+<a name="Headers.read"></a><div id="Headers.read-def"><a name="L163"></a><tt class="py-lineno">163</tt> <a class="py-toggle" href="#" id="Headers.read-toggle" onclick="return toggle('Headers.read');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Headers-class.html#read">read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Headers.read-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Headers.read-expanded"><a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">    <tt class="py-docstring">"""Read from headers.</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-docstring">      headers: dict of headers to read from.</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">header</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="apiclient.push.Headers.ALL_HEADERS" class="py-name" href="#" onclick="return doclink('link-31', 'ALL_HEADERS', 'link-11');">ALL_HEADERS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">header</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">header</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-name">header</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div></div><a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"> </tt>
+<a name="Subscription"></a><div id="Subscription-def"><a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <a class="py-toggle" href="#" id="Subscription-toggle" onclick="return toggle('Subscription');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.push.Subscription-class.html">Subscription</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Subscription-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Subscription-expanded"><a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">  <tt class="py-docstring">"""Information about a subscription."""</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"> </tt>
+<a name="Subscription.__init__"></a><div id="Subscription.__init__-def"><a name="L177"></a><tt class="py-lineno">177</tt> <a class="py-toggle" href="#" id="Subscription.__init__-toggle" onclick="return toggle('Subscription.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Subscription-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Subscription.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Subscription.__init__-expanded"><a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create a new Subscription."""</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name" targets="Class apiclient.push.Headers=apiclient.push.Headers-class.html"><a title="apiclient.push.Headers" class="py-name" href="#" onclick="return doclink('link-32', 'Headers', 'link-32');">Headers</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="Subscription.for_request"></a><div id="Subscription.for_request-def"><a name="L182"></a><tt class="py-lineno">182</tt> <a class="py-toggle" href="#" id="Subscription.for_request-toggle" onclick="return toggle('Subscription.for_request');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Subscription-class.html#for_request">for_request</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">channel</tt><tt class="py-op">,</tt> <tt class="py-param">client_token</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Subscription.for_request-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Subscription.for_request-expanded"><a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">    <tt class="py-docstring">"""Creates a subscription and attaches it to a request.</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-docstring">      request: An http.HttpRequest to modify for making a subscription.</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-docstring">      channel: A apiclient.push.Channel describing the subscription to</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-docstring">               create.</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-docstring">      client_token: (optional) client token to verify the notification.</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"><tt class="py-docstring">      New subscription object.</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">    <tt class="py-name">subscription</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Class Method apiclient.push.Subscription.for_channel()=apiclient.push.Subscription-class.html#for_channel"><a title="apiclient.push.Subscription.for_channel" class="py-name" href="#" onclick="return doclink('link-33', 'for_channel', 'link-33');">for_channel</a></tt><tt class="py-op">(</tt><tt class="py-name">channel</tt><tt class="py-op">=</tt><tt class="py-name">channel</tt><tt class="py-op">,</tt> <tt id="link-34" class="py-name" targets="Method apiclient.push.Subscription.client_token()=apiclient.push.Subscription-class.html#client_token"><a title="apiclient.push.Subscription.client_token" class="py-name" href="#" onclick="return doclink('link-34', 'client_token', 'link-34');">client_token</a></tt><tt class="py-op">=</tt><tt id="link-35" class="py-name"><a title="apiclient.push.Subscription.client_token" class="py-name" href="#" onclick="return doclink('link-35', 'client_token', 'link-34');">client_token</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">    <tt class="py-name">subscription</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method apiclient.push.Headers.write()=apiclient.push.Headers-class.html#write"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-36', 'write', 'link-36');">write</a></tt><tt class="py-op">(</tt><tt id="link-37" class="py-name" targets="Method apiclient.http.HttpMock.request()=apiclient.http.HttpMock-class.html#request,Method apiclient.http.HttpMockSequence.request()=apiclient.http.HttpMockSequence-class.html#request,Method apiclient.model.BaseModel.request()=apiclient.model.BaseModel-class.html#request,Method apiclient.model.Model.request()=apiclient.model.Model-class.html#request"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-37', 'request', 'link-37');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-38" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-38', 'request', 'link-37');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">!=</tt> <tt class="py-string">'GET'</tt><tt class="py-op">:</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-39" class="py-name" targets="Class apiclient.push.InvalidSubscriptionRequestError=apiclient.push.InvalidSubscriptionRequestError-class.html"><a title="apiclient.push.InvalidSubscriptionRequestError" class="py-name" href="#" onclick="return doclink('link-39', 'InvalidSubscriptionRequestError', 'link-39');">InvalidSubscriptionRequestError</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">          <tt class="py-string">'Can only subscribe to requests which are GET.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">    <tt id="link-40" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-40', 'request', 'link-37');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-string">'POST'</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">_on_response</tt><tt class="py-op">(</tt><tt class="py-param">response</tt><tt class="py-op">,</tt> <tt class="py-param">subscription</tt><tt class="py-op">=</tt><tt class="py-name">subscription</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">      <tt class="py-docstring">"""Called with the response headers. Reads the subscription headers."""</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">      <tt class="py-name">subscription</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method apiclient.http._StreamSlice.read()=apiclient.http._StreamSlice-class.html#read,Method apiclient.push.Headers.read()=apiclient.push.Headers-class.html#read"><a title="apiclient.http._StreamSlice.read
+apiclient.push.Headers.read" class="py-name" href="#" onclick="return doclink('link-41', 'read', 'link-41');">read</a></tt><tt class="py-op">(</tt><tt id="link-42" class="py-name" targets="Method apiclient.model.BaseModel.response()=apiclient.model.BaseModel-class.html#response,Method apiclient.model.Model.response()=apiclient.model.Model-class.html#response"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-42', 'response', 'link-42');">response</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">    <tt id="link-43" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-43', 'request', 'link-37');">request</a></tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Method apiclient.http.HttpRequest.add_response_callback()=apiclient.http.HttpRequest-class.html#add_response_callback"><a title="apiclient.http.HttpRequest.add_response_callback" class="py-name" href="#" onclick="return doclink('link-44', 'add_response_callback', 'link-44');">add_response_callback</a></tt><tt class="py-op">(</tt><tt class="py-name">_on_response</tt><tt class="py-op">)</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">subscription</tt> </tt>
+</div><a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="Subscription.for_channel"></a><div id="Subscription.for_channel-def"><a name="L209"></a><tt class="py-lineno">209</tt> <a class="py-toggle" href="#" id="Subscription.for_channel-toggle" onclick="return toggle('Subscription.for_channel');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Subscription-class.html#for_channel">for_channel</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">channel</tt><tt class="py-op">,</tt> <tt class="py-param">client_token</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Subscription.for_channel-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Subscription.for_channel-expanded"><a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">    <tt class="py-docstring">"""Alternate constructor to create a subscription from a channel.</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line"><tt class="py-docstring">      channel: A apiclient.push.Channel describing the subscription to</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"><tt class="py-docstring">               create.</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"><tt class="py-docstring">      client_token: (optional) client token to verify the notification.</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"><tt class="py-docstring">      New subscription object.</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">    <tt class="py-name">subscription</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">    <tt class="py-name">channel</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Method apiclient.push.Channel.write_header()=apiclient.push.Channel-class.html#write_header"><a title="apiclient.push.Channel.write_header" class="py-name" href="#" onclick="return doclink('link-45', 'write_header', 'link-45');">write_header</a></tt><tt class="py-op">(</tt><tt class="py-name">subscription</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-46" class="py-name"><a title="apiclient.push.Subscription.client_token" class="py-name" href="#" onclick="return doclink('link-46', 'client_token', 'link-34');">client_token</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">      <tt id="link-47" class="py-name"><a title="apiclient.push.Subscription.client_token" class="py-name" href="#" onclick="return doclink('link-47', 'client_token', 'link-34');">client_token</a></tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name" targets="Function apiclient.push.new_token()=apiclient.push-module.html#new_token"><a title="apiclient.push.new_token" class="py-name" href="#" onclick="return doclink('link-48', 'new_token', 'link-48');">new_token</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">    <tt class="py-name">subscription</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt id="link-49" class="py-name"><a title="apiclient.push.SUBSCRIPTION_ID" class="py-name" href="#" onclick="return doclink('link-49', 'SUBSCRIPTION_ID', 'link-1');">SUBSCRIPTION_ID</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-50" class="py-name"><a title="apiclient.push.new_token" class="py-name" href="#" onclick="return doclink('link-50', 'new_token', 'link-48');">new_token</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">    <tt class="py-name">subscription</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt id="link-51" class="py-name"><a title="apiclient.push.CLIENT_TOKEN" class="py-name" href="#" onclick="return doclink('link-51', 'CLIENT_TOKEN', 'link-4');">CLIENT_TOKEN</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-52" class="py-name"><a title="apiclient.push.Subscription.client_token" class="py-name" href="#" onclick="return doclink('link-52', 'client_token', 'link-34');">client_token</a></tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">subscription</tt> </tt>
+</div><a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"> </tt>
+<a name="Subscription.verify"></a><div id="Subscription.verify-def"><a name="L228"></a><tt class="py-lineno">228</tt> <a class="py-toggle" href="#" id="Subscription.verify-toggle" onclick="return toggle('Subscription.verify');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Subscription-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Subscription.verify-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Subscription.verify-expanded"><a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">    <tt class="py-docstring">"""Verifies that a webhook notification has the correct client_token.</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"><tt class="py-docstring">      headers: dict of request headers for a push notification.</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-docstring">      Boolean value indicating whether the notification is verified.</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">    <tt class="py-name">new_subscription</tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name" targets="Class apiclient.push.Subscription=apiclient.push.Subscription-class.html"><a title="apiclient.push.Subscription" class="py-name" href="#" onclick="return doclink('link-53', 'Subscription', 'link-53');">Subscription</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">    <tt class="py-name">new_subscription</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="apiclient.http._StreamSlice.read
+apiclient.push.Headers.read" class="py-name" href="#" onclick="return doclink('link-54', 'read', 'link-41');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">new_subscription</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="apiclient.push.Subscription.client_token" class="py-name" href="#" onclick="return doclink('link-55', 'client_token', 'link-34');">client_token</a></tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="apiclient.push.Subscription.client_token" class="py-name" href="#" onclick="return doclink('link-56', 'client_token', 'link-34');">client_token</a></tt> </tt>
+</div><a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
+<a name="Subscription.subscribe"></a><div id="Subscription.subscribe-def"><a name="L242"></a><tt class="py-lineno">242</tt> <a class="py-toggle" href="#" id="Subscription.subscribe-toggle" onclick="return toggle('Subscription.subscribe');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Subscription-class.html#subscribe">subscribe</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Subscription.subscribe-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Subscription.subscribe-expanded"><a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">    <tt class="py-docstring">"""Subscribe header value."""</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt id="link-57" class="py-name"><a title="apiclient.push.SUBSCRIBE" class="py-name" href="#" onclick="return doclink('link-57', 'SUBSCRIBE', 'link-0');">SUBSCRIBE</a></tt><tt class="py-op">]</tt> </tt>
+</div><a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line"> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
+<a name="Subscription.subscription_id"></a><div id="Subscription.subscription_id-def"><a name="L247"></a><tt class="py-lineno">247</tt> <a class="py-toggle" href="#" id="Subscription.subscription_id-toggle" onclick="return toggle('Subscription.subscription_id');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Subscription-class.html#subscription_id">subscription_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Subscription.subscription_id-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Subscription.subscription_id-expanded"><a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">    <tt class="py-docstring">"""Subscription ID header value."""</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt id="link-58" class="py-name"><a title="apiclient.push.SUBSCRIPTION_ID" class="py-name" href="#" onclick="return doclink('link-58', 'SUBSCRIPTION_ID', 'link-1');">SUBSCRIPTION_ID</a></tt><tt class="py-op">]</tt> </tt>
+</div><a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
+<a name="Subscription.topic_id"></a><div id="Subscription.topic_id-def"><a name="L252"></a><tt class="py-lineno">252</tt> <a class="py-toggle" href="#" id="Subscription.topic_id-toggle" onclick="return toggle('Subscription.topic_id');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Subscription-class.html#topic_id">topic_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Subscription.topic_id-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Subscription.topic_id-expanded"><a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">    <tt class="py-docstring">"""Topic ID header value."""</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt id="link-59" class="py-name"><a title="apiclient.push.TOPIC_ID" class="py-name" href="#" onclick="return doclink('link-59', 'TOPIC_ID', 'link-2');">TOPIC_ID</a></tt><tt class="py-op">]</tt> </tt>
+</div><a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line"> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
+<a name="Subscription.topic_uri"></a><div id="Subscription.topic_uri-def"><a name="L257"></a><tt class="py-lineno">257</tt> <a class="py-toggle" href="#" id="Subscription.topic_uri-toggle" onclick="return toggle('Subscription.topic_uri');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Subscription-class.html#topic_uri">topic_uri</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Subscription.topic_uri-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Subscription.topic_uri-expanded"><a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">    <tt class="py-docstring">"""Topic URI header value."""</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt id="link-60" class="py-name"><a title="apiclient.push.TOPIC_URI" class="py-name" href="#" onclick="return doclink('link-60', 'TOPIC_URI', 'link-3');">TOPIC_URI</a></tt><tt class="py-op">]</tt> </tt>
+</div><a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line"> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
+<a name="Subscription.client_token"></a><div id="Subscription.client_token-def"><a name="L262"></a><tt class="py-lineno">262</tt> <a class="py-toggle" href="#" id="Subscription.client_token-toggle" onclick="return toggle('Subscription.client_token');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Subscription-class.html#client_token">client_token</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Subscription.client_token-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Subscription.client_token-expanded"><a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">    <tt class="py-docstring">"""Client Token header value."""</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt id="link-61" class="py-name"><a title="apiclient.push.CLIENT_TOKEN" class="py-name" href="#" onclick="return doclink('link-61', 'CLIENT_TOKEN', 'link-4');">CLIENT_TOKEN</a></tt><tt class="py-op">]</tt> </tt>
+</div><a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
+<a name="Subscription.event_type"></a><div id="Subscription.event_type-def"><a name="L267"></a><tt class="py-lineno">267</tt> <a class="py-toggle" href="#" id="Subscription.event_type-toggle" onclick="return toggle('Subscription.event_type');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Subscription-class.html#event_type">event_type</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Subscription.event_type-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Subscription.event_type-expanded"><a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">    <tt class="py-docstring">"""Event Type header value."""</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt id="link-62" class="py-name"><a title="apiclient.push.EVENT_TYPE" class="py-name" href="#" onclick="return doclink('link-62', 'EVENT_TYPE', 'link-5');">EVENT_TYPE</a></tt><tt class="py-op">]</tt> </tt>
+</div><a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
+<a name="Subscription.unsubscribe"></a><div id="Subscription.unsubscribe-def"><a name="L272"></a><tt class="py-lineno">272</tt> <a class="py-toggle" href="#" id="Subscription.unsubscribe-toggle" onclick="return toggle('Subscription.unsubscribe');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.push.Subscription-class.html#unsubscribe">unsubscribe</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Subscription.unsubscribe-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Subscription.unsubscribe-expanded"><a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">    <tt class="py-docstring">"""Unsuscribe header value."""</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt id="link-63" class="py-name"><a title="apiclient.push.UNSUBSCRIBE" class="py-name" href="#" onclick="return doclink('link-63', 'UNSUBSCRIBE', 'link-6');">UNSUBSCRIBE</a></tt><tt class="py-op">]</tt> </tt>
+</div></div><a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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 Thu Jan 24 16:14:49 2013
+    </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>
diff --git a/docs/epy/apiclient.push.Channel-class.html b/docs/epy/apiclient.push.Channel-class.html
new file mode 100644
index 0000000..5108eb6
--- /dev/null
+++ b/docs/epy/apiclient.push.Channel-class.html
@@ -0,0 +1,333 @@
+<?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>apiclient.push.Channel</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>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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%">
+      <span class="breadcrumbs">
+        <a href="apiclient-module.html">Package&nbsp;apiclient</a> ::
+        <a href="apiclient.push-module.html">Module&nbsp;push</a> ::
+        Class&nbsp;Channel
+      </span>
+    </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="apiclient.push.Channel-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Channel</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.push-pysrc.html#Channel">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_channel" name="class_hierarchy_for_channel">
+<area shape="rect" id="node1" href="apiclient.push.Channel-class.html" title="Channel" alt="" coords="5,6,75,34"/>
+</map>
+  <img src="class_hierarchy_for_channel.gif" alt='' usemap="#class_hierarchy_for_channel" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<pre class="literalblock">
+Base class for channel types.
+
+</pre>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Channel-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">channel_type</span>,
+        <span class="summary-sig-arg">channel_args</span>)</span><br />
+      Create a new Channel.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Channel.__init__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Channel-class.html#as_header_value" class="summary-sig-name">as_header_value</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Create the appropriate header for this channel.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Channel.as_header_value">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Channel-class.html#write_header" class="summary-sig-name">write_header</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">headers</span>)</span><br />
+      Write the appropriate subscribe header to a headers dict.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Channel.write_header">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__format__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__sizeof__</code>,
+      <code>__str__</code>,
+      <code>__subclasshook__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">channel_type</span>,
+        <span class="sig-arg">channel_args</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Channel.__init__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Create a new Channel.
+
+You probably won't need to create this channel manually, since there are
+subclassed Channel for each specific type with a more customized set of
+arguments to pass. However, you may wish to just create it manually here.
+
+Args:
+  channel_type: str, the type of channel.
+  channel_args: dict, arguments to pass to the channel.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="as_header_value"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">as_header_value</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Channel.as_header_value">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Create the appropriate header for this channel.
+
+Returns:
+  str encoded channel description suitable for use as a header.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="write_header"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_header</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">headers</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Channel.write_header">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Write the appropriate subscribe header to a headers dict.
+
+Args:
+  headers: dict, headers to add subscribe header to.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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 Thu Jan 24 16:14:37 2013
+    </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>
diff --git a/docs/epy/apiclient.push.Headers-class.html b/docs/epy/apiclient.push.Headers-class.html
new file mode 100644
index 0000000..76a41bf
--- /dev/null
+++ b/docs/epy/apiclient.push.Headers-class.html
@@ -0,0 +1,453 @@
+<?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>apiclient.push.Headers</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>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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%">
+      <span class="breadcrumbs">
+        <a href="apiclient-module.html">Package&nbsp;apiclient</a> ::
+        <a href="apiclient.push-module.html">Module&nbsp;push</a> ::
+        Class&nbsp;Headers
+      </span>
+    </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="apiclient.push.Headers-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Headers</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.push-pysrc.html#Headers">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_headers" name="class_hierarchy_for_headers">
+<area shape="rect" id="node1" href="apiclient.push.Headers-class.html" title="Headers" alt="" coords="5,6,75,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="collections.defaultdict" alt="" coords="99,6,245,34"/>
+</map>
+  <img src="class_hierarchy_for_headers.gif" alt='' usemap="#class_hierarchy_for_headers" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<pre class="literalblock">
+Headers for managing subscriptions.
+
+</pre>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Create a new subscription configuration instance.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Headers.__init__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Headers-class.html#__setitem__" class="summary-sig-name">__setitem__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">key</span>,
+        <span class="summary-sig-arg">value</span>)</span><br />
+      Set a header value, ensuring the key is an allowed value.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Headers.__setitem__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Headers-class.html#__getitem__" class="summary-sig-name">__getitem__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">key</span>)</span><br />
+      Get a header value, normalizing the key case.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Headers.__getitem__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_normalize_key"></a><span class="summary-sig-name">_normalize_key</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">key</span>)</span><br />
+      Normalize a header name for use as a key.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Headers._normalize_key">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="items"></a><span class="summary-sig-name">items</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Generator for each header.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Headers.items">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Headers-class.html#write" class="summary-sig-name">write</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">headers</span>)</span><br />
+      Applies the subscription headers.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Headers.write">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Headers-class.html#read" class="summary-sig-name">read</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">headers</span>)</span><br />
+      Read from headers.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Headers.read">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="apiclient.push.Headers-class.html#ALL_HEADERS" class="summary-name">ALL_HEADERS</a> = <code title="set([SUBSCRIBE, SUBSCRIPTION_ID, TOPIC_ID, TOPIC_URI, CLIENT_TOKEN, EV\
+ENT_TYPE, UNSUBSCRIBE])">set([SUBSCRIBE, SUBSCRIPTION_ID, TOPIC_ID, TOPIC<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__setitem__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__setitem__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">key</span>,
+        <span class="sig-arg">value</span>)</span>
+    <br /><em class="fname">(Index assignment operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Headers.__setitem__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Set a header value, ensuring the key is an allowed value.
+
+Args:
+  key: str, the header key.
+  value: str, the header value.
+Raises:
+  ValueError if key is not one of the accepted headers.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="__getitem__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__getitem__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">key</span>)</span>
+    <br /><em class="fname">(Indexing operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Headers.__getitem__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Get a header value, normalizing the key case.
+
+Args:
+  key: str, the header key.
+Returns:
+  String header value.
+Raises:
+  KeyError if the key is not one of the accepted headers.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="write"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">headers</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Headers.write">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Applies the subscription headers.
+
+Args:
+  headers: dict of headers to insert values into.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="read"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">read</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">headers</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Headers.read">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Read from headers.
+
+Args:
+  headers: dict of headers to read from.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="ALL_HEADERS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">ALL_HEADERS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+set([SUBSCRIBE, SUBSCRIPTION_ID, TOPIC_ID, TOPIC_URI, CLIENT_TOKEN, EV<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ENT_TYPE, UNSUBSCRIBE])
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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 Thu Jan 24 16:14:37 2013
+    </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>
diff --git a/docs/epy/apiclient.push.InvalidSubscriptionRequestError-class.html b/docs/epy/apiclient.push.InvalidSubscriptionRequestError-class.html
new file mode 100644
index 0000000..5d4579f
--- /dev/null
+++ b/docs/epy/apiclient.push.InvalidSubscriptionRequestError-class.html
@@ -0,0 +1,190 @@
+<?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>apiclient.push.InvalidSubscriptionRequestError</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>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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%">
+      <span class="breadcrumbs">
+        <a href="apiclient-module.html">Package&nbsp;apiclient</a> ::
+        <a href="apiclient.push-module.html">Module&nbsp;push</a> ::
+        Class&nbsp;InvalidSubscriptionRequestError
+      </span>
+    </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="apiclient.push.InvalidSubscriptionRequestError-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class InvalidSubscriptionRequestError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.push-pysrc.html#InvalidSubscriptionRequestError">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_invalidsub" name="class_hierarchy_for_invalidsub">
+<area shape="rect" id="node1" href="apiclient.push.InvalidSubscriptionRequestError-class.html" title="InvalidSubscriptionRequestError" alt="" coords="5,241,213,269"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="21,6,197,34"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="36,65,183,93"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.StandardError" alt="" coords="25,123,193,151"/>
+<area shape="rect" id="node5" href="javascript:void(0);" title="exceptions.ValueError" alt="" coords="35,182,184,210"/>
+</map>
+  <img src="class_hierarchy_for_invalidsub.gif" alt='' usemap="#class_hierarchy_for_invalidsub" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<pre class="literalblock">
+The request cannot be subscribed.
+
+</pre>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.ValueError</code></b>:
+      <code>__init__</code>,
+      <code>__new__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__getitem__</code>,
+      <code>__getslice__</code>,
+      <code>__reduce__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__setstate__</code>,
+      <code>__str__</code>,
+      <code>__unicode__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__format__</code>,
+      <code>__hash__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__sizeof__</code>,
+      <code>__subclasshook__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+      <code>args</code>,
+      <code>message</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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 Thu Jan 24 16:14:37 2013
+    </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>
diff --git a/docs/epy/apiclient.push.Subscription-class.html b/docs/epy/apiclient.push.Subscription-class.html
new file mode 100644
index 0000000..d524fcb
--- /dev/null
+++ b/docs/epy/apiclient.push.Subscription-class.html
@@ -0,0 +1,708 @@
+<?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>apiclient.push.Subscription</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>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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%">
+      <span class="breadcrumbs">
+        <a href="apiclient-module.html">Package&nbsp;apiclient</a> ::
+        <a href="apiclient.push-module.html">Module&nbsp;push</a> ::
+        Class&nbsp;Subscription
+      </span>
+    </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="apiclient.push.Subscription-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Subscription</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.push-pysrc.html#Subscription">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_subscripti" name="class_hierarchy_for_subscripti">
+<area shape="rect" id="node1" href="apiclient.push.Subscription-class.html" title="Subscription" alt="" coords="5,6,99,34"/>
+</map>
+  <img src="class_hierarchy_for_subscripti.gif" alt='' usemap="#class_hierarchy_for_subscripti" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<pre class="literalblock">
+Information about a subscription.
+
+</pre>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Subscription-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Create a new Subscription.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.__init__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Subscription-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">headers</span>)</span><br />
+      Verifies that a webhook notification has the correct client_token.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.verify">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Subscription-class.html#subscribe" class="summary-sig-name">subscribe</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Subscribe header value.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.subscribe">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Subscription-class.html#subscription_id" class="summary-sig-name">subscription_id</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Subscription ID header value.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.subscription_id">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Subscription-class.html#topic_id" class="summary-sig-name">topic_id</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Topic ID header value.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.topic_id">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Subscription-class.html#topic_uri" class="summary-sig-name">topic_uri</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Topic URI header value.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.topic_uri">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Subscription-class.html#client_token" class="summary-sig-name">client_token</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Client Token header value.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.client_token">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Subscription-class.html#event_type" class="summary-sig-name">event_type</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Event Type header value.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.event_type">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Subscription-class.html#unsubscribe" class="summary-sig-name">unsubscribe</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Unsuscribe header value.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.unsubscribe">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__format__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__sizeof__</code>,
+      <code>__str__</code>,
+      <code>__subclasshook__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Subscription-class.html#for_request" class="summary-sig-name">for_request</a>(<span class="summary-sig-arg">cls</span>,
+        <span class="summary-sig-arg">request</span>,
+        <span class="summary-sig-arg">channel</span>,
+        <span class="summary-sig-arg">client_token</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Creates a subscription and attaches it to a request.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.for_request">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.Subscription-class.html#for_channel" class="summary-sig-name">for_channel</a>(<span class="summary-sig-arg">cls</span>,
+        <span class="summary-sig-arg">channel</span>,
+        <span class="summary-sig-arg">client_token</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Alternate constructor to create a subscription from a channel.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.for_channel">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.__init__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Create a new Subscription.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="for_request"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">for_request</span>(<span class="sig-arg">cls</span>,
+        <span class="sig-arg">request</span>,
+        <span class="sig-arg">channel</span>,
+        <span class="sig-arg">client_token</span>=<span class="sig-default">None</span>)</span>
+    <br /><em class="fname">Class Method</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.for_request">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Creates a subscription and attaches it to a request.
+
+Args:
+  request: An http.HttpRequest to modify for making a subscription.
+  channel: A apiclient.push.Channel describing the subscription to
+           create.
+  client_token: (optional) client token to verify the notification.
+
+Returns:
+  New subscription object.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="for_channel"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">for_channel</span>(<span class="sig-arg">cls</span>,
+        <span class="sig-arg">channel</span>,
+        <span class="sig-arg">client_token</span>=<span class="sig-default">None</span>)</span>
+    <br /><em class="fname">Class Method</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.for_channel">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Alternate constructor to create a subscription from a channel.
+
+Args:
+  channel: A apiclient.push.Channel describing the subscription to
+           create.
+  client_token: (optional) client token to verify the notification.
+
+Returns:
+  New subscription object.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">headers</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.verify">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Verifies that a webhook notification has the correct client_token.
+
+Args:
+  headers: dict of request headers for a push notification.
+
+Returns:
+  Boolean value indicating whether the notification is verified.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="subscribe"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">subscribe</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.subscribe">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Subscribe header value.
+
+</pre>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@property</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="subscription_id"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">subscription_id</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.subscription_id">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Subscription ID header value.
+
+</pre>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@property</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="topic_id"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">topic_id</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.topic_id">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Topic ID header value.
+
+</pre>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@property</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="topic_uri"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">topic_uri</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.topic_uri">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Topic URI header value.
+
+</pre>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@property</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="client_token"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">client_token</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.client_token">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Client Token header value.
+
+</pre>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@property</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="event_type"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">event_type</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.event_type">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Event Type header value.
+
+</pre>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@property</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="unsubscribe"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">unsubscribe</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#Subscription.unsubscribe">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Unsuscribe header value.
+
+</pre>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@property</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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 Thu Jan 24 16:14:37 2013
+    </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>
diff --git a/docs/epy/apiclient.push.WebhookChannel-class.html b/docs/epy/apiclient.push.WebhookChannel-class.html
new file mode 100644
index 0000000..67bd0ab
--- /dev/null
+++ b/docs/epy/apiclient.push.WebhookChannel-class.html
@@ -0,0 +1,249 @@
+<?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>apiclient.push.WebhookChannel</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>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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%">
+      <span class="breadcrumbs">
+        <a href="apiclient-module.html">Package&nbsp;apiclient</a> ::
+        <a href="apiclient.push-module.html">Module&nbsp;push</a> ::
+        Class&nbsp;WebhookChannel
+      </span>
+    </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="apiclient.push.WebhookChannel-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class WebhookChannel</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.push-pysrc.html#WebhookChannel">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_webhookcha" name="class_hierarchy_for_webhookcha">
+<area shape="rect" id="node1" href="apiclient.push.Channel-class.html" title="Channel" alt="" coords="5,6,75,34"/>
+<area shape="rect" id="node2" href="apiclient.push.WebhookChannel-class.html" title="WebhookChannel" alt="" coords="99,6,224,34"/>
+</map>
+  <img src="class_hierarchy_for_webhookcha.gif" alt='' usemap="#class_hierarchy_for_webhookcha" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<pre class="literalblock">
+Channel for registering web hook notifications.
+
+</pre>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="apiclient.push.WebhookChannel-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">url</span>,
+        <span class="summary-sig-arg">app_engine</span>=<span class="summary-sig-default">False</span>)</span><br />
+      Create a new WebhookChannel</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="apiclient.push-pysrc.html#WebhookChannel.__init__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="apiclient.push.Channel-class.html">Channel</a></code></b>:
+      <code><a href="apiclient.push.Channel-class.html#as_header_value">as_header_value</a></code>,
+      <code><a href="apiclient.push.Channel-class.html#write_header">write_header</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__format__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__sizeof__</code>,
+      <code>__str__</code>,
+      <code>__subclasshook__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">url</span>,
+        <span class="sig-arg">app_engine</span>=<span class="sig-default">False</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="apiclient.push-pysrc.html#WebhookChannel.__init__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Create a new WebhookChannel
+
+Args:
+  url: str, URL to post notifications to.
+  app_engine: bool, default=False, whether the destination for the
+  notifications is an App Engine application.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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 Thu Jan 24 16:14:38 2013
+    </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>
diff --git a/docs/epy/apiclient.schema-module.html b/docs/epy/apiclient.schema-module.html
index 506b9d2..73902d2 100644
--- a/docs/epy/apiclient.schema-module.html
+++ b/docs/epy/apiclient.schema-module.html
@@ -161,7 +161,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.schema-pysrc.html b/docs/epy/apiclient.schema-pysrc.html
index 35c9945..43a3433 100644
--- a/docs/epy/apiclient.schema-pysrc.html
+++ b/docs/epy/apiclient.schema-pysrc.html
@@ -427,7 +427,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:48 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.schema.Schemas-class.html b/docs/epy/apiclient.schema.Schemas-class.html
index fdbcd23..6ae447f 100644
--- a/docs/epy/apiclient.schema.Schemas-class.html
+++ b/docs/epy/apiclient.schema.Schemas-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class Schemas</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.schema-pysrc.html#Schemas">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_schemas" name="class_hierarchy_for_schemas">
-<area shape="rect" href="apiclient.schema.Schemas-class.html" title="Schemas" alt="" coords="5,5,80,32"/>
+<area shape="rect" id="node1" href="apiclient.schema.Schemas-class.html" title="Schemas" alt="" coords="5,6,83,34"/>
 </map>
   <img src="class_hierarchy_for_schemas.gif" alt='' usemap="#class_hierarchy_for_schemas" ismap="ismap" class="graph-without-title" />
 </center>
@@ -475,7 +475,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:13 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:38 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.schema._SchemaToStruct-class.html b/docs/epy/apiclient.schema._SchemaToStruct-class.html
index a9c4423..d94e59f 100644
--- a/docs/epy/apiclient.schema._SchemaToStruct-class.html
+++ b/docs/epy/apiclient.schema._SchemaToStruct-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class _SchemaToStruct</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.schema-pysrc.html#_SchemaToStruct">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for__schematos" name="class_hierarchy_for__schematos">
-<area shape="rect" href="apiclient.schema._SchemaToStruct-class.html" title="_SchemaToStruct" alt="" coords="5,5,128,32"/>
+<area shape="rect" id="node1" href="apiclient.schema._SchemaToStruct-class.html" title="_SchemaToStruct" alt="" coords="5,6,131,34"/>
 </map>
   <img src="class_hierarchy_for__schematos.gif" alt='' usemap="#class_hierarchy_for__schematos" ismap="ismap" class="graph-without-title" />
 </center>
@@ -496,7 +496,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:13 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:38 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/class-tree.html b/docs/epy/class-tree.html
index e5e1d22..e6d6aba 100644
--- a/docs/epy/class-tree.html
+++ b/docs/epy/class-tree.html
@@ -58,10 +58,28 @@
     <li> <strong class="uidlink">SocketServer.BaseServer</strong>:
       <em class="summary">Base class for server classes.</em>
     </li>
+    <li> <strong class="uidlink">google.appengine.ext.ndb.BlobProperty</strong>
+    </li>
     <li> <strong class="uidlink">django.db.models.Field</strong>
     </li>
     <li> <strong class="uidlink">django.db.models.Field</strong>
     </li>
+    <li> <strong class="uidlink">google.appengine.ext.db.Model</strong>
+    </li>
+    <li> <strong class="uidlink">google.appengine.ext.db.Model</strong>
+    </li>
+    <li> <strong class="uidlink">google.appengine.ext.ndb.Model</strong>
+    </li>
+    <li> <strong class="uidlink">google.appengine.ext.ndb.Model</strong>
+    </li>
+    <li> <strong class="uidlink">google.appengine.ext.ndb.PickleProperty</strong>
+    </li>
+    <li> <strong class="uidlink">google.appengine.ext.db.Property</strong>
+    </li>
+    <li> <strong class="uidlink">google.appengine.ext.db.Property</strong>
+    </li>
+    <li> <strong class="uidlink">collections.defaultdict</strong>
+    </li>
     <li> <strong class="uidlink">object</strong>:
       <em class="summary">The most base type</em>
     <ul>
@@ -82,16 +100,16 @@
     <li> <strong class="uidlink"><a href="oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html">oauth2client.locked_file.CredentialsFileSymbolicLinkError</a></strong>:
       <em class="summary">Credentials files must not be symbolic links.</em>
     </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>
-    </li>
-    <li> <strong class="uidlink"><a href="apiclient.errors.Error-class.html">apiclient.errors.Error</a></strong>:
+    <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>
     </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>
     </li>
-    <li> <strong class="uidlink"><a href="oauth2client.multistore_file.Error-class.html">oauth2client.multistore_file.Error</a></strong>:
+    <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>
+    </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>
     </li>
     <li> <strong class="uidlink"><a href="oauth2client.appengine.InvalidClientSecretsError-class.html">oauth2client.appengine.InvalidClientSecretsError</a></strong>:
@@ -100,6 +118,20 @@
     <li> <strong class="uidlink"><a href="oauth2client.appengine.InvalidXsrfTokenError-class.html">oauth2client.appengine.InvalidXsrfTokenError</a></strong>:
       <em class="summary">The XSRF token is invalid or expired.</em>
     </li>
+    <li> <strong class="uidlink">exceptions.StandardError</strong>:
+      <em class="summary">Base class for all standard Python exceptions that do not represent
+interpreter exiting.</em>
+    <ul>
+    <li> <strong class="uidlink">exceptions.ValueError</strong>:
+      <em class="summary">Inappropriate argument value (of correct type).</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="apiclient.push.InvalidSubscriptionRequestError-class.html">apiclient.push.InvalidSubscriptionRequestError</a></strong>:
+      <em class="summary">The request cannot be subscribed.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
     </ul>
     </li>
     </ul>
@@ -107,6 +139,9 @@
     <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="apiclient.push.Channel-class.html">apiclient.push.Channel</a></strong>:
+      <em class="summary">Base class for channel types.</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>
     </li>
@@ -143,32 +178,26 @@
     <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>
-    </li>
     <li> <strong class="uidlink"><a href="apiclient.model.Model-class.html">apiclient.model.Model</a></strong>:
       <em class="summary">Model base class.</em>
     </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>
     </li>
-    <li> <strong class="uidlink">google.appengine.ext.db.Property</strong>:
-      <em class="summary">A Property is an attribute of a Model.</em>
-    </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.discovery.Resource-class.html">apiclient.discovery.Resource</a></strong>:
+      <em class="summary">A class for interacting with a resource.</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>
     </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> <strong class="uidlink"><a href="apiclient.push.Subscription-class.html">apiclient.push.Subscription</a></strong>:
+      <em class="summary">Information about a subscription.</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>
@@ -182,9 +211,6 @@
     <li> <strong class="uidlink"><a href="apiclient.http._StreamSlice-class.html" onclick="show_private();">apiclient.http._StreamSlice</a></strong>:
       <em class="summary">Truncated stream.</em>
     </li>
-    <li> <strong class="uidlink">type</strong>:
-      <em class="summary">type(object) -&gt; the object's type...</em>
-    </li>
     </ul>
     </li>
 </ul>
@@ -211,7 +237,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:29 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/class_hierarchy_for__multistor.gif b/docs/epy/class_hierarchy_for__multistor.gif
index ad7cc77..9dc2203 100644
--- a/docs/epy/class_hierarchy_for__multistor.gif
+++ b/docs/epy/class_hierarchy_for__multistor.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for__opener.gif b/docs/epy/class_hierarchy_for__opener.gif
index 5e8e2d1..445909d 100644
--- a/docs/epy/class_hierarchy_for__opener.gif
+++ b/docs/epy/class_hierarchy_for__opener.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for__posixopen.gif b/docs/epy/class_hierarchy_for__posixopen.gif
index d1af7de..9cc2ca7 100644
--- a/docs/epy/class_hierarchy_for__posixopen.gif
+++ b/docs/epy/class_hierarchy_for__posixopen.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for__schematos.gif b/docs/epy/class_hierarchy_for__schematos.gif
index 2b93b4a..d1d0878 100644
--- a/docs/epy/class_hierarchy_for__schematos.gif
+++ b/docs/epy/class_hierarchy_for__schematos.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for__storage.gif b/docs/epy/class_hierarchy_for__storage.gif
index 8113037..6424144 100644
--- a/docs/epy/class_hierarchy_for__storage.gif
+++ b/docs/epy/class_hierarchy_for__storage.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for__streamsli.gif b/docs/epy/class_hierarchy_for__streamsli.gif
index f1df5f6..70f81bb 100644
--- a/docs/epy/class_hierarchy_for__streamsli.gif
+++ b/docs/epy/class_hierarchy_for__streamsli.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_accesstoke.gif b/docs/epy/class_hierarchy_for_accesstoke.gif
index e5a6f3e..03636b9 100644
--- a/docs/epy/class_hierarchy_for_accesstoke.gif
+++ b/docs/epy/class_hierarchy_for_accesstoke.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_accesstoke_2.gif b/docs/epy/class_hierarchy_for_accesstoke_2.gif
index b3c6494..dd6c267 100644
--- a/docs/epy/class_hierarchy_for_accesstoke_2.gif
+++ b/docs/epy/class_hierarchy_for_accesstoke_2.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_accesstoke_3.gif b/docs/epy/class_hierarchy_for_accesstoke_3.gif
index e7e2aca..aee6259 100644
--- a/docs/epy/class_hierarchy_for_accesstoke_3.gif
+++ b/docs/epy/class_hierarchy_for_accesstoke_3.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_alreadyloc.gif b/docs/epy/class_hierarchy_for_alreadyloc.gif
index e71ecea..8dfea23 100644
--- a/docs/epy/class_hierarchy_for_alreadyloc.gif
+++ b/docs/epy/class_hierarchy_for_alreadyloc.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_appasserti.gif b/docs/epy/class_hierarchy_for_appasserti.gif
index fb13d47..fa78256 100644
--- a/docs/epy/class_hierarchy_for_appasserti.gif
+++ b/docs/epy/class_hierarchy_for_appasserti.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_appasserti_2.gif b/docs/epy/class_hierarchy_for_appasserti_2.gif
index 16ea531..8bbe382 100644
--- a/docs/epy/class_hierarchy_for_appasserti_2.gif
+++ b/docs/epy/class_hierarchy_for_appasserti_2.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_appidentit.gif b/docs/epy/class_hierarchy_for_appidentit.gif
index 89a9e82..1ef90cb 100644
--- a/docs/epy/class_hierarchy_for_appidentit.gif
+++ b/docs/epy/class_hierarchy_for_appidentit.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_assertionc.gif b/docs/epy/class_hierarchy_for_assertionc.gif
index 921fe29..8583032 100644
--- a/docs/epy/class_hierarchy_for_assertionc.gif
+++ b/docs/epy/class_hierarchy_for_assertionc.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_basemodel.gif b/docs/epy/class_hierarchy_for_basemodel.gif
index 2ce6c43..aff85a1 100644
--- a/docs/epy/class_hierarchy_for_basemodel.gif
+++ b/docs/epy/class_hierarchy_for_basemodel.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_batcherror.gif b/docs/epy/class_hierarchy_for_batcherror.gif
index f75b41f..225dcb6 100644
--- a/docs/epy/class_hierarchy_for_batcherror.gif
+++ b/docs/epy/class_hierarchy_for_batcherror.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_batchhttpr.gif b/docs/epy/class_hierarchy_for_batchhttpr.gif
index 567f98d..6bdfa57 100644
--- a/docs/epy/class_hierarchy_for_batchhttpr.gif
+++ b/docs/epy/class_hierarchy_for_batchhttpr.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_channel.gif b/docs/epy/class_hierarchy_for_channel.gif
new file mode 100644
index 0000000..61a45e5
--- /dev/null
+++ b/docs/epy/class_hierarchy_for_channel.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_clientredi.gif b/docs/epy/class_hierarchy_for_clientredi.gif
index fe84f1b..61f7566 100644
--- a/docs/epy/class_hierarchy_for_clientredi.gif
+++ b/docs/epy/class_hierarchy_for_clientredi.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_clientredi_2.gif b/docs/epy/class_hierarchy_for_clientredi_2.gif
index ddbe6b9..4665075 100644
--- a/docs/epy/class_hierarchy_for_clientredi_2.gif
+++ b/docs/epy/class_hierarchy_for_clientredi_2.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_credential.gif b/docs/epy/class_hierarchy_for_credential.gif
index cc1b60f..4508596 100644
--- a/docs/epy/class_hierarchy_for_credential.gif
+++ b/docs/epy/class_hierarchy_for_credential.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_credential_2.gif b/docs/epy/class_hierarchy_for_credential_2.gif
index 51a28c8..1102bcd 100644
--- a/docs/epy/class_hierarchy_for_credential_2.gif
+++ b/docs/epy/class_hierarchy_for_credential_2.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_credential_3.gif b/docs/epy/class_hierarchy_for_credential_3.gif
index c84487f..9663a91 100644
--- a/docs/epy/class_hierarchy_for_credential_3.gif
+++ b/docs/epy/class_hierarchy_for_credential_3.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_credential_4.gif b/docs/epy/class_hierarchy_for_credential_4.gif
index d6db1e4..154a557 100644
--- a/docs/epy/class_hierarchy_for_credential_4.gif
+++ b/docs/epy/class_hierarchy_for_credential_4.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_credential_5.gif b/docs/epy/class_hierarchy_for_credential_5.gif
index 7de6512..7cde236 100644
--- a/docs/epy/class_hierarchy_for_credential_5.gif
+++ b/docs/epy/class_hierarchy_for_credential_5.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_credential_6.gif b/docs/epy/class_hierarchy_for_credential_6.gif
index 7de6512..e1d536c 100644
--- a/docs/epy/class_hierarchy_for_credential_6.gif
+++ b/docs/epy/class_hierarchy_for_credential_6.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_credential_7.gif b/docs/epy/class_hierarchy_for_credential_7.gif
new file mode 100644
index 0000000..ce6c762
--- /dev/null
+++ b/docs/epy/class_hierarchy_for_credential_7.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_credential_8.gif b/docs/epy/class_hierarchy_for_credential_8.gif
new file mode 100644
index 0000000..ce6c762
--- /dev/null
+++ b/docs/epy/class_hierarchy_for_credential_8.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_error.gif b/docs/epy/class_hierarchy_for_error.gif
index 8155d70..327177b 100644
--- a/docs/epy/class_hierarchy_for_error.gif
+++ b/docs/epy/class_hierarchy_for_error.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_error_2.gif b/docs/epy/class_hierarchy_for_error_2.gif
index 8155d70..327177b 100644
--- a/docs/epy/class_hierarchy_for_error_2.gif
+++ b/docs/epy/class_hierarchy_for_error_2.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_error_3.gif b/docs/epy/class_hierarchy_for_error_3.gif
index 8155d70..327177b 100644
--- a/docs/epy/class_hierarchy_for_error_3.gif
+++ b/docs/epy/class_hierarchy_for_error_3.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_error_4.gif b/docs/epy/class_hierarchy_for_error_4.gif
index 8155d70..327177b 100644
--- a/docs/epy/class_hierarchy_for_error_4.gif
+++ b/docs/epy/class_hierarchy_for_error_4.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_flow.gif b/docs/epy/class_hierarchy_for_flow.gif
index 54a2c50..6d0db9f 100644
--- a/docs/epy/class_hierarchy_for_flow.gif
+++ b/docs/epy/class_hierarchy_for_flow.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_flowexchan.gif b/docs/epy/class_hierarchy_for_flowexchan.gif
index 4c552fe..90026b9 100644
--- a/docs/epy/class_hierarchy_for_flowexchan.gif
+++ b/docs/epy/class_hierarchy_for_flowexchan.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_flowfield.gif b/docs/epy/class_hierarchy_for_flowfield.gif
index 764d14f..7aafae3 100644
--- a/docs/epy/class_hierarchy_for_flowfield.gif
+++ b/docs/epy/class_hierarchy_for_flowfield.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_flowndbpro.gif b/docs/epy/class_hierarchy_for_flowndbpro.gif
new file mode 100644
index 0000000..963f344
--- /dev/null
+++ b/docs/epy/class_hierarchy_for_flowndbpro.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_flowproper.gif b/docs/epy/class_hierarchy_for_flowproper.gif
index 2282243..e8d68e8 100644
--- a/docs/epy/class_hierarchy_for_flowproper.gif
+++ b/docs/epy/class_hierarchy_for_flowproper.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_headers.gif b/docs/epy/class_hierarchy_for_headers.gif
new file mode 100644
index 0000000..b8d8a7f
--- /dev/null
+++ b/docs/epy/class_hierarchy_for_headers.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_httperror.gif b/docs/epy/class_hierarchy_for_httperror.gif
index 3fb02ea..c90ba06 100644
--- a/docs/epy/class_hierarchy_for_httperror.gif
+++ b/docs/epy/class_hierarchy_for_httperror.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_httpmock.gif b/docs/epy/class_hierarchy_for_httpmock.gif
index 8dd1e45..eed409f 100644
--- a/docs/epy/class_hierarchy_for_httpmock.gif
+++ b/docs/epy/class_hierarchy_for_httpmock.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_httpmockse.gif b/docs/epy/class_hierarchy_for_httpmockse.gif
index 68d2a84..bd99d87 100644
--- a/docs/epy/class_hierarchy_for_httpmockse.gif
+++ b/docs/epy/class_hierarchy_for_httpmockse.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_httpreques.gif b/docs/epy/class_hierarchy_for_httpreques.gif
index 9e524ae..eccadf5 100644
--- a/docs/epy/class_hierarchy_for_httpreques.gif
+++ b/docs/epy/class_hierarchy_for_httpreques.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_httpreques_2.gif b/docs/epy/class_hierarchy_for_httpreques_2.gif
index 981a5c1..3424040 100644
--- a/docs/epy/class_hierarchy_for_httpreques_2.gif
+++ b/docs/epy/class_hierarchy_for_httpreques_2.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_invalidchu.gif b/docs/epy/class_hierarchy_for_invalidchu.gif
index 42ad5f7..4956f12 100644
--- a/docs/epy/class_hierarchy_for_invalidchu.gif
+++ b/docs/epy/class_hierarchy_for_invalidchu.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_invalidcli.gif b/docs/epy/class_hierarchy_for_invalidcli.gif
index a8d6179..0920c56 100644
--- a/docs/epy/class_hierarchy_for_invalidcli.gif
+++ b/docs/epy/class_hierarchy_for_invalidcli.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_invalidcli_2.gif b/docs/epy/class_hierarchy_for_invalidcli_2.gif
index 5fb022a..99b0be1 100644
--- a/docs/epy/class_hierarchy_for_invalidcli_2.gif
+++ b/docs/epy/class_hierarchy_for_invalidcli_2.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_invalidjso.gif b/docs/epy/class_hierarchy_for_invalidjso.gif
index dc253b1..a8c7082 100644
--- a/docs/epy/class_hierarchy_for_invalidjso.gif
+++ b/docs/epy/class_hierarchy_for_invalidjso.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_invalidsub.gif b/docs/epy/class_hierarchy_for_invalidsub.gif
new file mode 100644
index 0000000..72f7598
--- /dev/null
+++ b/docs/epy/class_hierarchy_for_invalidsub.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_invalidxsr.gif b/docs/epy/class_hierarchy_for_invalidxsr.gif
index c9a4e1d..c1b427e 100644
--- a/docs/epy/class_hierarchy_for_invalidxsr.gif
+++ b/docs/epy/class_hierarchy_for_invalidxsr.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_jsonmodel.gif b/docs/epy/class_hierarchy_for_jsonmodel.gif
index b15561d..c2ff0b1 100644
--- a/docs/epy/class_hierarchy_for_jsonmodel.gif
+++ b/docs/epy/class_hierarchy_for_jsonmodel.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_lockedfile.gif b/docs/epy/class_hierarchy_for_lockedfile.gif
index 2525d22..eb0d0cc 100644
--- a/docs/epy/class_hierarchy_for_lockedfile.gif
+++ b/docs/epy/class_hierarchy_for_lockedfile.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_mediadownl.gif b/docs/epy/class_hierarchy_for_mediadownl.gif
index 5ce038c..ac14ec9 100644
--- a/docs/epy/class_hierarchy_for_mediadownl.gif
+++ b/docs/epy/class_hierarchy_for_mediadownl.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_mediafileu.gif b/docs/epy/class_hierarchy_for_mediafileu.gif
index ee484a7..8b75e15 100644
--- a/docs/epy/class_hierarchy_for_mediafileu.gif
+++ b/docs/epy/class_hierarchy_for_mediafileu.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_mediainmem.gif b/docs/epy/class_hierarchy_for_mediainmem.gif
index b7291f4..5263847 100644
--- a/docs/epy/class_hierarchy_for_mediainmem.gif
+++ b/docs/epy/class_hierarchy_for_mediainmem.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_mediaiobas.gif b/docs/epy/class_hierarchy_for_mediaiobas.gif
index 920fb68..8fd78f9 100644
--- a/docs/epy/class_hierarchy_for_mediaiobas.gif
+++ b/docs/epy/class_hierarchy_for_mediaiobas.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_mediaiobas_2.gif b/docs/epy/class_hierarchy_for_mediaiobas_2.gif
index 2bcb673..2347070 100644
--- a/docs/epy/class_hierarchy_for_mediaiobas_2.gif
+++ b/docs/epy/class_hierarchy_for_mediaiobas_2.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_mediamodel.gif b/docs/epy/class_hierarchy_for_mediamodel.gif
index 072165d..8a5be22 100644
--- a/docs/epy/class_hierarchy_for_mediamodel.gif
+++ b/docs/epy/class_hierarchy_for_mediamodel.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_mediauploa.gif b/docs/epy/class_hierarchy_for_mediauploa.gif
index c286ffa..a2bcc3c 100644
--- a/docs/epy/class_hierarchy_for_mediauploa.gif
+++ b/docs/epy/class_hierarchy_for_mediauploa.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_mediauploa_2.gif b/docs/epy/class_hierarchy_for_mediauploa_2.gif
index 923a6ce..c7aed83 100644
--- a/docs/epy/class_hierarchy_for_mediauploa_2.gif
+++ b/docs/epy/class_hierarchy_for_mediauploa_2.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_mediauploa_3.gif b/docs/epy/class_hierarchy_for_mediauploa_3.gif
index 8dd6a90..5311017 100644
--- a/docs/epy/class_hierarchy_for_mediauploa_3.gif
+++ b/docs/epy/class_hierarchy_for_mediauploa_3.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_memorycach.gif b/docs/epy/class_hierarchy_for_memorycach.gif
index b8822ff..af3b32d 100644
--- a/docs/epy/class_hierarchy_for_memorycach.gif
+++ b/docs/epy/class_hierarchy_for_memorycach.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_model.gif b/docs/epy/class_hierarchy_for_model.gif
index 35c2253..fba3815 100644
--- a/docs/epy/class_hierarchy_for_model.gif
+++ b/docs/epy/class_hierarchy_for_model.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_newercrede.gif b/docs/epy/class_hierarchy_for_newercrede.gif
index 386efc4..2737927 100644
--- a/docs/epy/class_hierarchy_for_newercrede.gif
+++ b/docs/epy/class_hierarchy_for_newercrede.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_nonasciihe.gif b/docs/epy/class_hierarchy_for_nonasciihe.gif
new file mode 100644
index 0000000..9fe346a
--- /dev/null
+++ b/docs/epy/class_hierarchy_for_nonasciihe.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_oauth2cred.gif b/docs/epy/class_hierarchy_for_oauth2cred.gif
index bba497c..6157d04 100644
--- a/docs/epy/class_hierarchy_for_oauth2cred.gif
+++ b/docs/epy/class_hierarchy_for_oauth2cred.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_oauth2deco.gif b/docs/epy/class_hierarchy_for_oauth2deco.gif
index 286fe3a..3e7a7cd 100644
--- a/docs/epy/class_hierarchy_for_oauth2deco.gif
+++ b/docs/epy/class_hierarchy_for_oauth2deco.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_oauth2deco_2.gif b/docs/epy/class_hierarchy_for_oauth2deco_2.gif
index 7a64a1c..ac303e0 100644
--- a/docs/epy/class_hierarchy_for_oauth2deco_2.gif
+++ b/docs/epy/class_hierarchy_for_oauth2deco_2.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_oauth2webs.gif b/docs/epy/class_hierarchy_for_oauth2webs.gif
index 104a562..b39f4a4 100644
--- a/docs/epy/class_hierarchy_for_oauth2webs.gif
+++ b/docs/epy/class_hierarchy_for_oauth2webs.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_protocolbu.gif b/docs/epy/class_hierarchy_for_protocolbu.gif
index 188ec87..cc415c6 100644
--- a/docs/epy/class_hierarchy_for_protocolbu.gif
+++ b/docs/epy/class_hierarchy_for_protocolbu.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_rawmodel.gif b/docs/epy/class_hierarchy_for_rawmodel.gif
index 5971739..4b4834b 100644
--- a/docs/epy/class_hierarchy_for_rawmodel.gif
+++ b/docs/epy/class_hierarchy_for_rawmodel.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_requestmoc.gif b/docs/epy/class_hierarchy_for_requestmoc.gif
index 2acf1ed..569c9fc 100644
--- a/docs/epy/class_hierarchy_for_requestmoc.gif
+++ b/docs/epy/class_hierarchy_for_requestmoc.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_resource.gif b/docs/epy/class_hierarchy_for_resource.gif
new file mode 100644
index 0000000..aa582e3
--- /dev/null
+++ b/docs/epy/class_hierarchy_for_resource.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_resumableu.gif b/docs/epy/class_hierarchy_for_resumableu.gif
index a28386f..6569652 100644
--- a/docs/epy/class_hierarchy_for_resumableu.gif
+++ b/docs/epy/class_hierarchy_for_resumableu.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_schemas.gif b/docs/epy/class_hierarchy_for_schemas.gif
index 842d507..368a5e4 100644
--- a/docs/epy/class_hierarchy_for_schemas.gif
+++ b/docs/epy/class_hierarchy_for_schemas.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_signedjwta.gif b/docs/epy/class_hierarchy_for_signedjwta.gif
index 7bf542a..d33b047 100644
--- a/docs/epy/class_hierarchy_for_signedjwta.gif
+++ b/docs/epy/class_hierarchy_for_signedjwta.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_sitexsrfse.gif b/docs/epy/class_hierarchy_for_sitexsrfse.gif
index 857a657..06fb245 100644
--- a/docs/epy/class_hierarchy_for_sitexsrfse.gif
+++ b/docs/epy/class_hierarchy_for_sitexsrfse.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_sitexsrfse_2.gif b/docs/epy/class_hierarchy_for_sitexsrfse_2.gif
new file mode 100644
index 0000000..56aa48b
--- /dev/null
+++ b/docs/epy/class_hierarchy_for_sitexsrfse_2.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_storage.gif b/docs/epy/class_hierarchy_for_storage.gif
index c972a02..ce416d5 100644
--- a/docs/epy/class_hierarchy_for_storage.gif
+++ b/docs/epy/class_hierarchy_for_storage.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_storage_2.gif b/docs/epy/class_hierarchy_for_storage_2.gif
index 8c78f5a..bc4ffd8 100644
--- a/docs/epy/class_hierarchy_for_storage_2.gif
+++ b/docs/epy/class_hierarchy_for_storage_2.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_storage_3.gif b/docs/epy/class_hierarchy_for_storage_3.gif
index 8c78f5a..bc4ffd8 100644
--- a/docs/epy/class_hierarchy_for_storage_3.gif
+++ b/docs/epy/class_hierarchy_for_storage_3.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_storage_4.gif b/docs/epy/class_hierarchy_for_storage_4.gif
index 8c78f5a..bc4ffd8 100644
--- a/docs/epy/class_hierarchy_for_storage_4.gif
+++ b/docs/epy/class_hierarchy_for_storage_4.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_storagebyk.gif b/docs/epy/class_hierarchy_for_storagebyk.gif
index 8d11d3b..10ac7f4 100644
--- a/docs/epy/class_hierarchy_for_storagebyk.gif
+++ b/docs/epy/class_hierarchy_for_storagebyk.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_subscripti.gif b/docs/epy/class_hierarchy_for_subscripti.gif
new file mode 100644
index 0000000..f08a644
--- /dev/null
+++ b/docs/epy/class_hierarchy_for_subscripti.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_unacceptab.gif b/docs/epy/class_hierarchy_for_unacceptab.gif
index 36a3841..d93974a 100644
--- a/docs/epy/class_hierarchy_for_unacceptab.gif
+++ b/docs/epy/class_hierarchy_for_unacceptab.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_unexpected.gif b/docs/epy/class_hierarchy_for_unexpected.gif
index e4348af..70cc018 100644
--- a/docs/epy/class_hierarchy_for_unexpected.gif
+++ b/docs/epy/class_hierarchy_for_unexpected.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_unexpected_2.gif b/docs/epy/class_hierarchy_for_unexpected_2.gif
index 6856007..500ff2d 100644
--- a/docs/epy/class_hierarchy_for_unexpected_2.gif
+++ b/docs/epy/class_hierarchy_for_unexpected_2.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_unknownapi.gif b/docs/epy/class_hierarchy_for_unknownapi.gif
index 1407300..05a3577 100644
--- a/docs/epy/class_hierarchy_for_unknownapi.gif
+++ b/docs/epy/class_hierarchy_for_unknownapi.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_unknowncli.gif b/docs/epy/class_hierarchy_for_unknowncli.gif
index ec7e64c..c329ae7 100644
--- a/docs/epy/class_hierarchy_for_unknowncli.gif
+++ b/docs/epy/class_hierarchy_for_unknowncli.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_unknownfil.gif b/docs/epy/class_hierarchy_for_unknownfil.gif
new file mode 100644
index 0000000..50a23ce
--- /dev/null
+++ b/docs/epy/class_hierarchy_for_unknownfil.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_unknownlin.gif b/docs/epy/class_hierarchy_for_unknownlin.gif
index b1787a2..74c5d85 100644
--- a/docs/epy/class_hierarchy_for_unknownlin.gif
+++ b/docs/epy/class_hierarchy_for_unknownlin.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_verifyjwtt.gif b/docs/epy/class_hierarchy_for_verifyjwtt.gif
index 8ab6ffc..1e6450b 100644
--- a/docs/epy/class_hierarchy_for_verifyjwtt.gif
+++ b/docs/epy/class_hierarchy_for_verifyjwtt.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_webhookcha.gif b/docs/epy/class_hierarchy_for_webhookcha.gif
new file mode 100644
index 0000000..abb6fab
--- /dev/null
+++ b/docs/epy/class_hierarchy_for_webhookcha.gif
Binary files differ
diff --git a/docs/epy/help.html b/docs/epy/help.html
index a5fa353..c1060e7 100644
--- a/docs/epy/help.html
+++ b/docs/epy/help.html
@@ -240,7 +240,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:29 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/identifier-index.html b/docs/epy/identifier-index.html
index 1db90d2..72e74bf 100644
--- a/docs/epy/identifier-index.html
+++ b/docs/epy/identifier-index.html
@@ -73,7 +73,7 @@
  <a href="#T">T</a>
  <a href="#U">U</a>
  <a href="#V">V</a>
-  W
+ <a href="#W">W</a>
  <a href="#X">X</a>
   Y
   Z
@@ -87,61 +87,69 @@
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#accept">accept</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.keyring_storage.Storage-class.html#acquire_lock">acquire_lock()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.keyring_storage.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore._Storage-class.html#acquire_lock">acquire_lock()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore._Storage-class.html" onclick="show_private();">_Storage</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#accept">accept</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore._Storage-class.html#acquire_lock">acquire_lock()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore._Storage-class.html" onclick="show_private();">_Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#add">add()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.gce.AppAssertionCredentials-class.html">AppAssertionCredentials</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.gce-module.html">oauth2client.gce</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.model.MediaModel-class.html#accept">accept</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.MediaModel-class.html">MediaModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#add">add()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#add_response_callback">add_response_callback()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.appengine-module.html">appengine</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client-module.html">oauth2client</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#accept">accept</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.locked_file.AlreadyLockedException-class.html">AlreadyLockedException</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#ALL_HEADERS">ALL_HEADERS</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.crypt.AppIdentityError-class.html">AppIdentityError</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html#accept">accept</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.RawModel-class.html">RawModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#alt_param">alt_param</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.locked_file.AlreadyLockedException-class.html">AlreadyLockedException</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#apply">apply()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#access_token_expired">access_token_expired()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#alt_param">alt_param</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#alt_param">alt_param</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#apply">apply()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#alt_param">alt_param</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Channel-class.html#as_header_value">as_header_value()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Channel-class.html">Channel</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentialsError-class.html">AccessTokenCredentialsError</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.MediaModel-class.html#alt_param">alt_param</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.MediaModel-class.html">MediaModel</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client.AssertionCredentials-class.html">AssertionCredentials</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentialsError-class.html">AccessTokenCredentialsError</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenRefreshError-class.html">AccessTokenRefreshError</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#alt_param">alt_param</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
@@ -149,24 +157,24 @@
 <span class="index-where">(in&nbsp;<a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenRefreshError-class.html">AccessTokenRefreshError</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html#acquire_lock">acquire_lock()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.Storage-class.html">Storage</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html#alt_param">alt_param</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.RawModel-class.html">RawModel</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#authorize">authorize()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html#acquire_lock">acquire_lock()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html#acquire_lock">acquire_lock()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.anyjson-module.html">anyjson</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client-module.html">oauth2client</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#authorize">authorize()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html#acquire_lock">acquire_lock()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.keyring_storage.Storage-class.html#acquire_lock">acquire_lock()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.keyring_storage.Storage-class.html">Storage</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient-module.html">apiclient</a></td>
 <td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#authorize_url">authorize_url()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
@@ -200,13 +208,21 @@
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#callback_application">callback_application()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.clientsecrets-module.html">clientsecrets</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client-module.html">oauth2client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html#credentials_from_clientsecrets_and_code">credentials_from_clientsecrets_and_code()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#callback_handler">callback_handler()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#CLOCK_SKEW_SECS">CLOCK_SKEW_SECS</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client-module.html#credentials_from_code">credentials_from_code()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#callback_handler">callback_handler()</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#callback_path">callback_path()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#content_type">content_type</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
@@ -214,8 +230,8 @@
 <span class="index-where">(in&nbsp;<a href="oauth2client.django_orm-module.html">oauth2client.django_orm</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#callback_path">callback_path()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Channel-class.html">Channel</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#content_type">content_type</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.file.CredentialsFileSymbolicLinkError-class.html">CredentialsFileSymbolicLinkError</a><br />
@@ -238,32 +254,48 @@
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.client-module.html">client</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client-module.html">oauth2client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html#clean_headers">clean_headers()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html#content_type">content_type</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.RawModel-class.html">RawModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBModel-class.html">CredentialsNDBModel</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html">client</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client-module.html">oauth2client</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#createMethod">createMethod()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBProperty-class.html">CredentialsNDBProperty</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.push-module.html#CLIENT_TOKEN">CLIENT_TOKEN</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#createNextMethod">createNextMethod()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsProperty-class.html">CredentialsProperty</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.tools.ClientRedirectHandler-class.html">ClientRedirectHandler</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.tools-module.html">oauth2client.tools</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#client_token">client_token()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsModel-class.html#credentials">credentials</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine.CredentialsModel-class.html">CredentialsModel</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.crypt-module.html">crypt</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client-module.html">oauth2client</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.tools.ClientRedirectServer-class.html">ClientRedirectServer</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.tools.ClientRedirectHandler-class.html">ClientRedirectHandler</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.tools-module.html">oauth2client.tools</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html">Credentials</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBModel-class.html#credentials">credentials</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.CredentialsNDBModel-class.html">CredentialsNDBModel</a>)</span></td>
 <td width="33%" class="link-index">&nbsp;</td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.clientsecrets-module.html">clientsecrets</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client-module.html">oauth2client</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client-module.html#credentials_from_clientsecrets_and_code">credentials_from_clientsecrets_and_code()</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.tools.ClientRedirectServer-class.html">ClientRedirectServer</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.tools-module.html">oauth2client.tools</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html">Credentials</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
 <td width="33%" class="link-index">&nbsp;</td>
 </tr>
@@ -285,39 +317,40 @@
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.xsrfutil-module.html#DELIMITER">DELIMITER</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.xsrfutil-module.html">oauth2client.xsrfutil</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery-module.html">discovery</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient-module.html">apiclient</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.util-module.html#dict_to_tuple_key">dict_to_tuple_key()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.http-module.html#DEFAULT_CHUNK_SIZE">DEFAULT_CHUNK_SIZE</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#deserialize">deserialize()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#DISCOVERY_URI">DISCOVERY_URI</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery-module.html">discovery</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient-module.html">apiclient</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.discovery-module.html#DEFAULT_METHOD_DOC">DEFAULT_METHOD_DOC</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#deserialize">deserialize()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm-module.html">django_orm</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client-module.html">oauth2client</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#DISCOVERY_URI">DISCOVERY_URI</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.xsrfutil-module.html#DEFAULT_TIMEOUT_SECS">DEFAULT_TIMEOUT_SECS</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.xsrfutil-module.html">oauth2client.xsrfutil</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.MediaModel-class.html#deserialize">deserialize()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.MediaModel-class.html">MediaModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.tools.ClientRedirectHandler-class.html#do_GET">do_GET()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.tools.ClientRedirectHandler-class.html" onclick="show_private();">ClientRedirectHandler</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm-module.html">django_orm</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client-module.html">oauth2client</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.client.MemoryCache-class.html#delete">delete()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.MemoryCache-class.html">MemoryCache</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#deserialize">deserialize()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index"><a href="oauth2client.tools.ClientRedirectHandler-class.html#do_GET">do_GET()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.tools.ClientRedirectHandler-class.html" onclick="show_private();">ClientRedirectHandler</a>)</span></td>
 </tr>
 </table>
 </td></tr>
@@ -327,38 +360,45 @@
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#emit">emit()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.Error-class.html">Error</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.clientsecrets.Error-class.html">Error</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#execute">execute()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#emitBegin">emitBegin()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.clientsecrets.Error-class.html">Error</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file.Error-class.html">Error</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.HttpRequestMock-class.html#execute">execute()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.HttpRequestMock-class.html">HttpRequestMock</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#emitEnd">emitEnd()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file.Error-class.html">Error</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.errors-module.html">errors</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient-module.html">apiclient</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client-module.html#EXPIRY_FORMAT">EXPIRY_FORMAT</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.appengine.FlowProperty-class.html#empty">empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.errors-module.html">errors</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient-module.html">apiclient</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push-module.html#EVENT_TYPE">EVENT_TYPE</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.ext-module.html">ext</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient-module.html">apiclient</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.errors.Error-class.html">Error</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#event_type">event_type()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.client.Error-class.html">Error</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#execute">execute()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
 <td width="33%" class="link-index">&nbsp;</td>
@@ -373,69 +413,70 @@
 <span class="index-where">(in&nbsp;<a href="oauth2client-module.html">oauth2client</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.util-module.html#FLAGS">FLAGS</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentials-class.html#from_json">from_json()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#from_json">from_json()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.locked_file.LockedFile-class.html#file_handle">file_handle()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client.Flow-class.html">Flow</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#from_json">from_json()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaFileUpload-class.html#from_json">from_json()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.MediaFileUpload-class.html">MediaFileUpload</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html#file_handle">file_handle()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.locked_file._Opener-class.html" onclick="show_private();">_Opener</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client-module.html#flow_from_clientsecrets">flow_from_clientsecrets()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#from_json">from_json()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.AppAssertionCredentials-class.html#from_json">from_json()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.locked_file.LockedFile-class.html#filename">filename()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client.FlowExchangeError-class.html">FlowExchangeError</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html#from_json">from_json()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentials-class.html#from_json">from_json()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html#filename">filename()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.locked_file._Opener-class.html" onclick="show_private();">_Opener</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html">FlowField</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.django_orm-module.html">oauth2client.django_orm</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.gce.AppAssertionCredentials-class.html#from_json">from_json()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.gce.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#from_json">from_json()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html#fitness_and_quality_parsed">fitness_and_quality_parsed()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.appengine.FlowNDBProperty-class.html">FlowNDBProperty</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.crypt.Signer-class.html#from_string">from_string()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.crypt.Signer-class.html">Signer</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#from_json">from_json()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.discovery-module.html#fix_method_name">fix_method_name()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#from_json">from_json()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.crypt.Verifier-class.html#from_string">from_string()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.crypt.Verifier-class.html">Verifier</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html#from_json">from_json()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.model-module.html#FLAGS">FLAGS</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaFileUpload-class.html#from_json">from_json()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http.MediaFileUpload-class.html">MediaFileUpload</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#for_channel">for_channel()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.gce.AppAssertionCredentials-class.html#from_json">from_json()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.gce.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.tools-module.html#FLAGS">FLAGS</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.tools-module.html">oauth2client.tools</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.AppAssertionCredentials-class.html#from_json">from_json()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#for_request">for_request()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
 <td width="33%" class="link-index">&nbsp;</td>
 </tr>
 </table>
@@ -446,7 +487,7 @@
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.gce-module.html">gce</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client-module.html">oauth2client</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#get_credential_storage">get_credential_storage()</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#get_credential_storage_custom_key">get_credential_storage_custom_key()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsProperty-class.html#get_value_for_datastore">get_value_for_datastore()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine.CredentialsProperty-class.html">CredentialsProperty</a>)</span></td>
@@ -454,30 +495,37 @@
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.xsrfutil-module.html#generate_token">generate_token()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.xsrfutil-module.html">oauth2client.xsrfutil</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#get_db_prep_value">get_db_prep_value()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#get_credential_storage_custom_string_key">get_credential_storage_custom_string_key()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.appengine.FlowProperty-class.html#get_value_for_datastore">get_value_for_datastore()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#get">get()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#get_db_prep_value">get_db_prep_value()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#get_db_prep_value">get_db_prep_value()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#getbytes">getbytes()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.client.MemoryCache-class.html#get">get()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.MemoryCache-class.html">MemoryCache</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#get_internal_type">get_internal_type()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#get_db_prep_value">get_db_prep_value()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#getbytes">getbytes()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html#get">get()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#get_internal_type">get_internal_type()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#get_credential_storage">get_credential_storage()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#get_internal_type">get_internal_type()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
 <td width="33%" class="link-index">&nbsp;</td>
@@ -490,34 +538,35 @@
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#has_credentials">has_credentials()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html">Headers</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpMock-class.html">HttpMock</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html#HAS_CRYPTO">HAS_CRYPTO</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http-module.html">http</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient-module.html">apiclient</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.HttpMockSequence-class.html">HttpMockSequence</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.client-module.html#HAS_OPENSSL">HAS_OPENSSL</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#has_stream">has_stream()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#http">http()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html">HttpRequest</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#has_stream">has_stream()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#has_stream">has_stream()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.errors.HttpError-class.html">HttpError</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.HttpRequestMock-class.html">HttpRequestMock</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
 </tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#has_stream">has_stream()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.HttpMock-class.html">HttpMock</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
 </table>
 </td></tr>
 <tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
@@ -526,27 +575,34 @@
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.client-module.html#ID_TOKEN_VERIFICATON_CERTS">ID_TOKEN_VERIFICATON_CERTS</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.InvalidClientSecretsError-class.html">InvalidClientSecretsError</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.InvalidXsrfTokenError-class.html">InvalidXsrfTokenError</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#indent">indent()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.clientsecrets.InvalidClientSecretsError-class.html">InvalidClientSecretsError</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.locked_file.LockedFile-class.html#is_locked">is_locked()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="apiclient.errors.InvalidChunkSizeError-class.html">InvalidChunkSizeError</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#indent">indent()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.errors.InvalidJsonError-class.html">InvalidJsonError</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html#is_locked">is_locked()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.locked_file._Opener-class.html" onclick="show_private();">_Opener</a>)</span></td>
 </tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.errors.InvalidChunkSizeError-class.html">InvalidChunkSizeError</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.InvalidSubscriptionRequestError-class.html">InvalidSubscriptionRequestError</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#items">items()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.InvalidClientSecretsError-class.html">InvalidClientSecretsError</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.InvalidXsrfTokenError-class.html">InvalidXsrfTokenError</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
 </table>
 </td></tr>
 <tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="J">J</a></h2></td>
@@ -749,32 +805,39 @@
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseDownload-class.html#next_chunk">next_chunk()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaIoBaseDownload-class.html">MediaIoBaseDownload</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#no_content_response">no_content_response()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html#no_content_response">no_content_response()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.model.RawModel-class.html">RawModel</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#new_from_json">new_from_json()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#no_content_response">no_content_response</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html#no_content_response">no_content_response()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.model.RawModel-class.html">RawModel</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file.NewerCredentialStoreError-class.html">NewerCredentialStoreError</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#no_content_response">no_content_response()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#NON_SERIALIZED_MEMBERS">NON_SERIALIZED_MEMBERS</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#next_chunk">next_chunk()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push-module.html#new_token">new_token()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#no_content_response">no_content_response()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.NonAsciiHeaderError-class.html">NonAsciiHeaderError</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file.NewerCredentialStoreError-class.html">NewerCredentialStoreError</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.MediaModel-class.html#no_content_response">no_content_response()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.MediaModel-class.html">MediaModel</a>)</span></td>
 <td width="33%" class="link-index">&nbsp;</td>
 </tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#next_chunk">next_chunk()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#no_content_response">no_content_response()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
 </table>
 </td></tr>
 <tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="O">O</a></h2></td>
@@ -808,14 +871,16 @@
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_required">oauth_required()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#OpenSSLSigner">OpenSSLSigner</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#oauth2decorator_from_clientsecrets">oauth2decorator_from_clientsecrets()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client-module.html#OOB_CALLBACK_URN">OOB_CALLBACK_URN</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#OpenSSLVerifier">OpenSSLVerifier</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
 </tr>
 </table>
 </td></tr>
@@ -827,8 +892,8 @@
 <span class="index-where">(in&nbsp;<a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#prettyPrintSchema">prettyPrintSchema()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push-module.html">push</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient-module.html">apiclient</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html#parse_mime_type">parse_mime_type()</a><br />
@@ -843,13 +908,16 @@
 <span class="index-where">(in&nbsp;<a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.MediaUploadProgress-class.html#progress">progress()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaUploadProgress-class.html">MediaUploadProgress</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#PyCryptoSigner">PyCryptoSigner</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#prettyPrintByName">prettyPrintByName()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
-<td width="33%" class="link-index"><a href="google.appengine.ext.db.PropertiedClass-class.html">PropertiedClass</a></td>
-<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#PyCryptoVerifier">PyCryptoVerifier</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
 </tr>
 </table>
 </td></tr>
@@ -873,14 +941,22 @@
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html">RawModel</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.keyring_storage.Storage-class.html#release_lock">release_lock()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.keyring_storage.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html">Resource</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.http._StreamSlice-class.html#read">read()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http._StreamSlice-class.html" onclick="show_private();">_StreamSlice</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore._Storage-class.html#release_lock">release_lock()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore._Storage-class.html" onclick="show_private();">_Storage</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#response">response()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="apiclient.http._StreamSlice-class.html#read">read()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http._StreamSlice-class.html" onclick="show_private();">_StreamSlice</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#read">read()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.HttpMock-class.html#request">request()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.HttpMock-class.html">HttpMock</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.Model-class.html#response">response()</a><br />
@@ -903,24 +979,24 @@
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html#release_lock">release_lock()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html#REFRESH_STATUS_CODES">REFRESH_STATUS_CODES</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.Model-class.html#request">request()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.Model-class.html">Model</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.errors.ResumableUploadError-class.html">ResumableUploadError</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html#release_lock">release_lock()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html#release_lock">release_lock()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.Storage-class.html">Storage</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.RequestMockBuilder-class.html">RequestMockBuilder</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.tools-module.html#run">run()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.tools-module.html">oauth2client.tools</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.keyring_storage.Storage-class.html#release_lock">release_lock()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.keyring_storage.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html#release_lock">release_lock()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.discovery-module.html#RESERVED_WORDS">RESERVED_WORDS</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
 <td width="33%" class="link-index">&nbsp;</td>
@@ -933,71 +1009,88 @@
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.schema-module.html">schema</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient-module.html">apiclient</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.crypt.Signer-class.html#sign">sign()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.crypt.Signer-class.html">Signer</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html">Storage</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html">Schemas</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.schema-module.html">apiclient.schema</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.Storage-class.html">Storage</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm-module.html">oauth2client.django_orm</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.SiteXsrfSecretKey-class.html#secret">secret</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.SiteXsrfSecretKey-class.html">SiteXsrfSecretKey</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.crypt.Signer-class.html">Signer</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html">Storage</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.file-module.html">oauth2client.file</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#serialize">serialize()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.SiteXsrfSecretKey-class.html">SiteXsrfSecretKey</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html">Schemas</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.schema-module.html">apiclient.schema</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#Signer">Signer</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.keyring_storage.Storage-class.html">Storage</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.keyring_storage-module.html">oauth2client.keyring_storage</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#serialize">serialize()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#size">size()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.util-module.html#scopes_to_string">scopes_to_string()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.SiteXsrfSecretKey-class.html">SiteXsrfSecretKey</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#serialize">serialize()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#size">size()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.SiteXsrfSecretKey-class.html#secret">secret</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.SiteXsrfSecretKey-class.html">SiteXsrfSecretKey</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html">SiteXsrfSecretKeyNDB</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#stream">stream()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.MemoryCache-class.html#set">set()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.MemoryCache-class.html">MemoryCache</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#STACK_QUERY_PARAMETERS">STACK_QUERY_PARAMETERS</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html#secret">secret</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html">SiteXsrfSecretKeyNDB</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#size">size()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#stream">stream()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#set_store">set_store()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#serialize">serialize()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#size">size()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push-module.html#SUBSCRIBE">SUBSCRIBE</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#serialize">serialize()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#STACK_QUERY_PARAMETERS">STACK_QUERY_PARAMETERS</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#subscribe">subscribe()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#serialize">serialize()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url">step1_get_authorize_url()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2WebServerFlow-class.html">OAuth2WebServerFlow</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html">Subscription</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.client.MemoryCache-class.html#set">set()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.MemoryCache-class.html">MemoryCache</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange">step2_exchange()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2WebServerFlow-class.html">OAuth2WebServerFlow</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push-module.html#SUBSCRIPTION_ID">SUBSCRIPTION_ID</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#set_store">set_store()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html">Storage</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#subscription_id">subscription_id()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.http-module.html#set_user_agent">set_user_agent()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange">step2_exchange()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2WebServerFlow-class.html">OAuth2WebServerFlow</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.Storage-class.html">Storage</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm-module.html">oauth2client.django_orm</a>)</span></td>
 <td width="33%" class="link-index">&nbsp;</td>
 </tr>
 </table>
@@ -1008,39 +1101,48 @@
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#to_json">to_json()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#to_json">to_json()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http-module.html#tunnel_patch">tunnel_patch()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#to_python">to_python()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push-module.html#TOPIC_URI">TOPIC_URI</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.http.MediaFileUpload-class.html#to_json">to_json()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaFileUpload-class.html">MediaFileUpload</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#to_python">to_python()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.clientsecrets-module.html#TYPE_INSTALLED">TYPE_INSTALLED</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#to_python">to_python()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#topic_uri">topic_uri()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#to_json">to_json()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#to_python">to_python()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.clientsecrets-module.html#TYPE_WEB">TYPE_WEB</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#to_str">to_str()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http-module.html#tunnel_patch">tunnel_patch()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#to_json">to_json()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#to_str">to_str()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index"><a href="oauth2client.tools-module.html">tools</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client-module.html">oauth2client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.clientsecrets-module.html#TYPE_INSTALLED">TYPE_INSTALLED</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#to_json">to_json()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.tools-module.html">tools</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client-module.html">oauth2client</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push-module.html#TOPIC_ID">TOPIC_ID</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.clientsecrets-module.html#TYPE_WEB">TYPE_WEB</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#to_json">to_json()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#topic_id">topic_id()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
 <td width="33%" class="link-index">&nbsp;</td>
 </tr>
 </table>
@@ -1051,32 +1153,40 @@
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.errors.UnacceptableMimeTypeError-class.html">UnacceptableMimeTypeError</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.errors.UnknownApiNameOrVersion-class.html">UnknownApiNameOrVersion</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html#unlock_and_close">unlock_and_close()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.locked_file._Opener-class.html" onclick="show_private();">_Opener</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#undent">undent()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client.UnknownClientSecretsFlowError-class.html">UnknownClientSecretsFlowError</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.locked_file._PosixOpener-class.html#unlock_and_close">unlock_and_close()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.locked_file._PosixOpener-class.html" onclick="show_private();">_PosixOpener</a>)</span></td>
 </tr>
 <tr>
+<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#undent">undent()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.errors.UnknownFileType-class.html">UnknownFileType</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push-module.html#UNSUBSCRIBE">UNSUBSCRIBE</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
+</tr>
+<tr>
 <td width="33%" class="link-index"><a href="apiclient.errors.UnexpectedBodyError-class.html">UnexpectedBodyError</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.errors.UnknownLinkType-class.html">UnknownLinkType</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#URITEMPLATE">URITEMPLATE</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#unsubscribe">unsubscribe()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.errors.UnexpectedMethodError-class.html">UnexpectedMethodError</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.locked_file.LockedFile-class.html#unlock_and_close">unlock_and_close()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#URITEMPLATE">URITEMPLATE</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.errors.UnknownApiNameOrVersion-class.html">UnknownApiNameOrVersion</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html#unlock_and_close">unlock_and_close()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.locked_file._Opener-class.html" onclick="show_private();">_Opener</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.util-module.html">util</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client-module.html">oauth2client</a>)</span></td>
 </tr>
@@ -1104,7 +1214,7 @@
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.appengine.FlowProperty-class.html#validate">validate()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.crypt.Verifier-class.html">Verifier</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#Verifier">Verifier</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client.VerifyJwtTokenError-class.html">VerifyJwtTokenError</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
@@ -1112,12 +1222,26 @@
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.locked_file-module.html#validate_file">validate_file()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.crypt.Verifier-class.html#verify">verify()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.crypt.Verifier-class.html">Verifier</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#verify">verify()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
 <td width="33%" class="link-index">&nbsp;</td>
 </tr>
 </table>
 </td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="W">W</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.push.WebhookChannel-class.html">WebhookChannel</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#write">write()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Channel-class.html#write_header">write_header()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Channel-class.html">Channel</a>)</span></td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
 <tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="X">X</a></h2></td>
 <td valign="top">
 <table class="link-index" width="100%" border="1">
@@ -1138,121 +1262,145 @@
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.http.RequestMockBuilder-class.html#__call__">__call__()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.RequestMockBuilder-class.html">RequestMockBuilder</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.locked_file.LockedFile-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_read">_locked_json_read()</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore._Storage-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore._Storage-class.html" onclick="show_private();">_Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_lock">_lock()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html#__credits__">__credits__</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.locked_file._Opener-class.html" onclick="show_private();">_Opener</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_write">_locked_json_write()</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_read">_locked_json_read()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html#__email__">__email__</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore._Storage-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore._Storage-class.html" onclick="show_private();">_Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#__metaclass__">__metaclass__</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_write">_locked_json_write()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#__getitem__">__getitem__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#__metaclass__">__metaclass__</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#_log_request">_log_request()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
 </tr>
 <tr>
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#__getstate__">__getstate__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.discovery.Resource-class.html">Resource</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.errors.BatchError-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.errors.BatchError-class.html">BatchError</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#_log_response">_log_response()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
+</tr>
+<tr>
 <td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#__getstate__">__getstate__()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#_log_response">_log_response()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.errors.BatchError-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.errors.BatchError-class.html">BatchError</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#__metaclass__">__metaclass__</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.errors.HttpError-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.errors.HttpError-class.html">HttpError</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.discovery-module.html#_media_size_to_long">_media_size_to_long()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
 </tr>
 <tr>
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.discovery.Resource-class.html">Resource</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#__setitem__">__setitem__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html">_MultiStore</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.errors.BatchError-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.errors.BatchError-class.html">BatchError</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#__setstate__">__setstate__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.discovery.Resource-class.html">Resource</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#_multistores">_multistores</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
+</tr>
+<tr>
 <td width="33%" class="link-index"><a href="apiclient.errors.HttpError-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.errors.HttpError-class.html">HttpError</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#__metaclass__">__metaclass__</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html">_MultiStore</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#__setstate__">__setstate__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#_multistores_lock">_multistores_lock</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.errors.UnexpectedBodyError-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.errors.UnexpectedBodyError-class.html">UnexpectedBodyError</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.errors.BatchError-class.html#__repr__">__repr__()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.errors.BatchError-class.html">BatchError</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#_multistores">_multistores</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.errors.UnexpectedMethodError-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.errors.UnexpectedMethodError-class.html">UnexpectedMethodError</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.errors.HttpError-class.html#__repr__">__repr__()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.errors.HttpError-class.html">HttpError</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#_multistores_lock">_multistores_lock</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#__setstate__">__setstate__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model-module.html#_abstract">_abstract()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_new_id">_new_id()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="apiclient.http.HttpMock-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http.HttpMock-class.html">HttpMock</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model-module.html#_abstract">_abstract()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.errors.UnexpectedMethodError-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.errors.UnexpectedMethodError-class.html">UnexpectedMethodError</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html#_abstract">_abstract()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#_normalize_key">_normalize_key()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#_add_basic_methods">_add_basic_methods()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.discovery.Resource-class.html">Resource</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html">_Opener</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="apiclient.http.HttpMockSequence-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http.HttpMockSequence-class.html">HttpMockSequence</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client-module.html#_abstract">_abstract()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpMock-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.HttpMock-class.html">HttpMock</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#_add_nested_resources">_add_nested_resources()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.discovery.Resource-class.html">Resource</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client-module.html#_parse_exchange_token_response">_parse_exchange_token_response()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
 </tr>
 <tr>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpMockSequence-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.HttpMockSequence-class.html">HttpMockSequence</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#_add_next_methods">_add_next_methods()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.discovery.Resource-class.html">Resource</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#_parse_state_value">_parse_state_value()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+</tr>
+<tr>
 <td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.discovery-module.html#_add_query_parameter">_add_query_parameter()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#_parse_state_value">_parse_state_value()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.locked_file._PosixOpener-class.html#_posix_lockfile">_posix_lockfile()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.locked_file._PosixOpener-class.html" onclick="show_private();">_PosixOpener</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.http.HttpRequestMock-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.HttpRequestMock-class.html">HttpRequestMock</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#_build_query">_build_query()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.locked_file._PosixOpener-class.html#_posix_lockfile">_posix_lockfile()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.locked_file._PosixOpener-class.html" onclick="show_private();">_PosixOpener</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.locked_file._PosixOpener-class.html">_PosixOpener</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.http.MediaDownloadProgress-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaDownloadProgress-class.html">MediaDownloadProgress</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#_build_state_value">_build_state_value()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.locked_file._PosixOpener-class.html">_PosixOpener</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#_prettyPrintByName">_prettyPrintByName()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.http.MediaFileUpload-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaFileUpload-class.html">MediaFileUpload</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client-module.html#_cached_http">_cached_http</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#_prettyPrintByName">_prettyPrintByName()</a><br />
+<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#_prettyPrintSchema">_prettyPrintSchema()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
 </tr>
 <tr>
@@ -1260,221 +1408,253 @@
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaInMemoryUpload-class.html">MediaInMemoryUpload</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.discovery-module.html#_cast">_cast()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#_prettyPrintSchema">_prettyPrintSchema()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#_process_response">_process_response()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseDownload-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaIoBaseDownload-class.html">MediaIoBaseDownload</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html#_create_file_if_needed">_create_file_if_needed()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#_process_response">_process_response()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.AppAssertionCredentials-class.html#_refresh">_refresh()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_create_file_if_needed">_create_file_if_needed()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.AppAssertionCredentials-class.html#_refresh">_refresh()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentials-class.html#_refresh">_refresh()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="apiclient.http.MediaUploadProgress-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaUploadProgress-class.html">MediaUploadProgress</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#_create_flow">_create_flow()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentials-class.html#_refresh">_refresh()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.RequestMockBuilder-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http.RequestMockBuilder-class.html">RequestMockBuilder</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#_createResource">_createResource()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_refresh">_refresh()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="apiclient.http._StreamSlice-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http._StreamSlice-class.html" onclick="show_private();">_StreamSlice</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.RequestMockBuilder-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.RequestMockBuilder-class.html">RequestMockBuilder</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_decode_credential_from_json">_decode_credential_from_json()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.gce.AppAssertionCredentials-class.html#_refresh">_refresh()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.gce.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http._StreamSlice-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http._StreamSlice-class.html" onclick="show_private();">_StreamSlice</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_delete_credential">_delete_credential()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials">_refresh_and_apply_credentials()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_deserialize_response">_deserialize_response()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.StorageByKeyName-class.html#_delete_entity">_delete_entity()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_refresh_data_cache">_refresh_data_cache()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#_display_error_message">_display_error_message()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_deserialize_response">_deserialize_response()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#_safe_html">_safe_html()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_do_refresh_request">_do_refresh_request()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Channel-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Channel-class.html">Channel</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#_display_error_message">_display_error_message()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html">_SchemaToStruct</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.schema-module.html">apiclient.schema</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.AppAssertionCredentials-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_execute">_execute()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_do_refresh_request">_do_refresh_request()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_serialize_request">_serialize_request()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_execute">_execute()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#_set_dynamic_attr">_set_dynamic_attr()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.discovery.Resource-class.html">Resource</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.push.WebhookChannel-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.push.WebhookChannel-class.html">WebhookChannel</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client-module.html#_extract_id_token">_extract_id_token()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#_set_service_methods">_set_service_methods()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.discovery.Resource-class.html">Resource</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.locked_file-module.html#_FcntlOpener">_FcntlOpener</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore._Storage-class.html">_Storage</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html">OAuth2DecoratorFromClientSecrets</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.locked_file-module.html#_FcntlOpener">_FcntlOpener</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html#_filter_blank">_filter_blank()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http._StreamSlice-class.html">_StreamSlice</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.StorageByKeyName-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html#_filter_blank">_filter_blank()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.AppAssertionCredentials-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBProperty-class.html#_from_base_type">_from_base_type()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.CredentialsNDBProperty-class.html">CredentialsNDBProperty</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBProperty-class.html#_to_base_type">_to_base_type()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.CredentialsNDBProperty-class.html">CredentialsNDBProperty</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.AssertionCredentials-class.html#_generate_assertion">_generate_assertion()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.AssertionCredentials-class.html">AssertionCredentials</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#_to_json">_to_json()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentials-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.AssertionCredentials-class.html#_generate_assertion">_generate_assertion()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.AssertionCredentials-class.html">AssertionCredentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html">OAuth2DecoratorFromClientSecrets</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html#_generate_assertion">_generate_assertion()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#_to_json">_to_json()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.AssertionCredentials-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.AssertionCredentials-class.html">AssertionCredentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html#_generate_assertion">_generate_assertion()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.StorageByKeyName-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#_generate_new_xsrf_secret_key">_generate_new_xsrf_secret_key()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#_to_str_impl">_to_str_impl()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.MemoryCache-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.MemoryCache-class.html">MemoryCache</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#_generate_new_xsrf_secret_key">_generate_new_xsrf_secret_key()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentials-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.AssertionCredentials-class.html#_generate_refresh_request_body">_generate_refresh_request_body()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.AssertionCredentials-class.html">AssertionCredentials</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_unlock">_unlock()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.AssertionCredentials-class.html#_generate_refresh_request_body">_generate_refresh_request_body()</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.client.AssertionCredentials-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.AssertionCredentials-class.html">AssertionCredentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_body">_generate_refresh_request_body()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_update_credential">_update_credential()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2WebServerFlow-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2WebServerFlow-class.html">OAuth2WebServerFlow</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_body">_generate_refresh_request_body()</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.client.MemoryCache-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.MemoryCache-class.html">MemoryCache</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_headers">_generate_refresh_request_headers()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_updateFromCredential">_updateFromCredential()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_headers">_generate_refresh_request_headers()</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_get_credential">_get_credential()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.client-module.html#_urlsafe_b64decode">_urlsafe_b64decode()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.crypt.Signer-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.crypt.Signer-class.html">Signer</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_get_credential">_get_credential()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2WebServerFlow-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.OAuth2WebServerFlow-class.html">OAuth2WebServerFlow</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.StorageByKeyName-class.html#_get_entity">_get_entity()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#_urlsafe_b64decode">_urlsafe_b64decode()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.crypt.Verifier-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.crypt.Verifier-class.html">Verifier</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.errors.HttpError-class.html#_get_reason">_get_reason()</a><br />
-<span class="index-where">(in&nbsp;<a href="apiclient.errors.HttpError-class.html">HttpError</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBModel-class.html#_get_kind">_get_kind()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.CredentialsNDBModel-class.html">CredentialsNDBModel</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#_urlsafe_b64encode">_urlsafe_b64encode()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html#_get_kind">_get_kind()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html">SiteXsrfSecretKeyNDB</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBProperty-class.html#_validate">_validate()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.CredentialsNDBProperty-class.html">CredentialsNDBProperty</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.errors.HttpError-class.html#_get_reason">_get_reason()</a><br />
+<span class="index-where">(in&nbsp;<a href="apiclient.errors.HttpError-class.html">HttpError</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.FlowNDBProperty-class.html#_validate">_validate()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.FlowNDBProperty-class.html">FlowNDBProperty</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.Storage-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.Storage-class.html">Storage</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_get_storage">_get_storage()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.clientsecrets-module.html#_validate_clientsecrets">_validate_clientsecrets()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_header_to_id">_header_to_id()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html#_validate_file">_validate_file()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.Storage-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.django_orm.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.gce.AppAssertionCredentials-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.gce.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
 <td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_id_to_header">_id_to_header()</a><br />
 <span class="index-where">(in&nbsp;<a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.locked_file-module.html#_Win32Opener">_Win32Opener</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#_json_encode">_json_encode()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.keyring_storage.Storage-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.keyring_storage.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.StorageByKeyName-class.html#_is_ndb">_is_ndb()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a>)</span></td>
 <td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_write">_write()</a><br />
 <span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.gce.AppAssertionCredentials-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.gce.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.clientsecrets-module.html#_loadfile">_loadfile()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.locked_file.LockedFile-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#_json_encode">_json_encode()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
 <td width="33%" class="link-index">&nbsp;</td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="oauth2client.keyring_storage.Storage-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.keyring_storage.Storage-class.html">Storage</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_lock">_lock()</a><br />
-<span class="index-where">(in&nbsp;<a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.locked_file._Opener-class.html" onclick="show_private();">_Opener</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.clientsecrets-module.html#_loadfile">_loadfile()</a><br />
+<span class="index-where">(in&nbsp;<a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
 <td width="33%" class="link-index">&nbsp;</td>
 </tr>
 </table>
@@ -1503,7 +1683,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:29 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/module-tree.html b/docs/epy/module-tree.html
index 898f905..82efb15 100644
--- a/docs/epy/module-tree.html
+++ b/docs/epy/module-tree.html
@@ -60,6 +60,7 @@
     <li> <strong class="uidlink"><a href="apiclient.http-module.html">apiclient.http</a></strong>: <em class="summary">Classes to encapsulate a single HTTP request.</em>    </li>
     <li> <strong class="uidlink"><a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a></strong>: <em class="summary">MIME-Type Parser</em>    </li>
     <li> <strong class="uidlink"><a href="apiclient.model-module.html">apiclient.model</a></strong>: <em class="summary">Model objects for requests and responses.</em>    </li>
+    <li> <strong class="uidlink"><a href="apiclient.push-module.html">apiclient.push</a></strong>: <em class="summary">Push notifications support.</em>    </li>
     <li> <strong class="uidlink"><a href="apiclient.schema-module.html">apiclient.schema</a></strong>: <em class="summary">Schema processing for discovery based APIs</em>    </li>
     </ul>
     </li>
@@ -105,7 +106,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:29 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client-module.html b/docs/epy/oauth2client-module.html
index ef8a64a..53b51f0 100644
--- a/docs/epy/oauth2client-module.html
+++ b/docs/epy/oauth2client-module.html
@@ -116,7 +116,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client-pysrc.html b/docs/epy/oauth2client-pysrc.html
index bd05d42..25a0874 100644
--- a/docs/epy/oauth2client-pysrc.html
+++ b/docs/epy/oauth2client-pysrc.html
@@ -83,7 +83,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:49 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.anyjson-module.html b/docs/epy/oauth2client.anyjson-module.html
index 16d8a86..09cc59f 100644
--- a/docs/epy/oauth2client.anyjson-module.html
+++ b/docs/epy/oauth2client.anyjson-module.html
@@ -88,7 +88,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.anyjson-pysrc.html b/docs/epy/oauth2client.anyjson-pysrc.html
index deca50f..1e88455 100644
--- a/docs/epy/oauth2client.anyjson-pysrc.html
+++ b/docs/epy/oauth2client.anyjson-pysrc.html
@@ -115,7 +115,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:48 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine-module.html b/docs/epy/oauth2client.appengine-module.html
index b5d686a..5348848 100644
--- a/docs/epy/oauth2client.appengine-module.html
+++ b/docs/epy/oauth2client.appengine-module.html
@@ -109,6 +109,14 @@
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
+        <a href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html" class="summary-name">SiteXsrfSecretKeyNDB</a><br />
+      NDB Model for storage for the sites XSRF secret key.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
         <a href="oauth2client.appengine.AppAssertionCredentials-class.html" class="summary-name">AppAssertionCredentials</a><br />
       Credentials object for App Engine Assertion Grants
     </td>
@@ -125,6 +133,14 @@
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
+        <a href="oauth2client.appengine.FlowNDBProperty-class.html" class="summary-name">FlowNDBProperty</a><br />
+      App Engine NDB datastore Property for Flow.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
         <a href="oauth2client.appengine.CredentialsProperty-class.html" class="summary-name">CredentialsProperty</a><br />
       App Engine datastore Property for Credentials.
     </td>
@@ -133,9 +149,16 @@
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
+        <a href="oauth2client.appengine.CredentialsNDBProperty-class.html" class="summary-name">CredentialsNDBProperty</a><br />
+      App Engine NDB datastore Property for Credentials.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
         <a href="oauth2client.appengine.StorageByKeyName-class.html" class="summary-name">StorageByKeyName</a><br />
-      Store and retrieve a single credential to and from
-the App Engine datastore.
+      Store and retrieve a credential to and from the App Engine datastore.
     </td>
   </tr>
 <tr>
@@ -150,6 +173,14 @@
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
+        <a href="oauth2client.appengine.CredentialsNDBModel-class.html" class="summary-name">CredentialsNDBModel</a><br />
+      NDB Model for storage of OAuth 2.0 Credentials
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
         <a href="oauth2client.appengine.OAuth2Decorator-class.html" class="summary-name">OAuth2Decorator</a><br />
       Utility for making OAuth 2.0 easier.
     </td>
@@ -535,7 +566,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine-pysrc.html b/docs/epy/oauth2client.appengine-pysrc.html
index 42cbedd..539e4f8 100644
--- a/docs/epy/oauth2client.appengine-pysrc.html
+++ b/docs/epy/oauth2client.appengine-pysrc.html
@@ -86,122 +86,151 @@
 <a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-1" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-1', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt class="py-name">api</tt> <tt class="py-keyword">import</tt> <tt class="py-name">memcache</tt> </tt>
 <a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-2" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-2', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt class="py-name">api</tt> <tt class="py-keyword">import</tt> <tt class="py-name">users</tt> </tt>
 <a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-3', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Package apiclient.ext=apiclient.ext-module.html"><a title="apiclient.ext" class="py-name" href="#" onclick="return doclink('link-4', 'ext', 'link-4');">ext</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">db</tt> </tt>
-<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-5', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name"><a title="apiclient.ext" class="py-name" href="#" onclick="return doclink('link-6', 'ext', 'link-4');">ext</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">webapp</tt> </tt>
-<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-7', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="apiclient.ext" class="py-name" href="#" onclick="return doclink('link-8', 'ext', 'link-4');">ext</a></tt><tt class="py-op">.</tt><tt class="py-name">webapp</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-9', 'util', 'link-9');">util</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">login_required</tt> </tt>
-<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-10', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="apiclient.ext" class="py-name" href="#" onclick="return doclink('link-11', 'ext', 'link-4');">ext</a></tt><tt class="py-op">.</tt><tt class="py-name">webapp</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-12', 'util', 'link-9');">util</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">run_wsgi_app</tt> </tt>
-<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-13" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-13', 'oauth2client', 'link-13');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-14" class="py-name" targets="Module oauth2client.clientsecrets=oauth2client.clientsecrets-module.html"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-14', 'clientsecrets', 'link-14');">clientsecrets</a></tt> </tt>
-<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-15" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-15', 'oauth2client', 'link-13');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-16" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-16', 'util', 'link-9');">util</a></tt> </tt>
-<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-17" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-17', 'oauth2client', 'link-13');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-18" class="py-name" targets="Module oauth2client.xsrfutil=oauth2client.xsrfutil-module.html"><a title="oauth2client.xsrfutil" class="py-name" href="#" onclick="return doclink('link-18', 'xsrfutil', 'link-18');">xsrfutil</a></tt> </tt>
-<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-19" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-19', 'oauth2client', 'link-13');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Module oauth2client.anyjson=oauth2client.anyjson-module.html"><a title="oauth2client.anyjson" class="py-name" href="#" onclick="return doclink('link-20', 'anyjson', 'link-20');">anyjson</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt>
-<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-21" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-21', 'oauth2client', 'link-13');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Module oauth2client.client=oauth2client.client-module.html"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-22', 'client', 'link-22');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-23" class="py-name" targets="Class oauth2client.client.AccessTokenRefreshError=oauth2client.client.AccessTokenRefreshError-class.html"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-23', 'AccessTokenRefreshError', 'link-23');">AccessTokenRefreshError</a></tt> </tt>
-<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-24" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-24', 'oauth2client', 'link-13');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-25', 'client', 'link-22');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-26" class="py-name" targets="Class oauth2client.client.AssertionCredentials=oauth2client.client.AssertionCredentials-class.html"><a title="oauth2client.client.AssertionCredentials" class="py-name" href="#" onclick="return doclink('link-26', 'AssertionCredentials', 'link-26');">AssertionCredentials</a></tt> </tt>
-<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-27" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-27', 'oauth2client', 'link-13');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-28', 'client', 'link-22');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-29" class="py-name" targets="Class oauth2client.client.Credentials=oauth2client.client.Credentials-class.html"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-29', 'Credentials', 'link-29');">Credentials</a></tt> </tt>
-<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-30" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-30', 'oauth2client', 'link-13');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-31', 'client', 'link-22');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-32" class="py-name" targets="Class oauth2client.client.Flow=oauth2client.client.Flow-class.html"><a title="oauth2client.client.Flow" class="py-name" href="#" onclick="return doclink('link-32', 'Flow', 'link-32');">Flow</a></tt> </tt>
-<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-33" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-33', 'oauth2client', 'link-13');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-34', 'client', 'link-22');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-35" class="py-name" targets="Class oauth2client.client.OAuth2WebServerFlow=oauth2client.client.OAuth2WebServerFlow-class.html"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-35', 'OAuth2WebServerFlow', 'link-35');">OAuth2WebServerFlow</a></tt> </tt>
-<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-36" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-36', 'oauth2client', 'link-13');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-37', 'client', 'link-22');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-38" class="py-name" targets="Class oauth2client.client.Storage=oauth2client.client.Storage-class.html,Class oauth2client.django_orm.Storage=oauth2client.django_orm.Storage-class.html,Class oauth2client.file.Storage=oauth2client.file.Storage-class.html,Class oauth2client.keyring_storage.Storage=oauth2client.keyring_storage.Storage-class.html"><a title="oauth2client.client.Storage
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-5', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name"><a title="apiclient.ext" class="py-name" href="#" onclick="return doclink('link-6', 'ext', 'link-4');">ext</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">ndb</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-7', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="apiclient.ext" class="py-name" href="#" onclick="return doclink('link-8', 'ext', 'link-4');">ext</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">webapp</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-9', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="apiclient.ext" class="py-name" href="#" onclick="return doclink('link-10', 'ext', 'link-4');">ext</a></tt><tt class="py-op">.</tt><tt class="py-name">webapp</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-11', 'util', 'link-11');">util</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">login_required</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-12', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="apiclient.ext" class="py-name" href="#" onclick="return doclink('link-13', 'ext', 'link-4');">ext</a></tt><tt class="py-op">.</tt><tt class="py-name">webapp</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-14', 'util', 'link-11');">util</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">run_wsgi_app</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-15" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-15', 'oauth2client', 'link-15');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-16" class="py-name" targets="Module oauth2client.clientsecrets=oauth2client.clientsecrets-module.html"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-16', 'clientsecrets', 'link-16');">clientsecrets</a></tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-17" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-17', 'oauth2client', 'link-15');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-18" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-18', 'util', 'link-11');">util</a></tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-19" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-19', 'oauth2client', 'link-15');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-20" class="py-name" targets="Module oauth2client.xsrfutil=oauth2client.xsrfutil-module.html"><a title="oauth2client.xsrfutil" class="py-name" href="#" onclick="return doclink('link-20', 'xsrfutil', 'link-20');">xsrfutil</a></tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-21" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-21', 'oauth2client', 'link-15');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Module oauth2client.anyjson=oauth2client.anyjson-module.html"><a title="oauth2client.anyjson" class="py-name" href="#" onclick="return doclink('link-22', 'anyjson', 'link-22');">anyjson</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-23" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-23', 'oauth2client', 'link-15');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Module oauth2client.client=oauth2client.client-module.html"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-24', 'client', 'link-24');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-25" class="py-name" targets="Class oauth2client.client.AccessTokenRefreshError=oauth2client.client.AccessTokenRefreshError-class.html"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-25', 'AccessTokenRefreshError', 'link-25');">AccessTokenRefreshError</a></tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-26" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-26', 'oauth2client', 'link-15');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-27', 'client', 'link-24');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-28" class="py-name" targets="Class oauth2client.client.AssertionCredentials=oauth2client.client.AssertionCredentials-class.html"><a title="oauth2client.client.AssertionCredentials" class="py-name" href="#" onclick="return doclink('link-28', 'AssertionCredentials', 'link-28');">AssertionCredentials</a></tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-29" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-29', 'oauth2client', 'link-15');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-30', 'client', 'link-24');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-31" class="py-name" targets="Class oauth2client.client.Credentials=oauth2client.client.Credentials-class.html"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-31', 'Credentials', 'link-31');">Credentials</a></tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-32" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-32', 'oauth2client', 'link-15');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-33', 'client', 'link-24');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-34" class="py-name" targets="Class oauth2client.client.Flow=oauth2client.client.Flow-class.html"><a title="oauth2client.client.Flow" class="py-name" href="#" onclick="return doclink('link-34', 'Flow', 'link-34');">Flow</a></tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-35" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-35', 'oauth2client', 'link-15');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-36', 'client', 'link-24');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-37" class="py-name" targets="Class oauth2client.client.OAuth2WebServerFlow=oauth2client.client.OAuth2WebServerFlow-class.html"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-37', 'OAuth2WebServerFlow', 'link-37');">OAuth2WebServerFlow</a></tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-38" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-38', 'oauth2client', 'link-15');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-39', 'client', 'link-24');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-40" class="py-name" targets="Class oauth2client.client.Storage=oauth2client.client.Storage-class.html,Class oauth2client.django_orm.Storage=oauth2client.django_orm.Storage-class.html,Class oauth2client.file.Storage=oauth2client.file.Storage-class.html,Class oauth2client.keyring_storage.Storage=oauth2client.keyring_storage.Storage-class.html"><a title="oauth2client.client.Storage
 oauth2client.django_orm.Storage
 oauth2client.file.Storage
-oauth2client.keyring_storage.Storage" class="py-name" href="#" onclick="return doclink('link-38', 'Storage', 'link-38');">Storage</a></tt> </tt>
-<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"> </tt>
-<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt id="link-39" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
+oauth2client.keyring_storage.Storage" class="py-name" href="#" onclick="return doclink('link-40', 'Storage', 'link-40');">Storage</a></tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt id="link-41" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-39', 'logger', 'link-39');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
-<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"> </tt>
-<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt id="link-40" class="py-name" targets="Variable oauth2client.appengine.OAUTH2CLIENT_NAMESPACE=oauth2client.appengine-module.html#OAUTH2CLIENT_NAMESPACE"><a title="oauth2client.appengine.OAUTH2CLIENT_NAMESPACE" class="py-name" href="#" onclick="return doclink('link-40', 'OAUTH2CLIENT_NAMESPACE', 'link-40');">OAUTH2CLIENT_NAMESPACE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'oauth2client#ns'</tt> </tt>
-<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"> </tt>
-<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt id="link-41" class="py-name" targets="Variable oauth2client.appengine.XSRF_MEMCACHE_ID=oauth2client.appengine-module.html#XSRF_MEMCACHE_ID"><a title="oauth2client.appengine.XSRF_MEMCACHE_ID" class="py-name" href="#" onclick="return doclink('link-41', 'XSRF_MEMCACHE_ID', 'link-41');">XSRF_MEMCACHE_ID</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'xsrf_secret_key'</tt> </tt>
-<a name="_safe_html"></a><div id="_safe_html-def"><a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"> </tt>
-<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"> </tt>
-<a name="L55"></a><tt class="py-lineno"> 55</tt> <a class="py-toggle" href="#" id="_safe_html-toggle" onclick="return toggle('_safe_html');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_safe_html">_safe_html</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_safe_html-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_safe_html-expanded"><a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">  <tt class="py-docstring">"""Escape text to make it safe to display.</tt> </tt>
-<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">    s: string, The text to escape.</tt> </tt>
-<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">    The escaped text as a string.</tt> </tt>
-<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">cgi</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">quote</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">"'"</tt><tt class="py-op">,</tt> <tt class="py-string">'&amp;#39;'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"> </tt>
-<a name="InvalidClientSecretsError"></a><div id="InvalidClientSecretsError-def"><a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"> </tt>
-<a name="L67"></a><tt class="py-lineno"> 67</tt> <a class="py-toggle" href="#" id="InvalidClientSecretsError-toggle" onclick="return toggle('InvalidClientSecretsError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.InvalidClientSecretsError-class.html">InvalidClientSecretsError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="InvalidClientSecretsError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InvalidClientSecretsError-expanded"><a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">  <tt class="py-docstring">"""The client_secrets.json file is malformed or missing required fields."""</tt> </tt>
-</div><a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"> </tt>
-<a name="InvalidXsrfTokenError"></a><div id="InvalidXsrfTokenError-def"><a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"> </tt>
-<a name="L71"></a><tt class="py-lineno"> 71</tt> <a class="py-toggle" href="#" id="InvalidXsrfTokenError-toggle" onclick="return toggle('InvalidXsrfTokenError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.InvalidXsrfTokenError-class.html">InvalidXsrfTokenError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="InvalidXsrfTokenError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InvalidXsrfTokenError-expanded"><a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">  <tt class="py-docstring">"""The XSRF token is invalid or expired."""</tt> </tt>
-</div><a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"> </tt>
-<a name="SiteXsrfSecretKey"></a><div id="SiteXsrfSecretKey-def"><a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"> </tt>
-<a name="L75"></a><tt class="py-lineno"> 75</tt> <a class="py-toggle" href="#" id="SiteXsrfSecretKey-toggle" onclick="return toggle('SiteXsrfSecretKey');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.SiteXsrfSecretKey-class.html">SiteXsrfSecretKey</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="SiteXsrfSecretKey-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SiteXsrfSecretKey-expanded"><a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">  <tt class="py-docstring">"""Storage for the sites XSRF secret key.</tt> </tt>
-<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">  There will only be one instance stored of this model, the one used for the</tt> </tt>
-<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring">  site.  """</tt> </tt>
-<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">  <tt id="link-42" class="py-name" targets="Variable oauth2client.appengine.SiteXsrfSecretKey.secret=oauth2client.appengine.SiteXsrfSecretKey-class.html#secret"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret" class="py-name" href="#" onclick="return doclink('link-42', 'secret', 'link-42');">secret</a></tt> <tt class="py-op">=</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">StringProperty</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"> </tt>
-<a name="_generate_new_xsrf_secret_key"></a><div id="_generate_new_xsrf_secret_key-def"><a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"> </tt>
-<a name="L83"></a><tt class="py-lineno"> 83</tt> <a class="py-toggle" href="#" id="_generate_new_xsrf_secret_key-toggle" onclick="return toggle('_generate_new_xsrf_secret_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_generate_new_xsrf_secret_key">_generate_new_xsrf_secret_key</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_generate_new_xsrf_secret_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_generate_new_xsrf_secret_key-expanded"><a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">  <tt class="py-docstring">"""Returns a random XSRF secret key.</tt> </tt>
-<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">urandom</tt><tt class="py-op">(</tt><tt class="py-number">16</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"hex"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"> </tt>
-<a name="xsrf_secret_key"></a><div id="xsrf_secret_key-def"><a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"> </tt>
-<a name="L89"></a><tt class="py-lineno"> 89</tt> <a class="py-toggle" href="#" id="xsrf_secret_key-toggle" onclick="return toggle('xsrf_secret_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#xsrf_secret_key">xsrf_secret_key</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="xsrf_secret_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="xsrf_secret_key-expanded"><a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">  <tt class="py-docstring">"""Return the secret key for use for XSRF protection.</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-41', 'logger', 'link-41');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt id="link-42" class="py-name" targets="Variable oauth2client.appengine.OAUTH2CLIENT_NAMESPACE=oauth2client.appengine-module.html#OAUTH2CLIENT_NAMESPACE"><a title="oauth2client.appengine.OAUTH2CLIENT_NAMESPACE" class="py-name" href="#" onclick="return doclink('link-42', 'OAUTH2CLIENT_NAMESPACE', 'link-42');">OAUTH2CLIENT_NAMESPACE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'oauth2client#ns'</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt id="link-43" class="py-name" targets="Variable oauth2client.appengine.XSRF_MEMCACHE_ID=oauth2client.appengine-module.html#XSRF_MEMCACHE_ID"><a title="oauth2client.appengine.XSRF_MEMCACHE_ID" class="py-name" href="#" onclick="return doclink('link-43', 'XSRF_MEMCACHE_ID', 'link-43');">XSRF_MEMCACHE_ID</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'xsrf_secret_key'</tt> </tt>
+<a name="_safe_html"></a><div id="_safe_html-def"><a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <a class="py-toggle" href="#" id="_safe_html-toggle" onclick="return toggle('_safe_html');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_safe_html">_safe_html</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_safe_html-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_safe_html-expanded"><a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">  <tt class="py-docstring">"""Escape text to make it safe to display.</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">    s: string, The text to escape.</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">    The escaped text as a string.</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">cgi</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">quote</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">"'"</tt><tt class="py-op">,</tt> <tt class="py-string">'&amp;#39;'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"> </tt>
+<a name="InvalidClientSecretsError"></a><div id="InvalidClientSecretsError-def"><a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <a class="py-toggle" href="#" id="InvalidClientSecretsError-toggle" onclick="return toggle('InvalidClientSecretsError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.InvalidClientSecretsError-class.html">InvalidClientSecretsError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="InvalidClientSecretsError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InvalidClientSecretsError-expanded"><a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">  <tt class="py-docstring">"""The client_secrets.json file is malformed or missing required fields."""</tt> </tt>
+</div><a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"> </tt>
+<a name="InvalidXsrfTokenError"></a><div id="InvalidXsrfTokenError-def"><a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <a class="py-toggle" href="#" id="InvalidXsrfTokenError-toggle" onclick="return toggle('InvalidXsrfTokenError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.InvalidXsrfTokenError-class.html">InvalidXsrfTokenError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="InvalidXsrfTokenError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InvalidXsrfTokenError-expanded"><a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">  <tt class="py-docstring">"""The XSRF token is invalid or expired."""</tt> </tt>
+</div><a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"> </tt>
+<a name="SiteXsrfSecretKey"></a><div id="SiteXsrfSecretKey-def"><a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <a class="py-toggle" href="#" id="SiteXsrfSecretKey-toggle" onclick="return toggle('SiteXsrfSecretKey');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.SiteXsrfSecretKey-class.html">SiteXsrfSecretKey</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SiteXsrfSecretKey-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SiteXsrfSecretKey-expanded"><a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">  <tt class="py-docstring">"""Storage for the sites XSRF secret key.</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring">  There will only be one instance stored of this model, the one used for the</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">  site.</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">  <tt id="link-44" class="py-name" targets="Variable oauth2client.appengine.SiteXsrfSecretKey.secret=oauth2client.appengine.SiteXsrfSecretKey-class.html#secret,Variable oauth2client.appengine.SiteXsrfSecretKeyNDB.secret=oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html#secret"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-44', 'secret', 'link-44');">secret</a></tt> <tt class="py-op">=</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">StringProperty</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"> </tt>
+<a name="SiteXsrfSecretKeyNDB"></a><div id="SiteXsrfSecretKeyNDB-def"><a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <a class="py-toggle" href="#" id="SiteXsrfSecretKeyNDB-toggle" onclick="return toggle('SiteXsrfSecretKeyNDB');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html">SiteXsrfSecretKeyNDB</a><tt class="py-op">(</tt><tt class="py-base-class">ndb</tt><tt class="py-op">.</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SiteXsrfSecretKeyNDB-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SiteXsrfSecretKeyNDB-expanded"><a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">  <tt class="py-docstring">"""NDB Model for storage for the sites XSRF secret key.</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring">  Since this model uses the same kind as SiteXsrfSecretKey, it can be used</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">  interchangeably. This simply provides an NDB model for interacting with the</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">  same data the DB model interacts with.</tt> </tt>
 <a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring">  If the Site entity does not have a secret key, this method will also create</tt> </tt>
-<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring">  one and persist it.</tt> </tt>
-<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring">    The secret key.</tt> </tt>
-<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">  <tt id="link-43" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret" class="py-name" href="#" onclick="return doclink('link-43', 'secret', 'link-42');">secret</a></tt> <tt class="py-op">=</tt> <tt class="py-name">memcache</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring">  There should only be one instance stored of this model, the one used for the</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring">  site.</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">  <tt id="link-45" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-45', 'secret', 'link-44');">secret</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ndb</tt><tt class="py-op">.</tt><tt class="py-name">StringProperty</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="SiteXsrfSecretKeyNDB._get_kind"></a><div id="SiteXsrfSecretKeyNDB._get_kind-def"><a name="L98"></a><tt class="py-lineno"> 98</tt> <a class="py-toggle" href="#" id="SiteXsrfSecretKeyNDB._get_kind-toggle" onclick="return toggle('SiteXsrfSecretKeyNDB._get_kind');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html#_get_kind">_get_kind</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SiteXsrfSecretKeyNDB._get_kind-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="SiteXsrfSecretKeyNDB._get_kind-expanded"><a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">    <tt class="py-docstring">"""Return the kind name for this class."""</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">'SiteXsrfSecretKey'</tt> </tt>
+</div></div><a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"> </tt>
+<a name="_generate_new_xsrf_secret_key"></a><div id="_generate_new_xsrf_secret_key-def"><a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <a class="py-toggle" href="#" id="_generate_new_xsrf_secret_key-toggle" onclick="return toggle('_generate_new_xsrf_secret_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_generate_new_xsrf_secret_key">_generate_new_xsrf_secret_key</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_generate_new_xsrf_secret_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_generate_new_xsrf_secret_key-expanded"><a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">  <tt class="py-docstring">"""Returns a random XSRF secret key.</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">urandom</tt><tt class="py-op">(</tt><tt class="py-number">16</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"hex"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"> </tt>
+<a name="xsrf_secret_key"></a><div id="xsrf_secret_key-def"><a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <a class="py-toggle" href="#" id="xsrf_secret_key-toggle" onclick="return toggle('xsrf_secret_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#xsrf_secret_key">xsrf_secret_key</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="xsrf_secret_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="xsrf_secret_key-expanded"><a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">  <tt class="py-docstring">"""Return the secret key for use for XSRF protection.</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-docstring">  If the Site entity does not have a secret key, this method will also create</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-docstring">  one and persist it.</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-docstring">    The secret key.</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">  <tt id="link-46" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-46', 'secret', 'link-44');">secret</a></tt> <tt class="py-op">=</tt> <tt class="py-name">memcache</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-44', 'get', 'link-44');">get</a></tt><tt class="py-op">(</tt><tt id="link-45" class="py-name"><a title="oauth2client.appengine.XSRF_MEMCACHE_ID" class="py-name" href="#" onclick="return doclink('link-45', 'XSRF_MEMCACHE_ID', 'link-41');">XSRF_MEMCACHE_ID</a></tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-46" class="py-name"><a title="oauth2client.appengine.OAUTH2CLIENT_NAMESPACE" class="py-name" href="#" onclick="return doclink('link-46', 'OAUTH2CLIENT_NAMESPACE', 'link-40');">OAUTH2CLIENT_NAMESPACE</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-47" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret" class="py-name" href="#" onclick="return doclink('link-47', 'secret', 'link-42');">secret</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">    <tt class="py-comment"># Load the one and only instance of SiteXsrfSecretKey.</tt> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">    <tt id="link-48" class="py-name" targets="Module apiclient.model=apiclient.model-module.html"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-48', 'model', 'link-48');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-49" class="py-name" targets="Class oauth2client.appengine.SiteXsrfSecretKey=oauth2client.appengine.SiteXsrfSecretKey-class.html"><a title="oauth2client.appengine.SiteXsrfSecretKey" class="py-name" href="#" onclick="return doclink('link-49', 'SiteXsrfSecretKey', 'link-49');">SiteXsrfSecretKey</a></tt><tt class="py-op">.</tt><tt class="py-name">get_or_insert</tt><tt class="py-op">(</tt><tt class="py-name">key_name</tt><tt class="py-op">=</tt><tt class="py-string">'site'</tt><tt class="py-op">)</tt> </tt>
-<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-50" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-50', 'model', 'link-48');">model</a></tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret" class="py-name" href="#" onclick="return doclink('link-51', 'secret', 'link-42');">secret</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">      <tt id="link-52" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-52', 'model', 'link-48');">model</a></tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret" class="py-name" href="#" onclick="return doclink('link-53', 'secret', 'link-42');">secret</a></tt> <tt class="py-op">=</tt> <tt id="link-54" class="py-name" targets="Function oauth2client.appengine._generate_new_xsrf_secret_key()=oauth2client.appengine-module.html#_generate_new_xsrf_secret_key"><a title="oauth2client.appengine._generate_new_xsrf_secret_key" class="py-name" href="#" onclick="return doclink('link-54', '_generate_new_xsrf_secret_key', 'link-54');">_generate_new_xsrf_secret_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">      <tt id="link-55" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-55', 'model', 'link-48');">model</a></tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Method oauth2client.client.Storage.put()=oauth2client.client.Storage-class.html#put"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-56', 'put', 'link-56');">put</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">    <tt id="link-57" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret" class="py-name" href="#" onclick="return doclink('link-57', 'secret', 'link-42');">secret</a></tt> <tt class="py-op">=</tt> <tt id="link-58" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-58', 'model', 'link-48');">model</a></tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret" class="py-name" href="#" onclick="return doclink('link-59', 'secret', 'link-42');">secret</a></tt> </tt>
-<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">    <tt class="py-name">memcache</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method apiclient.http.BatchHttpRequest.add()=apiclient.http.BatchHttpRequest-class.html#add"><a title="apiclient.http.BatchHttpRequest.add" class="py-name" href="#" onclick="return doclink('link-60', 'add', 'link-60');">add</a></tt><tt class="py-op">(</tt><tt id="link-61" class="py-name"><a title="oauth2client.appengine.XSRF_MEMCACHE_ID" class="py-name" href="#" onclick="return doclink('link-61', 'XSRF_MEMCACHE_ID', 'link-41');">XSRF_MEMCACHE_ID</a></tt><tt class="py-op">,</tt> <tt id="link-62" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret" class="py-name" href="#" onclick="return doclink('link-62', 'secret', 'link-42');">secret</a></tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-63" class="py-name"><a title="oauth2client.appengine.OAUTH2CLIENT_NAMESPACE" class="py-name" href="#" onclick="return doclink('link-63', 'OAUTH2CLIENT_NAMESPACE', 'link-40');">OAUTH2CLIENT_NAMESPACE</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"> </tt>
-<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-64" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret" class="py-name" href="#" onclick="return doclink('link-64', 'secret', 'link-42');">secret</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"> </tt>
-<a name="AppAssertionCredentials"></a><div id="AppAssertionCredentials-def"><a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"> </tt>
-<a name="L111"></a><tt class="py-lineno">111</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials-toggle" onclick="return toggle('AppAssertionCredentials');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a><tt class="py-op">(</tt><tt class="py-base-class">AssertionCredentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AppAssertionCredentials-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AppAssertionCredentials-expanded"><a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">  <tt class="py-docstring">"""Credentials object for App Engine Assertion Grants</tt> </tt>
-<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-docstring">  This object will allow an App Engine application to identify itself to Google</tt> </tt>
-<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-docstring">  and other OAuth 2.0 servers that can verify assertions. It can be used for the</tt> </tt>
-<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-docstring">  purpose of accessing data stored under an account assigned to the App Engine</tt> </tt>
-<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring">  application itself.</tt> </tt>
-<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">  This credential does not require a flow to instantiate because it represents</tt> </tt>
-<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring">  a two legged flow, and therefore has all of the required information to</tt> </tt>
-<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring">  generate and refresh its own access tokens.</tt> </tt>
-<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"> </tt>
-<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-65', 'positional', 'link-65');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="AppAssertionCredentials.__init__"></a><div id="AppAssertionCredentials.__init__-def"><a name="L125"></a><tt class="py-lineno">125</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials.__init__-toggle" onclick="return toggle('AppAssertionCredentials.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AppAssertionCredentials.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="AppAssertionCredentials.__init__-expanded"><a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for AppAssertionCredentials</tt> </tt>
-<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-docstring">      scope: string or list of strings, scope(s) of the credentials being</tt> </tt>
-<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-docstring">        requested.</tt> </tt>
-<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">list</tt><tt class="py-op">:</tt> </tt>
-<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">      <tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
-<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-name">scope</tt> </tt>
-<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"> </tt>
-<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-66" class="py-name" targets="Class oauth2client.appengine.AppAssertionCredentials=oauth2client.appengine.AppAssertionCredentials-class.html,Class oauth2client.gce.AppAssertionCredentials=oauth2client.gce.AppAssertionCredentials-class.html"><a title="oauth2client.appengine.AppAssertionCredentials
-oauth2client.gce.AppAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-66', 'AppAssertionCredentials', 'link-66');">AppAssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name" targets="Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.crypt.Signer.__init__()=oauth2client.crypt.Signer-class.html#__init__,Method oauth2client.crypt.Verifier.__init__()=oauth2client.crypt.Verifier-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.errors.BatchError.__init__
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-47', 'get', 'link-47');">get</a></tt><tt class="py-op">(</tt><tt id="link-48" class="py-name"><a title="oauth2client.appengine.XSRF_MEMCACHE_ID" class="py-name" href="#" onclick="return doclink('link-48', 'XSRF_MEMCACHE_ID', 'link-43');">XSRF_MEMCACHE_ID</a></tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-49" class="py-name"><a title="oauth2client.appengine.OAUTH2CLIENT_NAMESPACE" class="py-name" href="#" onclick="return doclink('link-49', 'OAUTH2CLIENT_NAMESPACE', 'link-42');">OAUTH2CLIENT_NAMESPACE</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-50" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-50', 'secret', 'link-44');">secret</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">    <tt class="py-comment"># Load the one and only instance of SiteXsrfSecretKey.</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">    <tt id="link-51" class="py-name" targets="Module apiclient.model=apiclient.model-module.html"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-51', 'model', 'link-51');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-52" class="py-name" targets="Class oauth2client.appengine.SiteXsrfSecretKey=oauth2client.appengine.SiteXsrfSecretKey-class.html"><a title="oauth2client.appengine.SiteXsrfSecretKey" class="py-name" href="#" onclick="return doclink('link-52', 'SiteXsrfSecretKey', 'link-52');">SiteXsrfSecretKey</a></tt><tt class="py-op">.</tt><tt class="py-name">get_or_insert</tt><tt class="py-op">(</tt><tt class="py-name">key_name</tt><tt class="py-op">=</tt><tt class="py-string">'site'</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-53" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-53', 'model', 'link-51');">model</a></tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-54', 'secret', 'link-44');">secret</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">      <tt id="link-55" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-55', 'model', 'link-51');">model</a></tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-56', 'secret', 'link-44');">secret</a></tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name" targets="Function oauth2client.appengine._generate_new_xsrf_secret_key()=oauth2client.appengine-module.html#_generate_new_xsrf_secret_key"><a title="oauth2client.appengine._generate_new_xsrf_secret_key" class="py-name" href="#" onclick="return doclink('link-57', '_generate_new_xsrf_secret_key', 'link-57');">_generate_new_xsrf_secret_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">      <tt id="link-58" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-58', 'model', 'link-51');">model</a></tt><tt class="py-op">.</tt><tt id="link-59" class="py-name" targets="Method oauth2client.client.Storage.put()=oauth2client.client.Storage-class.html#put"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-59', 'put', 'link-59');">put</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">    <tt id="link-60" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-60', 'secret', 'link-44');">secret</a></tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-61', 'model', 'link-51');">model</a></tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-62', 'secret', 'link-44');">secret</a></tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">    <tt class="py-name">memcache</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Method apiclient.http.BatchHttpRequest.add()=apiclient.http.BatchHttpRequest-class.html#add"><a title="apiclient.http.BatchHttpRequest.add" class="py-name" href="#" onclick="return doclink('link-63', 'add', 'link-63');">add</a></tt><tt class="py-op">(</tt><tt id="link-64" class="py-name"><a title="oauth2client.appengine.XSRF_MEMCACHE_ID" class="py-name" href="#" onclick="return doclink('link-64', 'XSRF_MEMCACHE_ID', 'link-43');">XSRF_MEMCACHE_ID</a></tt><tt class="py-op">,</tt> <tt id="link-65" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-65', 'secret', 'link-44');">secret</a></tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-66" class="py-name"><a title="oauth2client.appengine.OAUTH2CLIENT_NAMESPACE" class="py-name" href="#" onclick="return doclink('link-66', 'OAUTH2CLIENT_NAMESPACE', 'link-42');">OAUTH2CLIENT_NAMESPACE</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-67" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-67', 'secret', 'link-44');">secret</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"> </tt>
+<a name="AppAssertionCredentials"></a><div id="AppAssertionCredentials-def"><a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials-toggle" onclick="return toggle('AppAssertionCredentials');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a><tt class="py-op">(</tt><tt class="py-base-class">AssertionCredentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppAssertionCredentials-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AppAssertionCredentials-expanded"><a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">  <tt class="py-docstring">"""Credentials object for App Engine Assertion Grants</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-docstring">  This object will allow an App Engine application to identify itself to Google</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-docstring">  and other OAuth 2.0 servers that can verify assertions. It can be used for the</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-docstring">  purpose of accessing data stored under an account assigned to the App Engine</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-docstring">  application itself.</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-docstring">  This credential does not require a flow to instantiate because it represents</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-docstring">  a two legged flow, and therefore has all of the required information to</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-docstring">  generate and refresh its own access tokens.</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-68', 'positional', 'link-68');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="AppAssertionCredentials.__init__"></a><div id="AppAssertionCredentials.__init__-def"><a name="L145"></a><tt class="py-lineno">145</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials.__init__-toggle" onclick="return toggle('AppAssertionCredentials.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppAssertionCredentials.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="AppAssertionCredentials.__init__-expanded"><a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for AppAssertionCredentials</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-docstring">      scope: string or iterable of strings, scope(s) of the credentials being</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring">        requested.</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-69', 'util', 'link-11');">util</a></tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Function oauth2client.util.scopes_to_string()=oauth2client.util-module.html#scopes_to_string"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-70', 'scopes_to_string', 'link-70');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-71" class="py-name" targets="Class oauth2client.appengine.AppAssertionCredentials=oauth2client.appengine.AppAssertionCredentials-class.html,Class oauth2client.gce.AppAssertionCredentials=oauth2client.gce.AppAssertionCredentials-class.html"><a title="oauth2client.appengine.AppAssertionCredentials
+oauth2client.gce.AppAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-71', 'AppAssertionCredentials', 'link-71');">AppAssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name" targets="Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.push.Channel.__init__()=apiclient.push.Channel-class.html#__init__,Method apiclient.push.Headers.__init__()=apiclient.push.Headers-class.html#__init__,Method apiclient.push.Subscription.__init__()=apiclient.push.Subscription-class.html#__init__,Method apiclient.push.WebhookChannel.__init__()=apiclient.push.WebhookChannel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.discovery.Resource.__init__
+apiclient.errors.BatchError.__init__
 apiclient.errors.HttpError.__init__
 apiclient.errors.UnexpectedBodyError.__init__
 apiclient.errors.UnexpectedMethodError.__init__
@@ -220,6 +249,10 @@
 apiclient.http._StreamSlice.__init__
 apiclient.model.JsonModel.__init__
 apiclient.model.ProtocolBufferModel.__init__
+apiclient.push.Channel.__init__
+apiclient.push.Headers.__init__
+apiclient.push.Subscription.__init__
+apiclient.push.WebhookChannel.__init__
 apiclient.schema.Schemas.__init__
 apiclient.schema._SchemaToStruct.__init__
 oauth2client.appengine.AppAssertionCredentials.__init__
@@ -232,8 +265,6 @@
 oauth2client.client.OAuth2Credentials.__init__
 oauth2client.client.OAuth2WebServerFlow.__init__
 oauth2client.client.SignedJwtAssertionCredentials.__init__
-oauth2client.crypt.Signer.__init__
-oauth2client.crypt.Verifier.__init__
 oauth2client.django_orm.CredentialsField.__init__
 oauth2client.django_orm.FlowField.__init__
 oauth2client.django_orm.Storage.__init__
@@ -243,628 +274,823 @@
 oauth2client.locked_file.LockedFile.__init__
 oauth2client.locked_file._Opener.__init__
 oauth2client.multistore_file._MultiStore._Storage.__init__
-oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-67', '__init__', 'link-67');">__init__</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">        <tt class="py-string">'ignored'</tt> <tt class="py-comment"># assertion_type is ignore in this subclass.</tt> </tt>
-<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
-</div><a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"> </tt>
-<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
-<a name="AppAssertionCredentials.from_json"></a><div id="AppAssertionCredentials.from_json-def"><a name="L141"></a><tt class="py-lineno">141</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials.from_json-toggle" onclick="return toggle('AppAssertionCredentials.from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">json</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AppAssertionCredentials.from_json-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="AppAssertionCredentials.from_json-expanded"><a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">    <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-68', 'loads', 'link-68');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">json</tt><tt class="py-op">)</tt> </tt>
-<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-69" class="py-name"><a title="oauth2client.appengine.AppAssertionCredentials
-oauth2client.gce.AppAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-69', 'AppAssertionCredentials', 'link-66');">AppAssertionCredentials</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'scope'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"> </tt>
-<a name="AppAssertionCredentials._refresh"></a><div id="AppAssertionCredentials._refresh-def"><a name="L145"></a><tt class="py-lineno">145</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials._refresh-toggle" onclick="return toggle('AppAssertionCredentials._refresh');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html#_refresh">_refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AppAssertionCredentials._refresh-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="AppAssertionCredentials._refresh-expanded"><a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">    <tt class="py-docstring">"""Refreshes the access_token.</tt> </tt>
-<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-docstring">    Since the underlying App Engine app_identity implementation does its own</tt> </tt>
-<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-docstring">    caching we can skip all the storage hoops and just to a refresh using the</tt> </tt>
-<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring">    API.</tt> </tt>
-<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-docstring">      http_request: callable, a callable that matches the method signature of</tt> </tt>
-<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-docstring">        httplib2.Http.request, used to make the refresh request.</tt> </tt>
-<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-docstring">      AccessTokenRefreshError: When the refresh fails.</tt> </tt>
-<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">      <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">app_identity</tt><tt class="py-op">.</tt><tt class="py-name">get_access_token</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
-<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">app_identity</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Class apiclient.errors.Error=apiclient.errors.Error-class.html,Class oauth2client.client.Error=oauth2client.client.Error-class.html,Class oauth2client.clientsecrets.Error=oauth2client.clientsecrets.Error-class.html,Class oauth2client.multistore_file.Error=oauth2client.multistore_file.Error-class.html"><a title="apiclient.errors.Error
+oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-72', '__init__', 'link-72');">__init__</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">        <tt class="py-string">'ignored'</tt> <tt class="py-comment"># assertion_type is ignore in this subclass.</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+</div><a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="AppAssertionCredentials.from_json"></a><div id="AppAssertionCredentials.from_json-def"><a name="L159"></a><tt class="py-lineno">159</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials.from_json-toggle" onclick="return toggle('AppAssertionCredentials.from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">json</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppAssertionCredentials.from_json-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="AppAssertionCredentials.from_json-expanded"><a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">    <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-73', 'loads', 'link-73');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">json</tt><tt class="py-op">)</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-74" class="py-name"><a title="oauth2client.appengine.AppAssertionCredentials
+oauth2client.gce.AppAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-74', 'AppAssertionCredentials', 'link-71');">AppAssertionCredentials</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'scope'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"> </tt>
+<a name="AppAssertionCredentials._refresh"></a><div id="AppAssertionCredentials._refresh-def"><a name="L163"></a><tt class="py-lineno">163</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials._refresh-toggle" onclick="return toggle('AppAssertionCredentials._refresh');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html#_refresh">_refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppAssertionCredentials._refresh-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="AppAssertionCredentials._refresh-expanded"><a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">    <tt class="py-docstring">"""Refreshes the access_token.</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-docstring">    Since the underlying App Engine app_identity implementation does its own</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-docstring">    caching we can skip all the storage hoops and just to a refresh using the</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-docstring">    API.</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-docstring">      http_request: callable, a callable that matches the method signature of</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-docstring">        httplib2.Http.request, used to make the refresh request.</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-docstring">      AccessTokenRefreshError: When the refresh fails.</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">      <tt class="py-name">scopes</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">      <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">app_identity</tt><tt class="py-op">.</tt><tt class="py-name">get_access_token</tt><tt class="py-op">(</tt><tt class="py-name">scopes</tt><tt class="py-op">)</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">app_identity</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name" targets="Class apiclient.errors.Error=apiclient.errors.Error-class.html,Class oauth2client.client.Error=oauth2client.client.Error-class.html,Class oauth2client.clientsecrets.Error=oauth2client.clientsecrets.Error-class.html,Class oauth2client.multistore_file.Error=oauth2client.multistore_file.Error-class.html"><a title="apiclient.errors.Error
 oauth2client.client.Error
 oauth2client.clientsecrets.Error
-oauth2client.multistore_file.Error" class="py-name" href="#" onclick="return doclink('link-70', 'Error', 'link-70');">Error</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-71" class="py-name"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-71', 'AccessTokenRefreshError', 'link-23');">AccessTokenRefreshError</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">token</tt> </tt>
-</div></div><a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"> </tt>
-<a name="FlowProperty"></a><div id="FlowProperty-def"><a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"> </tt>
-<a name="L166"></a><tt class="py-lineno">166</tt> <a class="py-toggle" href="#" id="FlowProperty-toggle" onclick="return toggle('FlowProperty');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Property</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="FlowProperty-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="FlowProperty-expanded"><a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">  <tt class="py-docstring">"""App Engine datastore Property for Flow.</tt> </tt>
-<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-docstring">  Utility property that allows easy storage and retreival of an</tt> </tt>
-<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-docstring">  oauth2client.Flow"""</tt> </tt>
-<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"> </tt>
-<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">  <tt class="py-comment"># Tell what the user type is.</tt> </tt>
-<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">  <tt id="link-72" class="py-name" targets="Variable oauth2client.appengine.CredentialsProperty.data_type=oauth2client.appengine.CredentialsProperty-class.html#data_type,Variable oauth2client.appengine.FlowProperty.data_type=oauth2client.appengine.FlowProperty-class.html#data_type"><a title="oauth2client.appengine.CredentialsProperty.data_type
-oauth2client.appengine.FlowProperty.data_type" class="py-name" href="#" onclick="return doclink('link-72', 'data_type', 'link-72');">data_type</a></tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name"><a title="oauth2client.client.Flow" class="py-name" href="#" onclick="return doclink('link-73', 'Flow', 'link-32');">Flow</a></tt> </tt>
-<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"> </tt>
-<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">  <tt class="py-comment"># For writing to datastore.</tt> </tt>
-<a name="FlowProperty.get_value_for_datastore"></a><div id="FlowProperty.get_value_for_datastore-def"><a name="L176"></a><tt class="py-lineno">176</tt> <a class="py-toggle" href="#" id="FlowProperty.get_value_for_datastore-toggle" onclick="return toggle('FlowProperty.get_value_for_datastore');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#get_value_for_datastore">get_value_for_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">model_instance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="FlowProperty.get_value_for_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.get_value_for_datastore-expanded"><a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">    <tt class="py-name">flow</tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-74" class="py-name" targets="Class oauth2client.appengine.FlowProperty=oauth2client.appengine.FlowProperty-class.html"><a title="oauth2client.appengine.FlowProperty" class="py-name" href="#" onclick="return doclink('link-74', 'FlowProperty', 'link-74');">FlowProperty</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">                 <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name" targets="Method oauth2client.appengine.CredentialsProperty.get_value_for_datastore()=oauth2client.appengine.CredentialsProperty-class.html#get_value_for_datastore,Method oauth2client.appengine.FlowProperty.get_value_for_datastore()=oauth2client.appengine.FlowProperty-class.html#get_value_for_datastore"><a title="oauth2client.appengine.CredentialsProperty.get_value_for_datastore
-oauth2client.appengine.FlowProperty.get_value_for_datastore" class="py-name" href="#" onclick="return doclink('link-75', 'get_value_for_datastore', 'link-75');">get_value_for_datastore</a></tt><tt class="py-op">(</tt><tt class="py-name">model_instance</tt><tt class="py-op">)</tt> </tt>
-<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">Blob</tt><tt class="py-op">(</tt><tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">flow</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"> </tt>
-<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">  <tt class="py-comment"># For reading from datastore.</tt> </tt>
-<a name="FlowProperty.make_value_from_datastore"></a><div id="FlowProperty.make_value_from_datastore-def"><a name="L182"></a><tt class="py-lineno">182</tt> <a class="py-toggle" href="#" id="FlowProperty.make_value_from_datastore-toggle" onclick="return toggle('FlowProperty.make_value_from_datastore');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#make_value_from_datastore">make_value_from_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="FlowProperty.make_value_from_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.make_value_from_datastore-expanded"><a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
-<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-76', 'loads', 'link-68');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"> </tt>
-<a name="FlowProperty.validate"></a><div id="FlowProperty.validate-def"><a name="L187"></a><tt class="py-lineno">187</tt> <a class="py-toggle" href="#" id="FlowProperty.validate-toggle" onclick="return toggle('FlowProperty.validate');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#validate">validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="FlowProperty.validate-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.validate-expanded"><a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-77" class="py-name"><a title="oauth2client.client.Flow" class="py-name" href="#" onclick="return doclink('link-77', 'Flow', 'link-32');">Flow</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">BadValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Property %s must be convertible '</tt> </tt>
-<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">                          <tt class="py-string">'to a FlowThreeLegged instance (%s)'</tt> <tt class="py-op">%</tt> </tt>
-<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">                          <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-78" class="py-name"><a title="oauth2client.appengine.FlowProperty" class="py-name" href="#" onclick="return doclink('link-78', 'FlowProperty', 'link-74');">FlowProperty</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Method oauth2client.appengine.CredentialsProperty.validate()=oauth2client.appengine.CredentialsProperty-class.html#validate,Method oauth2client.appengine.FlowProperty.validate()=oauth2client.appengine.FlowProperty-class.html#validate"><a title="oauth2client.appengine.CredentialsProperty.validate
-oauth2client.appengine.FlowProperty.validate" class="py-name" href="#" onclick="return doclink('link-79', 'validate', 'link-79');">validate</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"> </tt>
-<a name="FlowProperty.empty"></a><div id="FlowProperty.empty-def"><a name="L194"></a><tt class="py-lineno">194</tt> <a class="py-toggle" href="#" id="FlowProperty.empty-toggle" onclick="return toggle('FlowProperty.empty');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#empty">empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="FlowProperty.empty-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.empty-expanded"><a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-keyword">not</tt> <tt class="py-name">value</tt> </tt>
-</div></div><a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line"> </tt>
-<a name="CredentialsProperty"></a><div id="CredentialsProperty-def"><a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line"> </tt>
-<a name="L198"></a><tt class="py-lineno">198</tt> <a class="py-toggle" href="#" id="CredentialsProperty-toggle" onclick="return toggle('CredentialsProperty');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html">CredentialsProperty</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Property</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsProperty-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="CredentialsProperty-expanded"><a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">  <tt class="py-docstring">"""App Engine datastore Property for Credentials.</tt> </tt>
-<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"><tt class="py-docstring">  Utility property that allows easy storage and retrieval of</tt> </tt>
-<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"><tt class="py-docstring">  oath2client.Credentials</tt> </tt>
-<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"> </tt>
-<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">  <tt class="py-comment"># Tell what the user type is.</tt> </tt>
-<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">  <tt id="link-80" class="py-name"><a title="oauth2client.appengine.CredentialsProperty.data_type
-oauth2client.appengine.FlowProperty.data_type" class="py-name" href="#" onclick="return doclink('link-80', 'data_type', 'link-72');">data_type</a></tt> <tt class="py-op">=</tt> <tt id="link-81" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-81', 'Credentials', 'link-29');">Credentials</a></tt> </tt>
-<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"> </tt>
-<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">  <tt class="py-comment"># For writing to datastore.</tt> </tt>
-<a name="CredentialsProperty.get_value_for_datastore"></a><div id="CredentialsProperty.get_value_for_datastore-def"><a name="L209"></a><tt class="py-lineno">209</tt> <a class="py-toggle" href="#" id="CredentialsProperty.get_value_for_datastore-toggle" onclick="return toggle('CredentialsProperty.get_value_for_datastore');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html#get_value_for_datastore">get_value_for_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">model_instance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsProperty.get_value_for_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsProperty.get_value_for_datastore-expanded"><a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">    <tt id="link-82" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.multistore_file.Error" class="py-name" href="#" onclick="return doclink('link-75', 'Error', 'link-75');">Error</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-76" class="py-name"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-76', 'AccessTokenRefreshError', 'link-25');">AccessTokenRefreshError</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">token</tt> </tt>
+</div></div><a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"> </tt>
+<a name="FlowProperty"></a><div id="FlowProperty-def"><a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <a class="py-toggle" href="#" id="FlowProperty-toggle" onclick="return toggle('FlowProperty');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Property</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FlowProperty-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="FlowProperty-expanded"><a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">  <tt class="py-docstring">"""App Engine datastore Property for Flow.</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-docstring">  Utility property that allows easy storage and retrieval of an</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-docstring">  oauth2client.Flow"""</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">  <tt class="py-comment"># Tell what the user type is.</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">  <tt id="link-77" class="py-name" targets="Variable oauth2client.appengine.CredentialsProperty.data_type=oauth2client.appengine.CredentialsProperty-class.html#data_type,Variable oauth2client.appengine.FlowProperty.data_type=oauth2client.appengine.FlowProperty-class.html#data_type"><a title="oauth2client.appengine.CredentialsProperty.data_type
+oauth2client.appengine.FlowProperty.data_type" class="py-name" href="#" onclick="return doclink('link-77', 'data_type', 'link-77');">data_type</a></tt> <tt class="py-op">=</tt> <tt id="link-78" class="py-name"><a title="oauth2client.client.Flow" class="py-name" href="#" onclick="return doclink('link-78', 'Flow', 'link-34');">Flow</a></tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">  <tt class="py-comment"># For writing to datastore.</tt> </tt>
+<a name="FlowProperty.get_value_for_datastore"></a><div id="FlowProperty.get_value_for_datastore-def"><a name="L195"></a><tt class="py-lineno">195</tt> <a class="py-toggle" href="#" id="FlowProperty.get_value_for_datastore-toggle" onclick="return toggle('FlowProperty.get_value_for_datastore');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#get_value_for_datastore">get_value_for_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">model_instance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FlowProperty.get_value_for_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.get_value_for_datastore-expanded"><a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">    <tt class="py-name">flow</tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-79" class="py-name" targets="Class oauth2client.appengine.FlowProperty=oauth2client.appengine.FlowProperty-class.html"><a title="oauth2client.appengine.FlowProperty" class="py-name" href="#" onclick="return doclink('link-79', 'FlowProperty', 'link-79');">FlowProperty</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">                 <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Method oauth2client.appengine.CredentialsProperty.get_value_for_datastore()=oauth2client.appengine.CredentialsProperty-class.html#get_value_for_datastore,Method oauth2client.appengine.FlowProperty.get_value_for_datastore()=oauth2client.appengine.FlowProperty-class.html#get_value_for_datastore"><a title="oauth2client.appengine.CredentialsProperty.get_value_for_datastore
+oauth2client.appengine.FlowProperty.get_value_for_datastore" class="py-name" href="#" onclick="return doclink('link-80', 'get_value_for_datastore', 'link-80');">get_value_for_datastore</a></tt><tt class="py-op">(</tt><tt class="py-name">model_instance</tt><tt class="py-op">)</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">Blob</tt><tt class="py-op">(</tt><tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">flow</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line"> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">  <tt class="py-comment"># For reading from datastore.</tt> </tt>
+<a name="FlowProperty.make_value_from_datastore"></a><div id="FlowProperty.make_value_from_datastore-def"><a name="L201"></a><tt class="py-lineno">201</tt> <a class="py-toggle" href="#" id="FlowProperty.make_value_from_datastore-toggle" onclick="return toggle('FlowProperty.make_value_from_datastore');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#make_value_from_datastore">make_value_from_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FlowProperty.make_value_from_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.make_value_from_datastore-expanded"><a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-81', 'loads', 'link-73');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"> </tt>
+<a name="FlowProperty.validate"></a><div id="FlowProperty.validate-def"><a name="L206"></a><tt class="py-lineno">206</tt> <a class="py-toggle" href="#" id="FlowProperty.validate-toggle" onclick="return toggle('FlowProperty.validate');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#validate">validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FlowProperty.validate-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.validate-expanded"><a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-82" class="py-name"><a title="oauth2client.client.Flow" class="py-name" href="#" onclick="return doclink('link-82', 'Flow', 'link-34');">Flow</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">BadValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Property %s must be convertible '</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">                          <tt class="py-string">'to a FlowThreeLegged instance (%s)'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">                          <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-83" class="py-name"><a title="oauth2client.appengine.FlowProperty" class="py-name" href="#" onclick="return doclink('link-83', 'FlowProperty', 'link-79');">FlowProperty</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name" targets="Method oauth2client.appengine.CredentialsProperty.validate()=oauth2client.appengine.CredentialsProperty-class.html#validate,Method oauth2client.appengine.FlowProperty.validate()=oauth2client.appengine.FlowProperty-class.html#validate"><a title="oauth2client.appengine.CredentialsProperty.validate
+oauth2client.appengine.FlowProperty.validate" class="py-name" href="#" onclick="return doclink('link-84', 'validate', 'link-84');">validate</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"> </tt>
+<a name="FlowProperty.empty"></a><div id="FlowProperty.empty-def"><a name="L213"></a><tt class="py-lineno">213</tt> <a class="py-toggle" href="#" id="FlowProperty.empty-toggle" onclick="return toggle('FlowProperty.empty');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#empty">empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FlowProperty.empty-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.empty-expanded"><a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-keyword">not</tt> <tt class="py-name">value</tt> </tt>
+</div></div><a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"> </tt>
+<a name="FlowNDBProperty"></a><div id="FlowNDBProperty-def"><a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <a class="py-toggle" href="#" id="FlowNDBProperty-toggle" onclick="return toggle('FlowNDBProperty');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.FlowNDBProperty-class.html">FlowNDBProperty</a><tt class="py-op">(</tt><tt class="py-base-class">ndb</tt><tt class="py-op">.</tt><tt class="py-base-class">PickleProperty</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FlowNDBProperty-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="FlowNDBProperty-expanded"><a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">  <tt class="py-docstring">"""App Engine NDB datastore Property for Flow.</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"><tt class="py-docstring">  Serves the same purpose as the DB FlowProperty, but for NDB models. Since</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"><tt class="py-docstring">  PickleProperty inherits from BlobProperty, the underlying representation of</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-docstring">  the data in the datastore will be the same as in the DB case.</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-docstring">  Utility property that allows easy storage and retrieval of an</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"><tt class="py-docstring">  oauth2client.Flow</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"> </tt>
+<a name="FlowNDBProperty._validate"></a><div id="FlowNDBProperty._validate-def"><a name="L228"></a><tt class="py-lineno">228</tt> <a class="py-toggle" href="#" id="FlowNDBProperty._validate-toggle" onclick="return toggle('FlowNDBProperty._validate');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowNDBProperty-class.html#_validate">_validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FlowNDBProperty._validate-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowNDBProperty._validate-expanded"><a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">    <tt class="py-docstring">"""Validates a value as a proper Flow object.</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"><tt class="py-docstring">      value: A value to be set on the property.</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-docstring">      TypeError if the value is not an instance of Flow.</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">    <tt id="link-85" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-82', 'logger', 'link-39');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"get: Got type "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">model_instance</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">    <tt class="py-name">cred</tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-83" class="py-name" targets="Class oauth2client.appengine.CredentialsProperty=oauth2client.appengine.CredentialsProperty-class.html"><a title="oauth2client.appengine.CredentialsProperty" class="py-name" href="#" onclick="return doclink('link-83', 'CredentialsProperty', 'link-83');">CredentialsProperty</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">                 <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="oauth2client.appengine.CredentialsProperty.get_value_for_datastore
-oauth2client.appengine.FlowProperty.get_value_for_datastore" class="py-name" href="#" onclick="return doclink('link-84', 'get_value_for_datastore', 'link-75');">get_value_for_datastore</a></tt><tt class="py-op">(</tt><tt class="py-name">model_instance</tt><tt class="py-op">)</tt> </tt>
-<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">cred</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">      <tt class="py-name">cred</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">      <tt class="py-name">cred</tt> <tt class="py-op">=</tt> <tt class="py-name">cred</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
-apiclient.http.MediaFileUpload.to_json
-apiclient.http.MediaIoBaseUpload.to_json
-apiclient.http.MediaUpload.to_json
-oauth2client.client.Credentials.to_json
-oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-85', 'to_json', 'link-85');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">Blob</tt><tt class="py-op">(</tt><tt class="py-name">cred</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"> </tt>
-<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">  <tt class="py-comment"># For reading from datastore.</tt> </tt>
-<a name="CredentialsProperty.make_value_from_datastore"></a><div id="CredentialsProperty.make_value_from_datastore-def"><a name="L220"></a><tt class="py-lineno">220</tt> <a class="py-toggle" href="#" id="CredentialsProperty.make_value_from_datastore-toggle" onclick="return toggle('CredentialsProperty.make_value_from_datastore');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html#make_value_from_datastore">make_value_from_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsProperty.make_value_from_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsProperty.make_value_from_datastore-expanded"><a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">    <tt id="link-86" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-85', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'validate: Got type %s'</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-86" class="py-name"><a title="oauth2client.client.Flow" class="py-name" href="#" onclick="return doclink('link-86', 'Flow', 'link-34');">Flow</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Property %s must be convertible to a flow '</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">                      <tt class="py-string">'instance; received: %s.'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"> </tt>
+<a name="CredentialsProperty"></a><div id="CredentialsProperty-def"><a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <a class="py-toggle" href="#" id="CredentialsProperty-toggle" onclick="return toggle('CredentialsProperty');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html">CredentialsProperty</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Property</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsProperty-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="CredentialsProperty-expanded"><a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">  <tt class="py-docstring">"""App Engine datastore Property for Credentials.</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"><tt class="py-docstring">  Utility property that allows easy storage and retrieval of</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"><tt class="py-docstring">  oath2client.Credentials</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">  <tt class="py-comment"># Tell what the user type is.</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">  <tt id="link-87" class="py-name"><a title="oauth2client.appengine.CredentialsProperty.data_type
+oauth2client.appengine.FlowProperty.data_type" class="py-name" href="#" onclick="return doclink('link-87', 'data_type', 'link-77');">data_type</a></tt> <tt class="py-op">=</tt> <tt id="link-88" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-88', 'Credentials', 'link-31');">Credentials</a></tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line"> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">  <tt class="py-comment"># For writing to datastore.</tt> </tt>
+<a name="CredentialsProperty.get_value_for_datastore"></a><div id="CredentialsProperty.get_value_for_datastore-def"><a name="L254"></a><tt class="py-lineno">254</tt> <a class="py-toggle" href="#" id="CredentialsProperty.get_value_for_datastore-toggle" onclick="return toggle('CredentialsProperty.get_value_for_datastore');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html#get_value_for_datastore">get_value_for_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">model_instance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsProperty.get_value_for_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsProperty.get_value_for_datastore-expanded"><a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">    <tt id="link-89" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-86', 'logger', 'link-39');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"make: Got type "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
-<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
-<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
-<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">      <tt id="link-87" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-87', 'credentials', 'link-87');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-88" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-88', 'Credentials', 'link-29');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-89" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
-oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-89', 'new_from_json', 'link-89');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
-<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
-<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">      <tt id="link-90" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-90', 'credentials', 'link-87');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-91" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-91', 'credentials', 'link-87');">credentials</a></tt> </tt>
-</div><a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"> </tt>
-<a name="CredentialsProperty.validate"></a><div id="CredentialsProperty.validate-def"><a name="L232"></a><tt class="py-lineno">232</tt> <a class="py-toggle" href="#" id="CredentialsProperty.validate-toggle" onclick="return toggle('CredentialsProperty.validate');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html#validate">validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsProperty.validate-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsProperty.validate-expanded"><a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">    <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-92" class="py-name"><a title="oauth2client.appengine.CredentialsProperty" class="py-name" href="#" onclick="return doclink('link-92', 'CredentialsProperty', 'link-83');">CredentialsProperty</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="oauth2client.appengine.CredentialsProperty.validate
-oauth2client.appengine.FlowProperty.validate" class="py-name" href="#" onclick="return doclink('link-93', 'validate', 'link-79');">validate</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
-<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">    <tt id="link-94" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-89', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"get: Got type "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">model_instance</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">    <tt class="py-name">cred</tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-90" class="py-name" targets="Class oauth2client.appengine.CredentialsProperty=oauth2client.appengine.CredentialsProperty-class.html"><a title="oauth2client.appengine.CredentialsProperty" class="py-name" href="#" onclick="return doclink('link-90', 'CredentialsProperty', 'link-90');">CredentialsProperty</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">                 <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="oauth2client.appengine.CredentialsProperty.get_value_for_datastore
+oauth2client.appengine.FlowProperty.get_value_for_datastore" class="py-name" href="#" onclick="return doclink('link-91', 'get_value_for_datastore', 'link-80');">get_value_for_datastore</a></tt><tt class="py-op">(</tt><tt class="py-name">model_instance</tt><tt class="py-op">)</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">cred</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">      <tt class="py-name">cred</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line">      <tt class="py-name">cred</tt> <tt class="py-op">=</tt> <tt class="py-name">cred</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
+apiclient.http.MediaFileUpload.to_json
+apiclient.http.MediaIoBaseUpload.to_json
+apiclient.http.MediaUpload.to_json
+oauth2client.client.Credentials.to_json
+oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-92', 'to_json', 'link-92');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">Blob</tt><tt class="py-op">(</tt><tt class="py-name">cred</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line"> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">  <tt class="py-comment"># For reading from datastore.</tt> </tt>
+<a name="CredentialsProperty.make_value_from_datastore"></a><div id="CredentialsProperty.make_value_from_datastore-def"><a name="L265"></a><tt class="py-lineno">265</tt> <a class="py-toggle" href="#" id="CredentialsProperty.make_value_from_datastore-toggle" onclick="return toggle('CredentialsProperty.make_value_from_datastore');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html#make_value_from_datastore">make_value_from_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsProperty.make_value_from_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsProperty.make_value_from_datastore-expanded"><a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">    <tt id="link-93" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-94', 'logger', 'link-39');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"validate: Got type "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-95" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-95', 'Credentials', 'link-29');">Credentials</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">BadValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Property %s must be convertible '</tt> </tt>
-<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">                          <tt class="py-string">'to a Credentials instance (%s)'</tt> <tt class="py-op">%</tt> </tt>
-<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">                            <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">    <tt class="py-comment">#if value is not None and not isinstance(value, Credentials):</tt> </tt>
-<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">    <tt class="py-comment">#  return None</tt> </tt>
-<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt>
-</div></div><a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"> </tt>
-<a name="StorageByKeyName"></a><div id="StorageByKeyName-def"><a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line"> </tt>
-<a name="L244"></a><tt class="py-lineno">244</tt> <a class="py-toggle" href="#" id="StorageByKeyName-toggle" onclick="return toggle('StorageByKeyName');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a><tt class="py-op">(</tt><tt class="py-base-class">Storage</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="StorageByKeyName-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="StorageByKeyName-expanded"><a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">  <tt class="py-docstring">"""Store and retrieve a single credential to and from</tt> </tt>
-<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"><tt class="py-docstring">  the App Engine datastore.</tt> </tt>
-<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line"><tt class="py-docstring">  This Storage helper presumes the Credentials</tt> </tt>
-<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"><tt class="py-docstring">  have been stored as a CredenialsProperty</tt> </tt>
-<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"><tt class="py-docstring">  on a datastore model class, and that entities</tt> </tt>
-<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"><tt class="py-docstring">  are stored by key_name.</tt> </tt>
-<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line"> </tt>
-<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-96', 'positional', 'link-65');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="StorageByKeyName.__init__"></a><div id="StorageByKeyName.__init__-def"><a name="L255"></a><tt class="py-lineno">255</tt> <a class="py-toggle" href="#" id="StorageByKeyName.__init__-toggle" onclick="return toggle('StorageByKeyName.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">model</tt><tt class="py-op">,</tt> <tt class="py-param">key_name</tt><tt class="py-op">,</tt> <tt class="py-param">property_name</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="StorageByKeyName.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.__init__-expanded"><a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for Storage.</tt> </tt>
-<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line"><tt class="py-docstring">      model: db.Model, model class</tt> </tt>
-<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line"><tt class="py-docstring">      key_name: string, key name for the entity that has the credentials</tt> </tt>
-<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"><tt class="py-docstring">      property_name: string, name of the property that is a CredentialsProperty</tt> </tt>
-<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"><tt class="py-docstring">      cache: memcache, a write-through cache to put in front of the datastore</tt> </tt>
-<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> <tt class="py-op">=</tt> <tt id="link-97" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-97', 'model', 'link-48');">model</a></tt> </tt>
-<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt> <tt class="py-op">=</tt> <tt class="py-name">key_name</tt> </tt>
-<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_property_name</tt> <tt class="py-op">=</tt> <tt class="py-name">property_name</tt> </tt>
-<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt> <tt class="py-op">=</tt> <tt class="py-name">cache</tt> </tt>
-</div><a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line"> </tt>
-<a name="StorageByKeyName.locked_get"></a><div id="StorageByKeyName.locked_get-def"><a name="L269"></a><tt class="py-lineno">269</tt> <a class="py-toggle" href="#" id="StorageByKeyName.locked_get-toggle" onclick="return toggle('StorageByKeyName.locked_get');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#locked_get">locked_get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="StorageByKeyName.locked_get-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.locked_get-expanded"><a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line">    <tt class="py-docstring">"""Retrieve Credential from datastore.</tt> </tt>
-<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-docstring">      oauth2client.Credentials</tt> </tt>
-<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
-<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">      <tt class="py-name">json</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="apiclient.schema.Schemas.get
-oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-98', 'get', 'link-44');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">json</tt><tt class="py-op">:</tt> </tt>
-<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-99" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-99', 'Credentials', 'link-29');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="apiclient.http.MediaUpload.new_from_json
-oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-100', 'new_from_json', 'link-89');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">json</tt><tt class="py-op">)</tt> </tt>
-<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line"> </tt>
-<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">    <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">    <tt class="py-name">entity</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">.</tt><tt class="py-name">get_by_key_name</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">entity</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">      <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">entity</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_property_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">credential</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">credential</tt><tt class="py-op">,</tt> <tt class="py-string">'set_store'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">        <tt class="py-name">credential</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-101', 'set_store', 'link-101');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
-<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
-<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name" targets="Method oauth2client.client.MemoryCache.set()=oauth2client.client.MemoryCache-class.html#set"><a title="oauth2client.client.MemoryCache.set" class="py-name" href="#" onclick="return doclink('link-102', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">,</tt> <tt class="py-name">credential</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="apiclient.http.HttpRequest.to_json
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-93', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"make: Got type "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line">      <tt id="link-94" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-94', 'credentials', 'link-94');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-95" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-95', 'Credentials', 'link-31');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
+oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-96', 'new_from_json', 'link-96');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line">      <tt id="link-97" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-97', 'credentials', 'link-94');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-98" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-98', 'credentials', 'link-94');">credentials</a></tt> </tt>
+</div><a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line"> </tt>
+<a name="CredentialsProperty.validate"></a><div id="CredentialsProperty.validate-def"><a name="L277"></a><tt class="py-lineno">277</tt> <a class="py-toggle" href="#" id="CredentialsProperty.validate-toggle" onclick="return toggle('CredentialsProperty.validate');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html#validate">validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsProperty.validate-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsProperty.validate-expanded"><a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">    <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-99" class="py-name"><a title="oauth2client.appengine.CredentialsProperty" class="py-name" href="#" onclick="return doclink('link-99', 'CredentialsProperty', 'link-90');">CredentialsProperty</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="oauth2client.appengine.CredentialsProperty.validate
+oauth2client.appengine.FlowProperty.validate" class="py-name" href="#" onclick="return doclink('link-100', 'validate', 'link-84');">validate</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">    <tt id="link-101" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.appengine.logger
+oauth2client.client.logger
+oauth2client.crypt.logger
+oauth2client.gce.logger
+oauth2client.locked_file.logger
+oauth2client.multistore_file.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-101', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"validate: Got type "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-102" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-102', 'Credentials', 'link-31');">Credentials</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">BadValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Property %s must be convertible '</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">                          <tt class="py-string">'to a Credentials instance (%s)'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">                            <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">    <tt class="py-comment">#if value is not None and not isinstance(value, Credentials):</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">    <tt class="py-comment">#  return None</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt>
+</div></div><a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line"> </tt>
+<a name="CredentialsNDBProperty"></a><div id="CredentialsNDBProperty-def"><a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line"> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line"><tt class="py-comment"># TODO(dhermes): Turn this into a JsonProperty and overhaul the Credentials</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line"><tt class="py-comment">#                and subclass mechanics to use new_from_dict, to_dict,</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line"><tt class="py-comment">#                from_dict, etc.</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt> <a class="py-toggle" href="#" id="CredentialsNDBProperty-toggle" onclick="return toggle('CredentialsNDBProperty');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBProperty-class.html">CredentialsNDBProperty</a><tt class="py-op">(</tt><tt class="py-base-class">ndb</tt><tt class="py-op">.</tt><tt class="py-base-class">BlobProperty</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsNDBProperty-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="CredentialsNDBProperty-expanded"><a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">  <tt class="py-docstring">"""App Engine NDB datastore Property for Credentials.</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line"><tt class="py-docstring">  Serves the same purpose as the DB CredentialsProperty, but for NDB models.</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line"><tt class="py-docstring">  Since CredentialsProperty stores data as a blob and this inherits from</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line"><tt class="py-docstring">  BlobProperty, the data in the datastore will be the same as in the DB case.</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line"><tt class="py-docstring">  Utility property that allows easy storage and retrieval of Credentials and</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line"><tt class="py-docstring">  subclasses.</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="CredentialsNDBProperty._validate"></a><div id="CredentialsNDBProperty._validate-def"><a name="L302"></a><tt class="py-lineno">302</tt> <a class="py-toggle" href="#" id="CredentialsNDBProperty._validate-toggle" onclick="return toggle('CredentialsNDBProperty._validate');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBProperty-class.html#_validate">_validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsNDBProperty._validate-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsNDBProperty._validate-expanded"><a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">    <tt class="py-docstring">"""Validates a value as a proper credentials object.</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line"><tt class="py-docstring">      value: A value to be set on the property.</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line"><tt class="py-docstring">      TypeError if the value is not an instance of Credentials.</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">    <tt id="link-103" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.appengine.logger
+oauth2client.client.logger
+oauth2client.crypt.logger
+oauth2client.gce.logger
+oauth2client.locked_file.logger
+oauth2client.multistore_file.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-103', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'validate: Got type %s'</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-104" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-104', 'Credentials', 'link-31');">Credentials</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Property %s must be convertible to a credentials '</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">                      <tt class="py-string">'instance; received: %s.'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line"> </tt>
+<a name="CredentialsNDBProperty._to_base_type"></a><div id="CredentialsNDBProperty._to_base_type-def"><a name="L316"></a><tt class="py-lineno">316</tt> <a class="py-toggle" href="#" id="CredentialsNDBProperty._to_base_type-toggle" onclick="return toggle('CredentialsNDBProperty._to_base_type');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBProperty-class.html#_to_base_type">_to_base_type</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsNDBProperty._to_base_type-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsNDBProperty._to_base_type-expanded"><a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">    <tt class="py-docstring">"""Converts our validated value to a JSON serialized string.</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line"><tt class="py-docstring">      value: A value to be set in the datastore.</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line"><tt class="py-docstring">      A JSON serialized version of the credential, else '' if value is None.</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="apiclient.http.HttpRequest.to_json
 apiclient.http.MediaFileUpload.to_json
 apiclient.http.MediaIoBaseUpload.to_json
 apiclient.http.MediaUpload.to_json
 oauth2client.client.Credentials.to_json
-oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-103', 'to_json', 'link-85');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line"> </tt>
-<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">credential</tt> </tt>
-</div><a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line"> </tt>
-<a name="StorageByKeyName.locked_put"></a><div id="StorageByKeyName.locked_put-def"><a name="L291"></a><tt class="py-lineno">291</tt> <a class="py-toggle" href="#" id="StorageByKeyName.locked_put-toggle" onclick="return toggle('StorageByKeyName.locked_put');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#locked_put">locked_put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="StorageByKeyName.locked_put-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.locked_put-expanded"><a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line">    <tt class="py-docstring">"""Write a Credentials to the datastore.</tt> </tt>
-<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line"><tt class="py-docstring">      credentials: Credentials, the credentials to store.</tt> </tt>
-<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">    <tt class="py-name">entity</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">.</tt><tt class="py-name">get_or_insert</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">entity</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_property_name</tt><tt class="py-op">,</tt> <tt id="link-104" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-104', 'credentials', 'link-87');">credentials</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">    <tt class="py-name">entity</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-105', 'put', 'link-56');">put</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
-<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="oauth2client.client.MemoryCache.set" class="py-name" href="#" onclick="return doclink('link-106', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">,</tt> <tt id="link-107" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-107', 'credentials', 'link-87');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="apiclient.http.HttpRequest.to_json
-apiclient.http.MediaFileUpload.to_json
-apiclient.http.MediaIoBaseUpload.to_json
-apiclient.http.MediaUpload.to_json
-oauth2client.client.Credentials.to_json
-oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-108', 'to_json', 'link-85');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line"> </tt>
-<a name="StorageByKeyName.locked_delete"></a><div id="StorageByKeyName.locked_delete-def"><a name="L303"></a><tt class="py-lineno">303</tt> <a class="py-toggle" href="#" id="StorageByKeyName.locked_delete-toggle" onclick="return toggle('StorageByKeyName.locked_delete');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#locked_delete">locked_delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="StorageByKeyName.locked_delete-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.locked_delete-expanded"><a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">    <tt class="py-docstring">"""Delete Credential from datastore."""</tt> </tt>
-<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line"> </tt>
-<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
-<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Method oauth2client.client.MemoryCache.delete()=oauth2client.client.MemoryCache-class.html#delete,Method oauth2client.client.Storage.delete()=oauth2client.client.Storage-class.html#delete"><a title="oauth2client.client.MemoryCache.delete
-oauth2client.client.Storage.delete" class="py-name" href="#" onclick="return doclink('link-109', 'delete', 'link-109');">delete</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line"> </tt>
-<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">    <tt class="py-name">entity</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">.</tt><tt class="py-name">get_by_key_name</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">entity</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">      <tt class="py-name">entity</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="oauth2client.client.MemoryCache.delete
-oauth2client.client.Storage.delete" class="py-name" href="#" onclick="return doclink('link-110', 'delete', 'link-109');">delete</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line"> </tt>
-<a name="CredentialsModel"></a><div id="CredentialsModel-def"><a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line"> </tt>
-<a name="L314"></a><tt class="py-lineno">314</tt> <a class="py-toggle" href="#" id="CredentialsModel-toggle" onclick="return toggle('CredentialsModel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsModel-class.html">CredentialsModel</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsModel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="CredentialsModel-expanded"><a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">  <tt class="py-docstring">"""Storage for OAuth 2.0 Credentials</tt> </tt>
-<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line"><tt class="py-docstring">  Storage of the model is keyed by the user.user_id().</tt> </tt>
-<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line">  <tt id="link-111" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-111', 'credentials', 'link-87');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-112" class="py-name"><a title="oauth2client.appengine.CredentialsProperty" class="py-name" href="#" onclick="return doclink('link-112', 'CredentialsProperty', 'link-83');">CredentialsProperty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line"> </tt>
-<a name="_build_state_value"></a><div id="_build_state_value-def"><a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line"> </tt>
-<a name="L322"></a><tt class="py-lineno">322</tt> <a class="py-toggle" href="#" id="_build_state_value-toggle" onclick="return toggle('_build_state_value');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_build_state_value">_build_state_value</a><tt class="py-op">(</tt><tt class="py-param">request_handler</tt><tt class="py-op">,</tt> <tt class="py-param">user</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_build_state_value-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_build_state_value-expanded"><a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">  <tt class="py-docstring">"""Composes the value for the 'state' parameter.</tt> </tt>
-<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line"><tt class="py-docstring">  Packs the current request URI and an XSRF token into an opaque string that</tt> </tt>
-<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line"><tt class="py-docstring">  can be passed to the authentication server via the 'state' parameter.</tt> </tt>
-<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line"><tt class="py-docstring">    request_handler: webapp.RequestHandler, The request.</tt> </tt>
-<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line"><tt class="py-docstring">    user: google.appengine.api.users.User, The current user.</tt> </tt>
-<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line"><tt class="py-docstring">    The state value as a string.</tt> </tt>
-<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line">  <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Method apiclient.http.HttpMock.request()=apiclient.http.HttpMock-class.html#request,Method apiclient.http.HttpMockSequence.request()=apiclient.http.HttpMockSequence-class.html#request,Method apiclient.model.BaseModel.request()=apiclient.model.BaseModel-class.html#request,Method apiclient.model.Model.request()=apiclient.model.Model-class.html#request"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-113', 'request', 'link-113');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">url</tt> </tt>
-<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line">  <tt class="py-name">token</tt> <tt class="py-op">=</tt> <tt id="link-114" class="py-name"><a title="oauth2client.xsrfutil" class="py-name" href="#" onclick="return doclink('link-114', 'xsrfutil', 'link-18');">xsrfutil</a></tt><tt class="py-op">.</tt><tt id="link-115" class="py-name" targets="Function oauth2client.xsrfutil.generate_token()=oauth2client.xsrfutil-module.html#generate_token"><a title="oauth2client.xsrfutil.generate_token" class="py-name" href="#" onclick="return doclink('link-115', 'generate_token', 'link-115');">generate_token</a></tt><tt class="py-op">(</tt><tt id="link-116" class="py-name" targets="Function oauth2client.appengine.xsrf_secret_key()=oauth2client.appengine-module.html#xsrf_secret_key"><a title="oauth2client.appengine.xsrf_secret_key" class="py-name" href="#" onclick="return doclink('link-116', 'xsrf_secret_key', 'link-116');">xsrf_secret_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">                                  <tt class="py-name">action_id</tt><tt class="py-op">=</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt>  <tt class="py-name">uri</tt> <tt class="py-op">+</tt> <tt class="py-string">':'</tt> <tt class="py-op">+</tt> <tt class="py-name">token</tt> </tt>
-</div><a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line"> </tt>
-<a name="_parse_state_value"></a><div id="_parse_state_value-def"><a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line"> </tt>
-<a name="L341"></a><tt class="py-lineno">341</tt> <a class="py-toggle" href="#" id="_parse_state_value-toggle" onclick="return toggle('_parse_state_value');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_parse_state_value">_parse_state_value</a><tt class="py-op">(</tt><tt class="py-param">state</tt><tt class="py-op">,</tt> <tt class="py-param">user</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_parse_state_value-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_parse_state_value-expanded"><a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">  <tt class="py-docstring">"""Parse the value of the 'state' parameter.</tt> </tt>
-<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line"><tt class="py-docstring">  Parses the value and validates the XSRF token in the state parameter.</tt> </tt>
-<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line"><tt class="py-docstring">    state: string, The value of the state parameter.</tt> </tt>
-<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line"><tt class="py-docstring">    user: google.appengine.api.users.User, The current user.</tt> </tt>
-<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line"><tt class="py-docstring">  Raises:</tt> </tt>
-<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line"><tt class="py-docstring">    InvalidXsrfTokenError: if the XSRF token is invalid.</tt> </tt>
+oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-105', 'to_json', 'link-92');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line"> </tt>
+<a name="CredentialsNDBProperty._from_base_type"></a><div id="CredentialsNDBProperty._from_base_type-def"><a name="L330"></a><tt class="py-lineno">330</tt> <a class="py-toggle" href="#" id="CredentialsNDBProperty._from_base_type-toggle" onclick="return toggle('CredentialsNDBProperty._from_base_type');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBProperty-class.html#_from_base_type">_from_base_type</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsNDBProperty._from_base_type-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsNDBProperty._from_base_type-expanded"><a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">    <tt class="py-docstring">"""Converts our stored JSON string back to the desired type.</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line"><tt class="py-docstring">      value: A value from the datastore to be converted to the desired type.</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line"><tt class="py-docstring">      A deserialized Credentials (or subclass) object, else None if the</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line"><tt class="py-docstring">          value can't be parsed.</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">value</tt><tt class="py-op">:</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line">      <tt class="py-comment"># Uses the from_json method of the implied class of value</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line">      <tt id="link-106" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-106', 'credentials', 'link-94');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-107" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-107', 'Credentials', 'link-31');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="apiclient.http.MediaUpload.new_from_json
+oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-108', 'new_from_json', 'link-96');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">      <tt id="link-109" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-109', 'credentials', 'link-94');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-110" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-110', 'credentials', 'link-94');">credentials</a></tt> </tt>
+</div></div><a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line"> </tt>
+<a name="StorageByKeyName"></a><div id="StorageByKeyName-def"><a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line"> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt> <a class="py-toggle" href="#" id="StorageByKeyName-toggle" onclick="return toggle('StorageByKeyName');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a><tt class="py-op">(</tt><tt class="py-base-class">Storage</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="StorageByKeyName-expanded"><a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">  <tt class="py-docstring">"""Store and retrieve a credential to and from the App Engine datastore.</tt> </tt>
 <a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line"><tt class="py-docstring">    The redirect URI.</tt> </tt>
-<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">  <tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt> <tt class="py-op">=</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">rsplit</tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-117" class="py-name"><a title="oauth2client.xsrfutil" class="py-name" href="#" onclick="return doclink('link-117', 'xsrfutil', 'link-18');">xsrfutil</a></tt><tt class="py-op">.</tt><tt id="link-118" class="py-name" targets="Function oauth2client.xsrfutil.validate_token()=oauth2client.xsrfutil-module.html#validate_token"><a title="oauth2client.xsrfutil.validate_token" class="py-name" href="#" onclick="return doclink('link-118', 'validate_token', 'link-118');">validate_token</a></tt><tt class="py-op">(</tt><tt id="link-119" class="py-name"><a title="oauth2client.appengine.xsrf_secret_key" class="py-name" href="#" onclick="return doclink('link-119', 'xsrf_secret_key', 'link-116');">xsrf_secret_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line">                                 <tt class="py-name">action_id</tt><tt class="py-op">=</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-120" class="py-name" targets="Class oauth2client.appengine.InvalidXsrfTokenError=oauth2client.appengine.InvalidXsrfTokenError-class.html"><a title="oauth2client.appengine.InvalidXsrfTokenError" class="py-name" href="#" onclick="return doclink('link-120', 'InvalidXsrfTokenError', 'link-120');">InvalidXsrfTokenError</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line"> </tt>
-<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">uri</tt> </tt>
-</div><a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Decorator"></a><div id="OAuth2Decorator-def"><a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line"> </tt>
-<a name="L364"></a><tt class="py-lineno">364</tt> <a class="py-toggle" href="#" id="OAuth2Decorator-toggle" onclick="return toggle('OAuth2Decorator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="OAuth2Decorator-expanded"><a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">  <tt class="py-docstring">"""Utility for making OAuth 2.0 easier.</tt> </tt>
-<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line"><tt class="py-docstring">  Instantiate and then use with oauth_required or oauth_aware</tt> </tt>
-<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line"><tt class="py-docstring">  as decorators on webapp.RequestHandler methods.</tt> </tt>
-<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
-<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line"><tt class="py-docstring">    decorator = OAuth2Decorator(</tt> </tt>
-<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line"><tt class="py-docstring">        client_id='837...ent.com',</tt> </tt>
-<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line"><tt class="py-docstring">        client_secret='Qh...wwI',</tt> </tt>
-<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line"><tt class="py-docstring">        scope='https://www.googleapis.com/auth/plus')</tt> </tt>
-<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line"><tt class="py-docstring">    class MainHandler(webapp.RequestHandler):</tt> </tt>
-<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line"><tt class="py-docstring">      @decorator.oauth_required</tt> </tt>
-<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line"><tt class="py-docstring">      def get(self):</tt> </tt>
-<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line"><tt class="py-docstring">        http = decorator.http()</tt> </tt>
-<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line"><tt class="py-docstring">        # http is authorized with the user's Credentials and can be used</tt> </tt>
-<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line"><tt class="py-docstring">        # in API calls</tt> </tt>
-<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line"> </tt>
-<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-121', 'positional', 'link-65');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="OAuth2Decorator.__init__"></a><div id="OAuth2Decorator.__init__-def"><a name="L389"></a><tt class="py-lineno">389</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.__init__-toggle" onclick="return toggle('OAuth2Decorator.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">client_secret</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
-<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line">               <tt class="py-param">auth_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/auth'</tt><tt class="py-op">,</tt> </tt>
-<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line">               <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/token'</tt><tt class="py-op">,</tt> </tt>
-<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">               <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">               <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line">               <tt class="py-param">callback_path</tt><tt class="py-op">=</tt><tt class="py-string">'/oauth2callback'</tt><tt class="py-op">,</tt> </tt>
-<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">               <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.__init__-expanded"><a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line"> </tt>
-<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for OAuth2Decorator</tt> </tt>
-<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line"><tt class="py-docstring">      client_id: string, client identifier.</tt> </tt>
-<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line"><tt class="py-docstring">      client_secret: string client secret.</tt> </tt>
-<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line"><tt class="py-docstring">      scope: string or list of strings, scope(s) of the credentials being</tt> </tt>
-<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line"><tt class="py-docstring">        requested.</tt> </tt>
-<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line"><tt class="py-docstring">      auth_uri: string, URI for authorization endpoint. For convenience</tt> </tt>
-<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line"><tt class="py-docstring">        defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
-<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line"><tt class="py-docstring">      token_uri: string, URI for token endpoint. For convenience</tt> </tt>
-<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line"><tt class="py-docstring">        defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
-<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line"><tt class="py-docstring">      user_agent: string, User agent of your application, default to None.</tt> </tt>
-<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line"><tt class="py-docstring">      message: Message to display if there are problems with the OAuth 2.0</tt> </tt>
-<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line"><tt class="py-docstring">        configuration. The message may contain HTML and will be presented on the</tt> </tt>
-<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line"><tt class="py-docstring">        web interface for any method that uses the decorator.</tt> </tt>
-<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line"><tt class="py-docstring">      callback_path: string, The absolute path to use as the callback URI. Note</tt> </tt>
-<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line"><tt class="py-docstring">        that this must match up with the URI given when registering the</tt> </tt>
-<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line"><tt class="py-docstring">        application in the APIs Console.</tt> </tt>
-<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line"><tt class="py-docstring">      **kwargs: dict, Keyword arguments are be passed along as kwargs to the</tt> </tt>
-<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line"><tt class="py-docstring">        OAuth2WebServerFlow constructor.</tt> </tt>
-<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-122', 'credentials', 'link-87');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_id</tt> <tt class="py-op">=</tt> <tt class="py-name">client_id</tt> </tt>
-<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_secret</tt> <tt class="py-op">=</tt> <tt class="py-name">client_secret</tt> </tt>
-<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_scope</tt> <tt class="py-op">=</tt> <tt class="py-name">scope</tt> </tt>
-<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_auth_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">auth_uri</tt> </tt>
-<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">token_uri</tt> </tt>
-<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_user_agent</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
-<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_kwargs</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt> </tt>
-<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt> </tt>
-<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback_path</tt> <tt class="py-op">=</tt> <tt id="link-123" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.callback_path()=oauth2client.appengine.OAuth2Decorator-class.html#callback_path"><a title="oauth2client.appengine.OAuth2Decorator.callback_path" class="py-name" href="#" onclick="return doclink('link-123', 'callback_path', 'link-123');">callback_path</a></tt> </tt>
-</div><a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Decorator._display_error_message"></a><div id="OAuth2Decorator._display_error_message-def"><a name="L431"></a><tt class="py-lineno">431</tt> <a class="py-toggle" href="#" id="OAuth2Decorator._display_error_message-toggle" onclick="return toggle('OAuth2Decorator._display_error_message');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#_display_error_message">_display_error_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request_handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator._display_error_message-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator._display_error_message-expanded"><a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">    <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name" targets="Method apiclient.model.BaseModel.response()=apiclient.model.BaseModel-class.html#response,Method apiclient.model.Model.response()=apiclient.model.Model-class.html#response"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-124', 'response', 'link-124');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;html&gt;&lt;body&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line">    <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-125', 'response', 'link-124');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt id="link-126" class="py-name" targets="Function oauth2client.appengine._safe_html()=oauth2client.appengine-module.html#_safe_html"><a title="oauth2client.appengine._safe_html" class="py-name" href="#" onclick="return doclink('link-126', '_safe_html', 'link-126');">_safe_html</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line">    <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-127', 'response', 'link-124');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;/body&gt;&lt;/html&gt;'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Decorator.oauth_required"></a><div id="OAuth2Decorator.oauth_required-def"><a name="L436"></a><tt class="py-lineno">436</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.oauth_required-toggle" onclick="return toggle('OAuth2Decorator.oauth_required');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_required">oauth_required</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.oauth_required-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.oauth_required-expanded"><a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line">    <tt class="py-docstring">"""Decorator that starts the OAuth 2.0 dance.</tt> </tt>
-<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line"><tt class="py-docstring">    Starts the OAuth dance for the logged in user if they haven't already</tt> </tt>
-<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line"><tt class="py-docstring">    granted access for this application.</tt> </tt>
-<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line"><tt class="py-docstring">      method: callable, to be decorated method of a webapp.RequestHandler</tt> </tt>
-<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line"><tt class="py-docstring">        instance.</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line"><tt class="py-docstring">  This Storage helper presumes the Credentials have been stored as a</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line"><tt class="py-docstring">  CredentialsProperty or CredentialsNDBProperty on a datastore model class, and</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line"><tt class="py-docstring">  that entities are stored by key_name.</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line"> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-111', 'positional', 'link-68');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="StorageByKeyName.__init__"></a><div id="StorageByKeyName.__init__-def"><a name="L359"></a><tt class="py-lineno">359</tt> <a class="py-toggle" href="#" id="StorageByKeyName.__init__-toggle" onclick="return toggle('StorageByKeyName.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">model</tt><tt class="py-op">,</tt> <tt class="py-param">key_name</tt><tt class="py-op">,</tt> <tt class="py-param">property_name</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.__init__-expanded"><a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for Storage.</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line"><tt class="py-docstring">      model: db.Model or ndb.Model, model class</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line"><tt class="py-docstring">      key_name: string, key name for the entity that has the credentials</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line"><tt class="py-docstring">      property_name: string, name of the property that is a CredentialsProperty</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line"><tt class="py-docstring">        or CredentialsNDBProperty.</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line"><tt class="py-docstring">      cache: memcache, a write-through cache to put in front of the datastore.</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line"><tt class="py-docstring">        If the model you are using is an NDB model, using a cache will be</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line"><tt class="py-docstring">        redundant since the model uses an instance cache and memcache for you.</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> <tt class="py-op">=</tt> <tt id="link-112" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-112', 'model', 'link-51');">model</a></tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt> <tt class="py-op">=</tt> <tt class="py-name">key_name</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_property_name</tt> <tt class="py-op">=</tt> <tt class="py-name">property_name</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt> <tt class="py-op">=</tt> <tt class="py-name">cache</tt> </tt>
+</div><a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line"> </tt>
+<a name="StorageByKeyName._is_ndb"></a><div id="StorageByKeyName._is_ndb-def"><a name="L376"></a><tt class="py-lineno">376</tt> <a class="py-toggle" href="#" id="StorageByKeyName._is_ndb-toggle" onclick="return toggle('StorageByKeyName._is_ndb');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#_is_ndb">_is_ndb</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName._is_ndb-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName._is_ndb-expanded"><a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">    <tt class="py-docstring">"""Determine whether the model of the instance is an NDB model.</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line"><tt class="py-docstring">      Boolean indicating whether or not the model is an NDB or DB model.</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line">    <tt class="py-comment"># issubclass will fail if one of the arguments is not a class, only need</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">    <tt class="py-comment"># worry about new-style classes since ndb and db models are new-style</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt class="py-name">ndb</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Class apiclient.model.Model=apiclient.model.Model-class.html"><a title="apiclient.model.Model" class="py-name" href="#" onclick="return doclink('link-113', 'Model', 'link-113');">Model</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line">      <tt class="py-keyword">elif</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="apiclient.model.Model" class="py-name" href="#" onclick="return doclink('link-114', 'Model', 'link-113');">Model</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line"> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Model class not an NDB or DB model: %s.'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line"> </tt>
+<a name="StorageByKeyName._get_entity"></a><div id="StorageByKeyName._get_entity-def"><a name="L392"></a><tt class="py-lineno">392</tt> <a class="py-toggle" href="#" id="StorageByKeyName._get_entity-toggle" onclick="return toggle('StorageByKeyName._get_entity');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#_get_entity">_get_entity</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName._get_entity-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName._get_entity-expanded"><a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">    <tt class="py-docstring">"""Retrieve entity from datastore.</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line"><tt class="py-docstring">    Uses a different model method for db or ndb models.</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line"><tt class="py-docstring">      Instance of the model corresponding to the current storage object</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line"><tt class="py-docstring">          and stored using the key name of the storage object.</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name" targets="Method oauth2client.appengine.StorageByKeyName._is_ndb()=oauth2client.appengine.StorageByKeyName-class.html#_is_ndb"><a title="oauth2client.appengine.StorageByKeyName._is_ndb" class="py-name" href="#" onclick="return doclink('link-115', '_is_ndb', 'link-115');">_is_ndb</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">.</tt><tt class="py-name">get_by_id</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">.</tt><tt class="py-name">get_by_key_name</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line"> </tt>
+<a name="StorageByKeyName._delete_entity"></a><div id="StorageByKeyName._delete_entity-def"><a name="L406"></a><tt class="py-lineno">406</tt> <a class="py-toggle" href="#" id="StorageByKeyName._delete_entity-toggle" onclick="return toggle('StorageByKeyName._delete_entity');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#_delete_entity">_delete_entity</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName._delete_entity-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName._delete_entity-expanded"><a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">    <tt class="py-docstring">"""Delete entity from datastore.</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line"><tt class="py-docstring">    Attempts to delete using the key_name stored on the object, whether or not</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line"><tt class="py-docstring">    the given key is in the datastore.</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="oauth2client.appengine.StorageByKeyName._is_ndb" class="py-name" href="#" onclick="return doclink('link-116', '_is_ndb', 'link-115');">_is_ndb</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">      <tt class="py-name">ndb</tt><tt class="py-op">.</tt><tt class="py-name">Key</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name" targets="Method oauth2client.client.MemoryCache.delete()=oauth2client.client.MemoryCache-class.html#delete,Method oauth2client.client.Storage.delete()=oauth2client.client.Storage-class.html#delete"><a title="oauth2client.client.MemoryCache.delete
+oauth2client.client.Storage.delete" class="py-name" href="#" onclick="return doclink('link-117', 'delete', 'link-117');">delete</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">      <tt class="py-name">entity_key</tt> <tt class="py-op">=</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">Key</tt><tt class="py-op">.</tt><tt class="py-name">from_path</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">.</tt><tt class="py-name">kind</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line">      <tt class="py-name">db</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="oauth2client.client.MemoryCache.delete
+oauth2client.client.Storage.delete" class="py-name" href="#" onclick="return doclink('link-118', 'delete', 'link-117');">delete</a></tt><tt class="py-op">(</tt><tt class="py-name">entity_key</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line"> </tt>
+<a name="StorageByKeyName.locked_get"></a><div id="StorageByKeyName.locked_get-def"><a name="L418"></a><tt class="py-lineno">418</tt> <a class="py-toggle" href="#" id="StorageByKeyName.locked_get-toggle" onclick="return toggle('StorageByKeyName.locked_get');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#locked_get">locked_get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName.locked_get-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.locked_get-expanded"><a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line">    <tt class="py-docstring">"""Retrieve Credential from datastore.</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line"><tt class="py-docstring">      oauth2client.Credentials</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line">      <tt class="py-name">json</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-119', 'get', 'link-47');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">json</tt><tt class="py-op">:</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-120" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-120', 'Credentials', 'link-31');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="apiclient.http.MediaUpload.new_from_json
+oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-121', 'new_from_json', 'link-96');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">json</tt><tt class="py-op">)</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line"> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line">    <tt id="link-122" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-122', 'credentials', 'link-94');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">    <tt class="py-name">entity</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name" targets="Method oauth2client.appengine.StorageByKeyName._get_entity()=oauth2client.appengine.StorageByKeyName-class.html#_get_entity"><a title="oauth2client.appengine.StorageByKeyName._get_entity" class="py-name" href="#" onclick="return doclink('link-123', '_get_entity', 'link-123');">_get_entity</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">entity</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">      <tt id="link-124" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-124', 'credentials', 'link-94');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">entity</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_property_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt id="link-125" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-125', 'credentials', 'link-94');">credentials</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-126" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-126', 'credentials', 'link-94');">credentials</a></tt><tt class="py-op">,</tt> <tt class="py-string">'set_store'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line">        <tt id="link-127" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-127', 'credentials', 'link-94');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-128', 'set_store', 'link-128');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name" targets="Method oauth2client.client.MemoryCache.set()=oauth2client.client.MemoryCache-class.html#set"><a title="oauth2client.client.MemoryCache.set" class="py-name" href="#" onclick="return doclink('link-129', 'set', 'link-129');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">,</tt> <tt id="link-130" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-130', 'credentials', 'link-94');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="apiclient.http.HttpRequest.to_json
+apiclient.http.MediaFileUpload.to_json
+apiclient.http.MediaIoBaseUpload.to_json
+apiclient.http.MediaUpload.to_json
+oauth2client.client.Credentials.to_json
+oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-131', 'to_json', 'link-92');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line"> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-132" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-132', 'credentials', 'link-94');">credentials</a></tt> </tt>
+</div><a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line"> </tt>
+<a name="StorageByKeyName.locked_put"></a><div id="StorageByKeyName.locked_put-def"><a name="L440"></a><tt class="py-lineno">440</tt> <a class="py-toggle" href="#" id="StorageByKeyName.locked_put-toggle" onclick="return toggle('StorageByKeyName.locked_put');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#locked_put">locked_put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName.locked_put-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.locked_put-expanded"><a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line">    <tt class="py-docstring">"""Write a Credentials to the datastore.</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line"><tt class="py-docstring">      credentials: Credentials, the credentials to store.</tt> </tt>
 <a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line"> </tt>
-<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">check_oauth</tt><tt class="py-op">(</tt><tt class="py-param">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error</tt><tt class="py-op">:</tt> </tt>
-<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator._display_error_message()=oauth2client.appengine.OAuth2Decorator-class.html#_display_error_message"><a title="oauth2client.appengine.OAuth2Decorator._display_error_message" class="py-name" href="#" onclick="return doclink('link-128', '_display_error_message', 'link-128');">_display_error_message</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
-<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
-<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line"> </tt>
-<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line">      <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">get_current_user</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line">      <tt class="py-comment"># Don't use @login_decorator as this could be used in a POST request.</tt> </tt>
-<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">user</tt><tt class="py-op">:</tt> </tt>
-<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line">        <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">create_login_url</tt><tt class="py-op">(</tt> </tt>
-<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line">            <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-129', 'request', 'link-113');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
-<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line"> </tt>
-<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator._create_flow()=oauth2client.appengine.OAuth2Decorator-class.html#_create_flow"><a title="oauth2client.appengine.OAuth2Decorator._create_flow" class="py-name" href="#" onclick="return doclink('link-130', '_create_flow', 'link-130');">_create_flow</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
-<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line"> </tt>
-<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line">      <tt class="py-comment"># Store the request URI in 'state' so we can use it later</tt> </tt>
-<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'state'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-131" class="py-name" targets="Function oauth2client.appengine._build_state_value()=oauth2client.appengine-module.html#_build_state_value"><a title="oauth2client.appengine._build_state_value" class="py-name" href="#" onclick="return doclink('link-131', '_build_state_value', 'link-131');">_build_state_value</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
-<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-132', 'credentials', 'link-87');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-133" class="py-name" targets="Class oauth2client.appengine.StorageByKeyName=oauth2client.appengine.StorageByKeyName-class.html"><a title="oauth2client.appengine.StorageByKeyName" class="py-name" href="#" onclick="return doclink('link-133', 'StorageByKeyName', 'link-133');">StorageByKeyName</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line">          <tt id="link-134" class="py-name" targets="Class oauth2client.appengine.CredentialsModel=oauth2client.appengine.CredentialsModel-class.html"><a title="oauth2client.appengine.CredentialsModel" class="py-name" href="#" onclick="return doclink('link-134', 'CredentialsModel', 'link-134');">CredentialsModel</a></tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="apiclient.schema.Schemas.get
-oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-135', 'get', 'link-44');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line"> </tt>
-<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.has_credentials()=oauth2client.appengine.OAuth2Decorator-class.html#has_credentials"><a title="oauth2client.appengine.OAuth2Decorator.has_credentials" class="py-name" href="#" onclick="return doclink('link-136', 'has_credentials', 'link-136');">has_credentials</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.authorize_url()=oauth2client.appengine.OAuth2Decorator-class.html#authorize_url"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-137', 'authorize_url', 'link-137');">authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
-<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt> <tt id="link-138" class="py-name"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-138', 'AccessTokenRefreshError', 'link-23');">AccessTokenRefreshError</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-139', 'authorize_url', 'link-137');">authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line"> </tt>
-<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">check_oauth</tt> </tt>
-</div><a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Decorator._create_flow"></a><div id="OAuth2Decorator._create_flow-def"><a name="L475"></a><tt class="py-lineno">475</tt> <a class="py-toggle" href="#" id="OAuth2Decorator._create_flow-toggle" onclick="return toggle('OAuth2Decorator._create_flow');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#_create_flow">_create_flow</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request_handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator._create_flow-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator._create_flow-expanded"><a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create the Flow object.</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line">    <tt class="py-name">entity</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">.</tt><tt class="py-name">get_or_insert</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">entity</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_property_name</tt><tt class="py-op">,</tt> <tt id="link-133" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-133', 'credentials', 'link-94');">credentials</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line">    <tt class="py-name">entity</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-134', 'put', 'link-59');">put</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="oauth2client.client.MemoryCache.set" class="py-name" href="#" onclick="return doclink('link-135', 'set', 'link-129');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">,</tt> <tt id="link-136" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-136', 'credentials', 'link-94');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="apiclient.http.HttpRequest.to_json
+apiclient.http.MediaFileUpload.to_json
+apiclient.http.MediaIoBaseUpload.to_json
+apiclient.http.MediaUpload.to_json
+oauth2client.client.Credentials.to_json
+oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-137', 'to_json', 'link-92');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line"> </tt>
+<a name="StorageByKeyName.locked_delete"></a><div id="StorageByKeyName.locked_delete-def"><a name="L452"></a><tt class="py-lineno">452</tt> <a class="py-toggle" href="#" id="StorageByKeyName.locked_delete-toggle" onclick="return toggle('StorageByKeyName.locked_delete');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#locked_delete">locked_delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName.locked_delete-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.locked_delete-expanded"><a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line">    <tt class="py-docstring">"""Delete Credential from datastore."""</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line"> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="oauth2client.client.MemoryCache.delete
+oauth2client.client.Storage.delete" class="py-name" href="#" onclick="return doclink('link-138', 'delete', 'link-117');">delete</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line"> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name" targets="Method oauth2client.appengine.StorageByKeyName._delete_entity()=oauth2client.appengine.StorageByKeyName-class.html#_delete_entity"><a title="oauth2client.appengine.StorageByKeyName._delete_entity" class="py-name" href="#" onclick="return doclink('link-139', '_delete_entity', 'link-139');">_delete_entity</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line"> </tt>
+<a name="CredentialsModel"></a><div id="CredentialsModel-def"><a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line"> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt> <a class="py-toggle" href="#" id="CredentialsModel-toggle" onclick="return toggle('CredentialsModel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsModel-class.html">CredentialsModel</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsModel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="CredentialsModel-expanded"><a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">  <tt class="py-docstring">"""Storage for OAuth 2.0 Credentials</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line"><tt class="py-docstring">  Storage of the model is keyed by the user.user_id().</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line">  <tt id="link-140" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-140', 'credentials', 'link-94');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-141" class="py-name"><a title="oauth2client.appengine.CredentialsProperty" class="py-name" href="#" onclick="return doclink('link-141', 'CredentialsProperty', 'link-90');">CredentialsProperty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line"> </tt>
+<a name="CredentialsNDBModel"></a><div id="CredentialsNDBModel-def"><a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line"> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt> <a class="py-toggle" href="#" id="CredentialsNDBModel-toggle" onclick="return toggle('CredentialsNDBModel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBModel-class.html">CredentialsNDBModel</a><tt class="py-op">(</tt><tt class="py-base-class">ndb</tt><tt class="py-op">.</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsNDBModel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="CredentialsNDBModel-expanded"><a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">  <tt class="py-docstring">"""NDB Model for storage of OAuth 2.0 Credentials</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line"><tt class="py-docstring">  Since this model uses the same kind as CredentialsModel and has a property</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line"><tt class="py-docstring">  which can serialize and deserialize Credentials correctly, it can be used</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line"><tt class="py-docstring">  interchangeably with a CredentialsModel to access, insert and delete the same</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line"><tt class="py-docstring">  entities. This simply provides an NDB model for interacting with the</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line"><tt class="py-docstring">  same data the DB model interacts with.</tt> </tt>
 <a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line"><tt class="py-docstring">    The Flow is calculated lazily since we don't know where this app is</tt> </tt>
-<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line"><tt class="py-docstring">    running until it receives a request, at which point redirect_uri can be</tt> </tt>
-<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line"><tt class="py-docstring">    calculated and then the Flow object can be constructed.</tt> </tt>
-<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line"><tt class="py-docstring">      request_handler: webapp.RequestHandler, the request handler.</tt> </tt>
-<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line">      <tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-140', 'request', 'link-113');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">relative_url</tt><tt class="py-op">(</tt> </tt>
-<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback_path</tt><tt class="py-op">)</tt> <tt class="py-comment"># Usually /oauth2callback</tt> </tt>
-<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt> <tt class="py-op">=</tt> <tt id="link-141" class="py-name"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-141', 'OAuth2WebServerFlow', 'link-35');">OAuth2WebServerFlow</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_id</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_secret</tt><tt class="py-op">,</tt> </tt>
-<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line">                                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_scope</tt><tt class="py-op">,</tt> <tt class="py-name">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line">                                      <tt class="py-name">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_user_agent</tt><tt class="py-op">,</tt> </tt>
-<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line">                                      <tt class="py-name">auth_uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_auth_uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line">                                      <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token_uri</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_kwargs</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line"> </tt>
-<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Decorator.oauth_aware"></a><div id="OAuth2Decorator.oauth_aware-def"><a name="L495"></a><tt class="py-lineno">495</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.oauth_aware-toggle" onclick="return toggle('OAuth2Decorator.oauth_aware');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_aware">oauth_aware</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.oauth_aware-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.oauth_aware-expanded"><a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line">    <tt class="py-docstring">"""Decorator that sets up for OAuth 2.0 dance, but doesn't do it.</tt> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line"><tt class="py-docstring">  Storage of the model is keyed by the user.user_id().</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line">  <tt id="link-142" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-142', 'credentials', 'link-94');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-143" class="py-name" targets="Class oauth2client.appengine.CredentialsNDBProperty=oauth2client.appengine.CredentialsNDBProperty-class.html"><a title="oauth2client.appengine.CredentialsNDBProperty" class="py-name" href="#" onclick="return doclink('link-143', 'CredentialsNDBProperty', 'link-143');">CredentialsNDBProperty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line"> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="CredentialsNDBModel._get_kind"></a><div id="CredentialsNDBModel._get_kind-def"><a name="L483"></a><tt class="py-lineno">483</tt> <a class="py-toggle" href="#" id="CredentialsNDBModel._get_kind-toggle" onclick="return toggle('CredentialsNDBModel._get_kind');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBModel-class.html#_get_kind">_get_kind</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsNDBModel._get_kind-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsNDBModel._get_kind-expanded"><a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line">    <tt class="py-docstring">"""Return the kind name for this class."""</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">'CredentialsModel'</tt> </tt>
+</div></div><a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line"> </tt>
+<a name="_build_state_value"></a><div id="_build_state_value-def"><a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line"> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt> <a class="py-toggle" href="#" id="_build_state_value-toggle" onclick="return toggle('_build_state_value');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_build_state_value">_build_state_value</a><tt class="py-op">(</tt><tt class="py-param">request_handler</tt><tt class="py-op">,</tt> <tt class="py-param">user</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_build_state_value-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_build_state_value-expanded"><a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line">  <tt class="py-docstring">"""Composes the value for the 'state' parameter.</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line"><tt class="py-docstring">  Packs the current request URI and an XSRF token into an opaque string that</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line"><tt class="py-docstring">  can be passed to the authentication server via the 'state' parameter.</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line"><tt class="py-docstring">    request_handler: webapp.RequestHandler, The request.</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line"><tt class="py-docstring">    user: google.appengine.api.users.User, The current user.</tt> </tt>
 <a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line"><tt class="py-docstring">    Does all the setup for the OAuth dance, but doesn't initiate it.</tt> </tt>
-<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line"><tt class="py-docstring">    This decorator is useful if you want to create a page that knows</tt> </tt>
-<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line"><tt class="py-docstring">    whether or not the user has granted access to this application.</tt> </tt>
-<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line"><tt class="py-docstring">    From within a method decorated with @oauth_aware the has_credentials()</tt> </tt>
-<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line"><tt class="py-docstring">    and authorize_url() methods can be called.</tt> </tt>
-<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line"><tt class="py-docstring">      method: callable, to be decorated method of a webapp.RequestHandler</tt> </tt>
-<a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line"><tt class="py-docstring">        instance.</tt> </tt>
-<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line"> </tt>
-<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">setup_oauth</tt><tt class="py-op">(</tt><tt class="py-param">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error</tt><tt class="py-op">:</tt> </tt>
-<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator._display_error_message" class="py-name" href="#" onclick="return doclink('link-142', '_display_error_message', 'link-128');">_display_error_message</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
-<a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
-<a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line"> </tt>
-<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line">      <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">get_current_user</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line">      <tt class="py-comment"># Don't use @login_decorator as this could be used in a POST request.</tt> </tt>
-<a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">user</tt><tt class="py-op">:</tt> </tt>
-<a name="L517"></a><tt class="py-lineno">517</tt>  <tt class="py-line">        <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">create_login_url</tt><tt class="py-op">(</tt> </tt>
-<a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line">            <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line"><tt class="py-docstring">    The state value as a string.</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line">  <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name" targets="Method apiclient.http.HttpMock.request()=apiclient.http.HttpMock-class.html#request,Method apiclient.http.HttpMockSequence.request()=apiclient.http.HttpMockSequence-class.html#request,Method apiclient.model.BaseModel.request()=apiclient.model.BaseModel-class.html#request,Method apiclient.model.Model.request()=apiclient.model.Model-class.html#request"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-143', 'request', 'link-113');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L519"></a><tt class="py-lineno">519</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
-<a name="L520"></a><tt class="py-lineno">520</tt>  <tt class="py-line"> </tt>
-<a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator._create_flow" class="py-name" href="#" onclick="return doclink('link-144', '_create_flow', 'link-130');">_create_flow</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
-<a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line"> </tt>
-<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'state'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-145" class="py-name"><a title="oauth2client.appengine._build_state_value" class="py-name" href="#" onclick="return doclink('link-145', '_build_state_value', 'link-131');">_build_state_value</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
-<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-146', 'credentials', 'link-87');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-147" class="py-name"><a title="oauth2client.appengine.StorageByKeyName" class="py-name" href="#" onclick="return doclink('link-147', 'StorageByKeyName', 'link-133');">StorageByKeyName</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line">          <tt id="link-148" class="py-name"><a title="oauth2client.appengine.CredentialsModel" class="py-name" href="#" onclick="return doclink('link-148', 'CredentialsModel', 'link-134');">CredentialsModel</a></tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="apiclient.schema.Schemas.get
-oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-149', 'get', 'link-44');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L526"></a><tt class="py-lineno">526</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">setup_oauth</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-144', 'request', 'link-144');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">url</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line">  <tt class="py-name">token</tt> <tt class="py-op">=</tt> <tt id="link-145" class="py-name"><a title="oauth2client.xsrfutil" class="py-name" href="#" onclick="return doclink('link-145', 'xsrfutil', 'link-20');">xsrfutil</a></tt><tt class="py-op">.</tt><tt id="link-146" class="py-name" targets="Function oauth2client.xsrfutil.generate_token()=oauth2client.xsrfutil-module.html#generate_token"><a title="oauth2client.xsrfutil.generate_token" class="py-name" href="#" onclick="return doclink('link-146', 'generate_token', 'link-146');">generate_token</a></tt><tt class="py-op">(</tt><tt id="link-147" class="py-name" targets="Function oauth2client.appengine.xsrf_secret_key()=oauth2client.appengine-module.html#xsrf_secret_key"><a title="oauth2client.appengine.xsrf_secret_key" class="py-name" href="#" onclick="return doclink('link-147', 'xsrf_secret_key', 'link-147');">xsrf_secret_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line">                                  <tt class="py-name">action_id</tt><tt class="py-op">=</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt>  <tt class="py-name">uri</tt> <tt class="py-op">+</tt> <tt class="py-string">':'</tt> <tt class="py-op">+</tt> <tt class="py-name">token</tt> </tt>
+</div><a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line"> </tt>
+<a name="_parse_state_value"></a><div id="_parse_state_value-def"><a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line"> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt> <a class="py-toggle" href="#" id="_parse_state_value-toggle" onclick="return toggle('_parse_state_value');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_parse_state_value">_parse_state_value</a><tt class="py-op">(</tt><tt class="py-param">state</tt><tt class="py-op">,</tt> <tt class="py-param">user</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_parse_state_value-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_parse_state_value-expanded"><a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">  <tt class="py-docstring">"""Parse the value of the 'state' parameter.</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line"><tt class="py-docstring">  Parses the value and validates the XSRF token in the state parameter.</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line"><tt class="py-docstring">    state: string, The value of the state parameter.</tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line"><tt class="py-docstring">    user: google.appengine.api.users.User, The current user.</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line"><tt class="py-docstring">  Raises:</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt>  <tt class="py-line"><tt class="py-docstring">    InvalidXsrfTokenError: if the XSRF token is invalid.</tt> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L520"></a><tt class="py-lineno">520</tt>  <tt class="py-line"><tt class="py-docstring">    The redirect URI.</tt> </tt>
+<a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line">  <tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt> <tt class="py-op">=</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">rsplit</tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-148" class="py-name"><a title="oauth2client.xsrfutil" class="py-name" href="#" onclick="return doclink('link-148', 'xsrfutil', 'link-20');">xsrfutil</a></tt><tt class="py-op">.</tt><tt id="link-149" class="py-name" targets="Function oauth2client.xsrfutil.validate_token()=oauth2client.xsrfutil-module.html#validate_token"><a title="oauth2client.xsrfutil.validate_token" class="py-name" href="#" onclick="return doclink('link-149', 'validate_token', 'link-149');">validate_token</a></tt><tt class="py-op">(</tt><tt id="link-150" class="py-name"><a title="oauth2client.appengine.xsrf_secret_key" class="py-name" href="#" onclick="return doclink('link-150', 'xsrf_secret_key', 'link-147');">xsrf_secret_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line">                                 <tt class="py-name">action_id</tt><tt class="py-op">=</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-151" class="py-name" targets="Class oauth2client.appengine.InvalidXsrfTokenError=oauth2client.appengine.InvalidXsrfTokenError-class.html"><a title="oauth2client.appengine.InvalidXsrfTokenError" class="py-name" href="#" onclick="return doclink('link-151', 'InvalidXsrfTokenError', 'link-151');">InvalidXsrfTokenError</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt>  <tt class="py-line"> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">uri</tt> </tt>
 </div><a name="L528"></a><tt class="py-lineno">528</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Decorator.has_credentials"></a><div id="OAuth2Decorator.has_credentials-def"><a name="L529"></a><tt class="py-lineno">529</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.has_credentials-toggle" onclick="return toggle('OAuth2Decorator.has_credentials');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#has_credentials">has_credentials</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.has_credentials-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.has_credentials-expanded"><a name="L530"></a><tt class="py-lineno">530</tt>  <tt class="py-line">    <tt class="py-docstring">"""True if for the logged in user there are valid access Credentials.</tt> </tt>
-<a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line"><tt class="py-docstring">    Must only be called from with a webapp.RequestHandler subclassed method</tt> </tt>
-<a name="L533"></a><tt class="py-lineno">533</tt>  <tt class="py-line"><tt class="py-docstring">    that had been decorated with either @oauth_required or @oauth_aware.</tt> </tt>
-<a name="L534"></a><tt class="py-lineno">534</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L535"></a><tt class="py-lineno">535</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-150', 'credentials', 'link-87');">credentials</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-151', 'credentials', 'link-87');">credentials</a></tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> </tt>
-</div><a name="L536"></a><tt class="py-lineno">536</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Decorator.authorize_url"></a><div id="OAuth2Decorator.authorize_url-def"><a name="L537"></a><tt class="py-lineno">537</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.authorize_url-toggle" onclick="return toggle('OAuth2Decorator.authorize_url');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#authorize_url">authorize_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.authorize_url-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.authorize_url-expanded"><a name="L538"></a><tt class="py-lineno">538</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns the URL to start the OAuth dance.</tt> </tt>
-<a name="L539"></a><tt class="py-lineno">539</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L540"></a><tt class="py-lineno">540</tt>  <tt class="py-line"><tt class="py-docstring">    Must only be called from with a webapp.RequestHandler subclassed method</tt> </tt>
-<a name="L541"></a><tt class="py-lineno">541</tt>  <tt class="py-line"><tt class="py-docstring">    that had been decorated with either @oauth_required or @oauth_aware.</tt> </tt>
-<a name="L542"></a><tt class="py-lineno">542</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L543"></a><tt class="py-lineno">543</tt>  <tt class="py-line">    <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url()=oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url"><a title="oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url" class="py-name" href="#" onclick="return doclink('link-152', 'step1_get_authorize_url', 'link-152');">step1_get_authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L544"></a><tt class="py-lineno">544</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L545"></a><tt class="py-lineno">545</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Decorator.http"></a><div id="OAuth2Decorator.http-def"><a name="L546"></a><tt class="py-lineno">546</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.http-toggle" onclick="return toggle('OAuth2Decorator.http');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#http">http</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.http-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.http-expanded"><a name="L547"></a><tt class="py-lineno">547</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns an authorized http instance.</tt> </tt>
-<a name="L548"></a><tt class="py-lineno">548</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L549"></a><tt class="py-lineno">549</tt>  <tt class="py-line"><tt class="py-docstring">    Must only be called from within an @oauth_required decorated method, or</tt> </tt>
-<a name="L550"></a><tt class="py-lineno">550</tt>  <tt class="py-line"><tt class="py-docstring">    from within an @oauth_aware decorated method where has_credentials()</tt> </tt>
-<a name="L551"></a><tt class="py-lineno">551</tt>  <tt class="py-line"><tt class="py-docstring">    returns True.</tt> </tt>
-<a name="L552"></a><tt class="py-lineno">552</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L553"></a><tt class="py-lineno">553</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-153', 'credentials', 'link-87');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-154" class="py-name" targets="Method oauth2client.client.Credentials.authorize()=oauth2client.client.Credentials-class.html#authorize,Method oauth2client.client.OAuth2Credentials.authorize()=oauth2client.client.OAuth2Credentials-class.html#authorize"><a title="oauth2client.client.Credentials.authorize
-oauth2client.client.OAuth2Credentials.authorize" class="py-name" href="#" onclick="return doclink('link-154', 'authorize', 'link-154');">authorize</a></tt><tt class="py-op">(</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L554"></a><tt class="py-lineno">554</tt>  <tt class="py-line"> </tt>
-<a name="L555"></a><tt class="py-lineno">555</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
-<a name="OAuth2Decorator.callback_path"></a><div id="OAuth2Decorator.callback_path-def"><a name="L556"></a><tt class="py-lineno">556</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.callback_path-toggle" onclick="return toggle('OAuth2Decorator.callback_path');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_path">callback_path</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.callback_path-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.callback_path-expanded"><a name="L557"></a><tt class="py-lineno">557</tt>  <tt class="py-line">    <tt class="py-docstring">"""The absolute path where the callback will occur.</tt> </tt>
-<a name="L558"></a><tt class="py-lineno">558</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L559"></a><tt class="py-lineno">559</tt>  <tt class="py-line"><tt class="py-docstring">    Note this is the absolute path, not the absolute URI, that will be</tt> </tt>
-<a name="L560"></a><tt class="py-lineno">560</tt>  <tt class="py-line"><tt class="py-docstring">    calculated by the decorator at runtime. See callback_handler() for how this</tt> </tt>
-<a name="L561"></a><tt class="py-lineno">561</tt>  <tt class="py-line"><tt class="py-docstring">    should be used.</tt> </tt>
-<a name="L562"></a><tt class="py-lineno">562</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L563"></a><tt class="py-lineno">563</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L564"></a><tt class="py-lineno">564</tt>  <tt class="py-line"><tt class="py-docstring">      The callback path as a string.</tt> </tt>
-<a name="L565"></a><tt class="py-lineno">565</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L566"></a><tt class="py-lineno">566</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback_path</tt> </tt>
-</div><a name="L567"></a><tt class="py-lineno">567</tt>  <tt class="py-line"> </tt>
-<a name="L568"></a><tt class="py-lineno">568</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Decorator.callback_handler"></a><div id="OAuth2Decorator.callback_handler-def"><a name="L569"></a><tt class="py-lineno">569</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.callback_handler-toggle" onclick="return toggle('OAuth2Decorator.callback_handler');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_handler">callback_handler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.callback_handler-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.callback_handler-expanded"><a name="L570"></a><tt class="py-lineno">570</tt>  <tt class="py-line">    <tt class="py-docstring">"""RequestHandler for the OAuth 2.0 redirect callback.</tt> </tt>
-<a name="L571"></a><tt class="py-lineno">571</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L572"></a><tt class="py-lineno">572</tt>  <tt class="py-line"><tt class="py-docstring">    Usage:</tt> </tt>
-<a name="L573"></a><tt class="py-lineno">573</tt>  <tt class="py-line"><tt class="py-docstring">       app = webapp.WSGIApplication([</tt> </tt>
-<a name="L574"></a><tt class="py-lineno">574</tt>  <tt class="py-line"><tt class="py-docstring">         ('/index', MyIndexHandler),</tt> </tt>
-<a name="L575"></a><tt class="py-lineno">575</tt>  <tt class="py-line"><tt class="py-docstring">         ...,</tt> </tt>
-<a name="L576"></a><tt class="py-lineno">576</tt>  <tt class="py-line"><tt class="py-docstring">         (decorator.callback_path, decorator.callback_handler())</tt> </tt>
-<a name="L577"></a><tt class="py-lineno">577</tt>  <tt class="py-line"><tt class="py-docstring">       ])</tt> </tt>
-<a name="L578"></a><tt class="py-lineno">578</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L579"></a><tt class="py-lineno">579</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L580"></a><tt class="py-lineno">580</tt>  <tt class="py-line"><tt class="py-docstring">      A webapp.RequestHandler that handles the redirect back from the</tt> </tt>
-<a name="L581"></a><tt class="py-lineno">581</tt>  <tt class="py-line"><tt class="py-docstring">      server during the OAuth 2.0 dance.</tt> </tt>
-<a name="L582"></a><tt class="py-lineno">582</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L583"></a><tt class="py-lineno">583</tt>  <tt class="py-line">    <tt class="py-name">decorator</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
-<a name="L584"></a><tt class="py-lineno">584</tt>  <tt class="py-line"> </tt>
-<a name="L585"></a><tt class="py-lineno">585</tt>  <tt class="py-line">    <tt class="py-keyword">class</tt> <tt class="py-def-name">OAuth2Handler</tt><tt class="py-op">(</tt><tt class="py-base-class">webapp</tt><tt class="py-op">.</tt><tt class="py-base-class">RequestHandler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L586"></a><tt class="py-lineno">586</tt>  <tt class="py-line">      <tt class="py-docstring">"""Handler for the redirect_uri of the OAuth 2.0 dance."""</tt> </tt>
-<a name="L587"></a><tt class="py-lineno">587</tt>  <tt class="py-line"> </tt>
-<a name="L588"></a><tt class="py-lineno">588</tt>  <tt class="py-line">      <tt class="py-decorator">@</tt><tt class="py-decorator">login_required</tt> </tt>
-<a name="L589"></a><tt class="py-lineno">589</tt>  <tt class="py-line">      <tt class="py-keyword">def</tt> <tt class="py-def-name">get</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L590"></a><tt class="py-lineno">590</tt>  <tt class="py-line">        <tt class="py-name">error</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="OAuth2Decorator"></a><div id="OAuth2Decorator-def"><a name="L529"></a><tt class="py-lineno">529</tt>  <tt class="py-line"> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt> <a class="py-toggle" href="#" id="OAuth2Decorator-toggle" onclick="return toggle('OAuth2Decorator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="OAuth2Decorator-expanded"><a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line">  <tt class="py-docstring">"""Utility for making OAuth 2.0 easier.</tt> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L533"></a><tt class="py-lineno">533</tt>  <tt class="py-line"><tt class="py-docstring">  Instantiate and then use with oauth_required or oauth_aware</tt> </tt>
+<a name="L534"></a><tt class="py-lineno">534</tt>  <tt class="py-line"><tt class="py-docstring">  as decorators on webapp.RequestHandler methods.</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt>  <tt class="py-line"><tt class="py-docstring">    decorator = OAuth2Decorator(</tt> </tt>
+<a name="L539"></a><tt class="py-lineno">539</tt>  <tt class="py-line"><tt class="py-docstring">        client_id='837...ent.com',</tt> </tt>
+<a name="L540"></a><tt class="py-lineno">540</tt>  <tt class="py-line"><tt class="py-docstring">        client_secret='Qh...wwI',</tt> </tt>
+<a name="L541"></a><tt class="py-lineno">541</tt>  <tt class="py-line"><tt class="py-docstring">        scope='https://www.googleapis.com/auth/plus')</tt> </tt>
+<a name="L542"></a><tt class="py-lineno">542</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L543"></a><tt class="py-lineno">543</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt>  <tt class="py-line"><tt class="py-docstring">    class MainHandler(webapp.RequestHandler):</tt> </tt>
+<a name="L545"></a><tt class="py-lineno">545</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt>  <tt class="py-line"><tt class="py-docstring">      @decorator.oauth_required</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt>  <tt class="py-line"><tt class="py-docstring">      def get(self):</tt> </tt>
+<a name="L548"></a><tt class="py-lineno">548</tt>  <tt class="py-line"><tt class="py-docstring">        http = decorator.http()</tt> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt>  <tt class="py-line"><tt class="py-docstring">        # http is authorized with the user's Credentials and can be used</tt> </tt>
+<a name="L550"></a><tt class="py-lineno">550</tt>  <tt class="py-line"><tt class="py-docstring">        # in API calls</tt> </tt>
+<a name="L551"></a><tt class="py-lineno">551</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L552"></a><tt class="py-lineno">552</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L553"></a><tt class="py-lineno">553</tt>  <tt class="py-line"> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-152', 'positional', 'link-68');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="OAuth2Decorator.__init__"></a><div id="OAuth2Decorator.__init__-def"><a name="L555"></a><tt class="py-lineno">555</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.__init__-toggle" onclick="return toggle('OAuth2Decorator.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">client_secret</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt>  <tt class="py-line">               <tt class="py-param">auth_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/auth'</tt><tt class="py-op">,</tt> </tt>
+<a name="L557"></a><tt class="py-lineno">557</tt>  <tt class="py-line">               <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/token'</tt><tt class="py-op">,</tt> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt>  <tt class="py-line">               <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt>  <tt class="py-line">               <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L560"></a><tt class="py-lineno">560</tt>  <tt class="py-line">               <tt class="py-param">callback_path</tt><tt class="py-op">=</tt><tt class="py-string">'/oauth2callback'</tt><tt class="py-op">,</tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt>  <tt class="py-line">               <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.__init__-expanded"><a name="L562"></a><tt class="py-lineno">562</tt>  <tt class="py-line"> </tt>
+<a name="L563"></a><tt class="py-lineno">563</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for OAuth2Decorator</tt> </tt>
+<a name="L564"></a><tt class="py-lineno">564</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L566"></a><tt class="py-lineno">566</tt>  <tt class="py-line"><tt class="py-docstring">      client_id: string, client identifier.</tt> </tt>
+<a name="L567"></a><tt class="py-lineno">567</tt>  <tt class="py-line"><tt class="py-docstring">      client_secret: string client secret.</tt> </tt>
+<a name="L568"></a><tt class="py-lineno">568</tt>  <tt class="py-line"><tt class="py-docstring">      scope: string or iterable of strings, scope(s) of the credentials being</tt> </tt>
+<a name="L569"></a><tt class="py-lineno">569</tt>  <tt class="py-line"><tt class="py-docstring">        requested.</tt> </tt>
+<a name="L570"></a><tt class="py-lineno">570</tt>  <tt class="py-line"><tt class="py-docstring">      auth_uri: string, URI for authorization endpoint. For convenience</tt> </tt>
+<a name="L571"></a><tt class="py-lineno">571</tt>  <tt class="py-line"><tt class="py-docstring">        defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
+<a name="L572"></a><tt class="py-lineno">572</tt>  <tt class="py-line"><tt class="py-docstring">      token_uri: string, URI for token endpoint. For convenience</tt> </tt>
+<a name="L573"></a><tt class="py-lineno">573</tt>  <tt class="py-line"><tt class="py-docstring">        defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
+<a name="L574"></a><tt class="py-lineno">574</tt>  <tt class="py-line"><tt class="py-docstring">      user_agent: string, User agent of your application, default to None.</tt> </tt>
+<a name="L575"></a><tt class="py-lineno">575</tt>  <tt class="py-line"><tt class="py-docstring">      message: Message to display if there are problems with the OAuth 2.0</tt> </tt>
+<a name="L576"></a><tt class="py-lineno">576</tt>  <tt class="py-line"><tt class="py-docstring">        configuration. The message may contain HTML and will be presented on the</tt> </tt>
+<a name="L577"></a><tt class="py-lineno">577</tt>  <tt class="py-line"><tt class="py-docstring">        web interface for any method that uses the decorator.</tt> </tt>
+<a name="L578"></a><tt class="py-lineno">578</tt>  <tt class="py-line"><tt class="py-docstring">      callback_path: string, The absolute path to use as the callback URI. Note</tt> </tt>
+<a name="L579"></a><tt class="py-lineno">579</tt>  <tt class="py-line"><tt class="py-docstring">        that this must match up with the URI given when registering the</tt> </tt>
+<a name="L580"></a><tt class="py-lineno">580</tt>  <tt class="py-line"><tt class="py-docstring">        application in the APIs Console.</tt> </tt>
+<a name="L581"></a><tt class="py-lineno">581</tt>  <tt class="py-line"><tt class="py-docstring">      **kwargs: dict, Keyword arguments are be passed along as kwargs to the</tt> </tt>
+<a name="L582"></a><tt class="py-lineno">582</tt>  <tt class="py-line"><tt class="py-docstring">        OAuth2WebServerFlow constructor.</tt> </tt>
+<a name="L583"></a><tt class="py-lineno">583</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L584"></a><tt class="py-lineno">584</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L585"></a><tt class="py-lineno">585</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-153', 'credentials', 'link-94');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L586"></a><tt class="py-lineno">586</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_id</tt> <tt class="py-op">=</tt> <tt class="py-name">client_id</tt> </tt>
+<a name="L587"></a><tt class="py-lineno">587</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_secret</tt> <tt class="py-op">=</tt> <tt class="py-name">client_secret</tt> </tt>
+<a name="L588"></a><tt class="py-lineno">588</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_scope</tt> <tt class="py-op">=</tt> <tt id="link-154" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-154', 'util', 'link-11');">util</a></tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-155', 'scopes_to_string', 'link-70');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
+<a name="L589"></a><tt class="py-lineno">589</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_auth_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">auth_uri</tt> </tt>
+<a name="L590"></a><tt class="py-lineno">590</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">token_uri</tt> </tt>
+<a name="L591"></a><tt class="py-lineno">591</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_user_agent</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
+<a name="L592"></a><tt class="py-lineno">592</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_kwargs</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt> </tt>
+<a name="L593"></a><tt class="py-lineno">593</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt> </tt>
+<a name="L594"></a><tt class="py-lineno">594</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L595"></a><tt class="py-lineno">595</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback_path</tt> <tt class="py-op">=</tt> <tt id="link-156" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.callback_path()=oauth2client.appengine.OAuth2Decorator-class.html#callback_path"><a title="oauth2client.appengine.OAuth2Decorator.callback_path" class="py-name" href="#" onclick="return doclink('link-156', 'callback_path', 'link-156');">callback_path</a></tt> </tt>
+</div><a name="L596"></a><tt class="py-lineno">596</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Decorator._display_error_message"></a><div id="OAuth2Decorator._display_error_message-def"><a name="L597"></a><tt class="py-lineno">597</tt> <a class="py-toggle" href="#" id="OAuth2Decorator._display_error_message-toggle" onclick="return toggle('OAuth2Decorator._display_error_message');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#_display_error_message">_display_error_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request_handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator._display_error_message-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator._display_error_message-expanded"><a name="L598"></a><tt class="py-lineno">598</tt>  <tt class="py-line">    <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name" targets="Method apiclient.model.BaseModel.response()=apiclient.model.BaseModel-class.html#response,Method apiclient.model.Model.response()=apiclient.model.Model-class.html#response"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-157', 'response', 'link-157');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name" targets="Method apiclient.push.Headers.write()=apiclient.push.Headers-class.html#write"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-158', 'write', 'link-158');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;html&gt;&lt;body&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L599"></a><tt class="py-lineno">599</tt>  <tt class="py-line">    <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-159', 'response', 'link-157');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-160', 'write', 'link-158');">write</a></tt><tt class="py-op">(</tt><tt id="link-161" class="py-name" targets="Function oauth2client.appengine._safe_html()=oauth2client.appengine-module.html#_safe_html"><a title="oauth2client.appengine._safe_html" class="py-name" href="#" onclick="return doclink('link-161', '_safe_html', 'link-161');">_safe_html</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L600"></a><tt class="py-lineno">600</tt>  <tt class="py-line">    <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-162', 'response', 'link-157');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-163', 'write', 'link-158');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;/body&gt;&lt;/html&gt;'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L601"></a><tt class="py-lineno">601</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.oauth_required"></a><div id="OAuth2Decorator.oauth_required-def"><a name="L602"></a><tt class="py-lineno">602</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.oauth_required-toggle" onclick="return toggle('OAuth2Decorator.oauth_required');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_required">oauth_required</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.oauth_required-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.oauth_required-expanded"><a name="L603"></a><tt class="py-lineno">603</tt>  <tt class="py-line">    <tt class="py-docstring">"""Decorator that starts the OAuth 2.0 dance.</tt> </tt>
+<a name="L604"></a><tt class="py-lineno">604</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L605"></a><tt class="py-lineno">605</tt>  <tt class="py-line"><tt class="py-docstring">    Starts the OAuth dance for the logged in user if they haven't already</tt> </tt>
+<a name="L606"></a><tt class="py-lineno">606</tt>  <tt class="py-line"><tt class="py-docstring">    granted access for this application.</tt> </tt>
+<a name="L607"></a><tt class="py-lineno">607</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L608"></a><tt class="py-lineno">608</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L609"></a><tt class="py-lineno">609</tt>  <tt class="py-line"><tt class="py-docstring">      method: callable, to be decorated method of a webapp.RequestHandler</tt> </tt>
+<a name="L610"></a><tt class="py-lineno">610</tt>  <tt class="py-line"><tt class="py-docstring">        instance.</tt> </tt>
+<a name="L611"></a><tt class="py-lineno">611</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L612"></a><tt class="py-lineno">612</tt>  <tt class="py-line"> </tt>
+<a name="L613"></a><tt class="py-lineno">613</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">check_oauth</tt><tt class="py-op">(</tt><tt class="py-param">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L614"></a><tt class="py-lineno">614</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error</tt><tt class="py-op">:</tt> </tt>
+<a name="L615"></a><tt class="py-lineno">615</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator._display_error_message()=oauth2client.appengine.OAuth2Decorator-class.html#_display_error_message"><a title="oauth2client.appengine.OAuth2Decorator._display_error_message" class="py-name" href="#" onclick="return doclink('link-164', '_display_error_message', 'link-164');">_display_error_message</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
+<a name="L616"></a><tt class="py-lineno">616</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L617"></a><tt class="py-lineno">617</tt>  <tt class="py-line"> </tt>
+<a name="L618"></a><tt class="py-lineno">618</tt>  <tt class="py-line">      <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">get_current_user</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L619"></a><tt class="py-lineno">619</tt>  <tt class="py-line">      <tt class="py-comment"># Don't use @login_decorator as this could be used in a POST request.</tt> </tt>
+<a name="L620"></a><tt class="py-lineno">620</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">user</tt><tt class="py-op">:</tt> </tt>
+<a name="L621"></a><tt class="py-lineno">621</tt>  <tt class="py-line">        <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">create_login_url</tt><tt class="py-op">(</tt> </tt>
+<a name="L622"></a><tt class="py-lineno">622</tt>  <tt class="py-line">            <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-155', 'request', 'link-113');">request</a></tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="apiclient.schema.Schemas.get
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-165', 'request', 'link-144');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L623"></a><tt class="py-lineno">623</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L624"></a><tt class="py-lineno">624</tt>  <tt class="py-line"> </tt>
+<a name="L625"></a><tt class="py-lineno">625</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator._create_flow()=oauth2client.appengine.OAuth2Decorator-class.html#_create_flow"><a title="oauth2client.appengine.OAuth2Decorator._create_flow" class="py-name" href="#" onclick="return doclink('link-166', '_create_flow', 'link-166');">_create_flow</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
+<a name="L626"></a><tt class="py-lineno">626</tt>  <tt class="py-line"> </tt>
+<a name="L627"></a><tt class="py-lineno">627</tt>  <tt class="py-line">      <tt class="py-comment"># Store the request URI in 'state' so we can use it later</tt> </tt>
+<a name="L628"></a><tt class="py-lineno">628</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'state'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-167" class="py-name" targets="Function oauth2client.appengine._build_state_value()=oauth2client.appengine-module.html#_build_state_value"><a title="oauth2client.appengine._build_state_value" class="py-name" href="#" onclick="return doclink('link-167', '_build_state_value', 'link-167');">_build_state_value</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
+<a name="L629"></a><tt class="py-lineno">629</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-168', 'credentials', 'link-94');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-169" class="py-name" targets="Class oauth2client.appengine.StorageByKeyName=oauth2client.appengine.StorageByKeyName-class.html"><a title="oauth2client.appengine.StorageByKeyName" class="py-name" href="#" onclick="return doclink('link-169', 'StorageByKeyName', 'link-169');">StorageByKeyName</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L630"></a><tt class="py-lineno">630</tt>  <tt class="py-line">          <tt id="link-170" class="py-name" targets="Class oauth2client.appengine.CredentialsModel=oauth2client.appengine.CredentialsModel-class.html"><a title="oauth2client.appengine.CredentialsModel" class="py-name" href="#" onclick="return doclink('link-170', 'CredentialsModel', 'link-170');">CredentialsModel</a></tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-156', 'get', 'link-44');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'error'</tt><tt class="py-op">)</tt> </tt>
-<a name="L591"></a><tt class="py-lineno">591</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">error</tt><tt class="py-op">:</tt> </tt>
-<a name="L592"></a><tt class="py-lineno">592</tt>  <tt class="py-line">          <tt class="py-name">errormsg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-157', 'request', 'link-113');">request</a></tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="apiclient.schema.Schemas.get
-oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-158', 'get', 'link-44');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'error_description'</tt><tt class="py-op">,</tt> <tt class="py-name">error</tt><tt class="py-op">)</tt> </tt>
-<a name="L593"></a><tt class="py-lineno">593</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-159', 'response', 'link-124');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt> </tt>
-<a name="L594"></a><tt class="py-lineno">594</tt>  <tt class="py-line">              <tt class="py-string">'The authorization request failed: %s'</tt> <tt class="py-op">%</tt> <tt id="link-160" class="py-name"><a title="oauth2client.appengine._safe_html" class="py-name" href="#" onclick="return doclink('link-160', '_safe_html', 'link-126');">_safe_html</a></tt><tt class="py-op">(</tt><tt class="py-name">errormsg</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L595"></a><tt class="py-lineno">595</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L596"></a><tt class="py-lineno">596</tt>  <tt class="py-line">          <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">get_current_user</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L597"></a><tt class="py-lineno">597</tt>  <tt class="py-line">          <tt class="py-name">decorator</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator._create_flow" class="py-name" href="#" onclick="return doclink('link-161', '_create_flow', 'link-130');">_create_flow</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
-<a name="L598"></a><tt class="py-lineno">598</tt>  <tt class="py-line">          <tt id="link-162" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-162', 'credentials', 'link-87');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">decorator</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step2_exchange()=oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-163', 'step2_exchange', 'link-163');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-164', 'request', 'link-113');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
-<a name="L599"></a><tt class="py-lineno">599</tt>  <tt class="py-line">          <tt id="link-165" class="py-name"><a title="oauth2client.appengine.StorageByKeyName" class="py-name" href="#" onclick="return doclink('link-165', 'StorageByKeyName', 'link-133');">StorageByKeyName</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L600"></a><tt class="py-lineno">600</tt>  <tt class="py-line">              <tt id="link-166" class="py-name"><a title="oauth2client.appengine.CredentialsModel" class="py-name" href="#" onclick="return doclink('link-166', 'CredentialsModel', 'link-134');">CredentialsModel</a></tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-167', 'put', 'link-56');">put</a></tt><tt class="py-op">(</tt><tt id="link-168" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-168', 'credentials', 'link-87');">credentials</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L601"></a><tt class="py-lineno">601</tt>  <tt class="py-line">          <tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt id="link-169" class="py-name" targets="Function oauth2client.appengine._parse_state_value()=oauth2client.appengine-module.html#_parse_state_value"><a title="oauth2client.appengine._parse_state_value" class="py-name" href="#" onclick="return doclink('link-169', '_parse_state_value', 'link-169');">_parse_state_value</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-170', 'request', 'link-113');">request</a></tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="apiclient.schema.Schemas.get
-oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-171', 'get', 'link-44');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'state'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L602"></a><tt class="py-lineno">602</tt>  <tt class="py-line">                                            <tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
-<a name="L603"></a><tt class="py-lineno">603</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L604"></a><tt class="py-lineno">604</tt>  <tt class="py-line"> </tt>
-<a name="L605"></a><tt class="py-lineno">605</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">OAuth2Handler</tt> </tt>
-</div><a name="L606"></a><tt class="py-lineno">606</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Decorator.callback_application"></a><div id="OAuth2Decorator.callback_application-def"><a name="L607"></a><tt class="py-lineno">607</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.callback_application-toggle" onclick="return toggle('OAuth2Decorator.callback_application');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_application">callback_application</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.callback_application-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.callback_application-expanded"><a name="L608"></a><tt class="py-lineno">608</tt>  <tt class="py-line">    <tt class="py-docstring">"""WSGI application for handling the OAuth 2.0 redirect callback.</tt> </tt>
-<a name="L609"></a><tt class="py-lineno">609</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L610"></a><tt class="py-lineno">610</tt>  <tt class="py-line"><tt class="py-docstring">    If you need finer grained control use `callback_handler` which returns just</tt> </tt>
-<a name="L611"></a><tt class="py-lineno">611</tt>  <tt class="py-line"><tt class="py-docstring">    the webapp.RequestHandler.</tt> </tt>
-<a name="L612"></a><tt class="py-lineno">612</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L613"></a><tt class="py-lineno">613</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L614"></a><tt class="py-lineno">614</tt>  <tt class="py-line"><tt class="py-docstring">      A webapp.WSGIApplication that handles the redirect back from the</tt> </tt>
-<a name="L615"></a><tt class="py-lineno">615</tt>  <tt class="py-line"><tt class="py-docstring">      server during the OAuth 2.0 dance.</tt> </tt>
-<a name="L616"></a><tt class="py-lineno">616</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L617"></a><tt class="py-lineno">617</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">webapp</tt><tt class="py-op">.</tt><tt class="py-name">WSGIApplication</tt><tt class="py-op">(</tt><tt class="py-op">[</tt> </tt>
-<a name="L618"></a><tt class="py-lineno">618</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.callback_path" class="py-name" href="#" onclick="return doclink('link-172', 'callback_path', 'link-123');">callback_path</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.callback_handler()=oauth2client.appengine.OAuth2Decorator-class.html#callback_handler"><a title="oauth2client.appengine.OAuth2Decorator.callback_handler" class="py-name" href="#" onclick="return doclink('link-173', 'callback_handler', 'link-173');">callback_handler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L619"></a><tt class="py-lineno">619</tt>  <tt class="py-line">        <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L620"></a><tt class="py-lineno">620</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2DecoratorFromClientSecrets"></a><div id="OAuth2DecoratorFromClientSecrets-def"><a name="L621"></a><tt class="py-lineno">621</tt>  <tt class="py-line"> </tt>
-<a name="L622"></a><tt class="py-lineno">622</tt> <a class="py-toggle" href="#" id="OAuth2DecoratorFromClientSecrets-toggle" onclick="return toggle('OAuth2DecoratorFromClientSecrets');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html">OAuth2DecoratorFromClientSecrets</a><tt class="py-op">(</tt><tt class="py-base-class">OAuth2Decorator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2DecoratorFromClientSecrets-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="OAuth2DecoratorFromClientSecrets-expanded"><a name="L623"></a><tt class="py-lineno">623</tt>  <tt class="py-line">  <tt class="py-docstring">"""An OAuth2Decorator that builds from a clientsecrets file.</tt> </tt>
-<a name="L624"></a><tt class="py-lineno">624</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L625"></a><tt class="py-lineno">625</tt>  <tt class="py-line"><tt class="py-docstring">  Uses a clientsecrets file as the source for all the information when</tt> </tt>
-<a name="L626"></a><tt class="py-lineno">626</tt>  <tt class="py-line"><tt class="py-docstring">  constructing an OAuth2Decorator.</tt> </tt>
-<a name="L627"></a><tt class="py-lineno">627</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L628"></a><tt class="py-lineno">628</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
-<a name="L629"></a><tt class="py-lineno">629</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L630"></a><tt class="py-lineno">630</tt>  <tt class="py-line"><tt class="py-docstring">    decorator = OAuth2DecoratorFromClientSecrets(</tt> </tt>
-<a name="L631"></a><tt class="py-lineno">631</tt>  <tt class="py-line"><tt class="py-docstring">      os.path.join(os.path.dirname(__file__), 'client_secrets.json')</tt> </tt>
-<a name="L632"></a><tt class="py-lineno">632</tt>  <tt class="py-line"><tt class="py-docstring">      scope='https://www.googleapis.com/auth/plus')</tt> </tt>
-<a name="L633"></a><tt class="py-lineno">633</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L634"></a><tt class="py-lineno">634</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L635"></a><tt class="py-lineno">635</tt>  <tt class="py-line"><tt class="py-docstring">    class MainHandler(webapp.RequestHandler):</tt> </tt>
-<a name="L636"></a><tt class="py-lineno">636</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L637"></a><tt class="py-lineno">637</tt>  <tt class="py-line"><tt class="py-docstring">      @decorator.oauth_required</tt> </tt>
-<a name="L638"></a><tt class="py-lineno">638</tt>  <tt class="py-line"><tt class="py-docstring">      def get(self):</tt> </tt>
-<a name="L639"></a><tt class="py-lineno">639</tt>  <tt class="py-line"><tt class="py-docstring">        http = decorator.http()</tt> </tt>
-<a name="L640"></a><tt class="py-lineno">640</tt>  <tt class="py-line"><tt class="py-docstring">        # http is authorized with the user's Credentials and can be used</tt> </tt>
-<a name="L641"></a><tt class="py-lineno">641</tt>  <tt class="py-line"><tt class="py-docstring">        # in API calls</tt> </tt>
-<a name="L642"></a><tt class="py-lineno">642</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L643"></a><tt class="py-lineno">643</tt>  <tt class="py-line"> </tt>
-<a name="L644"></a><tt class="py-lineno">644</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-174', 'positional', 'link-65');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="OAuth2DecoratorFromClientSecrets.__init__"></a><div id="OAuth2DecoratorFromClientSecrets.__init__-def"><a name="L645"></a><tt class="py-lineno">645</tt> <a class="py-toggle" href="#" id="OAuth2DecoratorFromClientSecrets.__init__-toggle" onclick="return toggle('OAuth2DecoratorFromClientSecrets.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2DecoratorFromClientSecrets.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2DecoratorFromClientSecrets.__init__-expanded"><a name="L646"></a><tt class="py-lineno">646</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-171', 'get', 'link-47');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L631"></a><tt class="py-lineno">631</tt>  <tt class="py-line"> </tt>
+<a name="L632"></a><tt class="py-lineno">632</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.has_credentials()=oauth2client.appengine.OAuth2Decorator-class.html#has_credentials"><a title="oauth2client.appengine.OAuth2Decorator.has_credentials" class="py-name" href="#" onclick="return doclink('link-172', 'has_credentials', 'link-172');">has_credentials</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L633"></a><tt class="py-lineno">633</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.authorize_url()=oauth2client.appengine.OAuth2Decorator-class.html#authorize_url"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-173', 'authorize_url', 'link-173');">authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L634"></a><tt class="py-lineno">634</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L635"></a><tt class="py-lineno">635</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+<a name="L636"></a><tt class="py-lineno">636</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt> <tt id="link-174" class="py-name"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-174', 'AccessTokenRefreshError', 'link-25');">AccessTokenRefreshError</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L637"></a><tt class="py-lineno">637</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-175', 'authorize_url', 'link-173');">authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L638"></a><tt class="py-lineno">638</tt>  <tt class="py-line"> </tt>
+<a name="L639"></a><tt class="py-lineno">639</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">check_oauth</tt> </tt>
+</div><a name="L640"></a><tt class="py-lineno">640</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Decorator._create_flow"></a><div id="OAuth2Decorator._create_flow-def"><a name="L641"></a><tt class="py-lineno">641</tt> <a class="py-toggle" href="#" id="OAuth2Decorator._create_flow-toggle" onclick="return toggle('OAuth2Decorator._create_flow');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#_create_flow">_create_flow</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request_handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator._create_flow-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator._create_flow-expanded"><a name="L642"></a><tt class="py-lineno">642</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create the Flow object.</tt> </tt>
+<a name="L643"></a><tt class="py-lineno">643</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L644"></a><tt class="py-lineno">644</tt>  <tt class="py-line"><tt class="py-docstring">    The Flow is calculated lazily since we don't know where this app is</tt> </tt>
+<a name="L645"></a><tt class="py-lineno">645</tt>  <tt class="py-line"><tt class="py-docstring">    running until it receives a request, at which point redirect_uri can be</tt> </tt>
+<a name="L646"></a><tt class="py-lineno">646</tt>  <tt class="py-line"><tt class="py-docstring">    calculated and then the Flow object can be constructed.</tt> </tt>
 <a name="L647"></a><tt class="py-lineno">647</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
 <a name="L648"></a><tt class="py-lineno">648</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L649"></a><tt class="py-lineno">649</tt>  <tt class="py-line"><tt class="py-docstring">      filename: string, File name of client secrets.</tt> </tt>
-<a name="L650"></a><tt class="py-lineno">650</tt>  <tt class="py-line"><tt class="py-docstring">      scope: string or list of strings, scope(s) of the credentials being</tt> </tt>
-<a name="L651"></a><tt class="py-lineno">651</tt>  <tt class="py-line"><tt class="py-docstring">        requested.</tt> </tt>
-<a name="L652"></a><tt class="py-lineno">652</tt>  <tt class="py-line"><tt class="py-docstring">      message: string, A friendly string to display to the user if the</tt> </tt>
-<a name="L653"></a><tt class="py-lineno">653</tt>  <tt class="py-line"><tt class="py-docstring">        clientsecrets file is missing or invalid. The message may contain HTML</tt> </tt>
-<a name="L654"></a><tt class="py-lineno">654</tt>  <tt class="py-line"><tt class="py-docstring">        and will be presented on the web interface for any method that uses the</tt> </tt>
-<a name="L655"></a><tt class="py-lineno">655</tt>  <tt class="py-line"><tt class="py-docstring">        decorator.</tt> </tt>
-<a name="L656"></a><tt class="py-lineno">656</tt>  <tt class="py-line"><tt class="py-docstring">      cache: An optional cache service client that implements get() and set()</tt> </tt>
-<a name="L657"></a><tt class="py-lineno">657</tt>  <tt class="py-line"><tt class="py-docstring">        methods. See clientsecrets.loadfile() for details.</tt> </tt>
-<a name="L658"></a><tt class="py-lineno">658</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L659"></a><tt class="py-lineno">659</tt>  <tt class="py-line">    <tt class="py-name">client_type</tt><tt class="py-op">,</tt> <tt class="py-name">client_info</tt> <tt class="py-op">=</tt> <tt id="link-175" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-175', 'clientsecrets', 'link-14');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name" targets="Function oauth2client.clientsecrets.loadfile()=oauth2client.clientsecrets-module.html#loadfile"><a title="oauth2client.clientsecrets.loadfile" class="py-name" href="#" onclick="return doclink('link-176', 'loadfile', 'link-176');">loadfile</a></tt><tt class="py-op">(</tt><tt id="link-177" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-177', 'filename', 'link-177');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> </tt>
-<a name="L660"></a><tt class="py-lineno">660</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">client_type</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt> </tt>
-<a name="L661"></a><tt class="py-lineno">661</tt>  <tt class="py-line">        <tt id="link-178" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-178', 'clientsecrets', 'link-14');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-179" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_WEB=oauth2client.clientsecrets-module.html#TYPE_WEB"><a title="oauth2client.clientsecrets.TYPE_WEB" class="py-name" href="#" onclick="return doclink('link-179', 'TYPE_WEB', 'link-179');">TYPE_WEB</a></tt><tt class="py-op">,</tt> <tt id="link-180" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-180', 'clientsecrets', 'link-14');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-181" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_INSTALLED=oauth2client.clientsecrets-module.html#TYPE_INSTALLED"><a title="oauth2client.clientsecrets.TYPE_INSTALLED" class="py-name" href="#" onclick="return doclink('link-181', 'TYPE_INSTALLED', 'link-181');">TYPE_INSTALLED</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L662"></a><tt class="py-lineno">662</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-182" class="py-name" targets="Class oauth2client.appengine.InvalidClientSecretsError=oauth2client.appengine.InvalidClientSecretsError-class.html,Class oauth2client.clientsecrets.InvalidClientSecretsError=oauth2client.clientsecrets.InvalidClientSecretsError-class.html"><a title="oauth2client.appengine.InvalidClientSecretsError
-oauth2client.clientsecrets.InvalidClientSecretsError" class="py-name" href="#" onclick="return doclink('link-182', 'InvalidClientSecretsError', 'link-182');">InvalidClientSecretsError</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L663"></a><tt class="py-lineno">663</tt>  <tt class="py-line">          <tt class="py-string">'OAuth2Decorator doesn\'t support this OAuth 2.0 flow.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L664"></a><tt class="py-lineno">664</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-183" class="py-name" targets="Class oauth2client.appengine.OAuth2DecoratorFromClientSecrets=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html"><a title="oauth2client.appengine.OAuth2DecoratorFromClientSecrets" class="py-name" href="#" onclick="return doclink('link-183', 'OAuth2DecoratorFromClientSecrets', 'link-183');">OAuth2DecoratorFromClientSecrets</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="apiclient.errors.BatchError.__init__
+<a name="L649"></a><tt class="py-lineno">649</tt>  <tt class="py-line"><tt class="py-docstring">      request_handler: webapp.RequestHandler, the request handler.</tt> </tt>
+<a name="L650"></a><tt class="py-lineno">650</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L651"></a><tt class="py-lineno">651</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L652"></a><tt class="py-lineno">652</tt>  <tt class="py-line">      <tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-176', 'request', 'link-144');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">relative_url</tt><tt class="py-op">(</tt> </tt>
+<a name="L653"></a><tt class="py-lineno">653</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback_path</tt><tt class="py-op">)</tt> <tt class="py-comment"># Usually /oauth2callback</tt> </tt>
+<a name="L654"></a><tt class="py-lineno">654</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt> <tt class="py-op">=</tt> <tt id="link-177" class="py-name"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-177', 'OAuth2WebServerFlow', 'link-37');">OAuth2WebServerFlow</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_id</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_secret</tt><tt class="py-op">,</tt> </tt>
+<a name="L655"></a><tt class="py-lineno">655</tt>  <tt class="py-line">                                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_scope</tt><tt class="py-op">,</tt> <tt class="py-name">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L656"></a><tt class="py-lineno">656</tt>  <tt class="py-line">                                      <tt class="py-name">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_user_agent</tt><tt class="py-op">,</tt> </tt>
+<a name="L657"></a><tt class="py-lineno">657</tt>  <tt class="py-line">                                      <tt class="py-name">auth_uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_auth_uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L658"></a><tt class="py-lineno">658</tt>  <tt class="py-line">                                      <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token_uri</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_kwargs</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L659"></a><tt class="py-lineno">659</tt>  <tt class="py-line"> </tt>
+<a name="L660"></a><tt class="py-lineno">660</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.oauth_aware"></a><div id="OAuth2Decorator.oauth_aware-def"><a name="L661"></a><tt class="py-lineno">661</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.oauth_aware-toggle" onclick="return toggle('OAuth2Decorator.oauth_aware');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_aware">oauth_aware</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.oauth_aware-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.oauth_aware-expanded"><a name="L662"></a><tt class="py-lineno">662</tt>  <tt class="py-line">    <tt class="py-docstring">"""Decorator that sets up for OAuth 2.0 dance, but doesn't do it.</tt> </tt>
+<a name="L663"></a><tt class="py-lineno">663</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L664"></a><tt class="py-lineno">664</tt>  <tt class="py-line"><tt class="py-docstring">    Does all the setup for the OAuth dance, but doesn't initiate it.</tt> </tt>
+<a name="L665"></a><tt class="py-lineno">665</tt>  <tt class="py-line"><tt class="py-docstring">    This decorator is useful if you want to create a page that knows</tt> </tt>
+<a name="L666"></a><tt class="py-lineno">666</tt>  <tt class="py-line"><tt class="py-docstring">    whether or not the user has granted access to this application.</tt> </tt>
+<a name="L667"></a><tt class="py-lineno">667</tt>  <tt class="py-line"><tt class="py-docstring">    From within a method decorated with @oauth_aware the has_credentials()</tt> </tt>
+<a name="L668"></a><tt class="py-lineno">668</tt>  <tt class="py-line"><tt class="py-docstring">    and authorize_url() methods can be called.</tt> </tt>
+<a name="L669"></a><tt class="py-lineno">669</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L670"></a><tt class="py-lineno">670</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L671"></a><tt class="py-lineno">671</tt>  <tt class="py-line"><tt class="py-docstring">      method: callable, to be decorated method of a webapp.RequestHandler</tt> </tt>
+<a name="L672"></a><tt class="py-lineno">672</tt>  <tt class="py-line"><tt class="py-docstring">        instance.</tt> </tt>
+<a name="L673"></a><tt class="py-lineno">673</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L674"></a><tt class="py-lineno">674</tt>  <tt class="py-line"> </tt>
+<a name="L675"></a><tt class="py-lineno">675</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">setup_oauth</tt><tt class="py-op">(</tt><tt class="py-param">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L676"></a><tt class="py-lineno">676</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error</tt><tt class="py-op">:</tt> </tt>
+<a name="L677"></a><tt class="py-lineno">677</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator._display_error_message" class="py-name" href="#" onclick="return doclink('link-178', '_display_error_message', 'link-164');">_display_error_message</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
+<a name="L678"></a><tt class="py-lineno">678</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L679"></a><tt class="py-lineno">679</tt>  <tt class="py-line"> </tt>
+<a name="L680"></a><tt class="py-lineno">680</tt>  <tt class="py-line">      <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">get_current_user</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L681"></a><tt class="py-lineno">681</tt>  <tt class="py-line">      <tt class="py-comment"># Don't use @login_decorator as this could be used in a POST request.</tt> </tt>
+<a name="L682"></a><tt class="py-lineno">682</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">user</tt><tt class="py-op">:</tt> </tt>
+<a name="L683"></a><tt class="py-lineno">683</tt>  <tt class="py-line">        <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">create_login_url</tt><tt class="py-op">(</tt> </tt>
+<a name="L684"></a><tt class="py-lineno">684</tt>  <tt class="py-line">            <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-179', 'request', 'link-144');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L685"></a><tt class="py-lineno">685</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L686"></a><tt class="py-lineno">686</tt>  <tt class="py-line"> </tt>
+<a name="L687"></a><tt class="py-lineno">687</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator._create_flow" class="py-name" href="#" onclick="return doclink('link-180', '_create_flow', 'link-166');">_create_flow</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
+<a name="L688"></a><tt class="py-lineno">688</tt>  <tt class="py-line"> </tt>
+<a name="L689"></a><tt class="py-lineno">689</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'state'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-181" class="py-name"><a title="oauth2client.appengine._build_state_value" class="py-name" href="#" onclick="return doclink('link-181', '_build_state_value', 'link-167');">_build_state_value</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
+<a name="L690"></a><tt class="py-lineno">690</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-182', 'credentials', 'link-94');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-183" class="py-name"><a title="oauth2client.appengine.StorageByKeyName" class="py-name" href="#" onclick="return doclink('link-183', 'StorageByKeyName', 'link-169');">StorageByKeyName</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L691"></a><tt class="py-lineno">691</tt>  <tt class="py-line">          <tt id="link-184" class="py-name"><a title="oauth2client.appengine.CredentialsModel" class="py-name" href="#" onclick="return doclink('link-184', 'CredentialsModel', 'link-170');">CredentialsModel</a></tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-185', 'get', 'link-47');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L692"></a><tt class="py-lineno">692</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L693"></a><tt class="py-lineno">693</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">setup_oauth</tt> </tt>
+</div><a name="L694"></a><tt class="py-lineno">694</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.has_credentials"></a><div id="OAuth2Decorator.has_credentials-def"><a name="L695"></a><tt class="py-lineno">695</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.has_credentials-toggle" onclick="return toggle('OAuth2Decorator.has_credentials');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#has_credentials">has_credentials</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.has_credentials-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.has_credentials-expanded"><a name="L696"></a><tt class="py-lineno">696</tt>  <tt class="py-line">    <tt class="py-docstring">"""True if for the logged in user there are valid access Credentials.</tt> </tt>
+<a name="L697"></a><tt class="py-lineno">697</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L698"></a><tt class="py-lineno">698</tt>  <tt class="py-line"><tt class="py-docstring">    Must only be called from with a webapp.RequestHandler subclassed method</tt> </tt>
+<a name="L699"></a><tt class="py-lineno">699</tt>  <tt class="py-line"><tt class="py-docstring">    that had been decorated with either @oauth_required or @oauth_aware.</tt> </tt>
+<a name="L700"></a><tt class="py-lineno">700</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L701"></a><tt class="py-lineno">701</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-186', 'credentials', 'link-94');">credentials</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-187', 'credentials', 'link-94');">credentials</a></tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> </tt>
+</div><a name="L702"></a><tt class="py-lineno">702</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.authorize_url"></a><div id="OAuth2Decorator.authorize_url-def"><a name="L703"></a><tt class="py-lineno">703</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.authorize_url-toggle" onclick="return toggle('OAuth2Decorator.authorize_url');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#authorize_url">authorize_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.authorize_url-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.authorize_url-expanded"><a name="L704"></a><tt class="py-lineno">704</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns the URL to start the OAuth dance.</tt> </tt>
+<a name="L705"></a><tt class="py-lineno">705</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L706"></a><tt class="py-lineno">706</tt>  <tt class="py-line"><tt class="py-docstring">    Must only be called from with a webapp.RequestHandler subclassed method</tt> </tt>
+<a name="L707"></a><tt class="py-lineno">707</tt>  <tt class="py-line"><tt class="py-docstring">    that had been decorated with either @oauth_required or @oauth_aware.</tt> </tt>
+<a name="L708"></a><tt class="py-lineno">708</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L709"></a><tt class="py-lineno">709</tt>  <tt class="py-line">    <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url()=oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url"><a title="oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url" class="py-name" href="#" onclick="return doclink('link-188', 'step1_get_authorize_url', 'link-188');">step1_get_authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L710"></a><tt class="py-lineno">710</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L711"></a><tt class="py-lineno">711</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.http"></a><div id="OAuth2Decorator.http-def"><a name="L712"></a><tt class="py-lineno">712</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.http-toggle" onclick="return toggle('OAuth2Decorator.http');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#http">http</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.http-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.http-expanded"><a name="L713"></a><tt class="py-lineno">713</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns an authorized http instance.</tt> </tt>
+<a name="L714"></a><tt class="py-lineno">714</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L715"></a><tt class="py-lineno">715</tt>  <tt class="py-line"><tt class="py-docstring">    Must only be called from within an @oauth_required decorated method, or</tt> </tt>
+<a name="L716"></a><tt class="py-lineno">716</tt>  <tt class="py-line"><tt class="py-docstring">    from within an @oauth_aware decorated method where has_credentials()</tt> </tt>
+<a name="L717"></a><tt class="py-lineno">717</tt>  <tt class="py-line"><tt class="py-docstring">    returns True.</tt> </tt>
+<a name="L718"></a><tt class="py-lineno">718</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L719"></a><tt class="py-lineno">719</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-189', 'credentials', 'link-94');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-190" class="py-name" targets="Method oauth2client.client.Credentials.authorize()=oauth2client.client.Credentials-class.html#authorize,Method oauth2client.client.OAuth2Credentials.authorize()=oauth2client.client.OAuth2Credentials-class.html#authorize"><a title="oauth2client.client.Credentials.authorize
+oauth2client.client.OAuth2Credentials.authorize" class="py-name" href="#" onclick="return doclink('link-190', 'authorize', 'link-190');">authorize</a></tt><tt class="py-op">(</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L720"></a><tt class="py-lineno">720</tt>  <tt class="py-line"> </tt>
+<a name="L721"></a><tt class="py-lineno">721</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
+<a name="OAuth2Decorator.callback_path"></a><div id="OAuth2Decorator.callback_path-def"><a name="L722"></a><tt class="py-lineno">722</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.callback_path-toggle" onclick="return toggle('OAuth2Decorator.callback_path');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_path">callback_path</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.callback_path-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.callback_path-expanded"><a name="L723"></a><tt class="py-lineno">723</tt>  <tt class="py-line">    <tt class="py-docstring">"""The absolute path where the callback will occur.</tt> </tt>
+<a name="L724"></a><tt class="py-lineno">724</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L725"></a><tt class="py-lineno">725</tt>  <tt class="py-line"><tt class="py-docstring">    Note this is the absolute path, not the absolute URI, that will be</tt> </tt>
+<a name="L726"></a><tt class="py-lineno">726</tt>  <tt class="py-line"><tt class="py-docstring">    calculated by the decorator at runtime. See callback_handler() for how this</tt> </tt>
+<a name="L727"></a><tt class="py-lineno">727</tt>  <tt class="py-line"><tt class="py-docstring">    should be used.</tt> </tt>
+<a name="L728"></a><tt class="py-lineno">728</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L729"></a><tt class="py-lineno">729</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L730"></a><tt class="py-lineno">730</tt>  <tt class="py-line"><tt class="py-docstring">      The callback path as a string.</tt> </tt>
+<a name="L731"></a><tt class="py-lineno">731</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L732"></a><tt class="py-lineno">732</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback_path</tt> </tt>
+</div><a name="L733"></a><tt class="py-lineno">733</tt>  <tt class="py-line"> </tt>
+<a name="L734"></a><tt class="py-lineno">734</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.callback_handler"></a><div id="OAuth2Decorator.callback_handler-def"><a name="L735"></a><tt class="py-lineno">735</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.callback_handler-toggle" onclick="return toggle('OAuth2Decorator.callback_handler');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_handler">callback_handler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.callback_handler-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.callback_handler-expanded"><a name="L736"></a><tt class="py-lineno">736</tt>  <tt class="py-line">    <tt class="py-docstring">"""RequestHandler for the OAuth 2.0 redirect callback.</tt> </tt>
+<a name="L737"></a><tt class="py-lineno">737</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L738"></a><tt class="py-lineno">738</tt>  <tt class="py-line"><tt class="py-docstring">    Usage:</tt> </tt>
+<a name="L739"></a><tt class="py-lineno">739</tt>  <tt class="py-line"><tt class="py-docstring">       app = webapp.WSGIApplication([</tt> </tt>
+<a name="L740"></a><tt class="py-lineno">740</tt>  <tt class="py-line"><tt class="py-docstring">         ('/index', MyIndexHandler),</tt> </tt>
+<a name="L741"></a><tt class="py-lineno">741</tt>  <tt class="py-line"><tt class="py-docstring">         ...,</tt> </tt>
+<a name="L742"></a><tt class="py-lineno">742</tt>  <tt class="py-line"><tt class="py-docstring">         (decorator.callback_path, decorator.callback_handler())</tt> </tt>
+<a name="L743"></a><tt class="py-lineno">743</tt>  <tt class="py-line"><tt class="py-docstring">       ])</tt> </tt>
+<a name="L744"></a><tt class="py-lineno">744</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L745"></a><tt class="py-lineno">745</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L746"></a><tt class="py-lineno">746</tt>  <tt class="py-line"><tt class="py-docstring">      A webapp.RequestHandler that handles the redirect back from the</tt> </tt>
+<a name="L747"></a><tt class="py-lineno">747</tt>  <tt class="py-line"><tt class="py-docstring">      server during the OAuth 2.0 dance.</tt> </tt>
+<a name="L748"></a><tt class="py-lineno">748</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L749"></a><tt class="py-lineno">749</tt>  <tt class="py-line">    <tt class="py-name">decorator</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
+<a name="L750"></a><tt class="py-lineno">750</tt>  <tt class="py-line"> </tt>
+<a name="L751"></a><tt class="py-lineno">751</tt>  <tt class="py-line">    <tt class="py-keyword">class</tt> <tt class="py-def-name">OAuth2Handler</tt><tt class="py-op">(</tt><tt class="py-base-class">webapp</tt><tt class="py-op">.</tt><tt class="py-base-class">RequestHandler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L752"></a><tt class="py-lineno">752</tt>  <tt class="py-line">      <tt class="py-docstring">"""Handler for the redirect_uri of the OAuth 2.0 dance."""</tt> </tt>
+<a name="L753"></a><tt class="py-lineno">753</tt>  <tt class="py-line"> </tt>
+<a name="L754"></a><tt class="py-lineno">754</tt>  <tt class="py-line">      <tt class="py-decorator">@</tt><tt class="py-decorator">login_required</tt> </tt>
+<a name="L755"></a><tt class="py-lineno">755</tt>  <tt class="py-line">      <tt class="py-keyword">def</tt> <tt class="py-def-name">get</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L756"></a><tt class="py-lineno">756</tt>  <tt class="py-line">        <tt class="py-name">error</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-191', 'request', 'link-144');">request</a></tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-192', 'get', 'link-47');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'error'</tt><tt class="py-op">)</tt> </tt>
+<a name="L757"></a><tt class="py-lineno">757</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">error</tt><tt class="py-op">:</tt> </tt>
+<a name="L758"></a><tt class="py-lineno">758</tt>  <tt class="py-line">          <tt class="py-name">errormsg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-193', 'request', 'link-144');">request</a></tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-194', 'get', 'link-47');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'error_description'</tt><tt class="py-op">,</tt> <tt class="py-name">error</tt><tt class="py-op">)</tt> </tt>
+<a name="L759"></a><tt class="py-lineno">759</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-195', 'response', 'link-157');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-196', 'write', 'link-158');">write</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L760"></a><tt class="py-lineno">760</tt>  <tt class="py-line">              <tt class="py-string">'The authorization request failed: %s'</tt> <tt class="py-op">%</tt> <tt id="link-197" class="py-name"><a title="oauth2client.appengine._safe_html" class="py-name" href="#" onclick="return doclink('link-197', '_safe_html', 'link-161');">_safe_html</a></tt><tt class="py-op">(</tt><tt class="py-name">errormsg</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L761"></a><tt class="py-lineno">761</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L762"></a><tt class="py-lineno">762</tt>  <tt class="py-line">          <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">get_current_user</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L763"></a><tt class="py-lineno">763</tt>  <tt class="py-line">          <tt class="py-name">decorator</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator._create_flow" class="py-name" href="#" onclick="return doclink('link-198', '_create_flow', 'link-166');">_create_flow</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L764"></a><tt class="py-lineno">764</tt>  <tt class="py-line">          <tt id="link-199" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-199', 'credentials', 'link-94');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">decorator</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-200" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step2_exchange()=oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-200', 'step2_exchange', 'link-200');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-201', 'request', 'link-144');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
+<a name="L765"></a><tt class="py-lineno">765</tt>  <tt class="py-line">          <tt id="link-202" class="py-name"><a title="oauth2client.appengine.StorageByKeyName" class="py-name" href="#" onclick="return doclink('link-202', 'StorageByKeyName', 'link-169');">StorageByKeyName</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L766"></a><tt class="py-lineno">766</tt>  <tt class="py-line">              <tt id="link-203" class="py-name"><a title="oauth2client.appengine.CredentialsModel" class="py-name" href="#" onclick="return doclink('link-203', 'CredentialsModel', 'link-170');">CredentialsModel</a></tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-204', 'put', 'link-59');">put</a></tt><tt class="py-op">(</tt><tt id="link-205" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-205', 'credentials', 'link-94');">credentials</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L767"></a><tt class="py-lineno">767</tt>  <tt class="py-line">          <tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt id="link-206" class="py-name" targets="Function oauth2client.appengine._parse_state_value()=oauth2client.appengine-module.html#_parse_state_value"><a title="oauth2client.appengine._parse_state_value" class="py-name" href="#" onclick="return doclink('link-206', '_parse_state_value', 'link-206');">_parse_state_value</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-207', 'request', 'link-144');">request</a></tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-208', 'get', 'link-47');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'state'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L768"></a><tt class="py-lineno">768</tt>  <tt class="py-line">                                            <tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
+<a name="L769"></a><tt class="py-lineno">769</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L770"></a><tt class="py-lineno">770</tt>  <tt class="py-line"> </tt>
+<a name="L771"></a><tt class="py-lineno">771</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">OAuth2Handler</tt> </tt>
+</div><a name="L772"></a><tt class="py-lineno">772</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.callback_application"></a><div id="OAuth2Decorator.callback_application-def"><a name="L773"></a><tt class="py-lineno">773</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.callback_application-toggle" onclick="return toggle('OAuth2Decorator.callback_application');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_application">callback_application</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.callback_application-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.callback_application-expanded"><a name="L774"></a><tt class="py-lineno">774</tt>  <tt class="py-line">    <tt class="py-docstring">"""WSGI application for handling the OAuth 2.0 redirect callback.</tt> </tt>
+<a name="L775"></a><tt class="py-lineno">775</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L776"></a><tt class="py-lineno">776</tt>  <tt class="py-line"><tt class="py-docstring">    If you need finer grained control use `callback_handler` which returns just</tt> </tt>
+<a name="L777"></a><tt class="py-lineno">777</tt>  <tt class="py-line"><tt class="py-docstring">    the webapp.RequestHandler.</tt> </tt>
+<a name="L778"></a><tt class="py-lineno">778</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L779"></a><tt class="py-lineno">779</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L780"></a><tt class="py-lineno">780</tt>  <tt class="py-line"><tt class="py-docstring">      A webapp.WSGIApplication that handles the redirect back from the</tt> </tt>
+<a name="L781"></a><tt class="py-lineno">781</tt>  <tt class="py-line"><tt class="py-docstring">      server during the OAuth 2.0 dance.</tt> </tt>
+<a name="L782"></a><tt class="py-lineno">782</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L783"></a><tt class="py-lineno">783</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">webapp</tt><tt class="py-op">.</tt><tt class="py-name">WSGIApplication</tt><tt class="py-op">(</tt><tt class="py-op">[</tt> </tt>
+<a name="L784"></a><tt class="py-lineno">784</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.callback_path" class="py-name" href="#" onclick="return doclink('link-209', 'callback_path', 'link-156');">callback_path</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.callback_handler()=oauth2client.appengine.OAuth2Decorator-class.html#callback_handler"><a title="oauth2client.appengine.OAuth2Decorator.callback_handler" class="py-name" href="#" onclick="return doclink('link-210', 'callback_handler', 'link-210');">callback_handler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L785"></a><tt class="py-lineno">785</tt>  <tt class="py-line">        <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L786"></a><tt class="py-lineno">786</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2DecoratorFromClientSecrets"></a><div id="OAuth2DecoratorFromClientSecrets-def"><a name="L787"></a><tt class="py-lineno">787</tt>  <tt class="py-line"> </tt>
+<a name="L788"></a><tt class="py-lineno">788</tt> <a class="py-toggle" href="#" id="OAuth2DecoratorFromClientSecrets-toggle" onclick="return toggle('OAuth2DecoratorFromClientSecrets');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html">OAuth2DecoratorFromClientSecrets</a><tt class="py-op">(</tt><tt class="py-base-class">OAuth2Decorator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2DecoratorFromClientSecrets-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="OAuth2DecoratorFromClientSecrets-expanded"><a name="L789"></a><tt class="py-lineno">789</tt>  <tt class="py-line">  <tt class="py-docstring">"""An OAuth2Decorator that builds from a clientsecrets file.</tt> </tt>
+<a name="L790"></a><tt class="py-lineno">790</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L791"></a><tt class="py-lineno">791</tt>  <tt class="py-line"><tt class="py-docstring">  Uses a clientsecrets file as the source for all the information when</tt> </tt>
+<a name="L792"></a><tt class="py-lineno">792</tt>  <tt class="py-line"><tt class="py-docstring">  constructing an OAuth2Decorator.</tt> </tt>
+<a name="L793"></a><tt class="py-lineno">793</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L794"></a><tt class="py-lineno">794</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
+<a name="L795"></a><tt class="py-lineno">795</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L796"></a><tt class="py-lineno">796</tt>  <tt class="py-line"><tt class="py-docstring">    decorator = OAuth2DecoratorFromClientSecrets(</tt> </tt>
+<a name="L797"></a><tt class="py-lineno">797</tt>  <tt class="py-line"><tt class="py-docstring">      os.path.join(os.path.dirname(__file__), 'client_secrets.json')</tt> </tt>
+<a name="L798"></a><tt class="py-lineno">798</tt>  <tt class="py-line"><tt class="py-docstring">      scope='https://www.googleapis.com/auth/plus')</tt> </tt>
+<a name="L799"></a><tt class="py-lineno">799</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L800"></a><tt class="py-lineno">800</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L801"></a><tt class="py-lineno">801</tt>  <tt class="py-line"><tt class="py-docstring">    class MainHandler(webapp.RequestHandler):</tt> </tt>
+<a name="L802"></a><tt class="py-lineno">802</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L803"></a><tt class="py-lineno">803</tt>  <tt class="py-line"><tt class="py-docstring">      @decorator.oauth_required</tt> </tt>
+<a name="L804"></a><tt class="py-lineno">804</tt>  <tt class="py-line"><tt class="py-docstring">      def get(self):</tt> </tt>
+<a name="L805"></a><tt class="py-lineno">805</tt>  <tt class="py-line"><tt class="py-docstring">        http = decorator.http()</tt> </tt>
+<a name="L806"></a><tt class="py-lineno">806</tt>  <tt class="py-line"><tt class="py-docstring">        # http is authorized with the user's Credentials and can be used</tt> </tt>
+<a name="L807"></a><tt class="py-lineno">807</tt>  <tt class="py-line"><tt class="py-docstring">        # in API calls</tt> </tt>
+<a name="L808"></a><tt class="py-lineno">808</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L809"></a><tt class="py-lineno">809</tt>  <tt class="py-line"> </tt>
+<a name="L810"></a><tt class="py-lineno">810</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-211', 'positional', 'link-68');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="OAuth2DecoratorFromClientSecrets.__init__"></a><div id="OAuth2DecoratorFromClientSecrets.__init__-def"><a name="L811"></a><tt class="py-lineno">811</tt> <a class="py-toggle" href="#" id="OAuth2DecoratorFromClientSecrets.__init__-toggle" onclick="return toggle('OAuth2DecoratorFromClientSecrets.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2DecoratorFromClientSecrets.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2DecoratorFromClientSecrets.__init__-expanded"><a name="L812"></a><tt class="py-lineno">812</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor</tt> </tt>
+<a name="L813"></a><tt class="py-lineno">813</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L814"></a><tt class="py-lineno">814</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L815"></a><tt class="py-lineno">815</tt>  <tt class="py-line"><tt class="py-docstring">      filename: string, File name of client secrets.</tt> </tt>
+<a name="L816"></a><tt class="py-lineno">816</tt>  <tt class="py-line"><tt class="py-docstring">      scope: string or iterable of strings, scope(s) of the credentials being</tt> </tt>
+<a name="L817"></a><tt class="py-lineno">817</tt>  <tt class="py-line"><tt class="py-docstring">        requested.</tt> </tt>
+<a name="L818"></a><tt class="py-lineno">818</tt>  <tt class="py-line"><tt class="py-docstring">      message: string, A friendly string to display to the user if the</tt> </tt>
+<a name="L819"></a><tt class="py-lineno">819</tt>  <tt class="py-line"><tt class="py-docstring">        clientsecrets file is missing or invalid. The message may contain HTML</tt> </tt>
+<a name="L820"></a><tt class="py-lineno">820</tt>  <tt class="py-line"><tt class="py-docstring">        and will be presented on the web interface for any method that uses the</tt> </tt>
+<a name="L821"></a><tt class="py-lineno">821</tt>  <tt class="py-line"><tt class="py-docstring">        decorator.</tt> </tt>
+<a name="L822"></a><tt class="py-lineno">822</tt>  <tt class="py-line"><tt class="py-docstring">      cache: An optional cache service client that implements get() and set()</tt> </tt>
+<a name="L823"></a><tt class="py-lineno">823</tt>  <tt class="py-line"><tt class="py-docstring">        methods. See clientsecrets.loadfile() for details.</tt> </tt>
+<a name="L824"></a><tt class="py-lineno">824</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L825"></a><tt class="py-lineno">825</tt>  <tt class="py-line">    <tt class="py-name">client_type</tt><tt class="py-op">,</tt> <tt class="py-name">client_info</tt> <tt class="py-op">=</tt> <tt id="link-212" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-212', 'clientsecrets', 'link-16');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-213" class="py-name" targets="Function oauth2client.clientsecrets.loadfile()=oauth2client.clientsecrets-module.html#loadfile"><a title="oauth2client.clientsecrets.loadfile" class="py-name" href="#" onclick="return doclink('link-213', 'loadfile', 'link-213');">loadfile</a></tt><tt class="py-op">(</tt><tt id="link-214" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-214', 'filename', 'link-214');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> </tt>
+<a name="L826"></a><tt class="py-lineno">826</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">client_type</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt> </tt>
+<a name="L827"></a><tt class="py-lineno">827</tt>  <tt class="py-line">        <tt id="link-215" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-215', 'clientsecrets', 'link-16');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-216" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_WEB=oauth2client.clientsecrets-module.html#TYPE_WEB"><a title="oauth2client.clientsecrets.TYPE_WEB" class="py-name" href="#" onclick="return doclink('link-216', 'TYPE_WEB', 'link-216');">TYPE_WEB</a></tt><tt class="py-op">,</tt> <tt id="link-217" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-217', 'clientsecrets', 'link-16');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-218" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_INSTALLED=oauth2client.clientsecrets-module.html#TYPE_INSTALLED"><a title="oauth2client.clientsecrets.TYPE_INSTALLED" class="py-name" href="#" onclick="return doclink('link-218', 'TYPE_INSTALLED', 'link-218');">TYPE_INSTALLED</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L828"></a><tt class="py-lineno">828</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-219" class="py-name" targets="Class oauth2client.appengine.InvalidClientSecretsError=oauth2client.appengine.InvalidClientSecretsError-class.html,Class oauth2client.clientsecrets.InvalidClientSecretsError=oauth2client.clientsecrets.InvalidClientSecretsError-class.html"><a title="oauth2client.appengine.InvalidClientSecretsError
+oauth2client.clientsecrets.InvalidClientSecretsError" class="py-name" href="#" onclick="return doclink('link-219', 'InvalidClientSecretsError', 'link-219');">InvalidClientSecretsError</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L829"></a><tt class="py-lineno">829</tt>  <tt class="py-line">          <tt class="py-string">'OAuth2Decorator doesn\'t support this OAuth 2.0 flow.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L830"></a><tt class="py-lineno">830</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-220" class="py-name" targets="Class oauth2client.appengine.OAuth2DecoratorFromClientSecrets=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html"><a title="oauth2client.appengine.OAuth2DecoratorFromClientSecrets" class="py-name" href="#" onclick="return doclink('link-220', 'OAuth2DecoratorFromClientSecrets', 'link-220');">OAuth2DecoratorFromClientSecrets</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="apiclient.discovery.Resource.__init__
+apiclient.errors.BatchError.__init__
 apiclient.errors.HttpError.__init__
 apiclient.errors.UnexpectedBodyError.__init__
 apiclient.errors.UnexpectedMethodError.__init__
@@ -883,6 +1109,10 @@
 apiclient.http._StreamSlice.__init__
 apiclient.model.JsonModel.__init__
 apiclient.model.ProtocolBufferModel.__init__
+apiclient.push.Channel.__init__
+apiclient.push.Headers.__init__
+apiclient.push.Subscription.__init__
+apiclient.push.WebhookChannel.__init__
 apiclient.schema.Schemas.__init__
 apiclient.schema._SchemaToStruct.__init__
 oauth2client.appengine.AppAssertionCredentials.__init__
@@ -895,8 +1125,6 @@
 oauth2client.client.OAuth2Credentials.__init__
 oauth2client.client.OAuth2WebServerFlow.__init__
 oauth2client.client.SignedJwtAssertionCredentials.__init__
-oauth2client.crypt.Signer.__init__
-oauth2client.crypt.Verifier.__init__
 oauth2client.django_orm.CredentialsField.__init__
 oauth2client.django_orm.FlowField.__init__
 oauth2client.django_orm.Storage.__init__
@@ -906,42 +1134,42 @@
 oauth2client.locked_file.LockedFile.__init__
 oauth2client.locked_file._Opener.__init__
 oauth2client.multistore_file._MultiStore._Storage.__init__
-oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-184', '__init__', 'link-67');">__init__</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L665"></a><tt class="py-lineno">665</tt>  <tt class="py-line">              <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'client_id'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L666"></a><tt class="py-lineno">666</tt>  <tt class="py-line">              <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'client_secret'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L667"></a><tt class="py-lineno">667</tt>  <tt class="py-line">              <tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
-<a name="L668"></a><tt class="py-lineno">668</tt>  <tt class="py-line">              <tt class="py-name">auth_uri</tt><tt class="py-op">=</tt><tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'auth_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L669"></a><tt class="py-lineno">669</tt>  <tt class="py-line">              <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'token_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L670"></a><tt class="py-lineno">670</tt>  <tt class="py-line">              <tt class="py-name">message</tt><tt class="py-op">=</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
-<a name="L671"></a><tt class="py-lineno">671</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">message</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L672"></a><tt class="py-lineno">672</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt> </tt>
-<a name="L673"></a><tt class="py-lineno">673</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L674"></a><tt class="py-lineno">674</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt> <tt class="py-op">=</tt> <tt class="py-string">"Please configure your application for OAuth 2.0"</tt> </tt>
-</div></div><a name="L675"></a><tt class="py-lineno">675</tt>  <tt class="py-line"> </tt>
-<a name="oauth2decorator_from_clientsecrets"></a><div id="oauth2decorator_from_clientsecrets-def"><a name="L676"></a><tt class="py-lineno">676</tt>  <tt class="py-line"> </tt>
-<a name="L677"></a><tt class="py-lineno">677</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-185', 'positional', 'link-65');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L678"></a><tt class="py-lineno">678</tt> <a class="py-toggle" href="#" id="oauth2decorator_from_clientsecrets-toggle" onclick="return toggle('oauth2decorator_from_clientsecrets');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#oauth2decorator_from_clientsecrets">oauth2decorator_from_clientsecrets</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
-<a name="L679"></a><tt class="py-lineno">679</tt>  <tt class="py-line">                                       <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="oauth2decorator_from_clientsecrets-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="oauth2decorator_from_clientsecrets-expanded"><a name="L680"></a><tt class="py-lineno">680</tt>  <tt class="py-line">  <tt class="py-docstring">"""Creates an OAuth2Decorator populated from a clientsecrets file.</tt> </tt>
-<a name="L681"></a><tt class="py-lineno">681</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L682"></a><tt class="py-lineno">682</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L683"></a><tt class="py-lineno">683</tt>  <tt class="py-line"><tt class="py-docstring">    filename: string, File name of client secrets.</tt> </tt>
-<a name="L684"></a><tt class="py-lineno">684</tt>  <tt class="py-line"><tt class="py-docstring">    scope: string or list of strings, scope(s) of the credentials being</tt> </tt>
-<a name="L685"></a><tt class="py-lineno">685</tt>  <tt class="py-line"><tt class="py-docstring">      requested.</tt> </tt>
-<a name="L686"></a><tt class="py-lineno">686</tt>  <tt class="py-line"><tt class="py-docstring">    message: string, A friendly string to display to the user if the</tt> </tt>
-<a name="L687"></a><tt class="py-lineno">687</tt>  <tt class="py-line"><tt class="py-docstring">      clientsecrets file is missing or invalid. The message may contain HTML and</tt> </tt>
-<a name="L688"></a><tt class="py-lineno">688</tt>  <tt class="py-line"><tt class="py-docstring">      will be presented on the web interface for any method that uses the</tt> </tt>
-<a name="L689"></a><tt class="py-lineno">689</tt>  <tt class="py-line"><tt class="py-docstring">      decorator.</tt> </tt>
-<a name="L690"></a><tt class="py-lineno">690</tt>  <tt class="py-line"><tt class="py-docstring">    cache: An optional cache service client that implements get() and set()</tt> </tt>
-<a name="L691"></a><tt class="py-lineno">691</tt>  <tt class="py-line"><tt class="py-docstring">      methods. See clientsecrets.loadfile() for details.</tt> </tt>
-<a name="L692"></a><tt class="py-lineno">692</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L693"></a><tt class="py-lineno">693</tt>  <tt class="py-line"><tt class="py-docstring">  Returns: An OAuth2Decorator</tt> </tt>
-<a name="L694"></a><tt class="py-lineno">694</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L695"></a><tt class="py-lineno">695</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L696"></a><tt class="py-lineno">696</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-186" class="py-name"><a title="oauth2client.appengine.OAuth2DecoratorFromClientSecrets" class="py-name" href="#" onclick="return doclink('link-186', 'OAuth2DecoratorFromClientSecrets', 'link-183');">OAuth2DecoratorFromClientSecrets</a></tt><tt class="py-op">(</tt><tt id="link-187" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-187', 'filename', 'link-177');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
-<a name="L697"></a><tt class="py-lineno">697</tt>  <tt class="py-line">    <tt class="py-name">message</tt><tt class="py-op">=</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L698"></a><tt class="py-lineno">698</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-221', '__init__', 'link-72');">__init__</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L831"></a><tt class="py-lineno">831</tt>  <tt class="py-line">              <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'client_id'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L832"></a><tt class="py-lineno">832</tt>  <tt class="py-line">              <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'client_secret'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L833"></a><tt class="py-lineno">833</tt>  <tt class="py-line">              <tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L834"></a><tt class="py-lineno">834</tt>  <tt class="py-line">              <tt class="py-name">auth_uri</tt><tt class="py-op">=</tt><tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'auth_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L835"></a><tt class="py-lineno">835</tt>  <tt class="py-line">              <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'token_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L836"></a><tt class="py-lineno">836</tt>  <tt class="py-line">              <tt class="py-name">message</tt><tt class="py-op">=</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L837"></a><tt class="py-lineno">837</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">message</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L838"></a><tt class="py-lineno">838</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt> </tt>
+<a name="L839"></a><tt class="py-lineno">839</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L840"></a><tt class="py-lineno">840</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt> <tt class="py-op">=</tt> <tt class="py-string">"Please configure your application for OAuth 2.0"</tt> </tt>
+</div></div><a name="L841"></a><tt class="py-lineno">841</tt>  <tt class="py-line"> </tt>
+<a name="oauth2decorator_from_clientsecrets"></a><div id="oauth2decorator_from_clientsecrets-def"><a name="L842"></a><tt class="py-lineno">842</tt>  <tt class="py-line"> </tt>
+<a name="L843"></a><tt class="py-lineno">843</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-222', 'positional', 'link-68');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L844"></a><tt class="py-lineno">844</tt> <a class="py-toggle" href="#" id="oauth2decorator_from_clientsecrets-toggle" onclick="return toggle('oauth2decorator_from_clientsecrets');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#oauth2decorator_from_clientsecrets">oauth2decorator_from_clientsecrets</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L845"></a><tt class="py-lineno">845</tt>  <tt class="py-line">                                       <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="oauth2decorator_from_clientsecrets-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="oauth2decorator_from_clientsecrets-expanded"><a name="L846"></a><tt class="py-lineno">846</tt>  <tt class="py-line">  <tt class="py-docstring">"""Creates an OAuth2Decorator populated from a clientsecrets file.</tt> </tt>
+<a name="L847"></a><tt class="py-lineno">847</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L848"></a><tt class="py-lineno">848</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L849"></a><tt class="py-lineno">849</tt>  <tt class="py-line"><tt class="py-docstring">    filename: string, File name of client secrets.</tt> </tt>
+<a name="L850"></a><tt class="py-lineno">850</tt>  <tt class="py-line"><tt class="py-docstring">    scope: string or list of strings, scope(s) of the credentials being</tt> </tt>
+<a name="L851"></a><tt class="py-lineno">851</tt>  <tt class="py-line"><tt class="py-docstring">      requested.</tt> </tt>
+<a name="L852"></a><tt class="py-lineno">852</tt>  <tt class="py-line"><tt class="py-docstring">    message: string, A friendly string to display to the user if the</tt> </tt>
+<a name="L853"></a><tt class="py-lineno">853</tt>  <tt class="py-line"><tt class="py-docstring">      clientsecrets file is missing or invalid. The message may contain HTML and</tt> </tt>
+<a name="L854"></a><tt class="py-lineno">854</tt>  <tt class="py-line"><tt class="py-docstring">      will be presented on the web interface for any method that uses the</tt> </tt>
+<a name="L855"></a><tt class="py-lineno">855</tt>  <tt class="py-line"><tt class="py-docstring">      decorator.</tt> </tt>
+<a name="L856"></a><tt class="py-lineno">856</tt>  <tt class="py-line"><tt class="py-docstring">    cache: An optional cache service client that implements get() and set()</tt> </tt>
+<a name="L857"></a><tt class="py-lineno">857</tt>  <tt class="py-line"><tt class="py-docstring">      methods. See clientsecrets.loadfile() for details.</tt> </tt>
+<a name="L858"></a><tt class="py-lineno">858</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L859"></a><tt class="py-lineno">859</tt>  <tt class="py-line"><tt class="py-docstring">  Returns: An OAuth2Decorator</tt> </tt>
+<a name="L860"></a><tt class="py-lineno">860</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L861"></a><tt class="py-lineno">861</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L862"></a><tt class="py-lineno">862</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-223" class="py-name"><a title="oauth2client.appengine.OAuth2DecoratorFromClientSecrets" class="py-name" href="#" onclick="return doclink('link-223', 'OAuth2DecoratorFromClientSecrets', 'link-220');">OAuth2DecoratorFromClientSecrets</a></tt><tt class="py-op">(</tt><tt id="link-224" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-224', 'filename', 'link-214');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L863"></a><tt class="py-lineno">863</tt>  <tt class="py-line">    <tt class="py-name">message</tt><tt class="py-op">=</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L864"></a><tt class="py-lineno">864</tt>  <tt class="py-line"> </tt><script type="text/javascript">
 <!--
 expandto(location.href);
 // -->
@@ -971,7 +1199,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:47 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.AppAssertionCredentials-class.html b/docs/epy/oauth2client.appengine.AppAssertionCredentials-class.html
index d492351..16a8433 100644
--- a/docs/epy/oauth2client.appengine.AppAssertionCredentials-class.html
+++ b/docs/epy/oauth2client.appengine.AppAssertionCredentials-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class AppAssertionCredentials</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#AppAssertionCredentials">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_appasserti" name="class_hierarchy_for_appasserti">
-<area shape="rect" href="oauth2client.appengine.AppAssertionCredentials-class.html" title="AppAssertionCredentials" alt="" coords="5,5,168,32"/>
-<area shape="rect" href="oauth2client.client.AssertionCredentials-class.html" title="client.AssertionCredentials" alt="" coords="192,5,368,32"/>
-<area shape="rect" href="oauth2client.client.Credentials-class.html" title="client.Credentials" alt="" coords="392,5,512,32"/>
-<area shape="rect" href="oauth2client.client.OAuth2Credentials-class.html" title="client.OAuth2Credentials" alt="" coords="536,5,701,32"/>
+<area shape="rect" id="node1" href="oauth2client.appengine.AppAssertionCredentials-class.html" title="AppAssertionCredentials" alt="" coords="5,6,171,34"/>
+<area shape="rect" id="node2" href="oauth2client.client.AssertionCredentials-class.html" title="client.AssertionCredentials" alt="" coords="195,6,373,34"/>
+<area shape="rect" id="node3" href="oauth2client.client.Credentials-class.html" title="client.Credentials" alt="" coords="397,6,520,34"/>
+<area shape="rect" id="node4" href="oauth2client.client.OAuth2Credentials-class.html" title="client.OAuth2Credentials" alt="" coords="544,6,709,34"/>
 </map>
   <img src="class_hierarchy_for_appasserti.gif" alt='' usemap="#class_hierarchy_for_appasserti" ismap="ismap" class="graph-without-title" />
 </center>
@@ -306,7 +306,7 @@
 Constructor for AppAssertionCredentials
 
 Args:
-  scope: string or list of strings, scope(s) of the credentials being
+  scope: string or iterable of strings, scope(s) of the credentials being
     requested.
 
 </pre>
@@ -417,7 +417,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:13 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:38 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.CredentialsModel-class.html b/docs/epy/oauth2client.appengine.CredentialsModel-class.html
index 0b7fe60..c880a2b 100644
--- a/docs/epy/oauth2client.appengine.CredentialsModel-class.html
+++ b/docs/epy/oauth2client.appengine.CredentialsModel-class.html
@@ -56,8 +56,8 @@
 <h1 class="epydoc">Class CredentialsModel</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsModel">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_credential" name="class_hierarchy_for_credential">
-<area shape="rect" href="javascript:void(0);" title="google.appengine.ext.db.Model" alt="" coords="5,5,205,32"/>
-<area shape="rect" href="oauth2client.appengine.CredentialsModel-class.html" title="CredentialsModel" alt="" coords="229,5,349,32"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="google.appengine.ext.db.Model" alt="" coords="5,6,208,34"/>
+<area shape="rect" id="node2" href="oauth2client.appengine.CredentialsModel-class.html" title="CredentialsModel" alt="" coords="232,6,355,34"/>
 </map>
   <img src="class_hierarchy_for_credential.gif" alt='' usemap="#class_hierarchy_for_credential" ismap="ismap" class="graph-without-title" />
 </center>
@@ -70,124 +70,6 @@
 
 </pre>
 
-<!-- ==================== NESTED CLASSES ==================== -->
-<a name="section-NestedClasses"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Nested Classes</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-NestedClasses"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Model</code></b>:
-      <code><a href="google.appengine.ext.db.PropertiedClass-class.html">__metaclass__</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Model</code></b>:
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>delete</code>,
-      <code>dynamic_properties</code>,
-      <code>has_key</code>,
-      <code>instance_properties</code>,
-      <code>is_saved</code>,
-      <code>key</code>,
-      <code>parent</code>,
-      <code>parent_key</code>,
-      <code>put</code>,
-      <code>save</code>,
-      <code>to_xml</code>
-      </p>
-    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Model</code></b> (private):
-      <code>_populate_entity</code>,
-      <code>_populate_internal_entity</code>,
-      <code>_to_entity</code>
-      </p></div>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS METHODS ==================== -->
-<a name="section-ClassMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Class Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-ClassMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Model</code></b>:
-      <code>all</code>,
-      <code>entity_type</code>,
-      <code>fields</code>,
-      <code>from_entity</code>,
-      <code>get</code>,
-      <code>get_by_id</code>,
-      <code>get_by_key_name</code>,
-      <code>get_or_insert</code>,
-      <code>gql</code>,
-      <code>kind</code>,
-      <code>properties</code>
-      </p>
-    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Model</code></b> (private):
-      <code>_load_entity_values</code>
-      </p></div>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -213,31 +95,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -261,7 +118,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:13 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:39 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.CredentialsNDBModel-class.html b/docs/epy/oauth2client.appengine.CredentialsNDBModel-class.html
new file mode 100644
index 0000000..286489d
--- /dev/null
+++ b/docs/epy/oauth2client.appengine.CredentialsNDBModel-class.html
@@ -0,0 +1,181 @@
+<?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>oauth2client.appengine.CredentialsNDBModel</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>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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%">
+      <span class="breadcrumbs">
+        <a href="oauth2client-module.html">Package&nbsp;oauth2client</a> ::
+        <a href="oauth2client.appengine-module.html">Module&nbsp;appengine</a> ::
+        Class&nbsp;CredentialsNDBModel
+      </span>
+    </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="oauth2client.appengine.CredentialsNDBModel-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class CredentialsNDBModel</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsNDBModel">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_credential_2" name="class_hierarchy_for_credential_2">
+<area shape="rect" id="node1" href="javascript:void(0);" title="google.appengine.ext.ndb.Model" alt="" coords="5,6,213,34"/>
+<area shape="rect" id="node2" href="oauth2client.appengine.CredentialsNDBModel-class.html" title="CredentialsNDBModel" alt="" coords="237,6,389,34"/>
+</map>
+  <img src="class_hierarchy_for_credential_2.gif" alt='' usemap="#class_hierarchy_for_credential_2" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<pre class="literalblock">
+NDB Model for storage of OAuth 2.0 Credentials
+
+Since this model uses the same kind as CredentialsModel and has a property
+which can serialize and deserialize Credentials correctly, it can be used
+interchangeably with a CredentialsModel to access, insert and delete the same
+entities. This simply provides an NDB model for interacting with the
+same data the DB model interacts with.
+
+Storage of the model is keyed by the user.user_id().
+
+</pre>
+
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_get_kind"></a><span class="summary-sig-name">_get_kind</span>(<span class="summary-sig-arg">cls</span>)</span><br />
+      Return the kind name for this class.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsNDBModel._get_kind">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="credentials"></a><span class="summary-name">credentials</span> = <code title="CredentialsNDBProperty()">CredentialsNDBProperty()</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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 Thu Jan 24 16:14:39 2013
+    </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>
diff --git a/docs/epy/oauth2client.appengine.CredentialsNDBProperty-class.html b/docs/epy/oauth2client.appengine.CredentialsNDBProperty-class.html
new file mode 100644
index 0000000..d6f76d8
--- /dev/null
+++ b/docs/epy/oauth2client.appengine.CredentialsNDBProperty-class.html
@@ -0,0 +1,299 @@
+<?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>oauth2client.appengine.CredentialsNDBProperty</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>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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%">
+      <span class="breadcrumbs">
+        <a href="oauth2client-module.html">Package&nbsp;oauth2client</a> ::
+        <a href="oauth2client.appengine-module.html">Module&nbsp;appengine</a> ::
+        Class&nbsp;CredentialsNDBProperty
+      </span>
+    </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="oauth2client.appengine.CredentialsNDBProperty-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class CredentialsNDBProperty</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsNDBProperty">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_credential_3" name="class_hierarchy_for_credential_3">
+<area shape="rect" id="node1" href="javascript:void(0);" title="google.appengine.ext.ndb.BlobProperty" alt="" coords="5,6,253,34"/>
+<area shape="rect" id="node2" href="oauth2client.appengine.CredentialsNDBProperty-class.html" title="CredentialsNDBProperty" alt="" coords="277,6,443,34"/>
+</map>
+  <img src="class_hierarchy_for_credential_3.gif" alt='' usemap="#class_hierarchy_for_credential_3" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<pre class="literalblock">
+App Engine NDB datastore Property for Credentials.
+
+Serves the same purpose as the DB CredentialsProperty, but for NDB models.
+Since CredentialsProperty stores data as a blob and this inherits from
+BlobProperty, the data in the datastore will be the same as in the DB case.
+
+Utility property that allows easy storage and retrieval of Credentials and
+subclasses.
+
+</pre>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="oauth2client.appengine.CredentialsNDBProperty-class.html#_validate" class="summary-sig-name" onclick="show_private();">_validate</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">value</span>)</span><br />
+      Validates a value as a proper credentials object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsNDBProperty._validate">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="oauth2client.appengine.CredentialsNDBProperty-class.html#_to_base_type" class="summary-sig-name" onclick="show_private();">_to_base_type</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">value</span>)</span><br />
+      Converts our validated value to a JSON serialized string.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsNDBProperty._to_base_type">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="oauth2client.appengine.CredentialsNDBProperty-class.html#_from_base_type" class="summary-sig-name" onclick="show_private();">_from_base_type</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">value</span>)</span><br />
+      Converts our stored JSON string back to the desired type.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsNDBProperty._from_base_type">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_validate"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_validate</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">value</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsNDBProperty._validate">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Validates a value as a proper credentials object.
+
+Args:
+  value: A value to be set on the property.
+
+Raises:
+  TypeError if the value is not an instance of Credentials.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_to_base_type"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_to_base_type</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">value</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsNDBProperty._to_base_type">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Converts our validated value to a JSON serialized string.
+
+Args:
+  value: A value to be set in the datastore.
+
+Returns:
+  A JSON serialized version of the credential, else '' if value is None.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_from_base_type"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_from_base_type</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">value</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsNDBProperty._from_base_type">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Converts our stored JSON string back to the desired type.
+
+Args:
+  value: A value from the datastore to be converted to the desired type.
+
+Returns:
+  A deserialized Credentials (or subclass) object, else None if the
+      value can't be parsed.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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 Thu Jan 24 16:14:39 2013
+    </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>
diff --git a/docs/epy/oauth2client.appengine.CredentialsProperty-class.html b/docs/epy/oauth2client.appengine.CredentialsProperty-class.html
index 6c68392..86ac259 100644
--- a/docs/epy/oauth2client.appengine.CredentialsProperty-class.html
+++ b/docs/epy/oauth2client.appengine.CredentialsProperty-class.html
@@ -55,11 +55,11 @@
 <!-- ==================== CLASS DESCRIPTION ==================== -->
 <h1 class="epydoc">Class CredentialsProperty</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsProperty">source&nbsp;code</a></span></p>
 <center>
-<center>  <map id="class_hierarchy_for_credential_2" name="class_hierarchy_for_credential_2">
-<area shape="rect" href="javascript:void(0);" title="google.appengine.ext.db.Property" alt="" coords="5,5,221,32"/>
-<area shape="rect" href="oauth2client.appengine.CredentialsProperty-class.html" title="CredentialsProperty" alt="" coords="245,5,381,32"/>
+<center>  <map id="class_hierarchy_for_credential_4" name="class_hierarchy_for_credential_4">
+<area shape="rect" id="node1" href="javascript:void(0);" title="google.appengine.ext.db.Property" alt="" coords="5,6,221,34"/>
+<area shape="rect" id="node2" href="oauth2client.appengine.CredentialsProperty-class.html" title="CredentialsProperty" alt="" coords="245,6,381,34"/>
 </map>
-  <img src="class_hierarchy_for_credential_2.gif" alt='' usemap="#class_hierarchy_for_credential_2" ismap="ismap" class="graph-without-title" />
+  <img src="class_hierarchy_for_credential_4.gif" alt='' usemap="#class_hierarchy_for_credential_4" ismap="ismap" class="graph-without-title" />
 </center>
 </center>
 <hr />
@@ -94,9 +94,8 @@
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
-          <td><span class="summary-sig"><a href="oauth2client.appengine.CredentialsProperty-class.html#get_value_for_datastore" class="summary-sig-name">get_value_for_datastore</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">model_instance</span>)</span><br />
-      Datastore representation of this property.</td>
+          <td><span class="summary-sig"><a name="get_value_for_datastore"></a><span class="summary-sig-name">get_value_for_datastore</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">model_instance</span>)</span></td>
           <td align="right" valign="top">
             <span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsProperty.get_value_for_datastore">source&nbsp;code</a></span>
             
@@ -112,9 +111,8 @@
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
-          <td><span class="summary-sig"><a href="oauth2client.appengine.CredentialsProperty-class.html#make_value_from_datastore" class="summary-sig-name">make_value_from_datastore</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">value</span>)</span><br />
-      Native representation of this property.</td>
+          <td><span class="summary-sig"><a name="make_value_from_datastore"></a><span class="summary-sig-name">make_value_from_datastore</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">value</span>)</span></td>
           <td align="right" valign="top">
             <span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsProperty.make_value_from_datastore">source&nbsp;code</a></span>
             
@@ -130,9 +128,8 @@
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
-          <td><span class="summary-sig"><a href="oauth2client.appengine.CredentialsProperty-class.html#validate" class="summary-sig-name">validate</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">value</span>)</span><br />
-      Assert that provided value is compatible with this property.</td>
+          <td><span class="summary-sig"><a name="validate"></a><span class="summary-sig-name">validate</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">value</span>)</span></td>
           <td align="right" valign="top">
             <span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsProperty.validate">source&nbsp;code</a></span>
             
@@ -142,38 +139,6 @@
       
     </td>
   </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Property</code></b>:
-      <code>__get__</code>,
-      <code>__init__</code>,
-      <code>__property_config__</code>,
-      <code>__set__</code>,
-      <code>datastore_type</code>,
-      <code>default_value</code>,
-      <code>empty</code>,
-      <code>get_updated_value_for_datastore</code>
-      </p>
-    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Property</code></b> (private):
-      <code>_attr_name</code>,
-      <code>_require_parameter</code>
-      </p></div>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
 </table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
@@ -196,187 +161,10 @@
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="data_type"></a><span class="summary-name">data_type</span> = <code title="Credentials">Credentials</code><br />
-      str(object) -&gt; string
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Property</code></b>:
-      <code>creation_counter</code>
-      </p>
+        <a name="data_type"></a><span class="summary-name">data_type</span> = <code title="Credentials">Credentials</code>
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Method Details</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-MethodDetails"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-</table>
-<a name="get_value_for_datastore"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_value_for_datastore</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">model_instance</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsProperty.get_value_for_datastore">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <pre class="literalblock">
-Datastore representation of this property.
-
-Looks for this property in the given model instance, and returns the proper
-datastore representation of the value that can be stored in a datastore
-entity.  Most critically, it will fetch the datastore key value for
-reference properties.
-
-Some properies (e.g. DateTimeProperty, UserProperty) optionally update their
-value on every put(). This call must return the current value for such
-properties (get_updated_value_for_datastore returns the new value).
-
-Args:
-  model_instance: Instance to fetch datastore value from.
-
-Returns:
-  Datastore representation of the model value in a form that is
-  appropriate for storing in the datastore.
-
-</pre>
-  <dl class="fields">
-    <dt>Overrides:
-        google.appengine.ext.db.Property.get_value_for_datastore
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="make_value_from_datastore"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">make_value_from_datastore</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">value</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsProperty.make_value_from_datastore">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <pre class="literalblock">
-Native representation of this property.
-
-Given a value retrieved from a datastore entity, return a value,
-possibly converted, to be stored on the model instance.  Usually
-this returns the value unchanged, but a property class may
-override this when it uses a different datatype on the model
-instance than on the entity.
-
-This API is not quite symmetric with get_value_for_datastore(),
-because the model instance on which to store the converted value
-may not exist yet -- we may be collecting values to be passed to a
-model constructor.
-
-Args:
-  value: value retrieved from the datastore entity.
-
-Returns:
-  The value converted for use as a model instance attribute.
-
-</pre>
-  <dl class="fields">
-    <dt>Overrides:
-        google.appengine.ext.db.Property.make_value_from_datastore
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="validate"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">validate</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">value</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsProperty.validate">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <pre class="literalblock">
-Assert that provided value is compatible with this property.
-
-Args:
-  value: Value to validate against this Property.
-
-Returns:
-  A valid value, either the input unchanged or adapted to the
-  required type.
-
-Raises:
-  BadValueError if the value is not appropriate for this
-  property in any way.
-
-</pre>
-  <dl class="fields">
-    <dt>Overrides:
-        google.appengine.ext.db.Property.validate
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -400,7 +188,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:13 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:39 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.FlowNDBProperty-class.html b/docs/epy/oauth2client.appengine.FlowNDBProperty-class.html
new file mode 100644
index 0000000..7c86eb9
--- /dev/null
+++ b/docs/epy/oauth2client.appengine.FlowNDBProperty-class.html
@@ -0,0 +1,204 @@
+<?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>oauth2client.appengine.FlowNDBProperty</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>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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%">
+      <span class="breadcrumbs">
+        <a href="oauth2client-module.html">Package&nbsp;oauth2client</a> ::
+        <a href="oauth2client.appengine-module.html">Module&nbsp;appengine</a> ::
+        Class&nbsp;FlowNDBProperty
+      </span>
+    </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="oauth2client.appengine.FlowNDBProperty-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class FlowNDBProperty</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#FlowNDBProperty">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_flowndbpro" name="class_hierarchy_for_flowndbpro">
+<area shape="rect" id="node1" href="javascript:void(0);" title="google.appengine.ext.ndb.PickleProperty" alt="" coords="5,6,264,34"/>
+<area shape="rect" id="node2" href="oauth2client.appengine.FlowNDBProperty-class.html" title="FlowNDBProperty" alt="" coords="288,6,416,34"/>
+</map>
+  <img src="class_hierarchy_for_flowndbpro.gif" alt='' usemap="#class_hierarchy_for_flowndbpro" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<pre class="literalblock">
+App Engine NDB datastore Property for Flow.
+
+Serves the same purpose as the DB FlowProperty, but for NDB models. Since
+PickleProperty inherits from BlobProperty, the underlying representation of
+the data in the datastore will be the same as in the DB case.
+
+Utility property that allows easy storage and retrieval of an
+oauth2client.Flow
+
+</pre>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="oauth2client.appengine.FlowNDBProperty-class.html#_validate" class="summary-sig-name" onclick="show_private();">_validate</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">value</span>)</span><br />
+      Validates a value as a proper Flow object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.appengine-pysrc.html#FlowNDBProperty._validate">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_validate"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_validate</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">value</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#FlowNDBProperty._validate">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Validates a value as a proper Flow object.
+
+Args:
+  value: A value to be set on the property.
+
+Raises:
+  TypeError if the value is not an instance of Flow.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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 Thu Jan 24 16:14:39 2013
+    </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>
diff --git a/docs/epy/oauth2client.appengine.FlowProperty-class.html b/docs/epy/oauth2client.appengine.FlowProperty-class.html
index 0681a6c..481b06d 100644
--- a/docs/epy/oauth2client.appengine.FlowProperty-class.html
+++ b/docs/epy/oauth2client.appengine.FlowProperty-class.html
@@ -56,8 +56,8 @@
 <h1 class="epydoc">Class FlowProperty</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#FlowProperty">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_flowproper" name="class_hierarchy_for_flowproper">
-<area shape="rect" href="javascript:void(0);" title="google.appengine.ext.db.Property" alt="" coords="5,5,221,32"/>
-<area shape="rect" href="oauth2client.appengine.FlowProperty-class.html" title="FlowProperty" alt="" coords="245,5,341,32"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="google.appengine.ext.db.Property" alt="" coords="5,6,221,34"/>
+<area shape="rect" id="node2" href="oauth2client.appengine.FlowProperty-class.html" title="FlowProperty" alt="" coords="245,6,344,34"/>
 </map>
   <img src="class_hierarchy_for_flowproper.gif" alt='' usemap="#class_hierarchy_for_flowproper" ismap="ismap" class="graph-without-title" />
 </center>
@@ -66,7 +66,7 @@
 <pre class="literalblock">
 App Engine datastore Property for Flow.
 
-Utility property that allows easy storage and retreival of an
+Utility property that allows easy storage and retrieval of an
 oauth2client.Flow
 
 </pre>
@@ -94,9 +94,8 @@
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
-          <td><span class="summary-sig"><a href="oauth2client.appengine.FlowProperty-class.html#get_value_for_datastore" class="summary-sig-name">get_value_for_datastore</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">model_instance</span>)</span><br />
-      Datastore representation of this property.</td>
+          <td><span class="summary-sig"><a name="get_value_for_datastore"></a><span class="summary-sig-name">get_value_for_datastore</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">model_instance</span>)</span></td>
           <td align="right" valign="top">
             <span class="codelink"><a href="oauth2client.appengine-pysrc.html#FlowProperty.get_value_for_datastore">source&nbsp;code</a></span>
             
@@ -112,9 +111,8 @@
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
-          <td><span class="summary-sig"><a href="oauth2client.appengine.FlowProperty-class.html#make_value_from_datastore" class="summary-sig-name">make_value_from_datastore</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">value</span>)</span><br />
-      Native representation of this property.</td>
+          <td><span class="summary-sig"><a name="make_value_from_datastore"></a><span class="summary-sig-name">make_value_from_datastore</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">value</span>)</span></td>
           <td align="right" valign="top">
             <span class="codelink"><a href="oauth2client.appengine-pysrc.html#FlowProperty.make_value_from_datastore">source&nbsp;code</a></span>
             
@@ -130,9 +128,8 @@
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
-          <td><span class="summary-sig"><a href="oauth2client.appengine.FlowProperty-class.html#validate" class="summary-sig-name">validate</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">value</span>)</span><br />
-      Assert that provided value is compatible with this property.</td>
+          <td><span class="summary-sig"><a name="validate"></a><span class="summary-sig-name">validate</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">value</span>)</span></td>
           <td align="right" valign="top">
             <span class="codelink"><a href="oauth2client.appengine-pysrc.html#FlowProperty.validate">source&nbsp;code</a></span>
             
@@ -148,9 +145,8 @@
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
-          <td><span class="summary-sig"><a href="oauth2client.appengine.FlowProperty-class.html#empty" class="summary-sig-name">empty</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">value</span>)</span><br />
-      Determine if value is empty in the context of this property.</td>
+          <td><span class="summary-sig"><a name="empty"></a><span class="summary-sig-name">empty</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">value</span>)</span></td>
           <td align="right" valign="top">
             <span class="codelink"><a href="oauth2client.appengine-pysrc.html#FlowProperty.empty">source&nbsp;code</a></span>
             
@@ -160,37 +156,6 @@
       
     </td>
   </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Property</code></b>:
-      <code>__get__</code>,
-      <code>__init__</code>,
-      <code>__property_config__</code>,
-      <code>__set__</code>,
-      <code>datastore_type</code>,
-      <code>default_value</code>,
-      <code>get_updated_value_for_datastore</code>
-      </p>
-    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Property</code></b> (private):
-      <code>_attr_name</code>,
-      <code>_require_parameter</code>
-      </p></div>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
 </table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
@@ -213,225 +178,10 @@
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="data_type"></a><span class="summary-name">data_type</span> = <code title="Flow">Flow</code><br />
-      str(object) -&gt; string
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Property</code></b>:
-      <code>creation_counter</code>
-      </p>
+        <a name="data_type"></a><span class="summary-name">data_type</span> = <code title="Flow">Flow</code>
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Method Details</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-MethodDetails"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-</table>
-<a name="get_value_for_datastore"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_value_for_datastore</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">model_instance</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#FlowProperty.get_value_for_datastore">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <pre class="literalblock">
-Datastore representation of this property.
-
-Looks for this property in the given model instance, and returns the proper
-datastore representation of the value that can be stored in a datastore
-entity.  Most critically, it will fetch the datastore key value for
-reference properties.
-
-Some properies (e.g. DateTimeProperty, UserProperty) optionally update their
-value on every put(). This call must return the current value for such
-properties (get_updated_value_for_datastore returns the new value).
-
-Args:
-  model_instance: Instance to fetch datastore value from.
-
-Returns:
-  Datastore representation of the model value in a form that is
-  appropriate for storing in the datastore.
-
-</pre>
-  <dl class="fields">
-    <dt>Overrides:
-        google.appengine.ext.db.Property.get_value_for_datastore
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="make_value_from_datastore"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">make_value_from_datastore</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">value</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#FlowProperty.make_value_from_datastore">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <pre class="literalblock">
-Native representation of this property.
-
-Given a value retrieved from a datastore entity, return a value,
-possibly converted, to be stored on the model instance.  Usually
-this returns the value unchanged, but a property class may
-override this when it uses a different datatype on the model
-instance than on the entity.
-
-This API is not quite symmetric with get_value_for_datastore(),
-because the model instance on which to store the converted value
-may not exist yet -- we may be collecting values to be passed to a
-model constructor.
-
-Args:
-  value: value retrieved from the datastore entity.
-
-Returns:
-  The value converted for use as a model instance attribute.
-
-</pre>
-  <dl class="fields">
-    <dt>Overrides:
-        google.appengine.ext.db.Property.make_value_from_datastore
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="validate"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">validate</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">value</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#FlowProperty.validate">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <pre class="literalblock">
-Assert that provided value is compatible with this property.
-
-Args:
-  value: Value to validate against this Property.
-
-Returns:
-  A valid value, either the input unchanged or adapted to the
-  required type.
-
-Raises:
-  BadValueError if the value is not appropriate for this
-  property in any way.
-
-</pre>
-  <dl class="fields">
-    <dt>Overrides:
-        google.appengine.ext.db.Property.validate
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="empty"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">empty</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">value</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#FlowProperty.empty">source&nbsp;code</a></span>&nbsp;
-    </td>
-  </tr></table>
-  
-  <pre class="literalblock">
-Determine if value is empty in the context of this property.
-
-For most kinds, this is equivalent to &quot;not value&quot;, but for kinds like
-bool, the test is more subtle, so subclasses can override this method
-if necessary.
-
-Args:
-  value: Value to validate against this Property.
-
-Returns:
-  True if this value is considered empty in the context of this Property
-  type, otherwise False.
-
-</pre>
-  <dl class="fields">
-    <dt>Overrides:
-        google.appengine.ext.db.Property.empty
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -455,7 +205,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:13 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:39 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.InvalidClientSecretsError-class.html b/docs/epy/oauth2client.appengine.InvalidClientSecretsError-class.html
index 0ca651d..593bd1e 100644
--- a/docs/epy/oauth2client.appengine.InvalidClientSecretsError-class.html
+++ b/docs/epy/oauth2client.appengine.InvalidClientSecretsError-class.html
@@ -56,9 +56,9 @@
 <h1 class="epydoc">Class InvalidClientSecretsError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#InvalidClientSecretsError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_invalidcli" name="class_hierarchy_for_invalidcli">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
-<area shape="rect" href="oauth2client.appengine.InvalidClientSecretsError-class.html" title="InvalidClientSecretsError" alt="" coords="12,117,175,144"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<area shape="rect" id="node3" href="oauth2client.appengine.InvalidClientSecretsError-class.html" title="InvalidClientSecretsError" alt="" coords="11,123,176,151"/>
 </map>
   <img src="class_hierarchy_for_invalidcli.gif" alt='' usemap="#class_hierarchy_for_invalidcli" ismap="ismap" class="graph-without-title" />
 </center>
@@ -166,7 +166,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:13 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:39 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.InvalidXsrfTokenError-class.html b/docs/epy/oauth2client.appengine.InvalidXsrfTokenError-class.html
index 706bde3..b290d36 100644
--- a/docs/epy/oauth2client.appengine.InvalidXsrfTokenError-class.html
+++ b/docs/epy/oauth2client.appengine.InvalidXsrfTokenError-class.html
@@ -56,9 +56,9 @@
 <h1 class="epydoc">Class InvalidXsrfTokenError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#InvalidXsrfTokenError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_invalidxsr" name="class_hierarchy_for_invalidxsr">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
-<area shape="rect" href="oauth2client.appengine.InvalidXsrfTokenError-class.html" title="InvalidXsrfTokenError" alt="" coords="24,117,163,144"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<area shape="rect" id="node3" href="oauth2client.appengine.InvalidXsrfTokenError-class.html" title="InvalidXsrfTokenError" alt="" coords="20,123,167,151"/>
 </map>
   <img src="class_hierarchy_for_invalidxsr.gif" alt='' usemap="#class_hierarchy_for_invalidxsr" ismap="ismap" class="graph-without-title" />
 </center>
@@ -166,7 +166,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:13 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:40 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.OAuth2Decorator-class.html b/docs/epy/oauth2client.appengine.OAuth2Decorator-class.html
index 6eaed8d..60a9d3a 100644
--- a/docs/epy/oauth2client.appengine.OAuth2Decorator-class.html
+++ b/docs/epy/oauth2client.appengine.OAuth2Decorator-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class OAuth2Decorator</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_oauth2deco" name="class_hierarchy_for_oauth2deco">
-<area shape="rect" href="oauth2client.appengine.OAuth2Decorator-class.html" title="OAuth2Decorator" alt="" coords="5,5,125,32"/>
+<area shape="rect" id="node1" href="oauth2client.appengine.OAuth2Decorator-class.html" title="OAuth2Decorator" alt="" coords="5,6,128,34"/>
 </map>
   <img src="class_hierarchy_for_oauth2deco.gif" alt='' usemap="#class_hierarchy_for_oauth2deco" ismap="ismap" class="graph-without-title" />
 </center>
@@ -394,7 +394,7 @@
 Args:
   client_id: string, client identifier.
   client_secret: string client secret.
-  scope: string or list of strings, scope(s) of the credentials being
+  scope: string or iterable of strings, scope(s) of the credentials being
     requested.
   auth_uri: string, URI for authorization endpoint. For convenience
     defaults to Google's endpoints but any OAuth 2.0 provider can be used.
@@ -710,7 +710,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:13 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:40 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html b/docs/epy/oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html
index e4571d3..b7869fc 100644
--- a/docs/epy/oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html
+++ b/docs/epy/oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html
@@ -56,8 +56,8 @@
 <h1 class="epydoc">Class OAuth2DecoratorFromClientSecrets</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2DecoratorFromClientSecrets">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_oauth2deco_2" name="class_hierarchy_for_oauth2deco_2">
-<area shape="rect" href="oauth2client.appengine.OAuth2Decorator-class.html" title="OAuth2Decorator" alt="" coords="5,5,125,32"/>
-<area shape="rect" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html" title="OAuth2DecoratorFromClientSecrets" alt="" coords="149,5,379,32"/>
+<area shape="rect" id="node1" href="oauth2client.appengine.OAuth2Decorator-class.html" title="OAuth2Decorator" alt="" coords="5,6,128,34"/>
+<area shape="rect" id="node2" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html" title="OAuth2DecoratorFromClientSecrets" alt="" coords="152,6,384,34"/>
 </map>
   <img src="class_hierarchy_for_oauth2deco_2.gif" alt='' usemap="#class_hierarchy_for_oauth2deco_2" ismap="ismap" class="graph-without-title" />
 </center>
@@ -224,7 +224,7 @@
 
 Args:
   filename: string, File name of client secrets.
-  scope: string or list of strings, scope(s) of the credentials being
+  scope: string or iterable of strings, scope(s) of the credentials being
     requested.
   message: string, A friendly string to display to the user if the
     clientsecrets file is missing or invalid. The message may contain HTML
@@ -269,7 +269,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:14 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:40 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.SiteXsrfSecretKey-class.html b/docs/epy/oauth2client.appengine.SiteXsrfSecretKey-class.html
index eba930f..27c9d55 100644
--- a/docs/epy/oauth2client.appengine.SiteXsrfSecretKey-class.html
+++ b/docs/epy/oauth2client.appengine.SiteXsrfSecretKey-class.html
@@ -56,8 +56,8 @@
 <h1 class="epydoc">Class SiteXsrfSecretKey</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#SiteXsrfSecretKey">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_sitexsrfse" name="class_hierarchy_for_sitexsrfse">
-<area shape="rect" href="javascript:void(0);" title="google.appengine.ext.db.Model" alt="" coords="5,5,205,32"/>
-<area shape="rect" href="oauth2client.appengine.SiteXsrfSecretKey-class.html" title="SiteXsrfSecretKey" alt="" coords="229,5,355,32"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="google.appengine.ext.db.Model" alt="" coords="5,6,208,34"/>
+<area shape="rect" id="node2" href="oauth2client.appengine.SiteXsrfSecretKey-class.html" title="SiteXsrfSecretKey" alt="" coords="232,6,363,34"/>
 </map>
   <img src="class_hierarchy_for_sitexsrfse.gif" alt='' usemap="#class_hierarchy_for_sitexsrfse" ismap="ismap" class="graph-without-title" />
 </center>
@@ -67,128 +67,10 @@
 Storage for the sites XSRF secret key.
 
 There will only be one instance stored of this model, the one used for the
-site.  
+site.
 
 </pre>
 
-<!-- ==================== NESTED CLASSES ==================== -->
-<a name="section-NestedClasses"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Nested Classes</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-NestedClasses"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Model</code></b>:
-      <code><a href="google.appengine.ext.db.PropertiedClass-class.html">__metaclass__</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Model</code></b>:
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>delete</code>,
-      <code>dynamic_properties</code>,
-      <code>has_key</code>,
-      <code>instance_properties</code>,
-      <code>is_saved</code>,
-      <code>key</code>,
-      <code>parent</code>,
-      <code>parent_key</code>,
-      <code>put</code>,
-      <code>save</code>,
-      <code>to_xml</code>
-      </p>
-    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Model</code></b> (private):
-      <code>_populate_entity</code>,
-      <code>_populate_internal_entity</code>,
-      <code>_to_entity</code>
-      </p></div>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS METHODS ==================== -->
-<a name="section-ClassMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Class Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-ClassMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Model</code></b>:
-      <code>all</code>,
-      <code>entity_type</code>,
-      <code>fields</code>,
-      <code>from_entity</code>,
-      <code>get</code>,
-      <code>get_by_id</code>,
-      <code>get_by_key_name</code>,
-      <code>get_or_insert</code>,
-      <code>gql</code>,
-      <code>kind</code>,
-      <code>properties</code>
-      </p>
-    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code>google.appengine.ext.db.Model</code></b> (private):
-      <code>_load_entity_values</code>
-      </p></div>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -214,31 +96,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -262,7 +119,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:14 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:40 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html b/docs/epy/oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html
new file mode 100644
index 0000000..791f678
--- /dev/null
+++ b/docs/epy/oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html
@@ -0,0 +1,180 @@
+<?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>oauth2client.appengine.SiteXsrfSecretKeyNDB</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>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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%">
+      <span class="breadcrumbs">
+        <a href="oauth2client-module.html">Package&nbsp;oauth2client</a> ::
+        <a href="oauth2client.appengine-module.html">Module&nbsp;appengine</a> ::
+        Class&nbsp;SiteXsrfSecretKeyNDB
+      </span>
+    </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="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SiteXsrfSecretKeyNDB</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#SiteXsrfSecretKeyNDB">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_sitexsrfse_2" name="class_hierarchy_for_sitexsrfse_2">
+<area shape="rect" id="node1" href="javascript:void(0);" title="google.appengine.ext.ndb.Model" alt="" coords="5,6,213,34"/>
+<area shape="rect" id="node2" href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html" title="SiteXsrfSecretKeyNDB" alt="" coords="237,6,395,34"/>
+</map>
+  <img src="class_hierarchy_for_sitexsrfse_2.gif" alt='' usemap="#class_hierarchy_for_sitexsrfse_2" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<pre class="literalblock">
+NDB Model for storage for the sites XSRF secret key.
+
+Since this model uses the same kind as SiteXsrfSecretKey, it can be used
+interchangeably. This simply provides an NDB model for interacting with the
+same data the DB model interacts with.
+
+There should only be one instance stored of this model, the one used for the
+site.
+
+</pre>
+
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_get_kind"></a><span class="summary-sig-name">_get_kind</span>(<span class="summary-sig-arg">cls</span>)</span><br />
+      Return the kind name for this class.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.appengine-pysrc.html#SiteXsrfSecretKeyNDB._get_kind">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="secret"></a><span class="summary-name">secret</span> = <code title="ndb.StringProperty()">ndb.StringProperty()</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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 Thu Jan 24 16:14:40 2013
+    </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>
diff --git a/docs/epy/oauth2client.appengine.StorageByKeyName-class.html b/docs/epy/oauth2client.appengine.StorageByKeyName-class.html
index 9ef2dfc..4e87d0d 100644
--- a/docs/epy/oauth2client.appengine.StorageByKeyName-class.html
+++ b/docs/epy/oauth2client.appengine.StorageByKeyName-class.html
@@ -56,21 +56,19 @@
 <h1 class="epydoc">Class StorageByKeyName</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_storagebyk" name="class_hierarchy_for_storagebyk">
-<area shape="rect" href="oauth2client.appengine.StorageByKeyName-class.html" title="StorageByKeyName" alt="" coords="5,5,144,32"/>
-<area shape="rect" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="168,5,269,32"/>
+<area shape="rect" id="node1" href="oauth2client.appengine.StorageByKeyName-class.html" title="StorageByKeyName" alt="" coords="5,6,147,34"/>
+<area shape="rect" id="node2" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="171,6,272,34"/>
 </map>
   <img src="class_hierarchy_for_storagebyk.gif" alt='' usemap="#class_hierarchy_for_storagebyk" ismap="ismap" class="graph-without-title" />
 </center>
 </center>
 <hr />
 <pre class="literalblock">
-Store and retrieve a single credential to and from
-the App Engine datastore.
+Store and retrieve a credential to and from the App Engine datastore.
 
-This Storage helper presumes the Credentials
-have been stored as a CredenialsProperty
-on a datastore model class, and that entities
-are stored by key_name.
+This Storage helper presumes the Credentials have been stored as a
+CredentialsProperty or CredentialsNDBProperty on a datastore model class, and
+that entities are stored by key_name.
 
 </pre>
 
@@ -112,6 +110,57 @@
       
     </td>
   </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="oauth2client.appengine.StorageByKeyName-class.html#_is_ndb" class="summary-sig-name" onclick="show_private();">_is_ndb</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Determine whether the model of the instance is an NDB model.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName._is_ndb">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="oauth2client.appengine.StorageByKeyName-class.html#_get_entity" class="summary-sig-name" onclick="show_private();">_get_entity</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Retrieve entity from datastore.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName._get_entity">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="oauth2client.appengine.StorageByKeyName-class.html#_delete_entity" class="summary-sig-name" onclick="show_private();">_delete_entity</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Delete entity from datastore.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName._delete_entity">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
 <tr>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
@@ -256,10 +305,13 @@
 Constructor for Storage.
 
 Args:
-  model: db.Model, model class
+  model: db.Model or ndb.Model, model class
   key_name: string, key name for the entity that has the credentials
   property_name: string, name of the property that is a CredentialsProperty
-  cache: memcache, a write-through cache to put in front of the datastore
+    or CredentialsNDBProperty.
+  cache: memcache, a write-through cache to put in front of the datastore.
+    If the model you are using is an NDB model, using a cache will be
+    redundant since the model uses an instance cache and memcache for you.
 
 </pre>
   <dl class="fields">
@@ -273,6 +325,84 @@
   </dl>
 </td></tr></table>
 </div>
+<a name="_is_ndb"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_is_ndb</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName._is_ndb">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Determine whether the model of the instance is an NDB model.
+
+Returns:
+  Boolean indicating whether or not the model is an NDB or DB model.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_get_entity"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_get_entity</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName._get_entity">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Retrieve entity from datastore.
+
+Uses a different model method for db or ndb models.
+
+Returns:
+  Instance of the model corresponding to the current storage object
+      and stored using the key name of the storage object.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_delete_entity"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_delete_entity</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName._delete_entity">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Delete entity from datastore.
+
+Attempts to delete using the key_name stored on the object, whether or not
+the given key is in the datastore.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
 <a name="locked_get"></a>
 <div>
 <table class="details" border="1" cellpadding="3"
@@ -379,7 +509,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:14 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:40 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client-module.html b/docs/epy/oauth2client.client-module.html
index 2bae7ff..d1126bf 100644
--- a/docs/epy/oauth2client.client-module.html
+++ b/docs/epy/oauth2client.client-module.html
@@ -133,6 +133,14 @@
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
+        <a href="oauth2client.client.NonAsciiHeaderError-class.html" class="summary-name">NonAsciiHeaderError</a><br />
+      Header names and values must be ASCII strings.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
         <a href="oauth2client.client.MemoryCache-class.html" class="summary-name">MemoryCache</a><br />
       httplib2 Cache implementation which only caches locally.
     </td>
@@ -241,6 +249,23 @@
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
+          <td><span class="summary-sig"><a href="oauth2client.client-module.html#clean_headers" class="summary-sig-name">clean_headers</a>(<span class="summary-sig-arg">headers</span>)</span><br />
+      Forces header keys and values to be strings, i.e not unicode.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.client-pysrc.html#clean_headers">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
           <td><span class="summary-sig"><a href="oauth2client.client-module.html#verify_id_token" class="summary-sig-name">verify_id_token</a>(<span class="summary-sig-arg">id_token</span>,
         <span class="summary-sig-arg">audience</span>,
         <span class="summary-sig-arg">http</span>=<span class="summary-sig-default">None</span>,
@@ -395,7 +420,7 @@
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="HAS_OPENSSL"></a><span class="summary-name">HAS_OPENSSL</span> = <code title="True">True</code>
+        <a name="HAS_CRYPTO"></a><span class="summary-name">HAS_CRYPTO</span> = <code title="True">True</code>
     </td>
   </tr>
 <tr>
@@ -426,6 +451,13 @@
         <a name="OOB_CALLBACK_URN"></a><span class="summary-name">OOB_CALLBACK_URN</span> = <code title="'urn:ietf:wg:oauth:2.0:oob'">'urn:ietf:wg:oauth:2.0:oob'</code>
     </td>
   </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="REFRESH_STATUS_CODES"></a><span class="summary-name">REFRESH_STATUS_CODES</span> = <code title="[401]">[401]</code>
+    </td>
+  </tr>
 <tr class="private">
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
@@ -452,6 +484,38 @@
   </td>
 </tr>
 </table>
+<a name="clean_headers"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">clean_headers</span>(<span class="sig-arg">headers</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="oauth2client.client-pysrc.html#clean_headers">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Forces header keys and values to be strings, i.e not unicode.
+
+The httplib module just concats the header keys and values in a way that may
+make the message header a unicode string, which, if it then tries to
+contatenate to a binary request body may result in a unicode decode error.
+
+Args:
+  headers: dict, A dictionary of headers.
+
+Returns:
+  The same dictionary but with all the keys converted to strings.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
 <a name="verify_id_token"></a>
 <div>
 <table class="details" border="1" cellpadding="3"
@@ -473,7 +537,7 @@
 Verifies a signed JWT id_token.
 
 This function requires PyOpenSSL and because of that it does not work on
-App Engine. For App Engine you may consider using AppAssertionCredentials.
+App Engine.
 
 Args:
   id_token: string, A Signed JWT.
@@ -587,7 +651,7 @@
 Args:
   client_id: string, client identifier.
   client_secret: string, client secret.
-  scope: string or list of strings, scope(s) to request.
+  scope: string or iterable of strings, scope(s) to request.
   code: string, An authroization code, most likely passed down from
     the client
   redirect_uri: string, this is generally set to 'postmessage' to match the
@@ -639,7 +703,7 @@
 
 Args:
   filename: string, File name of clientsecrets.
-  scope: string or list of strings, scope(s) to request.
+  scope: string or iterable of strings, scope(s) to request.
   code: string, An authorization code, most likely passed down from
     the client
   message: string, A friendly string to display to the user if the
@@ -697,7 +761,7 @@
 
 Args:
   filename: string, File name of client secrets.
-  scope: string or list of strings, scope(s) to request.
+  scope: string or iterable of strings, scope(s) to request.
   redirect_uri: string, Either the string 'urn:ietf:wg:oauth:2.0:oob' for
       a non-web-based application, or a URI that handles the callback from
       the authorization server.
@@ -786,7 +850,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client-pysrc.html b/docs/epy/oauth2client.client-pysrc.html
index 26ab1b4..4c43426 100644
--- a/docs/epy/oauth2client.client-pysrc.html
+++ b/docs/epy/oauth2client.client-pysrc.html
@@ -89,801 +89,831 @@
 <a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-1', 'oauth2client', 'link-1');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-2', 'util', 'link-2');">util</a></tt> </tt>
 <a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-3', 'oauth2client', 'link-1');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module oauth2client.anyjson=oauth2client.anyjson-module.html"><a title="oauth2client.anyjson" class="py-name" href="#" onclick="return doclink('link-4', 'anyjson', 'link-4');">anyjson</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt>
 <a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"> </tt>
-<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable oauth2client.client.HAS_OPENSSL=oauth2client.client-module.html#HAS_OPENSSL"><a title="oauth2client.client.HAS_OPENSSL" class="py-name" href="#" onclick="return doclink('link-5', 'HAS_OPENSSL', 'link-5');">HAS_OPENSSL</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable oauth2client.client.HAS_CRYPTO=oauth2client.client-module.html#HAS_CRYPTO"><a title="oauth2client.client.HAS_CRYPTO" class="py-name" href="#" onclick="return doclink('link-5', 'HAS_CRYPTO', 'link-5');">HAS_CRYPTO</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
 <a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-6', 'oauth2client', 'link-1');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Module oauth2client.crypt=oauth2client.crypt-module.html"><a title="oauth2client.crypt" class="py-name" href="#" onclick="return doclink('link-7', 'crypt', 'link-7');">crypt</a></tt> <tt class="py-keyword">import</tt> <tt id="link-8" class="py-name" targets="Class oauth2client.crypt.Signer=oauth2client.crypt.Signer-class.html"><a title="oauth2client.crypt.Signer" class="py-name" href="#" onclick="return doclink('link-8', 'Signer', 'link-8');">Signer</a></tt> </tt>
-<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt id="link-9" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-9', 'oauth2client', 'link-1');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="oauth2client.crypt" class="py-name" href="#" onclick="return doclink('link-10', 'crypt', 'link-7');">crypt</a></tt> <tt class="py-keyword">import</tt> <tt id="link-11" class="py-name" targets="Function oauth2client.crypt.make_signed_jwt()=oauth2client.crypt-module.html#make_signed_jwt"><a title="oauth2client.crypt.make_signed_jwt" class="py-name" href="#" onclick="return doclink('link-11', 'make_signed_jwt', 'link-11');">make_signed_jwt</a></tt> </tt>
-<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt id="link-12" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-12', 'oauth2client', 'link-1');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="oauth2client.crypt" class="py-name" href="#" onclick="return doclink('link-13', 'crypt', 'link-7');">crypt</a></tt> <tt class="py-keyword">import</tt> <tt id="link-14" class="py-name" targets="Function oauth2client.crypt.verify_signed_jwt_with_certs()=oauth2client.crypt-module.html#verify_signed_jwt_with_certs"><a title="oauth2client.crypt.verify_signed_jwt_with_certs" class="py-name" href="#" onclick="return doclink('link-14', 'verify_signed_jwt_with_certs', 'link-14');">verify_signed_jwt_with_certs</a></tt> </tt>
-<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line">  <tt id="link-15" class="py-name"><a title="oauth2client.client.HAS_OPENSSL" class="py-name" href="#" onclick="return doclink('link-15', 'HAS_OPENSSL', 'link-5');">HAS_OPENSSL</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
-<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
-<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"> </tt>
-<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">urlparse</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
-<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
-<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">cgi</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
-<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"> </tt>
-<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt id="link-16" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-6', 'oauth2client', 'link-1');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Module oauth2client.crypt=oauth2client.crypt-module.html"><a title="oauth2client.crypt" class="py-name" href="#" onclick="return doclink('link-7', 'crypt', 'link-7');">crypt</a></tt> </tt>
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line">  <tt id="link-8" class="py-name"><a title="oauth2client.client.HAS_CRYPTO" class="py-name" href="#" onclick="return doclink('link-8', 'HAS_CRYPTO', 'link-5');">HAS_CRYPTO</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">urlparse</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">cgi</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"> </tt>
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-16', 'logger', 'link-16');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
-<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"> </tt>
-<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"><tt class="py-comment"># Expiry is stored in RFC3339 UTC format</tt> </tt>
-<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt id="link-17" class="py-name" targets="Variable oauth2client.client.EXPIRY_FORMAT=oauth2client.client-module.html#EXPIRY_FORMAT"><a title="oauth2client.client.EXPIRY_FORMAT" class="py-name" href="#" onclick="return doclink('link-17', 'EXPIRY_FORMAT', 'link-17');">EXPIRY_FORMAT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'%Y-%m-%dT%H:%M:%SZ'</tt> </tt>
-<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"> </tt>
-<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-comment"># Which certs to use to validate id_tokens received.</tt> </tt>
-<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt id="link-18" class="py-name" targets="Variable oauth2client.client.ID_TOKEN_VERIFICATON_CERTS=oauth2client.client-module.html#ID_TOKEN_VERIFICATON_CERTS"><a title="oauth2client.client.ID_TOKEN_VERIFICATON_CERTS" class="py-name" href="#" onclick="return doclink('link-18', 'ID_TOKEN_VERIFICATON_CERTS', 'link-18');">ID_TOKEN_VERIFICATON_CERTS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'https://www.googleapis.com/oauth2/v1/certs'</tt> </tt>
-<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"> </tt>
-<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-comment"># Constant to use for the out of band OAuth 2.0 flow.</tt> </tt>
-<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt id="link-19" class="py-name" targets="Variable oauth2client.client.OOB_CALLBACK_URN=oauth2client.client-module.html#OOB_CALLBACK_URN"><a title="oauth2client.client.OOB_CALLBACK_URN" class="py-name" href="#" onclick="return doclink('link-19', 'OOB_CALLBACK_URN', 'link-19');">OOB_CALLBACK_URN</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:ietf:wg:oauth:2.0:oob'</tt> </tt>
-<a name="Error"></a><div id="Error-def"><a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"> </tt>
-<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"> </tt>
-<a name="L63"></a><tt class="py-lineno">  63</tt> <a class="py-toggle" href="#" id="Error-toggle" onclick="return toggle('Error');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.Error-class.html">Error</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Error-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Error-expanded"><a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line">  <tt class="py-docstring">"""Base error for this module."""</tt> </tt>
-<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"> </tt>
-<a name="FlowExchangeError"></a><div id="FlowExchangeError-def"><a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"> </tt>
-<a name="L68"></a><tt class="py-lineno">  68</tt> <a class="py-toggle" href="#" id="FlowExchangeError-toggle" onclick="return toggle('FlowExchangeError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.FlowExchangeError-class.html">FlowExchangeError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="FlowExchangeError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="FlowExchangeError-expanded"><a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line">  <tt class="py-docstring">"""Error trying to exchange an authorization grant for an access token."""</tt> </tt>
-<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"> </tt>
-<a name="AccessTokenRefreshError"></a><div id="AccessTokenRefreshError-def"><a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"> </tt>
-<a name="L73"></a><tt class="py-lineno">  73</tt> <a class="py-toggle" href="#" id="AccessTokenRefreshError-toggle" onclick="return toggle('AccessTokenRefreshError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenRefreshError-class.html">AccessTokenRefreshError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AccessTokenRefreshError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="AccessTokenRefreshError-expanded"><a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line">  <tt class="py-docstring">"""Error trying to refresh an expired access token."""</tt> </tt>
-<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"> </tt>
-<a name="UnknownClientSecretsFlowError"></a><div id="UnknownClientSecretsFlowError-def"><a name="L77"></a><tt class="py-lineno">  77</tt> <a class="py-toggle" href="#" id="UnknownClientSecretsFlowError-toggle" onclick="return toggle('UnknownClientSecretsFlowError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.UnknownClientSecretsFlowError-class.html">UnknownClientSecretsFlowError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="UnknownClientSecretsFlowError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="UnknownClientSecretsFlowError-expanded"><a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line">  <tt class="py-docstring">"""The client secrets file called for an unknown type of OAuth 2.0 flow. """</tt> </tt>
-<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"> </tt>
-<a name="AccessTokenCredentialsError"></a><div id="AccessTokenCredentialsError-def"><a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"> </tt>
-<a name="L82"></a><tt class="py-lineno">  82</tt> <a class="py-toggle" href="#" id="AccessTokenCredentialsError-toggle" onclick="return toggle('AccessTokenCredentialsError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenCredentialsError-class.html">AccessTokenCredentialsError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AccessTokenCredentialsError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="AccessTokenCredentialsError-expanded"><a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line">  <tt class="py-docstring">"""Having only the access_token means no refresh is possible."""</tt> </tt>
-<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"> </tt>
-<a name="VerifyJwtTokenError"></a><div id="VerifyJwtTokenError-def"><a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"> </tt>
-<a name="L87"></a><tt class="py-lineno">  87</tt> <a class="py-toggle" href="#" id="VerifyJwtTokenError-toggle" onclick="return toggle('VerifyJwtTokenError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.VerifyJwtTokenError-class.html">VerifyJwtTokenError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="VerifyJwtTokenError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="VerifyJwtTokenError-expanded"><a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line">  <tt class="py-docstring">"""Could on retrieve certificates for validation."""</tt> </tt>
-<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"> </tt>
-<a name="_abstract"></a><div id="_abstract-def"><a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"> </tt>
-<a name="L92"></a><tt class="py-lineno">  92</tt> <a class="py-toggle" href="#" id="_abstract-toggle" onclick="return toggle('_abstract');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#_abstract">_abstract</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_abstract-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_abstract-expanded"><a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line">  <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">'You need to override this function'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line"> </tt>
-<a name="MemoryCache"></a><div id="MemoryCache-def"><a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line"> </tt>
-<a name="L96"></a><tt class="py-lineno">  96</tt> <a class="py-toggle" href="#" id="MemoryCache-toggle" onclick="return toggle('MemoryCache');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.MemoryCache-class.html">MemoryCache</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MemoryCache-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MemoryCache-expanded"><a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line">  <tt class="py-docstring">"""httplib2 Cache implementation which only caches locally."""</tt> </tt>
-<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"> </tt>
-<a name="MemoryCache.__init__"></a><div id="MemoryCache.__init__-def"><a name="L99"></a><tt class="py-lineno">  99</tt> <a class="py-toggle" href="#" id="MemoryCache.__init__-toggle" onclick="return toggle('MemoryCache.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.MemoryCache-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MemoryCache.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MemoryCache.__init__-expanded"><a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cache</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-</div><a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line"> </tt>
-<a name="MemoryCache.get"></a><div id="MemoryCache.get-def"><a name="L102"></a><tt class="py-lineno"> 102</tt> <a class="py-toggle" href="#" id="MemoryCache.get-toggle" onclick="return toggle('MemoryCache.get');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.MemoryCache-class.html#get">get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MemoryCache.get-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MemoryCache.get-expanded"><a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cache</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
-oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-20', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line"> </tt>
-<a name="MemoryCache.set"></a><div id="MemoryCache.set-def"><a name="L105"></a><tt class="py-lineno"> 105</tt> <a class="py-toggle" href="#" id="MemoryCache.set-toggle" onclick="return toggle('MemoryCache.set');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.MemoryCache-class.html#set">set</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MemoryCache.set-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MemoryCache.set-expanded"><a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cache</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-9', 'logger', 'link-9');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-comment"># Expiry is stored in RFC3339 UTC format</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable oauth2client.client.EXPIRY_FORMAT=oauth2client.client-module.html#EXPIRY_FORMAT"><a title="oauth2client.client.EXPIRY_FORMAT" class="py-name" href="#" onclick="return doclink('link-10', 'EXPIRY_FORMAT', 'link-10');">EXPIRY_FORMAT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'%Y-%m-%dT%H:%M:%SZ'</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-comment"># Which certs to use to validate id_tokens received.</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable oauth2client.client.ID_TOKEN_VERIFICATON_CERTS=oauth2client.client-module.html#ID_TOKEN_VERIFICATON_CERTS"><a title="oauth2client.client.ID_TOKEN_VERIFICATON_CERTS" class="py-name" href="#" onclick="return doclink('link-11', 'ID_TOKEN_VERIFICATON_CERTS', 'link-11');">ID_TOKEN_VERIFICATON_CERTS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'https://www.googleapis.com/oauth2/v1/certs'</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-comment"># Constant to use for the out of band OAuth 2.0 flow.</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable oauth2client.client.OOB_CALLBACK_URN=oauth2client.client-module.html#OOB_CALLBACK_URN"><a title="oauth2client.client.OOB_CALLBACK_URN" class="py-name" href="#" onclick="return doclink('link-12', 'OOB_CALLBACK_URN', 'link-12');">OOB_CALLBACK_URN</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:ietf:wg:oauth:2.0:oob'</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-comment"># Google Data client libraries may need to set this to [401, 403].</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt id="link-13" class="py-name" targets="Variable oauth2client.client.REFRESH_STATUS_CODES=oauth2client.client-module.html#REFRESH_STATUS_CODES"><a title="oauth2client.client.REFRESH_STATUS_CODES" class="py-name" href="#" onclick="return doclink('link-13', 'REFRESH_STATUS_CODES', 'link-13');">REFRESH_STATUS_CODES</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-number">401</tt><tt class="py-op">]</tt> </tt>
+<a name="Error"></a><div id="Error-def"><a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"> </tt>
+<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt> <a class="py-toggle" href="#" id="Error-toggle" onclick="return toggle('Error');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.Error-class.html">Error</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Error-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Error-expanded"><a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line">  <tt class="py-docstring">"""Base error for this module."""</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"> </tt>
+<a name="FlowExchangeError"></a><div id="FlowExchangeError-def"><a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"> </tt>
+<a name="L69"></a><tt class="py-lineno">  69</tt> <a class="py-toggle" href="#" id="FlowExchangeError-toggle" onclick="return toggle('FlowExchangeError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.FlowExchangeError-class.html">FlowExchangeError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FlowExchangeError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="FlowExchangeError-expanded"><a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line">  <tt class="py-docstring">"""Error trying to exchange an authorization grant for an access token."""</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"> </tt>
+<a name="AccessTokenRefreshError"></a><div id="AccessTokenRefreshError-def"><a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"> </tt>
+<a name="L74"></a><tt class="py-lineno">  74</tt> <a class="py-toggle" href="#" id="AccessTokenRefreshError-toggle" onclick="return toggle('AccessTokenRefreshError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenRefreshError-class.html">AccessTokenRefreshError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AccessTokenRefreshError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="AccessTokenRefreshError-expanded"><a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line">  <tt class="py-docstring">"""Error trying to refresh an expired access token."""</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"> </tt>
+<a name="UnknownClientSecretsFlowError"></a><div id="UnknownClientSecretsFlowError-def"><a name="L78"></a><tt class="py-lineno">  78</tt> <a class="py-toggle" href="#" id="UnknownClientSecretsFlowError-toggle" onclick="return toggle('UnknownClientSecretsFlowError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.UnknownClientSecretsFlowError-class.html">UnknownClientSecretsFlowError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnknownClientSecretsFlowError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="UnknownClientSecretsFlowError-expanded"><a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line">  <tt class="py-docstring">"""The client secrets file called for an unknown type of OAuth 2.0 flow. """</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"> </tt>
+<a name="AccessTokenCredentialsError"></a><div id="AccessTokenCredentialsError-def"><a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt> <a class="py-toggle" href="#" id="AccessTokenCredentialsError-toggle" onclick="return toggle('AccessTokenCredentialsError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenCredentialsError-class.html">AccessTokenCredentialsError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AccessTokenCredentialsError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="AccessTokenCredentialsError-expanded"><a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line">  <tt class="py-docstring">"""Having only the access_token means no refresh is possible."""</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"> </tt>
+<a name="VerifyJwtTokenError"></a><div id="VerifyJwtTokenError-def"><a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"> </tt>
+<a name="L88"></a><tt class="py-lineno">  88</tt> <a class="py-toggle" href="#" id="VerifyJwtTokenError-toggle" onclick="return toggle('VerifyJwtTokenError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.VerifyJwtTokenError-class.html">VerifyJwtTokenError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="VerifyJwtTokenError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="VerifyJwtTokenError-expanded"><a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line">  <tt class="py-docstring">"""Could on retrieve certificates for validation."""</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"> </tt>
+<a name="NonAsciiHeaderError"></a><div id="NonAsciiHeaderError-def"><a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"> </tt>
+<a name="L93"></a><tt class="py-lineno">  93</tt> <a class="py-toggle" href="#" id="NonAsciiHeaderError-toggle" onclick="return toggle('NonAsciiHeaderError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.NonAsciiHeaderError-class.html">NonAsciiHeaderError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonAsciiHeaderError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="NonAsciiHeaderError-expanded"><a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line">  <tt class="py-docstring">"""Header names and values must be ASCII strings."""</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line"> </tt>
+<a name="_abstract"></a><div id="_abstract-def"><a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt> <a class="py-toggle" href="#" id="_abstract-toggle" onclick="return toggle('_abstract');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#_abstract">_abstract</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_abstract-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_abstract-expanded"><a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line">  <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">'You need to override this function'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line"> </tt>
+<a name="MemoryCache"></a><div id="MemoryCache-def"><a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line"> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt> <a class="py-toggle" href="#" id="MemoryCache-toggle" onclick="return toggle('MemoryCache');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.MemoryCache-class.html">MemoryCache</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MemoryCache-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MemoryCache-expanded"><a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line">  <tt class="py-docstring">"""httplib2 Cache implementation which only caches locally."""</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line"> </tt>
+<a name="MemoryCache.__init__"></a><div id="MemoryCache.__init__-def"><a name="L105"></a><tt class="py-lineno"> 105</tt> <a class="py-toggle" href="#" id="MemoryCache.__init__-toggle" onclick="return toggle('MemoryCache.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.MemoryCache-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MemoryCache.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MemoryCache.__init__-expanded"><a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cache</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
 </div><a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line"> </tt>
-<a name="MemoryCache.delete"></a><div id="MemoryCache.delete-def"><a name="L108"></a><tt class="py-lineno"> 108</tt> <a class="py-toggle" href="#" id="MemoryCache.delete-toggle" onclick="return toggle('MemoryCache.delete');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.MemoryCache-class.html#delete">delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MemoryCache.delete-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MemoryCache.delete-expanded"><a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cache</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"> </tt>
-<a name="Credentials"></a><div id="Credentials-def"><a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"> </tt>
-<a name="L112"></a><tt class="py-lineno"> 112</tt> <a class="py-toggle" href="#" id="Credentials-toggle" onclick="return toggle('Credentials');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html">Credentials</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Credentials-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Credentials-expanded"><a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">  <tt class="py-docstring">"""Base class for all Credentials objects.</tt> </tt>
-<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line"><tt class="py-docstring">  Subclasses must define an authorize() method that applies the credentials to</tt> </tt>
-<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line"><tt class="py-docstring">  an HTTP transport.</tt> </tt>
-<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line"><tt class="py-docstring">  Subclasses must also specify a classmethod named 'from_json' that takes a JSON</tt> </tt>
-<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line"><tt class="py-docstring">  string as input and returns an instaniated Credentials object.</tt> </tt>
-<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line"> </tt>
-<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line">  <tt id="link-21" class="py-name" targets="Variable oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS=oauth2client.client.Credentials-class.html#NON_SERIALIZED_MEMBERS"><a title="oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS" class="py-name" href="#" onclick="return doclink('link-21', 'NON_SERIALIZED_MEMBERS', 'link-21');">NON_SERIALIZED_MEMBERS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'store'</tt><tt class="py-op">]</tt> </tt>
-<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line"> </tt>
-<a name="Credentials.authorize"></a><div id="Credentials.authorize-def"><a name="L124"></a><tt class="py-lineno"> 124</tt> <a class="py-toggle" href="#" id="Credentials.authorize-toggle" onclick="return toggle('Credentials.authorize');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html#authorize">authorize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Credentials.authorize-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Credentials.authorize-expanded"><a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line">    <tt class="py-docstring">"""Take an httplib2.Http instance (or equivalent) and</tt> </tt>
-<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line"><tt class="py-docstring">    authorizes it for the set of credentials, usually by</tt> </tt>
-<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line"><tt class="py-docstring">    replacing http.request() with a method that adds in</tt> </tt>
-<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line"><tt class="py-docstring">    the appropriate headers and then delegates to the original</tt> </tt>
-<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line"><tt class="py-docstring">    Http.request() method.</tt> </tt>
-<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line">    <tt id="link-22" class="py-name" targets="Function apiclient.model._abstract()=apiclient.model-module.html#_abstract,Function oauth2client.client._abstract()=oauth2client.client-module.html#_abstract"><a title="apiclient.model._abstract
-oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-22', '_abstract', 'link-22');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line"> </tt>
-<a name="Credentials.refresh"></a><div id="Credentials.refresh-def"><a name="L133"></a><tt class="py-lineno"> 133</tt> <a class="py-toggle" href="#" id="Credentials.refresh-toggle" onclick="return toggle('Credentials.refresh');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html#refresh">refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Credentials.refresh-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Credentials.refresh-expanded"><a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line">    <tt class="py-docstring">"""Forces a refresh of the access_token.</tt> </tt>
-<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, an http object to be used to make the refresh</tt> </tt>
-<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"><tt class="py-docstring">        request.</tt> </tt>
-<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">    <tt id="link-23" class="py-name"><a title="apiclient.model._abstract
-oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-23', '_abstract', 'link-22');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line"> </tt>
-<a name="Credentials.apply"></a><div id="Credentials.apply-def"><a name="L142"></a><tt class="py-lineno"> 142</tt> <a class="py-toggle" href="#" id="Credentials.apply-toggle" onclick="return toggle('Credentials.apply');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html#apply">apply</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Credentials.apply-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Credentials.apply-expanded"><a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line">    <tt class="py-docstring">"""Add the authorization to the headers.</tt> </tt>
-<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line"><tt class="py-docstring">      headers: dict, the headers to add the Authorization header to.</tt> </tt>
-<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line">    <tt id="link-24" class="py-name"><a title="apiclient.model._abstract
-oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-24', '_abstract', 'link-22');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line"> </tt>
-<a name="Credentials._to_json"></a><div id="Credentials._to_json-def"><a name="L150"></a><tt class="py-lineno"> 150</tt> <a class="py-toggle" href="#" id="Credentials._to_json-toggle" onclick="return toggle('Credentials._to_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html#_to_json">_to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">strip</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Credentials._to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Credentials._to_json-expanded"><a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line">    <tt class="py-docstring">"""Utility function for creating a JSON representation of an instance of Credentials.</tt> </tt>
-<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line"><tt class="py-docstring">      strip: array, An array of names of members to not include in the JSON.</tt> </tt>
-<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"><tt class="py-docstring">       string, a JSON representation of this instance, suitable to pass to</tt> </tt>
-<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line"><tt class="py-docstring">       from_json().</tt> </tt>
-<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line">    <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
-<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">    <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
-<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">member</tt> <tt class="py-keyword">in</tt> <tt class="py-name">strip</tt><tt class="py-op">:</tt> </tt>
-<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">member</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
-<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-name">member</tt><tt class="py-op">]</tt> </tt>
-<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'token_expiry'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line">      <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strftime</tt><tt class="py-op">(</tt><tt id="link-25" class="py-name"><a title="oauth2client.client.EXPIRY_FORMAT" class="py-name" href="#" onclick="return doclink('link-25', 'EXPIRY_FORMAT', 'link-17');">EXPIRY_FORMAT</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line">    <tt class="py-comment"># Add in information we will need later to reconsistitue this instance.</tt> </tt>
-<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line">    <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> </tt>
-<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line">    <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_module'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt class="py-name">__module__</tt> </tt>
-<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line"> </tt>
-<a name="Credentials.to_json"></a><div id="Credentials.to_json-def"><a name="L172"></a><tt class="py-lineno"> 172</tt> <a class="py-toggle" href="#" id="Credentials.to_json-toggle" onclick="return toggle('Credentials.to_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Credentials.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Credentials.to_json-expanded"><a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">    <tt class="py-docstring">"""Creating a JSON representation of an instance of Credentials.</tt> </tt>
-<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line"><tt class="py-docstring">       string, a JSON representation of this instance, suitable to pass to</tt> </tt>
-<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line"><tt class="py-docstring">       from_json().</tt> </tt>
-<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method apiclient.http.MediaUpload._to_json()=apiclient.http.MediaUpload-class.html#_to_json,Method oauth2client.client.Credentials._to_json()=oauth2client.client.Credentials-class.html#_to_json"><a title="apiclient.http.MediaUpload._to_json
-oauth2client.client.Credentials._to_json" class="py-name" href="#" onclick="return doclink('link-26', '_to_json', 'link-26');">_to_json</a></tt><tt class="py-op">(</tt><tt id="link-27" class="py-name" targets="Class oauth2client.client.Credentials=oauth2client.client.Credentials-class.html"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-27', 'Credentials', 'link-27');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS" class="py-name" href="#" onclick="return doclink('link-28', 'NON_SERIALIZED_MEMBERS', 'link-21');">NON_SERIALIZED_MEMBERS</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line"> </tt>
-<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
-<a name="Credentials.new_from_json"></a><div id="Credentials.new_from_json-def"><a name="L182"></a><tt class="py-lineno"> 182</tt> <a class="py-toggle" href="#" id="Credentials.new_from_json-toggle" onclick="return toggle('Credentials.new_from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html#new_from_json">new_from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Credentials.new_from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Credentials.new_from_json-expanded"><a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line">    <tt class="py-docstring">"""Utility class method to instantiate a Credentials subclass from a JSON</tt> </tt>
-<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-docstring">    representation produced by to_json().</tt> </tt>
-<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line"><tt class="py-docstring">      s: string, JSON from to_json().</tt> </tt>
-<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"><tt class="py-docstring">      An instance of the subclass of Credentials that was serialized with</tt> </tt>
-<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"><tt class="py-docstring">      to_json().</tt> </tt>
-<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line">    <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-29', 'loads', 'link-29');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line">    <tt class="py-comment"># Find and call the right classmethod from_json() to restore the object.</tt> </tt>
-<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line">    <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'_module'</tt><tt class="py-op">]</tt> </tt>
-<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line">      <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">__import__</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">)</tt> </tt>
-<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
-<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line">      <tt class="py-comment"># In case there's an object from the old package structure, update it</tt> </tt>
-<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line">      <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt class="py-name">module</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'.apiclient'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
-<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line">      <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">__import__</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">)</tt> </tt>
-<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"> </tt>
-<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line">    <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">__import__</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt> <tt class="py-name">fromlist</tt><tt class="py-op">=</tt><tt class="py-name">module</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line">    <tt class="py-name">kls</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line">    <tt id="link-30" class="py-name" targets="Static Method apiclient.http.HttpRequest.from_json()=apiclient.http.HttpRequest-class.html#from_json,Static Method apiclient.http.MediaFileUpload.from_json()=apiclient.http.MediaFileUpload-class.html#from_json,Class Method oauth2client.appengine.AppAssertionCredentials.from_json()=oauth2client.appengine.AppAssertionCredentials-class.html#from_json,Class Method oauth2client.client.AccessTokenCredentials.from_json()=oauth2client.client.AccessTokenCredentials-class.html#from_json,Class Method oauth2client.client.Credentials.from_json()=oauth2client.client.Credentials-class.html#from_json,Class Method oauth2client.client.OAuth2Credentials.from_json()=oauth2client.client.OAuth2Credentials-class.html#from_json,Class Method oauth2client.client.SignedJwtAssertionCredentials.from_json()=oauth2client.client.SignedJwtAssertionCredentials-class.html#from_json,Class Method oauth2client.gce.AppAssertionCredentials.from_json()=oauth2client.gce.AppAssertionCredentials-class.html#from_json"><a title="apiclient.http.HttpRequest.from_json
+<a name="MemoryCache.get"></a><div id="MemoryCache.get-def"><a name="L108"></a><tt class="py-lineno"> 108</tt> <a class="py-toggle" href="#" id="MemoryCache.get-toggle" onclick="return toggle('MemoryCache.get');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.MemoryCache-class.html#get">get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MemoryCache.get-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MemoryCache.get-expanded"><a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cache</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-14', 'get', 'link-14');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"> </tt>
+<a name="MemoryCache.set"></a><div id="MemoryCache.set-def"><a name="L111"></a><tt class="py-lineno"> 111</tt> <a class="py-toggle" href="#" id="MemoryCache.set-toggle" onclick="return toggle('MemoryCache.set');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.MemoryCache-class.html#set">set</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MemoryCache.set-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MemoryCache.set-expanded"><a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cache</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+</div><a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line"> </tt>
+<a name="MemoryCache.delete"></a><div id="MemoryCache.delete-def"><a name="L114"></a><tt class="py-lineno"> 114</tt> <a class="py-toggle" href="#" id="MemoryCache.delete-toggle" onclick="return toggle('MemoryCache.delete');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.MemoryCache-class.html#delete">delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MemoryCache.delete-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MemoryCache.delete-expanded"><a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cache</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line"> </tt>
+<a name="Credentials"></a><div id="Credentials-def"><a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line"> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt> <a class="py-toggle" href="#" id="Credentials-toggle" onclick="return toggle('Credentials');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html">Credentials</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Credentials-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Credentials-expanded"><a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line">  <tt class="py-docstring">"""Base class for all Credentials objects.</tt> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line"><tt class="py-docstring">  Subclasses must define an authorize() method that applies the credentials to</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line"><tt class="py-docstring">  an HTTP transport.</tt> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line"><tt class="py-docstring">  Subclasses must also specify a classmethod named 'from_json' that takes a JSON</tt> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line"><tt class="py-docstring">  string as input and returns an instaniated Credentials object.</tt> </tt>
+<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line"> </tt>
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line">  <tt id="link-15" class="py-name" targets="Variable oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS=oauth2client.client.Credentials-class.html#NON_SERIALIZED_MEMBERS"><a title="oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS" class="py-name" href="#" onclick="return doclink('link-15', 'NON_SERIALIZED_MEMBERS', 'link-15');">NON_SERIALIZED_MEMBERS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'store'</tt><tt class="py-op">]</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line"> </tt>
+<a name="Credentials.authorize"></a><div id="Credentials.authorize-def"><a name="L130"></a><tt class="py-lineno"> 130</tt> <a class="py-toggle" href="#" id="Credentials.authorize-toggle" onclick="return toggle('Credentials.authorize');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html#authorize">authorize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Credentials.authorize-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Credentials.authorize-expanded"><a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line">    <tt class="py-docstring">"""Take an httplib2.Http instance (or equivalent) and</tt> </tt>
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line"><tt class="py-docstring">    authorizes it for the set of credentials, usually by</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line"><tt class="py-docstring">    replacing http.request() with a method that adds in</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"><tt class="py-docstring">    the appropriate headers and then delegates to the original</tt> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line"><tt class="py-docstring">    Http.request() method.</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line">    <tt id="link-16" class="py-name" targets="Function apiclient.model._abstract()=apiclient.model-module.html#_abstract,Function oauth2client.client._abstract()=oauth2client.client-module.html#_abstract"><a title="apiclient.model._abstract
+oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-16', '_abstract', 'link-16');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"> </tt>
+<a name="Credentials.refresh"></a><div id="Credentials.refresh-def"><a name="L139"></a><tt class="py-lineno"> 139</tt> <a class="py-toggle" href="#" id="Credentials.refresh-toggle" onclick="return toggle('Credentials.refresh');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html#refresh">refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Credentials.refresh-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Credentials.refresh-expanded"><a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">    <tt class="py-docstring">"""Forces a refresh of the access_token.</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, an http object to be used to make the refresh</tt> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"><tt class="py-docstring">        request.</tt> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line">    <tt id="link-17" class="py-name"><a title="apiclient.model._abstract
+oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-17', '_abstract', 'link-16');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line"> </tt>
+<a name="Credentials.apply"></a><div id="Credentials.apply-def"><a name="L148"></a><tt class="py-lineno"> 148</tt> <a class="py-toggle" href="#" id="Credentials.apply-toggle" onclick="return toggle('Credentials.apply');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html#apply">apply</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Credentials.apply-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Credentials.apply-expanded"><a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line">    <tt class="py-docstring">"""Add the authorization to the headers.</tt> </tt>
+<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"><tt class="py-docstring">      headers: dict, the headers to add the Authorization header to.</tt> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line">    <tt id="link-18" class="py-name"><a title="apiclient.model._abstract
+oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-18', '_abstract', 'link-16');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line"> </tt>
+<a name="Credentials._to_json"></a><div id="Credentials._to_json-def"><a name="L156"></a><tt class="py-lineno"> 156</tt> <a class="py-toggle" href="#" id="Credentials._to_json-toggle" onclick="return toggle('Credentials._to_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html#_to_json">_to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">strip</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Credentials._to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Credentials._to_json-expanded"><a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line">    <tt class="py-docstring">"""Utility function for creating a JSON representation of an instance of Credentials.</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line"><tt class="py-docstring">      strip: array, An array of names of members to not include in the JSON.</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line"><tt class="py-docstring">       string, a JSON representation of this instance, suitable to pass to</tt> </tt>
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line"><tt class="py-docstring">       from_json().</tt> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line">    <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line">    <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">member</tt> <tt class="py-keyword">in</tt> <tt class="py-name">strip</tt><tt class="py-op">:</tt> </tt>
+<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">member</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
+<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-name">member</tt><tt class="py-op">]</tt> </tt>
+<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'token_expiry'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">      <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strftime</tt><tt class="py-op">(</tt><tt id="link-19" class="py-name"><a title="oauth2client.client.EXPIRY_FORMAT" class="py-name" href="#" onclick="return doclink('link-19', 'EXPIRY_FORMAT', 'link-10');">EXPIRY_FORMAT</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">    <tt class="py-comment"># Add in information we will need later to reconsistitue this instance.</tt> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">    <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line">    <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_module'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt class="py-name">__module__</tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line"> </tt>
+<a name="Credentials.to_json"></a><div id="Credentials.to_json-def"><a name="L178"></a><tt class="py-lineno"> 178</tt> <a class="py-toggle" href="#" id="Credentials.to_json-toggle" onclick="return toggle('Credentials.to_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Credentials.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Credentials.to_json-expanded"><a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line">    <tt class="py-docstring">"""Creating a JSON representation of an instance of Credentials.</tt> </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line"><tt class="py-docstring">       string, a JSON representation of this instance, suitable to pass to</tt> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line"><tt class="py-docstring">       from_json().</tt> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Method apiclient.http.MediaUpload._to_json()=apiclient.http.MediaUpload-class.html#_to_json,Method oauth2client.client.Credentials._to_json()=oauth2client.client.Credentials-class.html#_to_json"><a title="apiclient.http.MediaUpload._to_json
+oauth2client.client.Credentials._to_json" class="py-name" href="#" onclick="return doclink('link-20', '_to_json', 'link-20');">_to_json</a></tt><tt class="py-op">(</tt><tt id="link-21" class="py-name" targets="Class oauth2client.client.Credentials=oauth2client.client.Credentials-class.html"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-21', 'Credentials', 'link-21');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS" class="py-name" href="#" onclick="return doclink('link-22', 'NON_SERIALIZED_MEMBERS', 'link-15');">NON_SERIALIZED_MEMBERS</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"> </tt>
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="Credentials.new_from_json"></a><div id="Credentials.new_from_json-def"><a name="L188"></a><tt class="py-lineno"> 188</tt> <a class="py-toggle" href="#" id="Credentials.new_from_json-toggle" onclick="return toggle('Credentials.new_from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html#new_from_json">new_from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Credentials.new_from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Credentials.new_from_json-expanded"><a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line">    <tt class="py-docstring">"""Utility class method to instantiate a Credentials subclass from a JSON</tt> </tt>
+<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"><tt class="py-docstring">    representation produced by to_json().</tt> </tt>
+<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"><tt class="py-docstring">      s: string, JSON from to_json().</tt> </tt>
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"><tt class="py-docstring">      An instance of the subclass of Credentials that was serialized with</tt> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line"><tt class="py-docstring">      to_json().</tt> </tt>
+<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line">    <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-23', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line">    <tt class="py-comment"># Find and call the right classmethod from_json() to restore the object.</tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line">    <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'_module'</tt><tt class="py-op">]</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line">      <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">__import__</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">)</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line">      <tt class="py-comment"># In case there's an object from the old package structure, update it</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line">      <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt class="py-name">module</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'.apiclient'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line">      <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">__import__</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">)</tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line"> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line">    <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">__import__</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt> <tt class="py-name">fromlist</tt><tt class="py-op">=</tt><tt class="py-name">module</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">    <tt class="py-name">kls</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line">    <tt id="link-24" class="py-name" targets="Static Method apiclient.http.HttpRequest.from_json()=apiclient.http.HttpRequest-class.html#from_json,Static Method apiclient.http.MediaFileUpload.from_json()=apiclient.http.MediaFileUpload-class.html#from_json,Class Method oauth2client.appengine.AppAssertionCredentials.from_json()=oauth2client.appengine.AppAssertionCredentials-class.html#from_json,Class Method oauth2client.client.AccessTokenCredentials.from_json()=oauth2client.client.AccessTokenCredentials-class.html#from_json,Class Method oauth2client.client.Credentials.from_json()=oauth2client.client.Credentials-class.html#from_json,Class Method oauth2client.client.OAuth2Credentials.from_json()=oauth2client.client.OAuth2Credentials-class.html#from_json,Class Method oauth2client.client.SignedJwtAssertionCredentials.from_json()=oauth2client.client.SignedJwtAssertionCredentials-class.html#from_json,Class Method oauth2client.gce.AppAssertionCredentials.from_json()=oauth2client.gce.AppAssertionCredentials-class.html#from_json"><a title="apiclient.http.HttpRequest.from_json
 apiclient.http.MediaFileUpload.from_json
 oauth2client.appengine.AppAssertionCredentials.from_json
 oauth2client.client.AccessTokenCredentials.from_json
 oauth2client.client.Credentials.from_json
 oauth2client.client.OAuth2Credentials.from_json
 oauth2client.client.SignedJwtAssertionCredentials.from_json
-oauth2client.gce.AppAssertionCredentials.from_json" class="py-name" href="#" onclick="return doclink('link-30', 'from_json', 'link-30');">from_json</a></tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">kls</tt><tt class="py-op">,</tt> <tt class="py-string">'from_json'</tt><tt class="py-op">)</tt> </tt>
-<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-31" class="py-name"><a title="apiclient.http.HttpRequest.from_json
+oauth2client.gce.AppAssertionCredentials.from_json" class="py-name" href="#" onclick="return doclink('link-24', 'from_json', 'link-24');">from_json</a></tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">kls</tt><tt class="py-op">,</tt> <tt class="py-string">'from_json'</tt><tt class="py-op">)</tt> </tt>
+<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-25" class="py-name"><a title="apiclient.http.HttpRequest.from_json
 apiclient.http.MediaFileUpload.from_json
 oauth2client.appengine.AppAssertionCredentials.from_json
 oauth2client.client.AccessTokenCredentials.from_json
 oauth2client.client.Credentials.from_json
 oauth2client.client.OAuth2Credentials.from_json
 oauth2client.client.SignedJwtAssertionCredentials.from_json
-oauth2client.gce.AppAssertionCredentials.from_json" class="py-name" href="#" onclick="return doclink('link-31', 'from_json', 'link-30');">from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line"> </tt>
-<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
-<a name="Credentials.from_json"></a><div id="Credentials.from_json-def"><a name="L209"></a><tt class="py-lineno"> 209</tt> <a class="py-toggle" href="#" id="Credentials.from_json-toggle" onclick="return toggle('Credentials.from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Credentials.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Credentials.from_json-expanded"><a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">    <tt class="py-docstring">"""Instantiate a Credentials object from a JSON description of it.</tt> </tt>
-<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line"><tt class="py-docstring">    The JSON should have been produced by calling .to_json() on the object.</tt> </tt>
-<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line"><tt class="py-docstring">      data: dict, A deserialized JSON object.</tt> </tt>
-<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line"><tt class="py-docstring">      An instance of a Credentials subclass.</tt> </tt>
-<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-32" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-32', 'Credentials', 'link-27');">Credentials</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line"> </tt>
-<a name="Flow"></a><div id="Flow-def"><a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"> </tt>
-<a name="L223"></a><tt class="py-lineno"> 223</tt> <a class="py-toggle" href="#" id="Flow-toggle" onclick="return toggle('Flow');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.Flow-class.html">Flow</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Flow-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Flow-expanded"><a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">  <tt class="py-docstring">"""Base class for all Flow objects."""</tt> </tt>
-<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line"> </tt>
-<a name="Storage"></a><div id="Storage-def"><a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line"> </tt>
-<a name="L228"></a><tt class="py-lineno"> 228</tt> <a class="py-toggle" href="#" id="Storage-toggle" onclick="return toggle('Storage');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html">Storage</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Storage-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Storage-expanded"><a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">  <tt class="py-docstring">"""Base class for all Storage objects.</tt> </tt>
-<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line"><tt class="py-docstring">  Store and retrieve a single credential.  This class supports locking</tt> </tt>
-<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line"><tt class="py-docstring">  such that multiple processes and threads can operate on a single</tt> </tt>
-<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line"><tt class="py-docstring">  store.</tt> </tt>
-<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line"> </tt>
-<a name="Storage.acquire_lock"></a><div id="Storage.acquire_lock-def"><a name="L236"></a><tt class="py-lineno"> 236</tt> <a class="py-toggle" href="#" id="Storage.acquire_lock-toggle" onclick="return toggle('Storage.acquire_lock');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#acquire_lock">acquire_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Storage.acquire_lock-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.acquire_lock-expanded"><a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line">    <tt class="py-docstring">"""Acquires any lock necessary to access this Storage.</tt> </tt>
-<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"><tt class="py-docstring">    This lock is not reentrant.</tt> </tt>
-<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line"> </tt>
-<a name="Storage.release_lock"></a><div id="Storage.release_lock-def"><a name="L243"></a><tt class="py-lineno"> 243</tt> <a class="py-toggle" href="#" id="Storage.release_lock-toggle" onclick="return toggle('Storage.release_lock');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#release_lock">release_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Storage.release_lock-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.release_lock-expanded"><a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line">    <tt class="py-docstring">"""Release the Storage lock.</tt> </tt>
-<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line"><tt class="py-docstring">    Trying to release a lock that isn't held will result in a</tt> </tt>
-<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line"><tt class="py-docstring">    RuntimeError.</tt> </tt>
-<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line"> </tt>
-<a name="Storage.locked_get"></a><div id="Storage.locked_get-def"><a name="L251"></a><tt class="py-lineno"> 251</tt> <a class="py-toggle" href="#" id="Storage.locked_get-toggle" onclick="return toggle('Storage.locked_get');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#locked_get">locked_get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Storage.locked_get-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.locked_get-expanded"><a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">    <tt class="py-docstring">"""Retrieve credential.</tt> </tt>
-<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line"><tt class="py-docstring">    The Storage lock must be held when this is called.</tt> </tt>
-<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line"><tt class="py-docstring">      oauth2client.client.Credentials</tt> </tt>
-<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">    <tt id="link-33" class="py-name"><a title="apiclient.model._abstract
-oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-33', '_abstract', 'link-22');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line"> </tt>
-<a name="Storage.locked_put"></a><div id="Storage.locked_put-def"><a name="L261"></a><tt class="py-lineno"> 261</tt> <a class="py-toggle" href="#" id="Storage.locked_put-toggle" onclick="return toggle('Storage.locked_put');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#locked_put">locked_put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Storage.locked_put-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.locked_put-expanded"><a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">    <tt class="py-docstring">"""Write a credential.</tt> </tt>
-<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line"><tt class="py-docstring">    The Storage lock must be held when this is called.</tt> </tt>
-<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line"><tt class="py-docstring">      credentials: Credentials, the credentials to store.</tt> </tt>
-<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line">    <tt id="link-34" class="py-name"><a title="apiclient.model._abstract
-oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-34', '_abstract', 'link-22');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line"> </tt>
-<a name="Storage.locked_delete"></a><div id="Storage.locked_delete-def"><a name="L271"></a><tt class="py-lineno"> 271</tt> <a class="py-toggle" href="#" id="Storage.locked_delete-toggle" onclick="return toggle('Storage.locked_delete');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#locked_delete">locked_delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Storage.locked_delete-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.locked_delete-expanded"><a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">    <tt class="py-docstring">"""Delete a credential.</tt> </tt>
-<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line"><tt class="py-docstring">    The Storage lock must be held when this is called.</tt> </tt>
-<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line">    <tt id="link-35" class="py-name"><a title="apiclient.model._abstract
-oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-35', '_abstract', 'link-22');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line"> </tt>
-<a name="Storage.get"></a><div id="Storage.get-def"><a name="L278"></a><tt class="py-lineno"> 278</tt> <a class="py-toggle" href="#" id="Storage.get-toggle" onclick="return toggle('Storage.get');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#get">get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Storage.get-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.get-expanded"><a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line">    <tt class="py-docstring">"""Retrieve credential.</tt> </tt>
-<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line"><tt class="py-docstring">    The Storage lock must *not* be held when this is called.</tt> </tt>
-<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line"><tt class="py-docstring">      oauth2client.client.Credentials</tt> </tt>
-<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method oauth2client.client.Storage.acquire_lock()=oauth2client.client.Storage-class.html#acquire_lock,Method oauth2client.file.Storage.acquire_lock()=oauth2client.file.Storage-class.html#acquire_lock,Method oauth2client.keyring_storage.Storage.acquire_lock()=oauth2client.keyring_storage.Storage-class.html#acquire_lock,Method oauth2client.multistore_file._MultiStore._Storage.acquire_lock()=oauth2client.multistore_file._MultiStore._Storage-class.html#acquire_lock"><a title="oauth2client.client.Storage.acquire_lock
+oauth2client.gce.AppAssertionCredentials.from_json" class="py-name" href="#" onclick="return doclink('link-25', 'from_json', 'link-24');">from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line"> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="Credentials.from_json"></a><div id="Credentials.from_json-def"><a name="L215"></a><tt class="py-lineno"> 215</tt> <a class="py-toggle" href="#" id="Credentials.from_json-toggle" onclick="return toggle('Credentials.from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Credentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Credentials.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Credentials.from_json-expanded"><a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">    <tt class="py-docstring">"""Instantiate a Credentials object from a JSON description of it.</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line"><tt class="py-docstring">    The JSON should have been produced by calling .to_json() on the object.</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line"><tt class="py-docstring">      data: dict, A deserialized JSON object.</tt> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line"><tt class="py-docstring">      An instance of a Credentials subclass.</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-26" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-26', 'Credentials', 'link-21');">Credentials</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line"> </tt>
+<a name="Flow"></a><div id="Flow-def"><a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line"> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt> <a class="py-toggle" href="#" id="Flow-toggle" onclick="return toggle('Flow');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.Flow-class.html">Flow</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Flow-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Flow-expanded"><a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">  <tt class="py-docstring">"""Base class for all Flow objects."""</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line"> </tt>
+<a name="Storage"></a><div id="Storage-def"><a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line"> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt> <a class="py-toggle" href="#" id="Storage-toggle" onclick="return toggle('Storage');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html">Storage</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Storage-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Storage-expanded"><a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line">  <tt class="py-docstring">"""Base class for all Storage objects.</tt> </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line"><tt class="py-docstring">  Store and retrieve a single credential. This class supports locking</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"><tt class="py-docstring">  such that multiple processes and threads can operate on a single</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"><tt class="py-docstring">  store.</tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"> </tt>
+<a name="Storage.acquire_lock"></a><div id="Storage.acquire_lock-def"><a name="L242"></a><tt class="py-lineno"> 242</tt> <a class="py-toggle" href="#" id="Storage.acquire_lock-toggle" onclick="return toggle('Storage.acquire_lock');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#acquire_lock">acquire_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Storage.acquire_lock-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.acquire_lock-expanded"><a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line">    <tt class="py-docstring">"""Acquires any lock necessary to access this Storage.</tt> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line"><tt class="py-docstring">    This lock is not reentrant.</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line"> </tt>
+<a name="Storage.release_lock"></a><div id="Storage.release_lock-def"><a name="L249"></a><tt class="py-lineno"> 249</tt> <a class="py-toggle" href="#" id="Storage.release_lock-toggle" onclick="return toggle('Storage.release_lock');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#release_lock">release_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Storage.release_lock-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.release_lock-expanded"><a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">    <tt class="py-docstring">"""Release the Storage lock.</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line"><tt class="py-docstring">    Trying to release a lock that isn't held will result in a</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line"><tt class="py-docstring">    RuntimeError.</tt> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line"> </tt>
+<a name="Storage.locked_get"></a><div id="Storage.locked_get-def"><a name="L257"></a><tt class="py-lineno"> 257</tt> <a class="py-toggle" href="#" id="Storage.locked_get-toggle" onclick="return toggle('Storage.locked_get');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#locked_get">locked_get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Storage.locked_get-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.locked_get-expanded"><a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">    <tt class="py-docstring">"""Retrieve credential.</tt> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line"><tt class="py-docstring">    The Storage lock must be held when this is called.</tt> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line"><tt class="py-docstring">      oauth2client.client.Credentials</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">    <tt id="link-27" class="py-name"><a title="apiclient.model._abstract
+oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-27', '_abstract', 'link-16');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line"> </tt>
+<a name="Storage.locked_put"></a><div id="Storage.locked_put-def"><a name="L267"></a><tt class="py-lineno"> 267</tt> <a class="py-toggle" href="#" id="Storage.locked_put-toggle" onclick="return toggle('Storage.locked_put');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#locked_put">locked_put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Storage.locked_put-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.locked_put-expanded"><a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line">    <tt class="py-docstring">"""Write a credential.</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line"><tt class="py-docstring">    The Storage lock must be held when this is called.</tt> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line"><tt class="py-docstring">      credentials: Credentials, the credentials to store.</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line">    <tt id="link-28" class="py-name"><a title="apiclient.model._abstract
+oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-28', '_abstract', 'link-16');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line"> </tt>
+<a name="Storage.locked_delete"></a><div id="Storage.locked_delete-def"><a name="L277"></a><tt class="py-lineno"> 277</tt> <a class="py-toggle" href="#" id="Storage.locked_delete-toggle" onclick="return toggle('Storage.locked_delete');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#locked_delete">locked_delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Storage.locked_delete-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.locked_delete-expanded"><a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">    <tt class="py-docstring">"""Delete a credential.</tt> </tt>
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line"><tt class="py-docstring">    The Storage lock must be held when this is called.</tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">    <tt id="link-29" class="py-name"><a title="apiclient.model._abstract
+oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-29', '_abstract', 'link-16');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line"> </tt>
+<a name="Storage.get"></a><div id="Storage.get-def"><a name="L284"></a><tt class="py-lineno"> 284</tt> <a class="py-toggle" href="#" id="Storage.get-toggle" onclick="return toggle('Storage.get');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#get">get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Storage.get-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.get-expanded"><a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">    <tt class="py-docstring">"""Retrieve credential.</tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line"><tt class="py-docstring">    The Storage lock must *not* be held when this is called.</tt> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line"><tt class="py-docstring">      oauth2client.client.Credentials</tt> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method oauth2client.client.Storage.acquire_lock()=oauth2client.client.Storage-class.html#acquire_lock,Method oauth2client.file.Storage.acquire_lock()=oauth2client.file.Storage-class.html#acquire_lock,Method oauth2client.keyring_storage.Storage.acquire_lock()=oauth2client.keyring_storage.Storage-class.html#acquire_lock,Method oauth2client.multistore_file._MultiStore._Storage.acquire_lock()=oauth2client.multistore_file._MultiStore._Storage-class.html#acquire_lock"><a title="oauth2client.client.Storage.acquire_lock
 oauth2client.file.Storage.acquire_lock
 oauth2client.keyring_storage.Storage.acquire_lock
-oauth2client.multistore_file._MultiStore._Storage.acquire_lock" class="py-name" href="#" onclick="return doclink('link-36', 'acquire_lock', 'link-36');">acquire_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method oauth2client.appengine.StorageByKeyName.locked_get()=oauth2client.appengine.StorageByKeyName-class.html#locked_get,Method oauth2client.client.Storage.locked_get()=oauth2client.client.Storage-class.html#locked_get,Method oauth2client.django_orm.Storage.locked_get()=oauth2client.django_orm.Storage-class.html#locked_get,Method oauth2client.file.Storage.locked_get()=oauth2client.file.Storage-class.html#locked_get,Method oauth2client.keyring_storage.Storage.locked_get()=oauth2client.keyring_storage.Storage-class.html#locked_get,Method oauth2client.multistore_file._MultiStore._Storage.locked_get()=oauth2client.multistore_file._MultiStore._Storage-class.html#locked_get"><a title="oauth2client.appengine.StorageByKeyName.locked_get
+oauth2client.multistore_file._MultiStore._Storage.acquire_lock" class="py-name" href="#" onclick="return doclink('link-30', 'acquire_lock', 'link-30');">acquire_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Method oauth2client.appengine.StorageByKeyName.locked_get()=oauth2client.appengine.StorageByKeyName-class.html#locked_get,Method oauth2client.client.Storage.locked_get()=oauth2client.client.Storage-class.html#locked_get,Method oauth2client.django_orm.Storage.locked_get()=oauth2client.django_orm.Storage-class.html#locked_get,Method oauth2client.file.Storage.locked_get()=oauth2client.file.Storage-class.html#locked_get,Method oauth2client.keyring_storage.Storage.locked_get()=oauth2client.keyring_storage.Storage-class.html#locked_get,Method oauth2client.multistore_file._MultiStore._Storage.locked_get()=oauth2client.multistore_file._MultiStore._Storage-class.html#locked_get"><a title="oauth2client.appengine.StorageByKeyName.locked_get
 oauth2client.client.Storage.locked_get
 oauth2client.django_orm.Storage.locked_get
 oauth2client.file.Storage.locked_get
 oauth2client.keyring_storage.Storage.locked_get
-oauth2client.multistore_file._MultiStore._Storage.locked_get" class="py-name" href="#" onclick="return doclink('link-37', 'locked_get', 'link-37');">locked_get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line">    <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
-<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method oauth2client.client.Storage.release_lock()=oauth2client.client.Storage-class.html#release_lock,Method oauth2client.file.Storage.release_lock()=oauth2client.file.Storage-class.html#release_lock,Method oauth2client.keyring_storage.Storage.release_lock()=oauth2client.keyring_storage.Storage-class.html#release_lock,Method oauth2client.multistore_file._MultiStore._Storage.release_lock()=oauth2client.multistore_file._MultiStore._Storage-class.html#release_lock"><a title="oauth2client.client.Storage.release_lock
+oauth2client.multistore_file._MultiStore._Storage.locked_get" class="py-name" href="#" onclick="return doclink('link-31', 'locked_get', 'link-31');">locked_get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">    <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method oauth2client.client.Storage.release_lock()=oauth2client.client.Storage-class.html#release_lock,Method oauth2client.file.Storage.release_lock()=oauth2client.file.Storage-class.html#release_lock,Method oauth2client.keyring_storage.Storage.release_lock()=oauth2client.keyring_storage.Storage-class.html#release_lock,Method oauth2client.multistore_file._MultiStore._Storage.release_lock()=oauth2client.multistore_file._MultiStore._Storage-class.html#release_lock"><a title="oauth2client.client.Storage.release_lock
 oauth2client.file.Storage.release_lock
 oauth2client.keyring_storage.Storage.release_lock
-oauth2client.multistore_file._MultiStore._Storage.release_lock" class="py-name" href="#" onclick="return doclink('link-38', 'release_lock', 'link-38');">release_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line"> </tt>
-<a name="Storage.put"></a><div id="Storage.put-def"><a name="L292"></a><tt class="py-lineno"> 292</tt> <a class="py-toggle" href="#" id="Storage.put-toggle" onclick="return toggle('Storage.put');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#put">put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Storage.put-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.put-expanded"><a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">    <tt class="py-docstring">"""Write a credential.</tt> </tt>
-<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line"><tt class="py-docstring">    The Storage lock must be held when this is called.</tt> </tt>
-<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line"><tt class="py-docstring">      credentials: Credentials, the credentials to store.</tt> </tt>
-<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="oauth2client.client.Storage.acquire_lock
+oauth2client.multistore_file._MultiStore._Storage.release_lock" class="py-name" href="#" onclick="return doclink('link-32', 'release_lock', 'link-32');">release_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line"> </tt>
+<a name="Storage.put"></a><div id="Storage.put-def"><a name="L298"></a><tt class="py-lineno"> 298</tt> <a class="py-toggle" href="#" id="Storage.put-toggle" onclick="return toggle('Storage.put');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#put">put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Storage.put-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.put-expanded"><a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">    <tt class="py-docstring">"""Write a credential.</tt> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line"><tt class="py-docstring">    The Storage lock must be held when this is called.</tt> </tt>
+<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line"><tt class="py-docstring">      credentials: Credentials, the credentials to store.</tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="oauth2client.client.Storage.acquire_lock
 oauth2client.file.Storage.acquire_lock
 oauth2client.keyring_storage.Storage.acquire_lock
-oauth2client.multistore_file._MultiStore._Storage.acquire_lock" class="py-name" href="#" onclick="return doclink('link-39', 'acquire_lock', 'link-36');">acquire_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method oauth2client.appengine.StorageByKeyName.locked_put()=oauth2client.appengine.StorageByKeyName-class.html#locked_put,Method oauth2client.client.Storage.locked_put()=oauth2client.client.Storage-class.html#locked_put,Method oauth2client.django_orm.Storage.locked_put()=oauth2client.django_orm.Storage-class.html#locked_put,Method oauth2client.file.Storage.locked_put()=oauth2client.file.Storage-class.html#locked_put,Method oauth2client.keyring_storage.Storage.locked_put()=oauth2client.keyring_storage.Storage-class.html#locked_put,Method oauth2client.multistore_file._MultiStore._Storage.locked_put()=oauth2client.multistore_file._MultiStore._Storage-class.html#locked_put"><a title="oauth2client.appengine.StorageByKeyName.locked_put
+oauth2client.multistore_file._MultiStore._Storage.acquire_lock" class="py-name" href="#" onclick="return doclink('link-33', 'acquire_lock', 'link-30');">acquire_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method oauth2client.appengine.StorageByKeyName.locked_put()=oauth2client.appengine.StorageByKeyName-class.html#locked_put,Method oauth2client.client.Storage.locked_put()=oauth2client.client.Storage-class.html#locked_put,Method oauth2client.django_orm.Storage.locked_put()=oauth2client.django_orm.Storage-class.html#locked_put,Method oauth2client.file.Storage.locked_put()=oauth2client.file.Storage-class.html#locked_put,Method oauth2client.keyring_storage.Storage.locked_put()=oauth2client.keyring_storage.Storage-class.html#locked_put,Method oauth2client.multistore_file._MultiStore._Storage.locked_put()=oauth2client.multistore_file._MultiStore._Storage-class.html#locked_put"><a title="oauth2client.appengine.StorageByKeyName.locked_put
 oauth2client.client.Storage.locked_put
 oauth2client.django_orm.Storage.locked_put
 oauth2client.file.Storage.locked_put
 oauth2client.keyring_storage.Storage.locked_put
-oauth2client.multistore_file._MultiStore._Storage.locked_put" class="py-name" href="#" onclick="return doclink('link-40', 'locked_put', 'link-40');">locked_put</a></tt><tt class="py-op">(</tt><tt id="link-41" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-41', 'credentials', 'link-41');">credentials</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line">    <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
-<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="oauth2client.client.Storage.release_lock
+oauth2client.multistore_file._MultiStore._Storage.locked_put" class="py-name" href="#" onclick="return doclink('link-34', 'locked_put', 'link-34');">locked_put</a></tt><tt class="py-op">(</tt><tt id="link-35" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-35', 'credentials', 'link-35');">credentials</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line">    <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="oauth2client.client.Storage.release_lock
 oauth2client.file.Storage.release_lock
 oauth2client.keyring_storage.Storage.release_lock
-oauth2client.multistore_file._MultiStore._Storage.release_lock" class="py-name" href="#" onclick="return doclink('link-42', 'release_lock', 'link-38');">release_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line"> </tt>
-<a name="Storage.delete"></a><div id="Storage.delete-def"><a name="L306"></a><tt class="py-lineno"> 306</tt> <a class="py-toggle" href="#" id="Storage.delete-toggle" onclick="return toggle('Storage.delete');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#delete">delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Storage.delete-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.delete-expanded"><a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">    <tt class="py-docstring">"""Delete credential.</tt> </tt>
-<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line"><tt class="py-docstring">    Frees any resources associated with storing the credential.</tt> </tt>
-<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line"><tt class="py-docstring">    The Storage lock must *not* be held when this is called.</tt> </tt>
-<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line"><tt class="py-docstring">      None</tt> </tt>
-<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="oauth2client.client.Storage.acquire_lock
+oauth2client.multistore_file._MultiStore._Storage.release_lock" class="py-name" href="#" onclick="return doclink('link-36', 'release_lock', 'link-32');">release_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line"> </tt>
+<a name="Storage.delete"></a><div id="Storage.delete-def"><a name="L312"></a><tt class="py-lineno"> 312</tt> <a class="py-toggle" href="#" id="Storage.delete-toggle" onclick="return toggle('Storage.delete');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.Storage-class.html#delete">delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Storage.delete-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Storage.delete-expanded"><a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line">    <tt class="py-docstring">"""Delete credential.</tt> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line"><tt class="py-docstring">    Frees any resources associated with storing the credential.</tt> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line"><tt class="py-docstring">    The Storage lock must *not* be held when this is called.</tt> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line"><tt class="py-docstring">      None</tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="oauth2client.client.Storage.acquire_lock
 oauth2client.file.Storage.acquire_lock
 oauth2client.keyring_storage.Storage.acquire_lock
-oauth2client.multistore_file._MultiStore._Storage.acquire_lock" class="py-name" href="#" onclick="return doclink('link-43', 'acquire_lock', 'link-36');">acquire_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Method oauth2client.appengine.StorageByKeyName.locked_delete()=oauth2client.appengine.StorageByKeyName-class.html#locked_delete,Method oauth2client.client.Storage.locked_delete()=oauth2client.client.Storage-class.html#locked_delete,Method oauth2client.django_orm.Storage.locked_delete()=oauth2client.django_orm.Storage-class.html#locked_delete,Method oauth2client.file.Storage.locked_delete()=oauth2client.file.Storage-class.html#locked_delete,Method oauth2client.keyring_storage.Storage.locked_delete()=oauth2client.keyring_storage.Storage-class.html#locked_delete,Method oauth2client.multistore_file._MultiStore._Storage.locked_delete()=oauth2client.multistore_file._MultiStore._Storage-class.html#locked_delete"><a title="oauth2client.appengine.StorageByKeyName.locked_delete
+oauth2client.multistore_file._MultiStore._Storage.acquire_lock" class="py-name" href="#" onclick="return doclink('link-37', 'acquire_lock', 'link-30');">acquire_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method oauth2client.appengine.StorageByKeyName.locked_delete()=oauth2client.appengine.StorageByKeyName-class.html#locked_delete,Method oauth2client.client.Storage.locked_delete()=oauth2client.client.Storage-class.html#locked_delete,Method oauth2client.django_orm.Storage.locked_delete()=oauth2client.django_orm.Storage-class.html#locked_delete,Method oauth2client.file.Storage.locked_delete()=oauth2client.file.Storage-class.html#locked_delete,Method oauth2client.keyring_storage.Storage.locked_delete()=oauth2client.keyring_storage.Storage-class.html#locked_delete,Method oauth2client.multistore_file._MultiStore._Storage.locked_delete()=oauth2client.multistore_file._MultiStore._Storage-class.html#locked_delete"><a title="oauth2client.appengine.StorageByKeyName.locked_delete
 oauth2client.client.Storage.locked_delete
 oauth2client.django_orm.Storage.locked_delete
 oauth2client.file.Storage.locked_delete
 oauth2client.keyring_storage.Storage.locked_delete
-oauth2client.multistore_file._MultiStore._Storage.locked_delete" class="py-name" href="#" onclick="return doclink('link-44', 'locked_delete', 'link-44');">locked_delete</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line">    <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
-<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="oauth2client.client.Storage.release_lock
+oauth2client.multistore_file._MultiStore._Storage.locked_delete" class="py-name" href="#" onclick="return doclink('link-38', 'locked_delete', 'link-38');">locked_delete</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">    <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="oauth2client.client.Storage.release_lock
 oauth2client.file.Storage.release_lock
 oauth2client.keyring_storage.Storage.release_lock
-oauth2client.multistore_file._MultiStore._Storage.release_lock" class="py-name" href="#" onclick="return doclink('link-45', 'release_lock', 'link-38');">release_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Credentials"></a><div id="OAuth2Credentials-def"><a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line"> </tt>
-<a name="L322"></a><tt class="py-lineno"> 322</tt> <a class="py-toggle" href="#" id="OAuth2Credentials-toggle" onclick="return toggle('OAuth2Credentials');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a><tt class="py-op">(</tt><tt class="py-base-class">Credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="OAuth2Credentials-expanded"><a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">  <tt class="py-docstring">"""Credentials object for OAuth 2.0.</tt> </tt>
-<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line"><tt class="py-docstring">  Credentials can be applied to an httplib2.Http object using the authorize()</tt> </tt>
-<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line"><tt class="py-docstring">  method, which then adds the OAuth 2.0 access token to each request.</tt> </tt>
-<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line"><tt class="py-docstring">  OAuth2Credentials objects may be safely pickled and unpickled.</tt> </tt>
-<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line"> </tt>
-<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-46', 'positional', 'link-46');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">8</tt><tt class="py-op">)</tt> </tt>
-<a name="OAuth2Credentials.__init__"></a><div id="OAuth2Credentials.__init__-def"><a name="L332"></a><tt class="py-lineno"> 332</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.__init__-toggle" onclick="return toggle('OAuth2Credentials.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">access_token</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">client_secret</tt><tt class="py-op">,</tt> <tt class="py-param">refresh_token</tt><tt class="py-op">,</tt> </tt>
-<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">               <tt class="py-param">token_expiry</tt><tt class="py-op">,</tt> <tt class="py-param">token_uri</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">,</tt> <tt class="py-param">id_token</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.__init__-expanded"><a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create an instance of OAuth2Credentials.</tt> </tt>
-<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line"><tt class="py-docstring">    This constructor is not usually called by the user, instead</tt> </tt>
-<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line"><tt class="py-docstring">    OAuth2Credentials objects are instantiated by the OAuth2WebServerFlow.</tt> </tt>
-<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line"><tt class="py-docstring">      access_token: string, access token.</tt> </tt>
-<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line"><tt class="py-docstring">      client_id: string, client identifier.</tt> </tt>
-<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line"><tt class="py-docstring">      client_secret: string, client secret.</tt> </tt>
-<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line"><tt class="py-docstring">      refresh_token: string, refresh token.</tt> </tt>
-<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line"><tt class="py-docstring">      token_expiry: datetime, when the access_token expires.</tt> </tt>
-<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line"><tt class="py-docstring">      token_uri: string, URI of token endpoint.</tt> </tt>
-<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line"><tt class="py-docstring">      user_agent: string, The HTTP User-Agent to provide for this application.</tt> </tt>
-<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line"><tt class="py-docstring">      id_token: object, The identity of the resource owner.</tt> </tt>
-<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line"><tt class="py-docstring">    Notes:</tt> </tt>
-<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line"><tt class="py-docstring">      store: callable, A callable that when passed a Credential</tt> </tt>
-<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line"><tt class="py-docstring">        will store the credential back to where it came from.</tt> </tt>
-<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line"><tt class="py-docstring">        This is needed to store the latest access_token if it</tt> </tt>
-<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line"><tt class="py-docstring">        has expired and been refreshed.</tt> </tt>
-<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">access_token</tt> </tt>
-<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt> <tt class="py-op">=</tt> <tt class="py-name">client_id</tt> </tt>
-<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_secret</tt> <tt class="py-op">=</tt> <tt class="py-name">client_secret</tt> </tt>
-<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">refresh_token</tt> <tt class="py-op">=</tt> <tt class="py-name">refresh_token</tt> </tt>
-<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt> <tt class="py-op">=</tt> <tt class="py-name">token_expiry</tt> </tt>
-<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">token_uri</tt> </tt>
-<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
-<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id_token</tt> <tt class="py-op">=</tt> <tt class="py-name">id_token</tt> </tt>
-<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line"> </tt>
-<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line">    <tt class="py-comment"># True if the credentials have been revoked or expired and can't be</tt> </tt>
-<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line">    <tt class="py-comment"># refreshed.</tt> </tt>
-<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-</div><a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Credentials.authorize"></a><div id="OAuth2Credentials.authorize-def"><a name="L369"></a><tt class="py-lineno"> 369</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.authorize-toggle" onclick="return toggle('OAuth2Credentials.authorize');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#authorize">authorize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials.authorize-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.authorize-expanded"><a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line">    <tt class="py-docstring">"""Authorize an httplib2.Http instance with these credentials.</tt> </tt>
-<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line"><tt class="py-docstring">    The modified http.request method will add authentication headers to each</tt> </tt>
-<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line"><tt class="py-docstring">    request and will refresh access_tokens when a 401 is received on a</tt> </tt>
-<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line"><tt class="py-docstring">    request. In addition the http.request method has a credentials property,</tt> </tt>
-<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line"><tt class="py-docstring">    http.request.credentials, which is the Credentials object that authorized</tt> </tt>
-<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line"><tt class="py-docstring">    it.</tt> </tt>
-<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line"><tt class="py-docstring">       http: An instance of httplib2.Http</tt> </tt>
-<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line"><tt class="py-docstring">           or something that acts like it.</tt> </tt>
-<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"><tt class="py-docstring">       A modified instance of http that was passed in.</tt> </tt>
-<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line"><tt class="py-docstring">    Example:</tt> </tt>
-<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line"><tt class="py-docstring">      h = httplib2.Http()</tt> </tt>
-<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line"><tt class="py-docstring">      h = credentials.authorize(h)</tt> </tt>
-<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line"><tt class="py-docstring">    You can't create a new OAuth subclass of httplib2.Authenication</tt> </tt>
-<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line"><tt class="py-docstring">    because it never gets passed the absolute URI, which is needed for</tt> </tt>
-<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line"><tt class="py-docstring">    signing. So instead we have to overload 'request' with a closure</tt> </tt>
-<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line"><tt class="py-docstring">    that adds in the Authorization header and then calls the original</tt> </tt>
-<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line"><tt class="py-docstring">    version of 'request()'.</tt> </tt>
-<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line">    <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-47" class="py-name" targets="Module apiclient.http=apiclient.http-module.html,Method oauth2client.appengine.OAuth2Decorator.http()=oauth2client.appengine.OAuth2Decorator-class.html#http"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-47', 'http', 'link-47');">http</a></tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Method apiclient.http.HttpMock.request()=apiclient.http.HttpMock-class.html#request,Method apiclient.http.HttpMockSequence.request()=apiclient.http.HttpMockSequence-class.html#request,Method apiclient.model.BaseModel.request()=apiclient.model.BaseModel-class.html#request,Method apiclient.model.Model.request()=apiclient.model.Model-class.html#request"><a title="apiclient.http.HttpMock.request
+oauth2client.multistore_file._MultiStore._Storage.release_lock" class="py-name" href="#" onclick="return doclink('link-39', 'release_lock', 'link-32');">release_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line"> </tt>
+<a name="clean_headers"></a><div id="clean_headers-def"><a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line"> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt> <a class="py-toggle" href="#" id="clean_headers-toggle" onclick="return toggle('clean_headers');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#clean_headers">clean_headers</a><tt class="py-op">(</tt><tt class="py-param">headers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="clean_headers-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="clean_headers-expanded"><a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">  <tt class="py-docstring">"""Forces header keys and values to be strings, i.e not unicode.</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line"><tt class="py-docstring">  The httplib module just concats the header keys and values in a way that may</tt> </tt>
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line"><tt class="py-docstring">  make the message header a unicode string, which, if it then tries to</tt> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line"><tt class="py-docstring">  contatenate to a binary request body may result in a unicode decode error.</tt> </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line"><tt class="py-docstring">    headers: dict, A dictionary of headers.</tt> </tt>
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line"><tt class="py-docstring">    The same dictionary but with all the keys converted to strings.</tt> </tt>
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">  <tt class="py-name">clean</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line">      <tt class="py-name">clean</tt><tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">  <tt class="py-keyword">except</tt> <tt class="py-name">UnicodeEncodeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-40" class="py-name" targets="Class oauth2client.client.NonAsciiHeaderError=oauth2client.client.NonAsciiHeaderError-class.html"><a title="oauth2client.client.NonAsciiHeaderError" class="py-name" href="#" onclick="return doclink('link-40', 'NonAsciiHeaderError', 'link-40');">NonAsciiHeaderError</a></tt><tt class="py-op">(</tt><tt class="py-name">k</tt> <tt class="py-op">+</tt> <tt class="py-string">': '</tt> <tt class="py-op">+</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">clean</tt> </tt>
+</div><a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Credentials"></a><div id="OAuth2Credentials-def"><a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line"> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt> <a class="py-toggle" href="#" id="OAuth2Credentials-toggle" onclick="return toggle('OAuth2Credentials');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a><tt class="py-op">(</tt><tt class="py-base-class">Credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="OAuth2Credentials-expanded"><a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line">  <tt class="py-docstring">"""Credentials object for OAuth 2.0.</tt> </tt>
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line"><tt class="py-docstring">  Credentials can be applied to an httplib2.Http object using the authorize()</tt> </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line"><tt class="py-docstring">  method, which then adds the OAuth 2.0 access token to each request.</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line"><tt class="py-docstring">  OAuth2Credentials objects may be safely pickled and unpickled.</tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line"> </tt>
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-41', 'positional', 'link-41');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">8</tt><tt class="py-op">)</tt> </tt>
+<a name="OAuth2Credentials.__init__"></a><div id="OAuth2Credentials.__init__-def"><a name="L360"></a><tt class="py-lineno"> 360</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.__init__-toggle" onclick="return toggle('OAuth2Credentials.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">access_token</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">client_secret</tt><tt class="py-op">,</tt> <tt class="py-param">refresh_token</tt><tt class="py-op">,</tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">               <tt class="py-param">token_expiry</tt><tt class="py-op">,</tt> <tt class="py-param">token_uri</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">,</tt> <tt class="py-param">id_token</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.__init__-expanded"><a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create an instance of OAuth2Credentials.</tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line"><tt class="py-docstring">    This constructor is not usually called by the user, instead</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line"><tt class="py-docstring">    OAuth2Credentials objects are instantiated by the OAuth2WebServerFlow.</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"><tt class="py-docstring">      access_token: string, access token.</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line"><tt class="py-docstring">      client_id: string, client identifier.</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line"><tt class="py-docstring">      client_secret: string, client secret.</tt> </tt>
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line"><tt class="py-docstring">      refresh_token: string, refresh token.</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line"><tt class="py-docstring">      token_expiry: datetime, when the access_token expires.</tt> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line"><tt class="py-docstring">      token_uri: string, URI of token endpoint.</tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line"><tt class="py-docstring">      user_agent: string, The HTTP User-Agent to provide for this application.</tt> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line"><tt class="py-docstring">      id_token: object, The identity of the resource owner.</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line"><tt class="py-docstring">    Notes:</tt> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line"><tt class="py-docstring">      store: callable, A callable that when passed a Credential</tt> </tt>
+<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line"><tt class="py-docstring">        will store the credential back to where it came from.</tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line"><tt class="py-docstring">        This is needed to store the latest access_token if it</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line"><tt class="py-docstring">        has expired and been refreshed.</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">access_token</tt> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt> <tt class="py-op">=</tt> <tt class="py-name">client_id</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_secret</tt> <tt class="py-op">=</tt> <tt class="py-name">client_secret</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">refresh_token</tt> <tt class="py-op">=</tt> <tt class="py-name">refresh_token</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt> <tt class="py-op">=</tt> <tt class="py-name">token_expiry</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">token_uri</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id_token</tt> <tt class="py-op">=</tt> <tt class="py-name">id_token</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line"> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">    <tt class="py-comment"># True if the credentials have been revoked or expired and can't be</tt> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line">    <tt class="py-comment"># refreshed.</tt> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Credentials.authorize"></a><div id="OAuth2Credentials.authorize-def"><a name="L397"></a><tt class="py-lineno"> 397</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.authorize-toggle" onclick="return toggle('OAuth2Credentials.authorize');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#authorize">authorize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials.authorize-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.authorize-expanded"><a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line">    <tt class="py-docstring">"""Authorize an httplib2.Http instance with these credentials.</tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line"><tt class="py-docstring">    The modified http.request method will add authentication headers to each</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line"><tt class="py-docstring">    request and will refresh access_tokens when a 401 is received on a</tt> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line"><tt class="py-docstring">    request. In addition the http.request method has a credentials property,</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line"><tt class="py-docstring">    http.request.credentials, which is the Credentials object that authorized</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line"><tt class="py-docstring">    it.</tt> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line"><tt class="py-docstring">       http: An instance of httplib2.Http</tt> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line"><tt class="py-docstring">           or something that acts like it.</tt> </tt>
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line"><tt class="py-docstring">       A modified instance of http that was passed in.</tt> </tt>
+<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line"><tt class="py-docstring">    Example:</tt> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line"><tt class="py-docstring">      h = httplib2.Http()</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line"><tt class="py-docstring">      h = credentials.authorize(h)</tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line"><tt class="py-docstring">    You can't create a new OAuth subclass of httplib2.Authenication</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line"><tt class="py-docstring">    because it never gets passed the absolute URI, which is needed for</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line"><tt class="py-docstring">    signing. So instead we have to overload 'request' with a closure</tt> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line"><tt class="py-docstring">    that adds in the Authorization header and then calls the original</tt> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line"><tt class="py-docstring">    version of 'request()'.</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">    <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-42" class="py-name" targets="Module apiclient.http=apiclient.http-module.html,Method oauth2client.appengine.OAuth2Decorator.http()=oauth2client.appengine.OAuth2Decorator-class.html#http"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-42', 'http', 'link-42');">http</a></tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method apiclient.http.HttpMock.request()=apiclient.http.HttpMock-class.html#request,Method apiclient.http.HttpMockSequence.request()=apiclient.http.HttpMockSequence-class.html#request,Method apiclient.model.BaseModel.request()=apiclient.model.BaseModel-class.html#request,Method apiclient.model.Model.request()=apiclient.model.Model-class.html#request"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-48', 'request', 'link-48');">request</a></tt> </tt>
-<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line"> </tt>
-<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line">    <tt class="py-comment"># The closure that will replace 'httplib2.Http.request'.</tt> </tt>
-<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-49', 'positional', 'link-46');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">new_request</tt><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">                    <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">DEFAULT_MAX_REDIRECTS</tt><tt class="py-op">,</tt> </tt>
-<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">                    <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt><tt class="py-op">:</tt> </tt>
-<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line">        <tt id="link-50" class="py-name"><a title="apiclient.discovery.logger
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-43', 'request', 'link-43');">request</a></tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line"> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">    <tt class="py-comment"># The closure that will replace 'httplib2.Http.request'.</tt> </tt>
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-44', 'positional', 'link-41');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">new_request</tt><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">                    <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">DEFAULT_MAX_REDIRECTS</tt><tt class="py-op">,</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line">                    <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt><tt class="py-op">:</tt> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line">        <tt id="link-45" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-50', 'logger', 'link-16');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Attempting refresh to obtain initial access_token'</tt><tt class="py-op">)</tt> </tt>
-<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name" targets="Method oauth2client.appengine.AppAssertionCredentials._refresh()=oauth2client.appengine.AppAssertionCredentials-class.html#_refresh,Method oauth2client.client.AccessTokenCredentials._refresh()=oauth2client.client.AccessTokenCredentials-class.html#_refresh,Method oauth2client.client.OAuth2Credentials._refresh()=oauth2client.client.OAuth2Credentials-class.html#_refresh,Method oauth2client.gce.AppAssertionCredentials._refresh()=oauth2client.gce.AppAssertionCredentials-class.html#_refresh"><a title="oauth2client.appengine.AppAssertionCredentials._refresh
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-45', 'logger', 'link-9');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Attempting refresh to obtain initial access_token'</tt><tt class="py-op">)</tt> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Method oauth2client.appengine.AppAssertionCredentials._refresh()=oauth2client.appengine.AppAssertionCredentials-class.html#_refresh,Method oauth2client.client.AccessTokenCredentials._refresh()=oauth2client.client.AccessTokenCredentials-class.html#_refresh,Method oauth2client.client.OAuth2Credentials._refresh()=oauth2client.client.OAuth2Credentials-class.html#_refresh,Method oauth2client.gce.AppAssertionCredentials._refresh()=oauth2client.gce.AppAssertionCredentials-class.html#_refresh"><a title="oauth2client.appengine.AppAssertionCredentials._refresh
 oauth2client.client.AccessTokenCredentials._refresh
 oauth2client.client.OAuth2Credentials._refresh
-oauth2client.gce.AppAssertionCredentials._refresh" class="py-name" href="#" onclick="return doclink('link-51', '_refresh', 'link-51');">_refresh</a></tt><tt class="py-op">(</tt><tt class="py-name">request_orig</tt><tt class="py-op">)</tt> </tt>
-<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line"> </tt>
-<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">      <tt class="py-comment"># Modify the request headers to add the appropriate</tt> </tt>
-<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">      <tt class="py-comment"># Authorization header.</tt> </tt>
-<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">        <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name" targets="Method oauth2client.client.Credentials.apply()=oauth2client.client.Credentials-class.html#apply,Method oauth2client.client.OAuth2Credentials.apply()=oauth2client.client.OAuth2Credentials-class.html#apply"><a title="oauth2client.client.Credentials.apply
-oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-52', 'apply', 'link-52');">apply</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line"> </tt>
-<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'user-agent'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
-<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">          <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> </tt>
-<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">          <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> </tt>
-<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line"> </tt>
-<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
-<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">                                   <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line"> </tt>
-<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">      <tt class="py-comment"># Older API (GData) respond with 403</tt> </tt>
-<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-number">401</tt><tt class="py-op">,</tt> <tt class="py-number">403</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">        <tt id="link-53" class="py-name"><a title="apiclient.discovery.logger
-oauth2client.appengine.logger
-oauth2client.client.logger
-oauth2client.crypt.logger
-oauth2client.gce.logger
-oauth2client.locked_file.logger
-oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-53', 'logger', 'link-16');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Refreshing due to a %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="oauth2client.appengine.AppAssertionCredentials._refresh
-oauth2client.client.AccessTokenCredentials._refresh
-oauth2client.client.OAuth2Credentials._refresh
-oauth2client.gce.AppAssertionCredentials._refresh" class="py-name" href="#" onclick="return doclink('link-54', '_refresh', 'link-51');">_refresh</a></tt><tt class="py-op">(</tt><tt class="py-name">request_orig</tt><tt class="py-op">)</tt> </tt>
-<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="oauth2client.client.Credentials.apply
-oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-55', 'apply', 'link-52');">apply</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
-<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line">                            <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line"> </tt>
-<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line">    <tt class="py-comment"># Replace the request method with our own closure.</tt> </tt>
-<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">    <tt id="link-56" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-56', 'http', 'link-47');">http</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-57', 'request', 'link-48');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new_request</tt> </tt>
+oauth2client.gce.AppAssertionCredentials._refresh" class="py-name" href="#" onclick="return doclink('link-46', '_refresh', 'link-46');">_refresh</a></tt><tt class="py-op">(</tt><tt class="py-name">request_orig</tt><tt class="py-op">)</tt> </tt>
 <a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line"> </tt>
-<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">    <tt class="py-comment"># Set credentials as a property of the request method.</tt> </tt>
-<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-58" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-58', 'http', 'link-47');">http</a></tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-59', 'request', 'link-48');">request</a></tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
-<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line"> </tt>
-<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-60" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-60', 'http', 'link-47');">http</a></tt> </tt>
-</div><a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Credentials.refresh"></a><div id="OAuth2Credentials.refresh-def"><a name="L440"></a><tt class="py-lineno"> 440</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.refresh-toggle" onclick="return toggle('OAuth2Credentials.refresh');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#refresh">refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials.refresh-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.refresh-expanded"><a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">    <tt class="py-docstring">"""Forces a refresh of the access_token.</tt> </tt>
-<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, an http object to be used to make the refresh</tt> </tt>
-<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line"><tt class="py-docstring">        request.</tt> </tt>
-<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="oauth2client.appengine.AppAssertionCredentials._refresh
-oauth2client.client.AccessTokenCredentials._refresh
-oauth2client.client.OAuth2Credentials._refresh
-oauth2client.gce.AppAssertionCredentials._refresh" class="py-name" href="#" onclick="return doclink('link-61', '_refresh', 'link-51');">_refresh</a></tt><tt class="py-op">(</tt><tt id="link-62" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-62', 'http', 'link-47');">http</a></tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-63', 'request', 'link-48');">request</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Credentials.apply"></a><div id="OAuth2Credentials.apply-def"><a name="L449"></a><tt class="py-lineno"> 449</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.apply-toggle" onclick="return toggle('OAuth2Credentials.apply');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#apply">apply</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials.apply-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.apply-expanded"><a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">    <tt class="py-docstring">"""Add the authorization to the headers.</tt> </tt>
-<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line"><tt class="py-docstring">      headers: dict, the headers to add the Authorization header to.</tt> </tt>
-<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">    <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'Authorization'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'Bearer '</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> </tt>
-</div><a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Credentials.to_json"></a><div id="OAuth2Credentials.to_json-def"><a name="L457"></a><tt class="py-lineno"> 457</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.to_json-toggle" onclick="return toggle('OAuth2Credentials.to_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.to_json-expanded"><a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="apiclient.http.MediaUpload._to_json
-oauth2client.client.Credentials._to_json" class="py-name" href="#" onclick="return doclink('link-64', '_to_json', 'link-26');">_to_json</a></tt><tt class="py-op">(</tt><tt id="link-65" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-65', 'Credentials', 'link-27');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS" class="py-name" href="#" onclick="return doclink('link-66', 'NON_SERIALIZED_MEMBERS', 'link-21');">NON_SERIALIZED_MEMBERS</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line"> </tt>
-<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
-<a name="OAuth2Credentials.from_json"></a><div id="OAuth2Credentials.from_json-def"><a name="L461"></a><tt class="py-lineno"> 461</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.from_json-toggle" onclick="return toggle('OAuth2Credentials.from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.from_json-expanded"><a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">    <tt class="py-docstring">"""Instantiate a Credentials object from a JSON description of it. The JSON</tt> </tt>
-<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line"><tt class="py-docstring">    should have been produced by calling .to_json() on the object.</tt> </tt>
-<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line"><tt class="py-docstring">      data: dict, A deserialized JSON object.</tt> </tt>
-<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line"><tt class="py-docstring">      An instance of a Credentials subclass.</tt> </tt>
-<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">    <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-67', 'loads', 'link-29');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'token_expiry'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">data</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line">        <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">strptime</tt><tt class="py-op">(</tt> </tt>
-<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">            <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-68" class="py-name"><a title="oauth2client.client.EXPIRY_FORMAT" class="py-name" href="#" onclick="return doclink('link-68', 'EXPIRY_FORMAT', 'link-17');">EXPIRY_FORMAT</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
-<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line">    <tt class="py-name">retval</tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name" targets="Class oauth2client.client.OAuth2Credentials=oauth2client.client.OAuth2Credentials-class.html"><a title="oauth2client.client.OAuth2Credentials" class="py-name" href="#" onclick="return doclink('link-69', 'OAuth2Credentials', 'link-69');">OAuth2Credentials</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'access_token'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'client_id'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'client_secret'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'refresh_token'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'user_agent'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">        <tt class="py-name">id_token</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="apiclient.schema.Schemas.get
-oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-70', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'id_token'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">    <tt class="py-name">retval</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'invalid'</tt><tt class="py-op">]</tt> </tt>
-<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">retval</tt> </tt>
-</div><a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line"> </tt>
-<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
-<a name="OAuth2Credentials.access_token_expired"></a><div id="OAuth2Credentials.access_token_expired-def"><a name="L492"></a><tt class="py-lineno"> 492</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.access_token_expired-toggle" onclick="return toggle('OAuth2Credentials.access_token_expired');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#access_token_expired">access_token_expired</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials.access_token_expired-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.access_token_expired-expanded"><a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line">    <tt class="py-docstring">"""True if the credential is expired or invalid.</tt> </tt>
-<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"><tt class="py-docstring">    If the token_expiry isn't set, we assume the token doesn't expire.</tt> </tt>
-<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt><tt class="py-op">:</tt> </tt>
-<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
-<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line"> </tt>
-<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt><tt class="py-op">:</tt> </tt>
-<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
-<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line"> </tt>
-<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line">    <tt class="py-name">now</tt> <tt class="py-op">=</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">utcnow</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">now</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt><tt class="py-op">:</tt> </tt>
-<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line">      <tt id="link-71" class="py-name"><a title="apiclient.discovery.logger
+<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">      <tt class="py-comment"># Modify the request headers to add the appropriate</tt> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line">      <tt class="py-comment"># Authorization header.</tt> </tt>
+<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">        <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method oauth2client.client.Credentials.apply()=oauth2client.client.Credentials-class.html#apply,Method oauth2client.client.OAuth2Credentials.apply()=oauth2client.client.OAuth2Credentials-class.html#apply"><a title="oauth2client.client.Credentials.apply
+oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-47', 'apply', 'link-47');">apply</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line"> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'user-agent'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
+<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">          <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> </tt>
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">          <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line"> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">,</tt> <tt id="link-48" class="py-name" targets="Function oauth2client.client.clean_headers()=oauth2client.client-module.html#clean_headers"><a title="oauth2client.client.clean_headers" class="py-name" href="#" onclick="return doclink('link-48', 'clean_headers', 'link-48');">clean_headers</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line">                                   <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line"> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-keyword">in</tt> <tt id="link-49" class="py-name"><a title="oauth2client.client.REFRESH_STATUS_CODES" class="py-name" href="#" onclick="return doclink('link-49', 'REFRESH_STATUS_CODES', 'link-13');">REFRESH_STATUS_CODES</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">        <tt id="link-50" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-71', 'logger', 'link-16');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'access_token is expired. Now: %s, token_expiry: %s'</tt><tt class="py-op">,</tt> </tt>
-<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line">                  <tt class="py-name">now</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt><tt class="py-op">)</tt> </tt>
-<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
-<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
-</div><a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Credentials.set_store"></a><div id="OAuth2Credentials.set_store-def"><a name="L510"></a><tt class="py-lineno"> 510</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.set_store-toggle" onclick="return toggle('OAuth2Credentials.set_store');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#set_store">set_store</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">store</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials.set_store-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.set_store-expanded"><a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line">    <tt class="py-docstring">"""Set the Storage for the credential.</tt> </tt>
-<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line"><tt class="py-docstring">      store: Storage, an implementation of Stroage object.</tt> </tt>
-<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line"><tt class="py-docstring">        This is needed to store the latest access_token if it</tt> </tt>
-<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line"><tt class="py-docstring">        has expired and been refreshed.  This implementation uses</tt> </tt>
-<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line"><tt class="py-docstring">        locking to check for updates before updating the</tt> </tt>
-<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"><tt class="py-docstring">        access_token.</tt> </tt>
-<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt> <tt class="py-op">=</tt> <tt class="py-name">store</tt> </tt>
-</div><a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Credentials._updateFromCredential"></a><div id="OAuth2Credentials._updateFromCredential-def"><a name="L522"></a><tt class="py-lineno"> 522</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._updateFromCredential-toggle" onclick="return toggle('OAuth2Credentials._updateFromCredential');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_updateFromCredential">_updateFromCredential</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials._updateFromCredential-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._updateFromCredential-expanded"><a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line">    <tt class="py-docstring">"""Update this Credential from another instance."""</tt> </tt>
-<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.__getstate__()=oauth2client.client.OAuth2Credentials-class.html#__getstate__"><a title="oauth2client.client.OAuth2Credentials.__getstate__" class="py-name" href="#" onclick="return doclink('link-72', '__getstate__', 'link-72');">__getstate__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Credentials.__getstate__"></a><div id="OAuth2Credentials.__getstate__-def"><a name="L526"></a><tt class="py-lineno"> 526</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.__getstate__-toggle" onclick="return toggle('OAuth2Credentials.__getstate__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#__getstate__">__getstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials.__getstate__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.__getstate__-expanded"><a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line">    <tt class="py-docstring">"""Trim the state down to something that can be pickled."""</tt> </tt>
-<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line">    <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
-<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'store'</tt><tt class="py-op">]</tt> </tt>
-<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">d</tt> </tt>
-</div><a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Credentials.__setstate__"></a><div id="OAuth2Credentials.__setstate__-def"><a name="L532"></a><tt class="py-lineno"> 532</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.__setstate__-toggle" onclick="return toggle('OAuth2Credentials.__setstate__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#__setstate__">__setstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">state</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials.__setstate__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.__setstate__-expanded"><a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">    <tt class="py-docstring">"""Reconstitute the state of the object from being pickled."""</tt> </tt>
-<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">state</tt><tt class="py-op">)</tt> </tt>
-<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-50', 'logger', 'link-9');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Refreshing due to a %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="oauth2client.appengine.AppAssertionCredentials._refresh
+oauth2client.client.AccessTokenCredentials._refresh
+oauth2client.client.OAuth2Credentials._refresh
+oauth2client.gce.AppAssertionCredentials._refresh" class="py-name" href="#" onclick="return doclink('link-51', '_refresh', 'link-46');">_refresh</a></tt><tt class="py-op">(</tt><tt class="py-name">request_orig</tt><tt class="py-op">)</tt> </tt>
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="oauth2client.client.Credentials.apply
+oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-52', 'apply', 'link-47');">apply</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">,</tt> <tt id="link-53" class="py-name"><a title="oauth2client.client.clean_headers" class="py-name" href="#" onclick="return doclink('link-53', 'clean_headers', 'link-48');">clean_headers</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">                            <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line"> </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">    <tt class="py-comment"># Replace the request method with our own closure.</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">    <tt id="link-54" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-54', 'http', 'link-42');">http</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-55', 'request', 'link-43');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new_request</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line"> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">    <tt class="py-comment"># Set credentials as a property of the request method.</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-56" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-56', 'http', 'link-42');">http</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-57', 'request', 'link-43');">request</a></tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line"> </tt>
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-58" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-58', 'http', 'link-42');">http</a></tt> </tt>
+</div><a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Credentials.refresh"></a><div id="OAuth2Credentials.refresh-def"><a name="L467"></a><tt class="py-lineno"> 467</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.refresh-toggle" onclick="return toggle('OAuth2Credentials.refresh');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#refresh">refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials.refresh-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.refresh-expanded"><a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">    <tt class="py-docstring">"""Forces a refresh of the access_token.</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, an http object to be used to make the refresh</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line"><tt class="py-docstring">        request.</tt> </tt>
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="oauth2client.appengine.AppAssertionCredentials._refresh
+oauth2client.client.AccessTokenCredentials._refresh
+oauth2client.client.OAuth2Credentials._refresh
+oauth2client.gce.AppAssertionCredentials._refresh" class="py-name" href="#" onclick="return doclink('link-59', '_refresh', 'link-46');">_refresh</a></tt><tt class="py-op">(</tt><tt id="link-60" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-60', 'http', 'link-42');">http</a></tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-61', 'request', 'link-43');">request</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Credentials.apply"></a><div id="OAuth2Credentials.apply-def"><a name="L476"></a><tt class="py-lineno"> 476</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.apply-toggle" onclick="return toggle('OAuth2Credentials.apply');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#apply">apply</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials.apply-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.apply-expanded"><a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">    <tt class="py-docstring">"""Add the authorization to the headers.</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line"><tt class="py-docstring">      headers: dict, the headers to add the Authorization header to.</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">    <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'Authorization'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'Bearer '</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> </tt>
+</div><a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Credentials.to_json"></a><div id="OAuth2Credentials.to_json-def"><a name="L484"></a><tt class="py-lineno"> 484</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.to_json-toggle" onclick="return toggle('OAuth2Credentials.to_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.to_json-expanded"><a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="apiclient.http.MediaUpload._to_json
+oauth2client.client.Credentials._to_json" class="py-name" href="#" onclick="return doclink('link-62', '_to_json', 'link-20');">_to_json</a></tt><tt class="py-op">(</tt><tt id="link-63" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-63', 'Credentials', 'link-21');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS" class="py-name" href="#" onclick="return doclink('link-64', 'NON_SERIALIZED_MEMBERS', 'link-15');">NON_SERIALIZED_MEMBERS</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line"> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="OAuth2Credentials.from_json"></a><div id="OAuth2Credentials.from_json-def"><a name="L488"></a><tt class="py-lineno"> 488</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.from_json-toggle" onclick="return toggle('OAuth2Credentials.from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.from_json-expanded"><a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">    <tt class="py-docstring">"""Instantiate a Credentials object from a JSON description of it. The JSON</tt> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line"><tt class="py-docstring">    should have been produced by calling .to_json() on the object.</tt> </tt>
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line"><tt class="py-docstring">      data: dict, A deserialized JSON object.</tt> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line"><tt class="py-docstring">      An instance of a Credentials subclass.</tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line">    <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-65', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'token_expiry'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">data</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line">        <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">strptime</tt><tt class="py-op">(</tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line">            <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-66" class="py-name"><a title="oauth2client.client.EXPIRY_FORMAT" class="py-name" href="#" onclick="return doclink('link-66', 'EXPIRY_FORMAT', 'link-10');">EXPIRY_FORMAT</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line">    <tt class="py-name">retval</tt> <tt class="py-op">=</tt> <tt id="link-67" class="py-name" targets="Class oauth2client.client.OAuth2Credentials=oauth2client.client.OAuth2Credentials-class.html"><a title="oauth2client.client.OAuth2Credentials" class="py-name" href="#" onclick="return doclink('link-67', 'OAuth2Credentials', 'link-67');">OAuth2Credentials</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'access_token'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'client_id'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'client_secret'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'refresh_token'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'user_agent'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line">        <tt class="py-name">id_token</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-68', 'get', 'link-14');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'id_token'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">    <tt class="py-name">retval</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'invalid'</tt><tt class="py-op">]</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">retval</tt> </tt>
+</div><a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line"> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
+<a name="OAuth2Credentials.access_token_expired"></a><div id="OAuth2Credentials.access_token_expired-def"><a name="L519"></a><tt class="py-lineno"> 519</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.access_token_expired-toggle" onclick="return toggle('OAuth2Credentials.access_token_expired');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#access_token_expired">access_token_expired</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials.access_token_expired-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.access_token_expired-expanded"><a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line">    <tt class="py-docstring">"""True if the credential is expired or invalid.</tt> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line"><tt class="py-docstring">    If the token_expiry isn't set, we assume the token doesn't expire.</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt><tt class="py-op">:</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line"> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt><tt class="py-op">:</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line"> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">    <tt class="py-name">now</tt> <tt class="py-op">=</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">utcnow</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">now</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt><tt class="py-op">:</tt> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line">      <tt id="link-69" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.appengine.logger
+oauth2client.client.logger
+oauth2client.crypt.logger
+oauth2client.gce.logger
+oauth2client.locked_file.logger
+oauth2client.multistore_file.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-69', 'logger', 'link-9');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'access_token is expired. Now: %s, token_expiry: %s'</tt><tt class="py-op">,</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">                  <tt class="py-name">now</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt><tt class="py-op">)</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
 </div><a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Credentials._generate_refresh_request_body"></a><div id="OAuth2Credentials._generate_refresh_request_body-def"><a name="L537"></a><tt class="py-lineno"> 537</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._generate_refresh_request_body-toggle" onclick="return toggle('OAuth2Credentials._generate_refresh_request_body');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_body">_generate_refresh_request_body</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials._generate_refresh_request_body-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._generate_refresh_request_body-expanded"><a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line">    <tt class="py-docstring">"""Generate the body that will be used in the refresh request."""</tt> </tt>
-<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line">    <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-op">{</tt> </tt>
-<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line">        <tt class="py-string">'grant_type'</tt><tt class="py-op">:</tt> <tt class="py-string">'refresh_token'</tt><tt class="py-op">,</tt> </tt>
-<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line">        <tt class="py-string">'client_id'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> </tt>
-<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">        <tt class="py-string">'client_secret'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_secret</tt><tt class="py-op">,</tt> </tt>
-<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line">        <tt class="py-string">'refresh_token'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">refresh_token</tt><tt class="py-op">,</tt> </tt>
-<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">body</tt> </tt>
-</div><a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Credentials._generate_refresh_request_headers"></a><div id="OAuth2Credentials._generate_refresh_request_headers-def"><a name="L547"></a><tt class="py-lineno"> 547</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._generate_refresh_request_headers-toggle" onclick="return toggle('OAuth2Credentials._generate_refresh_request_headers');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_headers">_generate_refresh_request_headers</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials._generate_refresh_request_headers-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._generate_refresh_request_headers-expanded"><a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line">    <tt class="py-docstring">"""Generate the headers that will be used in the refresh request."""</tt> </tt>
-<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">        <tt class="py-string">'content-type'</tt><tt class="py-op">:</tt> <tt class="py-string">'application/x-www-form-urlencoded'</tt><tt class="py-op">,</tt> </tt>
-<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
-<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line"> </tt>
-<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> </tt>
-<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line"> </tt>
-<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">headers</tt> </tt>
-</div><a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Credentials._refresh"></a><div id="OAuth2Credentials._refresh-def"><a name="L558"></a><tt class="py-lineno"> 558</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._refresh-toggle" onclick="return toggle('OAuth2Credentials._refresh');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_refresh">_refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials._refresh-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._refresh-expanded"><a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line">    <tt class="py-docstring">"""Refreshes the access_token.</tt> </tt>
-<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line"><tt class="py-docstring">    This method first checks by reading the Storage object if available.</tt> </tt>
-<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line"><tt class="py-docstring">    If a refresh is still needed, it holds the Storage lock until the</tt> </tt>
-<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line"><tt class="py-docstring">    refresh is completed.</tt> </tt>
-<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line"><tt class="py-docstring">      http_request: callable, a callable that matches the method signature of</tt> </tt>
-<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line"><tt class="py-docstring">        httplib2.Http.request, used to make the refresh request.</tt> </tt>
-<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line"><tt class="py-docstring">      AccessTokenRefreshError: When the refresh fails.</tt> </tt>
-<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">:</tt> </tt>
-<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name" targets="Method oauth2client.client.OAuth2Credentials._do_refresh_request()=oauth2client.client.OAuth2Credentials-class.html#_do_refresh_request"><a title="oauth2client.client.OAuth2Credentials._do_refresh_request" class="py-name" href="#" onclick="return doclink('link-73', '_do_refresh_request', 'link-73');">_do_refresh_request</a></tt><tt class="py-op">(</tt><tt class="py-name">http_request</tt><tt class="py-op">)</tt> </tt>
-<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="oauth2client.client.Storage.acquire_lock
+<a name="OAuth2Credentials.set_store"></a><div id="OAuth2Credentials.set_store-def"><a name="L537"></a><tt class="py-lineno"> 537</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.set_store-toggle" onclick="return toggle('OAuth2Credentials.set_store');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#set_store">set_store</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">store</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials.set_store-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.set_store-expanded"><a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line">    <tt class="py-docstring">"""Set the Storage for the credential.</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line"><tt class="py-docstring">      store: Storage, an implementation of Stroage object.</tt> </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line"><tt class="py-docstring">        This is needed to store the latest access_token if it</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"><tt class="py-docstring">        has expired and been refreshed. This implementation uses</tt> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"><tt class="py-docstring">        locking to check for updates before updating the</tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line"><tt class="py-docstring">        access_token.</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt> <tt class="py-op">=</tt> <tt class="py-name">store</tt> </tt>
+</div><a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Credentials._updateFromCredential"></a><div id="OAuth2Credentials._updateFromCredential-def"><a name="L549"></a><tt class="py-lineno"> 549</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._updateFromCredential-toggle" onclick="return toggle('OAuth2Credentials._updateFromCredential');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_updateFromCredential">_updateFromCredential</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials._updateFromCredential-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._updateFromCredential-expanded"><a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">    <tt class="py-docstring">"""Update this Credential from another instance."""</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Method apiclient.discovery.Resource.__getstate__()=apiclient.discovery.Resource-class.html#__getstate__,Method oauth2client.client.OAuth2Credentials.__getstate__()=oauth2client.client.OAuth2Credentials-class.html#__getstate__"><a title="apiclient.discovery.Resource.__getstate__
+oauth2client.client.OAuth2Credentials.__getstate__" class="py-name" href="#" onclick="return doclink('link-70', '__getstate__', 'link-70');">__getstate__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Credentials.__getstate__"></a><div id="OAuth2Credentials.__getstate__-def"><a name="L553"></a><tt class="py-lineno"> 553</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.__getstate__-toggle" onclick="return toggle('OAuth2Credentials.__getstate__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#__getstate__">__getstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials.__getstate__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.__getstate__-expanded"><a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line">    <tt class="py-docstring">"""Trim the state down to something that can be pickled."""</tt> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line">    <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'store'</tt><tt class="py-op">]</tt> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">d</tt> </tt>
+</div><a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Credentials.__setstate__"></a><div id="OAuth2Credentials.__setstate__-def"><a name="L559"></a><tt class="py-lineno"> 559</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.__setstate__-toggle" onclick="return toggle('OAuth2Credentials.__setstate__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#__setstate__">__setstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">state</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials.__setstate__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.__setstate__-expanded"><a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line">    <tt class="py-docstring">"""Reconstitute the state of the object from being pickled."""</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">state</tt><tt class="py-op">)</tt> </tt>
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Credentials._generate_refresh_request_body"></a><div id="OAuth2Credentials._generate_refresh_request_body-def"><a name="L564"></a><tt class="py-lineno"> 564</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._generate_refresh_request_body-toggle" onclick="return toggle('OAuth2Credentials._generate_refresh_request_body');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_body">_generate_refresh_request_body</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials._generate_refresh_request_body-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._generate_refresh_request_body-expanded"><a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">    <tt class="py-docstring">"""Generate the body that will be used in the refresh request."""</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">    <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-op">{</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">        <tt class="py-string">'grant_type'</tt><tt class="py-op">:</tt> <tt class="py-string">'refresh_token'</tt><tt class="py-op">,</tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">        <tt class="py-string">'client_id'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line">        <tt class="py-string">'client_secret'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_secret</tt><tt class="py-op">,</tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">        <tt class="py-string">'refresh_token'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">refresh_token</tt><tt class="py-op">,</tt> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">body</tt> </tt>
+</div><a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Credentials._generate_refresh_request_headers"></a><div id="OAuth2Credentials._generate_refresh_request_headers-def"><a name="L574"></a><tt class="py-lineno"> 574</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._generate_refresh_request_headers-toggle" onclick="return toggle('OAuth2Credentials._generate_refresh_request_headers');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_headers">_generate_refresh_request_headers</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials._generate_refresh_request_headers-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._generate_refresh_request_headers-expanded"><a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">    <tt class="py-docstring">"""Generate the headers that will be used in the refresh request."""</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">        <tt class="py-string">'content-type'</tt><tt class="py-op">:</tt> <tt class="py-string">'application/x-www-form-urlencoded'</tt><tt class="py-op">,</tt> </tt>
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line"> </tt>
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> </tt>
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line"> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">headers</tt> </tt>
+</div><a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Credentials._refresh"></a><div id="OAuth2Credentials._refresh-def"><a name="L585"></a><tt class="py-lineno"> 585</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._refresh-toggle" onclick="return toggle('OAuth2Credentials._refresh');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_refresh">_refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials._refresh-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._refresh-expanded"><a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line">    <tt class="py-docstring">"""Refreshes the access_token.</tt> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line"><tt class="py-docstring">    This method first checks by reading the Storage object if available.</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line"><tt class="py-docstring">    If a refresh is still needed, it holds the Storage lock until the</tt> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line"><tt class="py-docstring">    refresh is completed.</tt> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line"><tt class="py-docstring">      http_request: callable, a callable that matches the method signature of</tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line"><tt class="py-docstring">        httplib2.Http.request, used to make the refresh request.</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line"><tt class="py-docstring">      AccessTokenRefreshError: When the refresh fails.</tt> </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">:</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name" targets="Method oauth2client.client.OAuth2Credentials._do_refresh_request()=oauth2client.client.OAuth2Credentials-class.html#_do_refresh_request"><a title="oauth2client.client.OAuth2Credentials._do_refresh_request" class="py-name" href="#" onclick="return doclink('link-71', '_do_refresh_request', 'link-71');">_do_refresh_request</a></tt><tt class="py-op">(</tt><tt class="py-name">http_request</tt><tt class="py-op">)</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="oauth2client.client.Storage.acquire_lock
 oauth2client.file.Storage.acquire_lock
 oauth2client.keyring_storage.Storage.acquire_lock
-oauth2client.multistore_file._MultiStore._Storage.acquire_lock" class="py-name" href="#" onclick="return doclink('link-74', 'acquire_lock', 'link-36');">acquire_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">        <tt class="py-name">new_cred</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="oauth2client.appengine.StorageByKeyName.locked_get
+oauth2client.multistore_file._MultiStore._Storage.acquire_lock" class="py-name" href="#" onclick="return doclink('link-72', 'acquire_lock', 'link-30');">acquire_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line">        <tt class="py-name">new_cred</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="oauth2client.appengine.StorageByKeyName.locked_get
 oauth2client.client.Storage.locked_get
 oauth2client.django_orm.Storage.locked_get
 oauth2client.file.Storage.locked_get
 oauth2client.keyring_storage.Storage.locked_get
-oauth2client.multistore_file._MultiStore._Storage.locked_get" class="py-name" href="#" onclick="return doclink('link-75', 'locked_get', 'link-37');">locked_get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">new_cred</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">new_cred</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> <tt class="py-keyword">and</tt> </tt>
-<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">            <tt class="py-name">new_cred</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line">          <tt id="link-76" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.multistore_file._MultiStore._Storage.locked_get" class="py-name" href="#" onclick="return doclink('link-73', 'locked_get', 'link-31');">locked_get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">new_cred</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">new_cred</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">            <tt class="py-name">new_cred</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line">          <tt id="link-74" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-76', 'logger', 'link-16');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Updated access_token read from Storage'</tt><tt class="py-op">)</tt> </tt>
-<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Method oauth2client.client.OAuth2Credentials._updateFromCredential()=oauth2client.client.OAuth2Credentials-class.html#_updateFromCredential"><a title="oauth2client.client.OAuth2Credentials._updateFromCredential" class="py-name" href="#" onclick="return doclink('link-77', '_updateFromCredential', 'link-77');">_updateFromCredential</a></tt><tt class="py-op">(</tt><tt class="py-name">new_cred</tt><tt class="py-op">)</tt> </tt>
-<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="oauth2client.client.OAuth2Credentials._do_refresh_request" class="py-name" href="#" onclick="return doclink('link-78', '_do_refresh_request', 'link-73');">_do_refresh_request</a></tt><tt class="py-op">(</tt><tt class="py-name">http_request</tt><tt class="py-op">)</tt> </tt>
-<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">      <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
-<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="oauth2client.client.Storage.release_lock
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-74', 'logger', 'link-9');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Updated access_token read from Storage'</tt><tt class="py-op">)</tt> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name" targets="Method oauth2client.client.OAuth2Credentials._updateFromCredential()=oauth2client.client.OAuth2Credentials-class.html#_updateFromCredential"><a title="oauth2client.client.OAuth2Credentials._updateFromCredential" class="py-name" href="#" onclick="return doclink('link-75', '_updateFromCredential', 'link-75');">_updateFromCredential</a></tt><tt class="py-op">(</tt><tt class="py-name">new_cred</tt><tt class="py-op">)</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="oauth2client.client.OAuth2Credentials._do_refresh_request" class="py-name" href="#" onclick="return doclink('link-76', '_do_refresh_request', 'link-71');">_do_refresh_request</a></tt><tt class="py-op">(</tt><tt class="py-name">http_request</tt><tt class="py-op">)</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">      <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="oauth2client.client.Storage.release_lock
 oauth2client.file.Storage.release_lock
 oauth2client.keyring_storage.Storage.release_lock
-oauth2client.multistore_file._MultiStore._Storage.release_lock" class="py-name" href="#" onclick="return doclink('link-79', 'release_lock', 'link-38');">release_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2Credentials._do_refresh_request"></a><div id="OAuth2Credentials._do_refresh_request-def"><a name="L587"></a><tt class="py-lineno"> 587</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._do_refresh_request-toggle" onclick="return toggle('OAuth2Credentials._do_refresh_request');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_do_refresh_request">_do_refresh_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials._do_refresh_request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._do_refresh_request-expanded"><a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line">    <tt class="py-docstring">"""Refresh the access_token using the refresh_token.</tt> </tt>
-<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line"><tt class="py-docstring">      http_request: callable, a callable that matches the method signature of</tt> </tt>
-<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line"><tt class="py-docstring">        httplib2.Http.request, used to make the refresh request.</tt> </tt>
-<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line"><tt class="py-docstring">      AccessTokenRefreshError: When the refresh fails.</tt> </tt>
-<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">    <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Method oauth2client.client.AssertionCredentials._generate_refresh_request_body()=oauth2client.client.AssertionCredentials-class.html#_generate_refresh_request_body,Method oauth2client.client.OAuth2Credentials._generate_refresh_request_body()=oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_body"><a title="oauth2client.client.AssertionCredentials._generate_refresh_request_body
-oauth2client.client.OAuth2Credentials._generate_refresh_request_body" class="py-name" href="#" onclick="return doclink('link-80', '_generate_refresh_request_body', 'link-80');">_generate_refresh_request_body</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Method oauth2client.client.OAuth2Credentials._generate_refresh_request_headers()=oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_headers"><a title="oauth2client.client.OAuth2Credentials._generate_refresh_request_headers" class="py-name" href="#" onclick="return doclink('link-81', '_generate_refresh_request_headers', 'link-81');">_generate_refresh_request_headers</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line"> </tt>
-<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">    <tt id="link-82" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.multistore_file._MultiStore._Storage.release_lock" class="py-name" href="#" onclick="return doclink('link-77', 'release_lock', 'link-32');">release_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2Credentials._do_refresh_request"></a><div id="OAuth2Credentials._do_refresh_request-def"><a name="L614"></a><tt class="py-lineno"> 614</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._do_refresh_request-toggle" onclick="return toggle('OAuth2Credentials._do_refresh_request');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_do_refresh_request">_do_refresh_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Credentials._do_refresh_request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._do_refresh_request-expanded"><a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">    <tt class="py-docstring">"""Refresh the access_token using the refresh_token.</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line"><tt class="py-docstring">      http_request: callable, a callable that matches the method signature of</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line"><tt class="py-docstring">        httplib2.Http.request, used to make the refresh request.</tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line"><tt class="py-docstring">      AccessTokenRefreshError: When the refresh fails.</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">    <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name" targets="Method oauth2client.client.AssertionCredentials._generate_refresh_request_body()=oauth2client.client.AssertionCredentials-class.html#_generate_refresh_request_body,Method oauth2client.client.OAuth2Credentials._generate_refresh_request_body()=oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_body"><a title="oauth2client.client.AssertionCredentials._generate_refresh_request_body
+oauth2client.client.OAuth2Credentials._generate_refresh_request_body" class="py-name" href="#" onclick="return doclink('link-78', '_generate_refresh_request_body', 'link-78');">_generate_refresh_request_body</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Method oauth2client.client.OAuth2Credentials._generate_refresh_request_headers()=oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_headers"><a title="oauth2client.client.OAuth2Credentials._generate_refresh_request_headers" class="py-name" href="#" onclick="return doclink('link-79', '_generate_refresh_request_headers', 'link-79');">_generate_refresh_request_headers</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line"> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">    <tt id="link-80" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-82', 'logger', 'link-16');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Refreshing access_token'</tt><tt class="py-op">)</tt> </tt>
-<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">http_request</tt><tt class="py-op">(</tt> </tt>
-<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt><tt class="py-op">:</tt> </tt>
-<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line">      <tt class="py-comment"># TODO(jcgregorio) Raise an error if loads fails?</tt> </tt>
-<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line">      <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-83', 'loads', 'link-29');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'access_token'</tt><tt class="py-op">]</tt> </tt>
-<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">refresh_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-80', 'logger', 'link-9');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Refreshing access_token'</tt><tt class="py-op">)</tt> </tt>
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">http_request</tt><tt class="py-op">(</tt> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt><tt class="py-op">:</tt> </tt>
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">      <tt class="py-comment"># TODO(jcgregorio) Raise an error if loads fails?</tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line">      <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-81', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'access_token'</tt><tt class="py-op">]</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">refresh_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-84', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'refresh_token'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">refresh_token</tt><tt class="py-op">)</tt> </tt>
-<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'expires_in'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
-<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt> <tt class="py-op">=</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">timedelta</tt><tt class="py-op">(</tt> </tt>
-<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">            <tt class="py-name">seconds</tt><tt class="py-op">=</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'expires_in'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">utcnow</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">:</tt> </tt>
-<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="oauth2client.appengine.StorageByKeyName.locked_put
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-82', 'get', 'link-14');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'refresh_token'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">refresh_token</tt><tt class="py-op">)</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'expires_in'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt> <tt class="py-op">=</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">timedelta</tt><tt class="py-op">(</tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">            <tt class="py-name">seconds</tt><tt class="py-op">=</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'expires_in'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">utcnow</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">:</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="oauth2client.appengine.StorageByKeyName.locked_put
 oauth2client.client.Storage.locked_put
 oauth2client.django_orm.Storage.locked_put
 oauth2client.file.Storage.locked_put
 oauth2client.keyring_storage.Storage.locked_put
-oauth2client.multistore_file._MultiStore._Storage.locked_put" class="py-name" href="#" onclick="return doclink('link-85', 'locked_put', 'link-40');">locked_put</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
-<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">      <tt class="py-comment"># An {'error':...} response body means the token is expired or revoked,</tt> </tt>
-<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">      <tt class="py-comment"># so we flag the credentials as such.</tt> </tt>
-<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">      <tt id="link-86" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.multistore_file._MultiStore._Storage.locked_put" class="py-name" href="#" onclick="return doclink('link-83', 'locked_put', 'link-34');">locked_put</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">      <tt class="py-comment"># An {'error':...} response body means the token is expired or revoked,</tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line">      <tt class="py-comment"># so we flag the credentials as such.</tt> </tt>
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">      <tt id="link-84" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-86', 'logger', 'link-16');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Failed to retrieve access token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">      <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-string">'Invalid response %s.'</tt> <tt class="py-op">%</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt> </tt>
-<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-87', 'loads', 'link-29');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'error'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
-<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">          <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'error'</tt><tt class="py-op">]</tt> </tt>
-<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">:</tt> </tt>
-<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="oauth2client.appengine.StorageByKeyName.locked_put
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-84', 'logger', 'link-9');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Failed to retrieve access token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">      <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-string">'Invalid response %s.'</tt> <tt class="py-op">%</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-85', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'error'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">          <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'error'</tt><tt class="py-op">]</tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">:</tt> </tt>
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="oauth2client.appengine.StorageByKeyName.locked_put
 oauth2client.client.Storage.locked_put
 oauth2client.django_orm.Storage.locked_put
 oauth2client.file.Storage.locked_put
 oauth2client.keyring_storage.Storage.locked_put
-oauth2client.multistore_file._MultiStore._Storage.locked_put" class="py-name" href="#" onclick="return doclink('link-88', 'locked_put', 'link-40');">locked_put</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
-<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt> <tt class="py-name">StandardError</tt><tt class="py-op">:</tt> </tt>
-<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
-<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-89" class="py-name" targets="Class oauth2client.client.AccessTokenRefreshError=oauth2client.client.AccessTokenRefreshError-class.html"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-89', 'AccessTokenRefreshError', 'link-89');">AccessTokenRefreshError</a></tt><tt class="py-op">(</tt><tt class="py-name">error_msg</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line"> </tt>
-<a name="AccessTokenCredentials"></a><div id="AccessTokenCredentials-def"><a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line"> </tt>
-<a name="L632"></a><tt class="py-lineno"> 632</tt> <a class="py-toggle" href="#" id="AccessTokenCredentials-toggle" onclick="return toggle('AccessTokenCredentials');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a><tt class="py-op">(</tt><tt class="py-base-class">OAuth2Credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AccessTokenCredentials-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="AccessTokenCredentials-expanded"><a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">  <tt class="py-docstring">"""Credentials object for OAuth 2.0.</tt> </tt>
-<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line"><tt class="py-docstring">  Credentials can be applied to an httplib2.Http object using the</tt> </tt>
-<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line"><tt class="py-docstring">  authorize() method, which then signs each request from that object</tt> </tt>
-<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line"><tt class="py-docstring">  with the OAuth 2.0 access token.  This set of credentials is for the</tt> </tt>
-<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line"><tt class="py-docstring">  use case where you have acquired an OAuth 2.0 access_token from</tt> </tt>
-<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line"><tt class="py-docstring">  another place such as a JavaScript client or another web</tt> </tt>
-<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line"><tt class="py-docstring">  application, and wish to use it from Python. Because only the</tt> </tt>
-<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line"><tt class="py-docstring">  access_token is present it can not be refreshed and will in time</tt> </tt>
-<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line"><tt class="py-docstring">  expire.</tt> </tt>
-<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line"><tt class="py-docstring">  AccessTokenCredentials objects may be safely pickled and unpickled.</tt> </tt>
-<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line"><tt class="py-docstring">  Usage:</tt> </tt>
-<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line"><tt class="py-docstring">    credentials = AccessTokenCredentials('&lt;an access token&gt;',</tt> </tt>
-<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line"><tt class="py-docstring">      'my-user-agent/1.0')</tt> </tt>
-<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line"><tt class="py-docstring">    http = httplib2.Http()</tt> </tt>
-<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line"><tt class="py-docstring">    http = credentials.authorize(http)</tt> </tt>
-<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line"><tt class="py-docstring">  Exceptions:</tt> </tt>
-<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line"><tt class="py-docstring">    AccessTokenCredentialsExpired: raised when the access_token expires or is</tt> </tt>
-<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line"><tt class="py-docstring">      revoked.</tt> </tt>
-<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line"> </tt>
-<a name="AccessTokenCredentials.__init__"></a><div id="AccessTokenCredentials.__init__-def"><a name="L657"></a><tt class="py-lineno"> 657</tt> <a class="py-toggle" href="#" id="AccessTokenCredentials.__init__-toggle" onclick="return toggle('AccessTokenCredentials.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenCredentials-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">access_token</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AccessTokenCredentials.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AccessTokenCredentials.__init__-expanded"><a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create an instance of OAuth2Credentials</tt> </tt>
-<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line"><tt class="py-docstring">    This is one of the few types if Credentials that you should contrust,</tt> </tt>
-<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line"><tt class="py-docstring">    Credentials objects are usually instantiated by a Flow.</tt> </tt>
-<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line"><tt class="py-docstring">      access_token: string, access token.</tt> </tt>
-<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line"><tt class="py-docstring">      user_agent: string, The HTTP User-Agent to provide for this application.</tt> </tt>
-<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line"><tt class="py-docstring">    Notes:</tt> </tt>
-<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line"><tt class="py-docstring">      store: callable, a callable that when passed a Credential</tt> </tt>
-<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line"><tt class="py-docstring">        will store the credential back to where it came from.</tt> </tt>
-<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-90" class="py-name" targets="Class oauth2client.client.AccessTokenCredentials=oauth2client.client.AccessTokenCredentials-class.html"><a title="oauth2client.client.AccessTokenCredentials" class="py-name" href="#" onclick="return doclink('link-90', 'AccessTokenCredentials', 'link-90');">AccessTokenCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name" targets="Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.crypt.Signer.__init__()=oauth2client.crypt.Signer-class.html#__init__,Method oauth2client.crypt.Verifier.__init__()=oauth2client.crypt.Verifier-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.errors.BatchError.__init__
+oauth2client.multistore_file._MultiStore._Storage.locked_put" class="py-name" href="#" onclick="return doclink('link-86', 'locked_put', 'link-34');">locked_put</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt> <tt class="py-name">StandardError</tt><tt class="py-op">:</tt> </tt>
+<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-87" class="py-name" targets="Class oauth2client.client.AccessTokenRefreshError=oauth2client.client.AccessTokenRefreshError-class.html"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-87', 'AccessTokenRefreshError', 'link-87');">AccessTokenRefreshError</a></tt><tt class="py-op">(</tt><tt class="py-name">error_msg</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line"> </tt>
+<a name="AccessTokenCredentials"></a><div id="AccessTokenCredentials-def"><a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line"> </tt>
+<a name="L659"></a><tt class="py-lineno"> 659</tt> <a class="py-toggle" href="#" id="AccessTokenCredentials-toggle" onclick="return toggle('AccessTokenCredentials');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a><tt class="py-op">(</tt><tt class="py-base-class">OAuth2Credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AccessTokenCredentials-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="AccessTokenCredentials-expanded"><a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">  <tt class="py-docstring">"""Credentials object for OAuth 2.0.</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line"><tt class="py-docstring">  Credentials can be applied to an httplib2.Http object using the</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line"><tt class="py-docstring">  authorize() method, which then signs each request from that object</tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line"><tt class="py-docstring">  with the OAuth 2.0 access token. This set of credentials is for the</tt> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line"><tt class="py-docstring">  use case where you have acquired an OAuth 2.0 access_token from</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line"><tt class="py-docstring">  another place such as a JavaScript client or another web</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line"><tt class="py-docstring">  application, and wish to use it from Python. Because only the</tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line"><tt class="py-docstring">  access_token is present it can not be refreshed and will in time</tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line"><tt class="py-docstring">  expire.</tt> </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line"><tt class="py-docstring">  AccessTokenCredentials objects may be safely pickled and unpickled.</tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line"><tt class="py-docstring">  Usage:</tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line"><tt class="py-docstring">    credentials = AccessTokenCredentials('&lt;an access token&gt;',</tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line"><tt class="py-docstring">      'my-user-agent/1.0')</tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line"><tt class="py-docstring">    http = httplib2.Http()</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line"><tt class="py-docstring">    http = credentials.authorize(http)</tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line"><tt class="py-docstring">  Exceptions:</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line"><tt class="py-docstring">    AccessTokenCredentialsExpired: raised when the access_token expires or is</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line"><tt class="py-docstring">      revoked.</tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line"> </tt>
+<a name="AccessTokenCredentials.__init__"></a><div id="AccessTokenCredentials.__init__-def"><a name="L684"></a><tt class="py-lineno"> 684</tt> <a class="py-toggle" href="#" id="AccessTokenCredentials.__init__-toggle" onclick="return toggle('AccessTokenCredentials.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenCredentials-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">access_token</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AccessTokenCredentials.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AccessTokenCredentials.__init__-expanded"><a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create an instance of OAuth2Credentials</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line"><tt class="py-docstring">    This is one of the few types if Credentials that you should contrust,</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line"><tt class="py-docstring">    Credentials objects are usually instantiated by a Flow.</tt> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line"><tt class="py-docstring">      access_token: string, access token.</tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line"><tt class="py-docstring">      user_agent: string, The HTTP User-Agent to provide for this application.</tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line"><tt class="py-docstring">    Notes:</tt> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line"><tt class="py-docstring">      store: callable, a callable that when passed a Credential</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line"><tt class="py-docstring">        will store the credential back to where it came from.</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-88" class="py-name" targets="Class oauth2client.client.AccessTokenCredentials=oauth2client.client.AccessTokenCredentials-class.html"><a title="oauth2client.client.AccessTokenCredentials" class="py-name" href="#" onclick="return doclink('link-88', 'AccessTokenCredentials', 'link-88');">AccessTokenCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name" targets="Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.push.Channel.__init__()=apiclient.push.Channel-class.html#__init__,Method apiclient.push.Headers.__init__()=apiclient.push.Headers-class.html#__init__,Method apiclient.push.Subscription.__init__()=apiclient.push.Subscription-class.html#__init__,Method apiclient.push.WebhookChannel.__init__()=apiclient.push.WebhookChannel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.discovery.Resource.__init__
+apiclient.errors.BatchError.__init__
 apiclient.errors.HttpError.__init__
 apiclient.errors.UnexpectedBodyError.__init__
 apiclient.errors.UnexpectedMethodError.__init__
@@ -902,6 +932,10 @@
 apiclient.http._StreamSlice.__init__
 apiclient.model.JsonModel.__init__
 apiclient.model.ProtocolBufferModel.__init__
+apiclient.push.Channel.__init__
+apiclient.push.Headers.__init__
+apiclient.push.Subscription.__init__
+apiclient.push.WebhookChannel.__init__
 apiclient.schema.Schemas.__init__
 apiclient.schema._SchemaToStruct.__init__
 oauth2client.appengine.AppAssertionCredentials.__init__
@@ -914,8 +948,6 @@
 oauth2client.client.OAuth2Credentials.__init__
 oauth2client.client.OAuth2WebServerFlow.__init__
 oauth2client.client.SignedJwtAssertionCredentials.__init__
-oauth2client.crypt.Signer.__init__
-oauth2client.crypt.Verifier.__init__
 oauth2client.django_orm.CredentialsField.__init__
 oauth2client.django_orm.FlowField.__init__
 oauth2client.django_orm.Storage.__init__
@@ -925,54 +957,55 @@
 oauth2client.locked_file.LockedFile.__init__
 oauth2client.locked_file._Opener.__init__
 oauth2client.multistore_file._MultiStore._Storage.__init__
-oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-91', '__init__', 'link-91');">__init__</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">        <tt class="py-name">access_token</tt><tt class="py-op">,</tt> </tt>
-<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">        <tt class="py-name">user_agent</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line"> </tt>
-<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line"> </tt>
-<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
-<a name="AccessTokenCredentials.from_json"></a><div id="AccessTokenCredentials.from_json-def"><a name="L682"></a><tt class="py-lineno"> 682</tt> <a class="py-toggle" href="#" id="AccessTokenCredentials.from_json-toggle" onclick="return toggle('AccessTokenCredentials.from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenCredentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AccessTokenCredentials.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AccessTokenCredentials.from_json-expanded"><a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">    <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-92', 'loads', 'link-29');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line">    <tt class="py-name">retval</tt> <tt class="py-op">=</tt> <tt id="link-93" class="py-name"><a title="oauth2client.client.AccessTokenCredentials" class="py-name" href="#" onclick="return doclink('link-93', 'AccessTokenCredentials', 'link-90');">AccessTokenCredentials</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'access_token'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'user_agent'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">retval</tt> </tt>
-</div><a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line"> </tt>
-<a name="AccessTokenCredentials._refresh"></a><div id="AccessTokenCredentials._refresh-def"><a name="L689"></a><tt class="py-lineno"> 689</tt> <a class="py-toggle" href="#" id="AccessTokenCredentials._refresh-toggle" onclick="return toggle('AccessTokenCredentials._refresh');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenCredentials-class.html#_refresh">_refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AccessTokenCredentials._refresh-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AccessTokenCredentials._refresh-expanded"><a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-94" class="py-name" targets="Class oauth2client.client.AccessTokenCredentialsError=oauth2client.client.AccessTokenCredentialsError-class.html"><a title="oauth2client.client.AccessTokenCredentialsError" class="py-name" href="#" onclick="return doclink('link-94', 'AccessTokenCredentialsError', 'link-94');">AccessTokenCredentialsError</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line">        <tt class="py-string">"The access_token is expired or invalid and can't be refreshed."</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line"> </tt>
-<a name="AssertionCredentials"></a><div id="AssertionCredentials-def"><a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line"> </tt>
-<a name="L694"></a><tt class="py-lineno"> 694</tt> <a class="py-toggle" href="#" id="AssertionCredentials-toggle" onclick="return toggle('AssertionCredentials');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.AssertionCredentials-class.html">AssertionCredentials</a><tt class="py-op">(</tt><tt class="py-base-class">OAuth2Credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AssertionCredentials-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="AssertionCredentials-expanded"><a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">  <tt class="py-docstring">"""Abstract Credentials object used for OAuth 2.0 assertion grants.</tt> </tt>
-<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line"><tt class="py-docstring">  This credential does not require a flow to instantiate because it</tt> </tt>
-<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line"><tt class="py-docstring">  represents a two legged flow, and therefore has all of the required</tt> </tt>
-<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line"><tt class="py-docstring">  information to generate and refresh its own access tokens.  It must</tt> </tt>
-<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line"><tt class="py-docstring">  be subclassed to generate the appropriate assertion string.</tt> </tt>
-<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line"><tt class="py-docstring">  AssertionCredentials objects may be safely pickled and unpickled.</tt> </tt>
-<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line"> </tt>
-<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-95', 'positional', 'link-46');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="AssertionCredentials.__init__"></a><div id="AssertionCredentials.__init__-def"><a name="L706"></a><tt class="py-lineno"> 706</tt> <a class="py-toggle" href="#" id="AssertionCredentials.__init__-toggle" onclick="return toggle('AssertionCredentials.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AssertionCredentials-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">assertion_type</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line">               <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/token'</tt><tt class="py-op">,</tt> </tt>
-<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line">               <tt class="py-op">**</tt><tt class="py-param">unused_kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AssertionCredentials.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AssertionCredentials.__init__-expanded"><a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for AssertionFlowCredentials.</tt> </tt>
-<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line"><tt class="py-docstring">      assertion_type: string, assertion type that will be declared to the auth</tt> </tt>
-<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line"><tt class="py-docstring">          server</tt> </tt>
-<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line"><tt class="py-docstring">      user_agent: string, The HTTP User-Agent to provide for this application.</tt> </tt>
-<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line"><tt class="py-docstring">      token_uri: string, URI for token endpoint. For convenience</tt> </tt>
-<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line"><tt class="py-docstring">        defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
-<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-96" class="py-name" targets="Class oauth2client.client.AssertionCredentials=oauth2client.client.AssertionCredentials-class.html"><a title="oauth2client.client.AssertionCredentials" class="py-name" href="#" onclick="return doclink('link-96', 'AssertionCredentials', 'link-96');">AssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="apiclient.errors.BatchError.__init__
+oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-89', '__init__', 'link-89');">__init__</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line">        <tt class="py-name">access_token</tt><tt class="py-op">,</tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line">        <tt class="py-name">user_agent</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line"> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line"> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="AccessTokenCredentials.from_json"></a><div id="AccessTokenCredentials.from_json-def"><a name="L709"></a><tt class="py-lineno"> 709</tt> <a class="py-toggle" href="#" id="AccessTokenCredentials.from_json-toggle" onclick="return toggle('AccessTokenCredentials.from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenCredentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AccessTokenCredentials.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AccessTokenCredentials.from_json-expanded"><a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line">    <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-90', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">    <tt class="py-name">retval</tt> <tt class="py-op">=</tt> <tt id="link-91" class="py-name"><a title="oauth2client.client.AccessTokenCredentials" class="py-name" href="#" onclick="return doclink('link-91', 'AccessTokenCredentials', 'link-88');">AccessTokenCredentials</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'access_token'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line">        <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'user_agent'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">retval</tt> </tt>
+</div><a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line"> </tt>
+<a name="AccessTokenCredentials._refresh"></a><div id="AccessTokenCredentials._refresh-def"><a name="L716"></a><tt class="py-lineno"> 716</tt> <a class="py-toggle" href="#" id="AccessTokenCredentials._refresh-toggle" onclick="return toggle('AccessTokenCredentials._refresh');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenCredentials-class.html#_refresh">_refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AccessTokenCredentials._refresh-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AccessTokenCredentials._refresh-expanded"><a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-92" class="py-name" targets="Class oauth2client.client.AccessTokenCredentialsError=oauth2client.client.AccessTokenCredentialsError-class.html"><a title="oauth2client.client.AccessTokenCredentialsError" class="py-name" href="#" onclick="return doclink('link-92', 'AccessTokenCredentialsError', 'link-92');">AccessTokenCredentialsError</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line">        <tt class="py-string">"The access_token is expired or invalid and can't be refreshed."</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line"> </tt>
+<a name="AssertionCredentials"></a><div id="AssertionCredentials-def"><a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line"> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt> <a class="py-toggle" href="#" id="AssertionCredentials-toggle" onclick="return toggle('AssertionCredentials');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.AssertionCredentials-class.html">AssertionCredentials</a><tt class="py-op">(</tt><tt class="py-base-class">OAuth2Credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AssertionCredentials-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="AssertionCredentials-expanded"><a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">  <tt class="py-docstring">"""Abstract Credentials object used for OAuth 2.0 assertion grants.</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line"><tt class="py-docstring">  This credential does not require a flow to instantiate because it</tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line"><tt class="py-docstring">  represents a two legged flow, and therefore has all of the required</tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line"><tt class="py-docstring">  information to generate and refresh its own access tokens. It must</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line"><tt class="py-docstring">  be subclassed to generate the appropriate assertion string.</tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line"><tt class="py-docstring">  AssertionCredentials objects may be safely pickled and unpickled.</tt> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line"> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-93', 'positional', 'link-41');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="AssertionCredentials.__init__"></a><div id="AssertionCredentials.__init__-def"><a name="L733"></a><tt class="py-lineno"> 733</tt> <a class="py-toggle" href="#" id="AssertionCredentials.__init__-toggle" onclick="return toggle('AssertionCredentials.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AssertionCredentials-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">assertion_type</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line">               <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/token'</tt><tt class="py-op">,</tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line">               <tt class="py-op">**</tt><tt class="py-param">unused_kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AssertionCredentials.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AssertionCredentials.__init__-expanded"><a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for AssertionFlowCredentials.</tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line"><tt class="py-docstring">      assertion_type: string, assertion type that will be declared to the auth</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"><tt class="py-docstring">          server</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line"><tt class="py-docstring">      user_agent: string, The HTTP User-Agent to provide for this application.</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line"><tt class="py-docstring">      token_uri: string, URI for token endpoint. For convenience</tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line"><tt class="py-docstring">        defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-94" class="py-name" targets="Class oauth2client.client.AssertionCredentials=oauth2client.client.AssertionCredentials-class.html"><a title="oauth2client.client.AssertionCredentials" class="py-name" href="#" onclick="return doclink('link-94', 'AssertionCredentials', 'link-94');">AssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="apiclient.discovery.Resource.__init__
+apiclient.errors.BatchError.__init__
 apiclient.errors.HttpError.__init__
 apiclient.errors.UnexpectedBodyError.__init__
 apiclient.errors.UnexpectedMethodError.__init__
@@ -991,6 +1024,10 @@
 apiclient.http._StreamSlice.__init__
 apiclient.model.JsonModel.__init__
 apiclient.model.ProtocolBufferModel.__init__
+apiclient.push.Channel.__init__
+apiclient.push.Headers.__init__
+apiclient.push.Subscription.__init__
+apiclient.push.WebhookChannel.__init__
 apiclient.schema.Schemas.__init__
 apiclient.schema._SchemaToStruct.__init__
 oauth2client.appengine.AppAssertionCredentials.__init__
@@ -1003,8 +1040,6 @@
 oauth2client.client.OAuth2Credentials.__init__
 oauth2client.client.OAuth2WebServerFlow.__init__
 oauth2client.client.SignedJwtAssertionCredentials.__init__
-oauth2client.crypt.Signer.__init__
-oauth2client.crypt.Verifier.__init__
 oauth2client.django_orm.CredentialsField.__init__
 oauth2client.django_orm.FlowField.__init__
 oauth2client.django_orm.Storage.__init__
@@ -1014,79 +1049,80 @@
 oauth2client.locked_file.LockedFile.__init__
 oauth2client.locked_file._Opener.__init__
 oauth2client.multistore_file._MultiStore._Storage.__init__
-oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-97', '__init__', 'link-91');">__init__</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">        <tt class="py-name">token_uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line">        <tt class="py-name">user_agent</tt><tt class="py-op">)</tt> </tt>
-<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertion_type</tt> <tt class="py-op">=</tt> <tt class="py-name">assertion_type</tt> </tt>
-</div><a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line"> </tt>
-<a name="AssertionCredentials._generate_refresh_request_body"></a><div id="AssertionCredentials._generate_refresh_request_body-def"><a name="L728"></a><tt class="py-lineno"> 728</tt> <a class="py-toggle" href="#" id="AssertionCredentials._generate_refresh_request_body-toggle" onclick="return toggle('AssertionCredentials._generate_refresh_request_body');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AssertionCredentials-class.html#_generate_refresh_request_body">_generate_refresh_request_body</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AssertionCredentials._generate_refresh_request_body-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AssertionCredentials._generate_refresh_request_body-expanded"><a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">    <tt class="py-name">assertion</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name" targets="Method oauth2client.client.AssertionCredentials._generate_assertion()=oauth2client.client.AssertionCredentials-class.html#_generate_assertion,Method oauth2client.client.SignedJwtAssertionCredentials._generate_assertion()=oauth2client.client.SignedJwtAssertionCredentials-class.html#_generate_assertion"><a title="oauth2client.client.AssertionCredentials._generate_assertion
-oauth2client.client.SignedJwtAssertionCredentials._generate_assertion" class="py-name" href="#" onclick="return doclink('link-98', '_generate_assertion', 'link-98');">_generate_assertion</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line"> </tt>
-<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line">    <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-op">{</tt> </tt>
-<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line">        <tt class="py-string">'assertion_type'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertion_type</tt><tt class="py-op">,</tt> </tt>
-<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line">        <tt class="py-string">'assertion'</tt><tt class="py-op">:</tt> <tt class="py-name">assertion</tt><tt class="py-op">,</tt> </tt>
-<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line">        <tt class="py-string">'grant_type'</tt><tt class="py-op">:</tt> <tt class="py-string">'assertion'</tt><tt class="py-op">,</tt> </tt>
-<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line"> </tt>
-<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">body</tt> </tt>
-</div><a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line"> </tt>
-<a name="AssertionCredentials._generate_assertion"></a><div id="AssertionCredentials._generate_assertion-def"><a name="L739"></a><tt class="py-lineno"> 739</tt> <a class="py-toggle" href="#" id="AssertionCredentials._generate_assertion-toggle" onclick="return toggle('AssertionCredentials._generate_assertion');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AssertionCredentials-class.html#_generate_assertion">_generate_assertion</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AssertionCredentials._generate_assertion-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AssertionCredentials._generate_assertion-expanded"><a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line">    <tt class="py-docstring">"""Generate the assertion string that will be used in the access token</tt> </tt>
-<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line"><tt class="py-docstring">    request.</tt> </tt>
-<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line">    <tt id="link-99" class="py-name"><a title="apiclient.model._abstract
-oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-99', '_abstract', 'link-22');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line"> </tt>
-<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-100" class="py-name"><a title="oauth2client.client.HAS_OPENSSL" class="py-name" href="#" onclick="return doclink('link-100', 'HAS_OPENSSL', 'link-5');">HAS_OPENSSL</a></tt><tt class="py-op">:</tt> </tt>
-<a name="SignedJwtAssertionCredentials"></a><div id="SignedJwtAssertionCredentials-def"><a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">  <tt class="py-comment"># PyOpenSSL is not a prerequisite for oauth2client, so if it is missing then</tt> </tt>
-<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">  <tt class="py-comment"># don't create the SignedJwtAssertionCredentials or the verify_id_token()</tt> </tt>
-<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line">  <tt class="py-comment"># method.</tt> </tt>
-<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line"> </tt>
-<a name="L750"></a><tt class="py-lineno"> 750</tt> <a class="py-toggle" href="#" id="SignedJwtAssertionCredentials-toggle" onclick="return toggle('SignedJwtAssertionCredentials');">-</a><tt class="py-line">  <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a><tt class="py-op">(</tt><tt class="py-base-class">AssertionCredentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="SignedJwtAssertionCredentials-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="SignedJwtAssertionCredentials-expanded"><a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">    <tt class="py-docstring">"""Credentials object used for OAuth 2.0 Signed JWT assertion grants.</tt> </tt>
-<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line"><tt class="py-docstring">    This credential does not require a flow to instantiate because it represents</tt> </tt>
-<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line"><tt class="py-docstring">    a two legged flow, and therefore has all of the required information to</tt> </tt>
-<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line"><tt class="py-docstring">    generate and refresh its own access tokens.</tt> </tt>
-<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line"><tt class="py-docstring">    SignedJwtAssertionCredentials requires PyOpenSSL and because of that it does</tt> </tt>
-<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line"><tt class="py-docstring">    not work on App Engine. For App Engine you may consider using</tt> </tt>
-<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line"><tt class="py-docstring">    AppAssertionCredentials.</tt> </tt>
-<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line"> </tt>
-<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">    <tt id="link-101" class="py-name" targets="Variable oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS=oauth2client.client.SignedJwtAssertionCredentials-class.html#MAX_TOKEN_LIFETIME_SECS,Variable oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS=oauth2client.crypt-module.html#MAX_TOKEN_LIFETIME_SECS"><a title="oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS
-oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-101', 'MAX_TOKEN_LIFETIME_SECS', 'link-101');">MAX_TOKEN_LIFETIME_SECS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">3600</tt> <tt class="py-comment"># 1 hour in seconds</tt> </tt>
+oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-95', '__init__', 'link-89');">__init__</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">        <tt class="py-name">token_uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">        <tt class="py-name">user_agent</tt><tt class="py-op">)</tt> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertion_type</tt> <tt class="py-op">=</tt> <tt class="py-name">assertion_type</tt> </tt>
+</div><a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line"> </tt>
+<a name="AssertionCredentials._generate_refresh_request_body"></a><div id="AssertionCredentials._generate_refresh_request_body-def"><a name="L755"></a><tt class="py-lineno"> 755</tt> <a class="py-toggle" href="#" id="AssertionCredentials._generate_refresh_request_body-toggle" onclick="return toggle('AssertionCredentials._generate_refresh_request_body');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AssertionCredentials-class.html#_generate_refresh_request_body">_generate_refresh_request_body</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AssertionCredentials._generate_refresh_request_body-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AssertionCredentials._generate_refresh_request_body-expanded"><a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">    <tt class="py-name">assertion</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method oauth2client.client.AssertionCredentials._generate_assertion()=oauth2client.client.AssertionCredentials-class.html#_generate_assertion,Method oauth2client.client.SignedJwtAssertionCredentials._generate_assertion()=oauth2client.client.SignedJwtAssertionCredentials-class.html#_generate_assertion"><a title="oauth2client.client.AssertionCredentials._generate_assertion
+oauth2client.client.SignedJwtAssertionCredentials._generate_assertion" class="py-name" href="#" onclick="return doclink('link-96', '_generate_assertion', 'link-96');">_generate_assertion</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line"> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">    <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-op">{</tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">        <tt class="py-string">'assertion_type'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertion_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">        <tt class="py-string">'assertion'</tt><tt class="py-op">:</tt> <tt class="py-name">assertion</tt><tt class="py-op">,</tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">        <tt class="py-string">'grant_type'</tt><tt class="py-op">:</tt> <tt class="py-string">'assertion'</tt><tt class="py-op">,</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
 <a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line"> </tt>
-<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-102', 'positional', 'link-46');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="SignedJwtAssertionCredentials.__init__"></a><div id="SignedJwtAssertionCredentials.__init__-def"><a name="L765"></a><tt class="py-lineno"> 765</tt> <a class="py-toggle" href="#" id="SignedJwtAssertionCredentials.__init__-toggle" onclick="return toggle('SignedJwtAssertionCredentials.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
-<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">        <tt class="py-param">service_account_name</tt><tt class="py-op">,</tt> </tt>
-<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">        <tt class="py-param">private_key</tt><tt class="py-op">,</tt> </tt>
-<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">        <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
-<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">        <tt class="py-param">private_key_password</tt><tt class="py-op">=</tt><tt class="py-string">'notasecret'</tt><tt class="py-op">,</tt> </tt>
-<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">        <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line">        <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/token'</tt><tt class="py-op">,</tt> </tt>
-<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">        <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="SignedJwtAssertionCredentials.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++++"></div><div id="SignedJwtAssertionCredentials.__init__-expanded"><a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">      <tt class="py-docstring">"""Constructor for SignedJwtAssertionCredentials.</tt> </tt>
-<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
-<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line"><tt class="py-docstring">        service_account_name: string, id for account, usually an email address.</tt> </tt>
-<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line"><tt class="py-docstring">        private_key: string, private key in P12 format.</tt> </tt>
-<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line"><tt class="py-docstring">        scope: string or list of strings, scope(s) of the credentials being</tt> </tt>
-<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line"><tt class="py-docstring">          requested.</tt> </tt>
-<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line"><tt class="py-docstring">        private_key_password: string, password for private_key.</tt> </tt>
-<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line"><tt class="py-docstring">        user_agent: string, HTTP User-Agent to provide for this application.</tt> </tt>
-<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line"><tt class="py-docstring">        token_uri: string, URI for token endpoint. For convenience</tt> </tt>
-<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line"><tt class="py-docstring">          defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
-<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line"><tt class="py-docstring">        kwargs: kwargs, Additional parameters to add to the JWT token, for</tt> </tt>
-<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line"><tt class="py-docstring">          example prn=joe@xample.org."""</tt> </tt>
-<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line"> </tt>
-<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">      <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-103" class="py-name" targets="Class oauth2client.client.SignedJwtAssertionCredentials=oauth2client.client.SignedJwtAssertionCredentials-class.html"><a title="oauth2client.client.SignedJwtAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-103', 'SignedJwtAssertionCredentials', 'link-103');">SignedJwtAssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="apiclient.errors.BatchError.__init__
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">body</tt> </tt>
+</div><a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line"> </tt>
+<a name="AssertionCredentials._generate_assertion"></a><div id="AssertionCredentials._generate_assertion-def"><a name="L766"></a><tt class="py-lineno"> 766</tt> <a class="py-toggle" href="#" id="AssertionCredentials._generate_assertion-toggle" onclick="return toggle('AssertionCredentials._generate_assertion');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AssertionCredentials-class.html#_generate_assertion">_generate_assertion</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AssertionCredentials._generate_assertion-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AssertionCredentials._generate_assertion-expanded"><a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">    <tt class="py-docstring">"""Generate the assertion string that will be used in the access token</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line"><tt class="py-docstring">    request.</tt> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">    <tt id="link-97" class="py-name"><a title="apiclient.model._abstract
+oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-97', '_abstract', 'link-16');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line"> </tt>
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-98" class="py-name"><a title="oauth2client.client.HAS_CRYPTO" class="py-name" href="#" onclick="return doclink('link-98', 'HAS_CRYPTO', 'link-5');">HAS_CRYPTO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="SignedJwtAssertionCredentials"></a><div id="SignedJwtAssertionCredentials-def"><a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">  <tt class="py-comment"># PyOpenSSL and PyCrypto are not prerequisites for oauth2client, so if it is</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line">  <tt class="py-comment"># missing then don't create the SignedJwtAssertionCredentials or the</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">  <tt class="py-comment"># verify_id_token() method.</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line"> </tt>
+<a name="L777"></a><tt class="py-lineno"> 777</tt> <a class="py-toggle" href="#" id="SignedJwtAssertionCredentials-toggle" onclick="return toggle('SignedJwtAssertionCredentials');">-</a><tt class="py-line">  <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a><tt class="py-op">(</tt><tt class="py-base-class">AssertionCredentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SignedJwtAssertionCredentials-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="SignedJwtAssertionCredentials-expanded"><a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">    <tt class="py-docstring">"""Credentials object used for OAuth 2.0 Signed JWT assertion grants.</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line"><tt class="py-docstring">    This credential does not require a flow to instantiate because it represents</tt> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line"><tt class="py-docstring">    a two legged flow, and therefore has all of the required information to</tt> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line"><tt class="py-docstring">    generate and refresh its own access tokens.</tt> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line"><tt class="py-docstring">    SignedJwtAssertionCredentials requires either PyOpenSSL, or PyCrypto 2.6 or</tt> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line"><tt class="py-docstring">    later. For App Engine you may also consider using AppAssertionCredentials.</tt> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line"> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">    <tt id="link-99" class="py-name" targets="Variable oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS=oauth2client.client.SignedJwtAssertionCredentials-class.html#MAX_TOKEN_LIFETIME_SECS,Variable oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS=oauth2client.crypt-module.html#MAX_TOKEN_LIFETIME_SECS"><a title="oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS
+oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-99', 'MAX_TOKEN_LIFETIME_SECS', 'link-99');">MAX_TOKEN_LIFETIME_SECS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">3600</tt> <tt class="py-comment"># 1 hour in seconds</tt> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line"> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-100', 'positional', 'link-41');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="SignedJwtAssertionCredentials.__init__"></a><div id="SignedJwtAssertionCredentials.__init__-def"><a name="L791"></a><tt class="py-lineno"> 791</tt> <a class="py-toggle" href="#" id="SignedJwtAssertionCredentials.__init__-toggle" onclick="return toggle('SignedJwtAssertionCredentials.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">        <tt class="py-param">service_account_name</tt><tt class="py-op">,</tt> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">        <tt class="py-param">private_key</tt><tt class="py-op">,</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">        <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">        <tt class="py-param">private_key_password</tt><tt class="py-op">=</tt><tt class="py-string">'notasecret'</tt><tt class="py-op">,</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">        <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">        <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/token'</tt><tt class="py-op">,</tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">        <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SignedJwtAssertionCredentials.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++++"></div><div id="SignedJwtAssertionCredentials.__init__-expanded"><a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">      <tt class="py-docstring">"""Constructor for SignedJwtAssertionCredentials.</tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line"><tt class="py-docstring">        service_account_name: string, id for account, usually an email address.</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line"><tt class="py-docstring">        private_key: string, private key in PKCS12 or PEM format.</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line"><tt class="py-docstring">        scope: string or iterable of strings, scope(s) of the credentials being</tt> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line"><tt class="py-docstring">          requested.</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line"><tt class="py-docstring">        private_key_password: string, password for private_key, unused if</tt> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line"><tt class="py-docstring">          private_key is in PEM format.</tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line"><tt class="py-docstring">        user_agent: string, HTTP User-Agent to provide for this application.</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line"><tt class="py-docstring">        token_uri: string, URI for token endpoint. For convenience</tt> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line"><tt class="py-docstring">          defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line"><tt class="py-docstring">        kwargs: kwargs, Additional parameters to add to the JWT token, for</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line"><tt class="py-docstring">          example prn=joe@xample.org."""</tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line"> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">      <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-101" class="py-name" targets="Class oauth2client.client.SignedJwtAssertionCredentials=oauth2client.client.SignedJwtAssertionCredentials-class.html"><a title="oauth2client.client.SignedJwtAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-101', 'SignedJwtAssertionCredentials', 'link-101');">SignedJwtAssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="apiclient.discovery.Resource.__init__
+apiclient.errors.BatchError.__init__
 apiclient.errors.HttpError.__init__
 apiclient.errors.UnexpectedBodyError.__init__
 apiclient.errors.UnexpectedMethodError.__init__
@@ -1105,6 +1141,10 @@
 apiclient.http._StreamSlice.__init__
 apiclient.model.JsonModel.__init__
 apiclient.model.ProtocolBufferModel.__init__
+apiclient.push.Channel.__init__
+apiclient.push.Headers.__init__
+apiclient.push.Subscription.__init__
+apiclient.push.WebhookChannel.__init__
 apiclient.schema.Schemas.__init__
 apiclient.schema._SchemaToStruct.__init__
 oauth2client.appengine.AppAssertionCredentials.__init__
@@ -1117,8 +1157,6 @@
 oauth2client.client.OAuth2Credentials.__init__
 oauth2client.client.OAuth2WebServerFlow.__init__
 oauth2client.client.SignedJwtAssertionCredentials.__init__
-oauth2client.crypt.Signer.__init__
-oauth2client.crypt.Verifier.__init__
 oauth2client.django_orm.CredentialsField.__init__
 oauth2client.django_orm.FlowField.__init__
 oauth2client.django_orm.Storage.__init__
@@ -1128,485 +1166,484 @@
 oauth2client.locked_file.LockedFile.__init__
 oauth2client.locked_file._Opener.__init__
 oauth2client.multistore_file._MultiStore._Storage.__init__
-oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-104', '__init__', 'link-91');">__init__</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">          <tt class="py-string">'http://oauth.net/grant_type/jwt/1.0/bearer'</tt><tt class="py-op">,</tt> </tt>
-<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">          <tt class="py-name">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">user_agent</tt><tt class="py-op">,</tt> </tt>
-<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line">          <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">          <tt class="py-op">)</tt> </tt>
-<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line"> </tt>
-<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">list</tt><tt class="py-op">:</tt> </tt>
-<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">        <tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
-<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-name">scope</tt> </tt>
-<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line"> </tt>
-<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">      <tt class="py-comment"># Keep base64 encoded so it can be stored in JSON.</tt> </tt>
-<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">private_key</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">b64encode</tt><tt class="py-op">(</tt><tt class="py-name">private_key</tt><tt class="py-op">)</tt> </tt>
-<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line"> </tt>
-<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">private_key_password</tt> <tt class="py-op">=</tt> <tt class="py-name">private_key_password</tt> </tt>
-<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">service_account_name</tt> <tt class="py-op">=</tt> <tt class="py-name">service_account_name</tt> </tt>
-<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kwargs</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt> </tt>
-</div><a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line"> </tt>
-<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
-<a name="SignedJwtAssertionCredentials.from_json"></a><div id="SignedJwtAssertionCredentials.from_json-def"><a name="L805"></a><tt class="py-lineno"> 805</tt> <a class="py-toggle" href="#" id="SignedJwtAssertionCredentials.from_json-toggle" onclick="return toggle('SignedJwtAssertionCredentials.from_json');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.SignedJwtAssertionCredentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="SignedJwtAssertionCredentials.from_json-collapsed" style="display:none;" pad="++++" indent="++++++++++"></div><div id="SignedJwtAssertionCredentials.from_json-expanded"><a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">      <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-105', 'loads', 'link-29');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">      <tt class="py-name">retval</tt> <tt class="py-op">=</tt> <tt id="link-106" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-106', 'SignedJwtAssertionCredentials', 'link-103');">SignedJwtAssertionCredentials</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">          <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'service_account_name'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">          <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">b64decode</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'private_key'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line">          <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'scope'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">          <tt class="py-name">private_key_password</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'private_key_password'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line">          <tt class="py-name">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'user_agent'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">          <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">          <tt class="py-op">**</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'kwargs'</tt><tt class="py-op">]</tt> </tt>
-<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">          <tt class="py-op">)</tt> </tt>
-<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line">      <tt class="py-name">retval</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'invalid'</tt><tt class="py-op">]</tt> </tt>
-<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line">      <tt class="py-name">retval</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'access_token'</tt><tt class="py-op">]</tt> </tt>
-<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">retval</tt> </tt>
-</div><a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line"> </tt>
-<a name="SignedJwtAssertionCredentials._generate_assertion"></a><div id="SignedJwtAssertionCredentials._generate_assertion-def"><a name="L820"></a><tt class="py-lineno"> 820</tt> <a class="py-toggle" href="#" id="SignedJwtAssertionCredentials._generate_assertion-toggle" onclick="return toggle('SignedJwtAssertionCredentials._generate_assertion');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.SignedJwtAssertionCredentials-class.html#_generate_assertion">_generate_assertion</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="SignedJwtAssertionCredentials._generate_assertion-collapsed" style="display:none;" pad="++++" indent="++++++++++"></div><div id="SignedJwtAssertionCredentials._generate_assertion-expanded"><a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">      <tt class="py-docstring">"""Generate the assertion that will be used in the request."""</tt> </tt>
-<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">      <tt class="py-name">now</tt> <tt class="py-op">=</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">      <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">          <tt class="py-string">'aud'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">          <tt class="py-string">'scope'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
-<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">          <tt class="py-string">'iat'</tt><tt class="py-op">:</tt> <tt class="py-name">now</tt><tt class="py-op">,</tt> </tt>
-<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">          <tt class="py-string">'exp'</tt><tt class="py-op">:</tt> <tt class="py-name">now</tt> <tt class="py-op">+</tt> <tt id="link-107" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-107', 'SignedJwtAssertionCredentials', 'link-103');">SignedJwtAssertionCredentials</a></tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS
-oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-108', 'MAX_TOKEN_LIFETIME_SECS', 'link-101');">MAX_TOKEN_LIFETIME_SECS</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">          <tt class="py-string">'iss'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">service_account_name</tt> </tt>
-<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">      <tt class="py-op">}</tt> </tt>
-<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">      <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
-<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">      <tt id="link-109" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-102', '__init__', 'link-89');">__init__</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">          <tt class="py-string">'http://oauth.net/grant_type/jwt/1.0/bearer'</tt><tt class="py-op">,</tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line">          <tt class="py-name">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">user_agent</tt><tt class="py-op">,</tt> </tt>
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line">          <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">          <tt class="py-op">)</tt> </tt>
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line"> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt id="link-103" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-103', 'util', 'link-2');">util</a></tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Function oauth2client.util.scopes_to_string()=oauth2client.util-module.html#scopes_to_string"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-104', 'scopes_to_string', 'link-104');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line"> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">      <tt class="py-comment"># Keep base64 encoded so it can be stored in JSON.</tt> </tt>
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">private_key</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">b64encode</tt><tt class="py-op">(</tt><tt class="py-name">private_key</tt><tt class="py-op">)</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line"> </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">private_key_password</tt> <tt class="py-op">=</tt> <tt class="py-name">private_key_password</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">service_account_name</tt> <tt class="py-op">=</tt> <tt class="py-name">service_account_name</tt> </tt>
+<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kwargs</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt> </tt>
+</div><a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line"> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="SignedJwtAssertionCredentials.from_json"></a><div id="SignedJwtAssertionCredentials.from_json-def"><a name="L830"></a><tt class="py-lineno"> 830</tt> <a class="py-toggle" href="#" id="SignedJwtAssertionCredentials.from_json-toggle" onclick="return toggle('SignedJwtAssertionCredentials.from_json');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.SignedJwtAssertionCredentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SignedJwtAssertionCredentials.from_json-collapsed" style="display:none;" pad="++++" indent="++++++++++"></div><div id="SignedJwtAssertionCredentials.from_json-expanded"><a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">      <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-105', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line">      <tt class="py-name">retval</tt> <tt class="py-op">=</tt> <tt id="link-106" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-106', 'SignedJwtAssertionCredentials', 'link-101');">SignedJwtAssertionCredentials</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">          <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'service_account_name'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">          <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">b64decode</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'private_key'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">          <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'scope'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">          <tt class="py-name">private_key_password</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'private_key_password'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">          <tt class="py-name">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'user_agent'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">          <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">          <tt class="py-op">**</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'kwargs'</tt><tt class="py-op">]</tt> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">          <tt class="py-op">)</tt> </tt>
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">      <tt class="py-name">retval</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'invalid'</tt><tt class="py-op">]</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line">      <tt class="py-name">retval</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'access_token'</tt><tt class="py-op">]</tt> </tt>
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">retval</tt> </tt>
+</div><a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line"> </tt>
+<a name="SignedJwtAssertionCredentials._generate_assertion"></a><div id="SignedJwtAssertionCredentials._generate_assertion-def"><a name="L845"></a><tt class="py-lineno"> 845</tt> <a class="py-toggle" href="#" id="SignedJwtAssertionCredentials._generate_assertion-toggle" onclick="return toggle('SignedJwtAssertionCredentials._generate_assertion');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.SignedJwtAssertionCredentials-class.html#_generate_assertion">_generate_assertion</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SignedJwtAssertionCredentials._generate_assertion-collapsed" style="display:none;" pad="++++" indent="++++++++++"></div><div id="SignedJwtAssertionCredentials._generate_assertion-expanded"><a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">      <tt class="py-docstring">"""Generate the assertion that will be used in the request."""</tt> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">      <tt class="py-name">now</tt> <tt class="py-op">=</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">      <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">          <tt class="py-string">'aud'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">          <tt class="py-string">'scope'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">          <tt class="py-string">'iat'</tt><tt class="py-op">:</tt> <tt class="py-name">now</tt><tt class="py-op">,</tt> </tt>
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">          <tt class="py-string">'exp'</tt><tt class="py-op">:</tt> <tt class="py-name">now</tt> <tt class="py-op">+</tt> <tt id="link-107" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-107', 'SignedJwtAssertionCredentials', 'link-101');">SignedJwtAssertionCredentials</a></tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS
+oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-108', 'MAX_TOKEN_LIFETIME_SECS', 'link-99');">MAX_TOKEN_LIFETIME_SECS</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line">          <tt class="py-string">'iss'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">service_account_name</tt> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">      <tt class="py-op">}</tt> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line">      <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line">      <tt id="link-109" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-109', 'logger', 'link-16');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line"> </tt>
-<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">      <tt class="py-name">private_key</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">b64decode</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">private_key</tt><tt class="py-op">)</tt> </tt>
-<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-110" class="py-name"><a title="oauth2client.crypt.make_signed_jwt" class="py-name" href="#" onclick="return doclink('link-110', 'make_signed_jwt', 'link-11');">make_signed_jwt</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">          <tt id="link-111" class="py-name"><a title="oauth2client.crypt.Signer" class="py-name" href="#" onclick="return doclink('link-111', 'Signer', 'link-8');">Signer</a></tt><tt class="py-op">.</tt><tt id="link-112" class="py-name" targets="Static Method oauth2client.crypt.Signer.from_string()=oauth2client.crypt.Signer-class.html#from_string,Static Method oauth2client.crypt.Verifier.from_string()=oauth2client.crypt.Verifier-class.html#from_string"><a title="oauth2client.crypt.Signer.from_string
-oauth2client.crypt.Verifier.from_string" class="py-name" href="#" onclick="return doclink('link-112', 'from_string', 'link-112');">from_string</a></tt><tt class="py-op">(</tt><tt class="py-name">private_key</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">private_key_password</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line"> </tt>
-<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">  <tt class="py-comment"># Only used in verify_id_token(), which is always calling to the same URI</tt> </tt>
-<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">  <tt class="py-comment"># for the certs.</tt> </tt>
-<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">  <tt id="link-113" class="py-name" targets="Variable oauth2client.client._cached_http=oauth2client.client-module.html#_cached_http"><a title="oauth2client.client._cached_http" class="py-name" href="#" onclick="return doclink('link-113', '_cached_http', 'link-113');">_cached_http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt id="link-114" class="py-name" targets="Class oauth2client.client.MemoryCache=oauth2client.client.MemoryCache-class.html"><a title="oauth2client.client.MemoryCache" class="py-name" href="#" onclick="return doclink('link-114', 'MemoryCache', 'link-114');">MemoryCache</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line"> </tt>
-<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-115', 'positional', 'link-46');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="verify_id_token"></a><div id="verify_id_token-def"><a name="L842"></a><tt class="py-lineno"> 842</tt> <a class="py-toggle" href="#" id="verify_id_token-toggle" onclick="return toggle('verify_id_token');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#verify_id_token">verify_id_token</a><tt class="py-op">(</tt><tt class="py-param">id_token</tt><tt class="py-op">,</tt> <tt class="py-param">audience</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">      <tt class="py-param">cert_uri</tt><tt class="py-op">=</tt><tt id="link-116" class="py-name"><a title="oauth2client.client.ID_TOKEN_VERIFICATON_CERTS" class="py-name" href="#" onclick="return doclink('link-116', 'ID_TOKEN_VERIFICATON_CERTS', 'link-18');">ID_TOKEN_VERIFICATON_CERTS</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="verify_id_token-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="verify_id_token-expanded"><a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">    <tt class="py-docstring">"""Verifies a signed JWT id_token.</tt> </tt>
-<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line"><tt class="py-docstring">    This function requires PyOpenSSL and because of that it does not work on</tt> </tt>
-<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line"><tt class="py-docstring">    App Engine. For App Engine you may consider using AppAssertionCredentials.</tt> </tt>
-<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line"><tt class="py-docstring">      id_token: string, A Signed JWT.</tt> </tt>
-<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line"><tt class="py-docstring">      audience: string, The audience 'aud' that the token should be for.</tt> </tt>
-<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, instance to use to make the HTTP request. Callers</tt> </tt>
-<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line"><tt class="py-docstring">        should supply an instance that has caching enabled.</tt> </tt>
-<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line"><tt class="py-docstring">      cert_uri: string, URI of the certificates in JSON format to</tt> </tt>
-<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line"><tt class="py-docstring">        verify the JWT against.</tt> </tt>
-<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-docstring">      The deserialized JSON in the JWT.</tt> </tt>
-<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line"><tt class="py-docstring">      oauth2client.crypt.AppIdentityError if the JWT fails to verify.</tt> </tt>
-<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-117" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-117', 'http', 'link-47');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">      <tt id="link-118" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-118', 'http', 'link-47');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-119" class="py-name"><a title="oauth2client.client._cached_http" class="py-name" href="#" onclick="return doclink('link-119', '_cached_http', 'link-113');">_cached_http</a></tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-109', 'logger', 'link-9');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line">      <tt class="py-name">private_key</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">b64decode</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">private_key</tt><tt class="py-op">)</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-110" class="py-name"><a title="oauth2client.crypt" class="py-name" href="#" onclick="return doclink('link-110', 'crypt', 'link-7');">crypt</a></tt><tt class="py-op">.</tt><tt id="link-111" class="py-name" targets="Function oauth2client.crypt.make_signed_jwt()=oauth2client.crypt-module.html#make_signed_jwt"><a title="oauth2client.crypt.make_signed_jwt" class="py-name" href="#" onclick="return doclink('link-111', 'make_signed_jwt', 'link-111');">make_signed_jwt</a></tt><tt class="py-op">(</tt><tt id="link-112" class="py-name"><a title="oauth2client.crypt" class="py-name" href="#" onclick="return doclink('link-112', 'crypt', 'link-7');">crypt</a></tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Variable oauth2client.crypt.Signer=oauth2client.crypt-module.html#Signer"><a title="oauth2client.crypt.Signer" class="py-name" href="#" onclick="return doclink('link-113', 'Signer', 'link-113');">Signer</a></tt><tt class="py-op">.</tt><tt class="py-name">from_string</tt><tt class="py-op">(</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line">          <tt class="py-name">private_key</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">private_key_password</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line"> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line">  <tt class="py-comment"># Only used in verify_id_token(), which is always calling to the same URI</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line">  <tt class="py-comment"># for the certs.</tt> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">  <tt id="link-114" class="py-name" targets="Variable oauth2client.client._cached_http=oauth2client.client-module.html#_cached_http"><a title="oauth2client.client._cached_http" class="py-name" href="#" onclick="return doclink('link-114', '_cached_http', 'link-114');">_cached_http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt id="link-115" class="py-name" targets="Class oauth2client.client.MemoryCache=oauth2client.client.MemoryCache-class.html"><a title="oauth2client.client.MemoryCache" class="py-name" href="#" onclick="return doclink('link-115', 'MemoryCache', 'link-115');">MemoryCache</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
 <a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line"> </tt>
-<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-120" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-120', 'http', 'link-47');">http</a></tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-121', 'request', 'link-48');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">cert_uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line"> </tt>
-<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt><tt class="py-op">:</tt> </tt>
-<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">      <tt class="py-name">certs</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-122', 'loads', 'link-29');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-123" class="py-name"><a title="oauth2client.crypt.verify_signed_jwt_with_certs" class="py-name" href="#" onclick="return doclink('link-123', 'verify_signed_jwt_with_certs', 'link-14');">verify_signed_jwt_with_certs</a></tt><tt class="py-op">(</tt><tt class="py-name">id_token</tt><tt class="py-op">,</tt> <tt class="py-name">certs</tt><tt class="py-op">,</tt> <tt class="py-name">audience</tt><tt class="py-op">)</tt> </tt>
-<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-124" class="py-name" targets="Class oauth2client.client.VerifyJwtTokenError=oauth2client.client.VerifyJwtTokenError-class.html"><a title="oauth2client.client.VerifyJwtTokenError" class="py-name" href="#" onclick="return doclink('link-124', 'VerifyJwtTokenError', 'link-124');">VerifyJwtTokenError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Status code: %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line"> </tt>
-<a name="_urlsafe_b64decode"></a><div id="_urlsafe_b64decode-def"><a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line"> </tt>
-<a name="L875"></a><tt class="py-lineno"> 875</tt> <a class="py-toggle" href="#" id="_urlsafe_b64decode-toggle" onclick="return toggle('_urlsafe_b64decode');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#_urlsafe_b64decode">_urlsafe_b64decode</a><tt class="py-op">(</tt><tt class="py-param">b64string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_urlsafe_b64decode-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_urlsafe_b64decode-expanded"><a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">  <tt class="py-comment"># Guard against unicode strings, which base64 can't handle.</tt> </tt>
-<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line">  <tt class="py-name">b64string</tt> <tt class="py-op">=</tt> <tt class="py-name">b64string</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'ascii'</tt><tt class="py-op">)</tt> </tt>
-<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line">  <tt class="py-name">padded</tt> <tt class="py-op">=</tt> <tt class="py-name">b64string</tt> <tt class="py-op">+</tt> <tt class="py-string">'='</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt class="py-number">4</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">b64string</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">urlsafe_b64decode</tt><tt class="py-op">(</tt><tt class="py-name">padded</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line"> </tt>
-<a name="_extract_id_token"></a><div id="_extract_id_token-def"><a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"> </tt>
-<a name="L882"></a><tt class="py-lineno"> 882</tt> <a class="py-toggle" href="#" id="_extract_id_token-toggle" onclick="return toggle('_extract_id_token');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#_extract_id_token">_extract_id_token</a><tt class="py-op">(</tt><tt class="py-param">id_token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_extract_id_token-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_extract_id_token-expanded"><a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">  <tt class="py-docstring">"""Extract the JSON payload from a JWT.</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-116', 'positional', 'link-41');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="verify_id_token"></a><div id="verify_id_token-def"><a name="L867"></a><tt class="py-lineno"> 867</tt> <a class="py-toggle" href="#" id="verify_id_token-toggle" onclick="return toggle('verify_id_token');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#verify_id_token">verify_id_token</a><tt class="py-op">(</tt><tt class="py-param">id_token</tt><tt class="py-op">,</tt> <tt class="py-param">audience</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">      <tt class="py-param">cert_uri</tt><tt class="py-op">=</tt><tt id="link-117" class="py-name"><a title="oauth2client.client.ID_TOKEN_VERIFICATON_CERTS" class="py-name" href="#" onclick="return doclink('link-117', 'ID_TOKEN_VERIFICATON_CERTS', 'link-11');">ID_TOKEN_VERIFICATON_CERTS</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="verify_id_token-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="verify_id_token-expanded"><a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">    <tt class="py-docstring">"""Verifies a signed JWT id_token.</tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line"><tt class="py-docstring">    This function requires PyOpenSSL and because of that it does not work on</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line"><tt class="py-docstring">    App Engine.</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line"><tt class="py-docstring">      id_token: string, A Signed JWT.</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line"><tt class="py-docstring">      audience: string, The audience 'aud' that the token should be for.</tt> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, instance to use to make the HTTP request. Callers</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line"><tt class="py-docstring">        should supply an instance that has caching enabled.</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line"><tt class="py-docstring">      cert_uri: string, URI of the certificates in JSON format to</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line"><tt class="py-docstring">        verify the JWT against.</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line"><tt class="py-docstring">      The deserialized JSON in the JWT.</tt> </tt>
 <a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line"><tt class="py-docstring">  Does the extraction w/o checking the signature.</tt> </tt>
-<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line"><tt class="py-docstring">    id_token: string, OAuth 2.0 id_token.</tt> </tt>
-<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line"><tt class="py-docstring">    object, The deserialized JSON payload.</tt> </tt>
-<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">  <tt class="py-name">segments</tt> <tt class="py-op">=</tt> <tt class="py-name">id_token</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line"> </tt>
-<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-125" class="py-name"><a title="oauth2client.client.VerifyJwtTokenError" class="py-name" href="#" onclick="return doclink('link-125', 'VerifyJwtTokenError', 'link-124');">VerifyJwtTokenError</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line">      <tt class="py-string">'Wrong number of segments in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">id_token</tt><tt class="py-op">)</tt> </tt>
-<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line"> </tt>
-<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-126', 'loads', 'link-29');">loads</a></tt><tt class="py-op">(</tt><tt id="link-127" class="py-name" targets="Function oauth2client.client._urlsafe_b64decode()=oauth2client.client-module.html#_urlsafe_b64decode,Function oauth2client.crypt._urlsafe_b64decode()=oauth2client.crypt-module.html#_urlsafe_b64decode"><a title="oauth2client.client._urlsafe_b64decode
-oauth2client.crypt._urlsafe_b64decode" class="py-name" href="#" onclick="return doclink('link-127', '_urlsafe_b64decode', 'link-127');">_urlsafe_b64decode</a></tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line"> </tt>
-<a name="_parse_exchange_token_response"></a><div id="_parse_exchange_token_response-def"><a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line"> </tt>
-<a name="L902"></a><tt class="py-lineno"> 902</tt> <a class="py-toggle" href="#" id="_parse_exchange_token_response-toggle" onclick="return toggle('_parse_exchange_token_response');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#_parse_exchange_token_response">_parse_exchange_token_response</a><tt class="py-op">(</tt><tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_parse_exchange_token_response-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_parse_exchange_token_response-expanded"><a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">  <tt class="py-docstring">"""Parses response of an exchange token request.</tt> </tt>
-<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line"><tt class="py-docstring">  Most providers return JSON but some (e.g. Facebook) return a</tt> </tt>
-<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line"><tt class="py-docstring">  url-encoded string.</tt> </tt>
-<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line"><tt class="py-docstring">    content: The body of a response</tt> </tt>
-<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line"><tt class="py-docstring">    Content as a dictionary object. Note that the dict could be empty,</tt> </tt>
-<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line"><tt class="py-docstring">    i.e. {}. That basically indicates a failure.</tt> </tt>
-<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">  <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">    <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-128', 'loads', 'link-29');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">  <tt class="py-keyword">except</tt> <tt class="py-name">StandardError</tt><tt class="py-op">:</tt> </tt>
-<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">    <tt class="py-comment"># different JSON libs raise different exceptions,</tt> </tt>
-<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">    <tt class="py-comment"># so we just do a catch-all here</tt> </tt>
-<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">    <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line"> </tt>
-<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line">  <tt class="py-comment"># some providers respond with 'expires', others with 'expires_in'</tt> </tt>
-<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'expires'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
-<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'expires_in'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-string">'expires'</tt><tt class="py-op">)</tt> </tt>
-<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line"> </tt>
-<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt> </tt>
-</div><a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line"> </tt>
-<a name="credentials_from_code"></a><div id="credentials_from_code-def"><a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line"> </tt>
-<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-129', 'positional', 'link-46');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="L931"></a><tt class="py-lineno"> 931</tt> <a class="py-toggle" href="#" id="credentials_from_code-toggle" onclick="return toggle('credentials_from_code');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#credentials_from_code">credentials_from_code</a><tt class="py-op">(</tt><tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">client_secret</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-param">code</tt><tt class="py-op">,</tt> </tt>
-<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">    <tt class="py-param">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-string">'postmessage'</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line">    <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/token'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="credentials_from_code-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="credentials_from_code-expanded"><a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line">  <tt class="py-docstring">"""Exchanges an authorization code for an OAuth2Credentials object.</tt> </tt>
-<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"><tt class="py-docstring">    client_id: string, client identifier.</tt> </tt>
-<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line"><tt class="py-docstring">    client_secret: string, client secret.</tt> </tt>
-<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line"><tt class="py-docstring">    scope: string or list of strings, scope(s) to request.</tt> </tt>
-<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line"><tt class="py-docstring">    code: string, An authroization code, most likely passed down from</tt> </tt>
-<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line"><tt class="py-docstring">      the client</tt> </tt>
-<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line"><tt class="py-docstring">    redirect_uri: string, this is generally set to 'postmessage' to match the</tt> </tt>
-<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line"><tt class="py-docstring">      redirect_uri that the client specified</tt> </tt>
-<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line"><tt class="py-docstring">    http: httplib2.Http, optional http instance to use to do the fetch</tt> </tt>
-<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line"><tt class="py-docstring">    token_uri: string, URI for token endpoint. For convenience</tt> </tt>
-<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line"><tt class="py-docstring">      defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
-<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line"><tt class="py-docstring">    An OAuth2Credentials object.</tt> </tt>
-<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line"><tt class="py-docstring">  Raises:</tt> </tt>
-<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line"><tt class="py-docstring">    FlowExchangeError if the authorization code cannot be exchanged for an</tt> </tt>
-<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line"><tt class="py-docstring">     access token</tt> </tt>
-<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line">  <tt class="py-name">flow</tt> <tt class="py-op">=</tt> <tt id="link-130" class="py-name" targets="Class oauth2client.client.OAuth2WebServerFlow=oauth2client.client.OAuth2WebServerFlow-class.html"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-130', 'OAuth2WebServerFlow', 'link-130');">OAuth2WebServerFlow</a></tt><tt class="py-op">(</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> <tt class="py-name">client_secret</tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
-<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">                             <tt class="py-name">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> <tt class="py-name">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">user_agent</tt><tt class="py-op">,</tt> </tt>
-<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">                             <tt class="py-name">auth_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/auth'</tt><tt class="py-op">,</tt> </tt>
-<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">                             <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">token_uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line"> </tt>
-<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">  <tt id="link-131" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-131', 'credentials', 'link-41');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step2_exchange()=oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-132', 'step2_exchange', 'link-132');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt id="link-133" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-133', 'http', 'link-47');">http</a></tt><tt class="py-op">=</tt><tt id="link-134" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-134', 'http', 'link-47');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-135" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-135', 'credentials', 'link-41');">credentials</a></tt> </tt>
-</div><a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line"> </tt>
-<a name="credentials_from_clientsecrets_and_code"></a><div id="credentials_from_clientsecrets_and_code-def"><a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line"> </tt>
-<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-136', 'positional', 'link-46');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="L964"></a><tt class="py-lineno"> 964</tt> <a class="py-toggle" href="#" id="credentials_from_clientsecrets_and_code-toggle" onclick="return toggle('credentials_from_clientsecrets_and_code');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#credentials_from_clientsecrets_and_code">credentials_from_clientsecrets_and_code</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-param">code</tt><tt class="py-op">,</tt> </tt>
-<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">                                            <tt class="py-param">message</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">                                            <tt class="py-param">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-string">'postmessage'</tt><tt class="py-op">,</tt> </tt>
-<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line">                                            <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line">                                            <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="credentials_from_clientsecrets_and_code-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="credentials_from_clientsecrets_and_code-expanded"><a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">  <tt class="py-docstring">"""Returns OAuth2Credentials from a clientsecrets file and an auth code.</tt> </tt>
-<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"><tt class="py-docstring">  Will create the right kind of Flow based on the contents of the clientsecrets</tt> </tt>
-<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"><tt class="py-docstring">  file or will raise InvalidClientSecretsError for unknown types of Flows.</tt> </tt>
-<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line"><tt class="py-docstring">    filename: string, File name of clientsecrets.</tt> </tt>
-<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line"><tt class="py-docstring">    scope: string or list of strings, scope(s) to request.</tt> </tt>
-<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line"><tt class="py-docstring">    code: string, An authorization code, most likely passed down from</tt> </tt>
-<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line"><tt class="py-docstring">      the client</tt> </tt>
-<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line"><tt class="py-docstring">    message: string, A friendly string to display to the user if the</tt> </tt>
-<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line"><tt class="py-docstring">      clientsecrets file is missing or invalid. If message is provided then</tt> </tt>
-<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line"><tt class="py-docstring">      sys.exit will be called in the case of an error. If message in not</tt> </tt>
-<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line"><tt class="py-docstring">      provided then clientsecrets.InvalidClientSecretsError will be raised.</tt> </tt>
-<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line"><tt class="py-docstring">    redirect_uri: string, this is generally set to 'postmessage' to match the</tt> </tt>
-<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line"><tt class="py-docstring">      redirect_uri that the client specified</tt> </tt>
-<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line"><tt class="py-docstring">    http: httplib2.Http, optional http instance to use to do the fetch</tt> </tt>
-<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line"><tt class="py-docstring">    cache: An optional cache service client that implements get() and set()</tt> </tt>
-<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line"><tt class="py-docstring">      methods. See clientsecrets.loadfile() for details.</tt> </tt>
-<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line"><tt class="py-docstring">    An OAuth2Credentials object.</tt> </tt>
-<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line"><tt class="py-docstring">  Raises:</tt> </tt>
-<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line"><tt class="py-docstring">    FlowExchangeError if the authorization code cannot be exchanged for an</tt> </tt>
-<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line"><tt class="py-docstring">     access token</tt> </tt>
-<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line"><tt class="py-docstring">    UnknownClientSecretsFlowError if the file describes an unknown kind of Flow.</tt> </tt>
-<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line"><tt class="py-docstring">    clientsecrets.InvalidClientSecretsError if the clientsecrets file is</tt> </tt>
-<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line"><tt class="py-docstring">      invalid.</tt> </tt>
-<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">  <tt class="py-name">flow</tt> <tt class="py-op">=</tt> <tt id="link-137" class="py-name" targets="Function oauth2client.client.flow_from_clientsecrets()=oauth2client.client-module.html#flow_from_clientsecrets"><a title="oauth2client.client.flow_from_clientsecrets" class="py-name" href="#" onclick="return doclink('link-137', 'flow_from_clientsecrets', 'link-137');">flow_from_clientsecrets</a></tt><tt class="py-op">(</tt><tt id="link-138" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-138', 'filename', 'link-138');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">=</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">,</tt> </tt>
-<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">                                 <tt class="py-name">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">  <tt id="link-139" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-139', 'credentials', 'link-41');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-140', 'step2_exchange', 'link-132');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt id="link-141" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-141', 'http', 'link-47');">http</a></tt><tt class="py-op">=</tt><tt id="link-142" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-142', 'http', 'link-47');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-143" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-143', 'credentials', 'link-41');">credentials</a></tt> </tt>
-</div><a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line"> </tt>
-<a name="OAuth2WebServerFlow"></a><div id="OAuth2WebServerFlow-def"><a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line"> </tt>
-<a name="L1005"></a><tt class="py-lineno">1005</tt> <a class="py-toggle" href="#" id="OAuth2WebServerFlow-toggle" onclick="return toggle('OAuth2WebServerFlow');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.OAuth2WebServerFlow-class.html">OAuth2WebServerFlow</a><tt class="py-op">(</tt><tt class="py-base-class">Flow</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2WebServerFlow-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="OAuth2WebServerFlow-expanded"><a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">  <tt class="py-docstring">"""Does the Web Server Flow for OAuth 2.0.</tt> </tt>
-<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line"><tt class="py-docstring">  OAuth2WebServerFlow objects may be safely pickled and unpickled.</tt> </tt>
-<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line"> </tt>
-<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-144', 'positional', 'link-46');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="OAuth2WebServerFlow.__init__"></a><div id="OAuth2WebServerFlow.__init__-def"><a name="L1012"></a><tt class="py-lineno">1012</tt> <a class="py-toggle" href="#" id="OAuth2WebServerFlow.__init__-toggle" onclick="return toggle('OAuth2WebServerFlow.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2WebServerFlow-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">client_secret</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
-<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">               <tt class="py-param">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">               <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">               <tt class="py-param">auth_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/auth'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">               <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/token'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">               <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2WebServerFlow.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2WebServerFlow.__init__-expanded"><a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for OAuth2WebServerFlow.</tt> </tt>
-<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line"><tt class="py-docstring">    The kwargs argument is used to set extra query parameters on the</tt> </tt>
-<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line"><tt class="py-docstring">    auth_uri. For example, the access_type and approval_prompt</tt> </tt>
-<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line"><tt class="py-docstring">    query parameters can be set via kwargs.</tt> </tt>
-<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line"><tt class="py-docstring">      client_id: string, client identifier.</tt> </tt>
-<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line"><tt class="py-docstring">      client_secret: string client secret.</tt> </tt>
-<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line"><tt class="py-docstring">      scope: string or list of strings, scope(s) of the credentials being</tt> </tt>
-<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"><tt class="py-docstring">        requested.</tt> </tt>
-<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line"><tt class="py-docstring">      redirect_uri: string, Either the string 'urn:ietf:wg:oauth:2.0:oob' for</tt> </tt>
-<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line"><tt class="py-docstring">          a non-web-based application, or a URI that handles the callback from</tt> </tt>
-<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line"><tt class="py-docstring">          the authorization server.</tt> </tt>
-<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line"><tt class="py-docstring">      user_agent: string, HTTP User-Agent to provide for this application.</tt> </tt>
-<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line"><tt class="py-docstring">      auth_uri: string, URI for authorization endpoint. For convenience</tt> </tt>
-<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line"><tt class="py-docstring">        defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
-<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line"><tt class="py-docstring">      token_uri: string, URI for token endpoint. For convenience</tt> </tt>
-<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line"><tt class="py-docstring">        defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
-<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line"><tt class="py-docstring">      **kwargs: dict, The keyword arguments are all optional and required</tt> </tt>
-<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line"><tt class="py-docstring">                        parameters for the OAuth calls.</tt> </tt>
-<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt> <tt class="py-op">=</tt> <tt class="py-name">client_id</tt> </tt>
-<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_secret</tt> <tt class="py-op">=</tt> <tt class="py-name">client_secret</tt> </tt>
-<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">list</tt><tt class="py-op">:</tt> </tt>
-<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">      <tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
-<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-name">scope</tt> </tt>
-<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">redirect_uri</tt> </tt>
-<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
-<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auth_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">auth_uri</tt> </tt>
-<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">token_uri</tt> </tt>
-<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">        <tt class="py-string">'access_type'</tt><tt class="py-op">:</tt> <tt class="py-string">'offline'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">        <tt class="py-string">'response_type'</tt><tt class="py-op">:</tt> <tt class="py-string">'code'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
-<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"> </tt>
-<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-145', 'positional', 'link-46');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="OAuth2WebServerFlow.step1_get_authorize_url"></a><div id="OAuth2WebServerFlow.step1_get_authorize_url-def"><a name="L1056"></a><tt class="py-lineno">1056</tt> <a class="py-toggle" href="#" id="OAuth2WebServerFlow.step1_get_authorize_url-toggle" onclick="return toggle('OAuth2WebServerFlow.step1_get_authorize_url');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url">step1_get_authorize_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2WebServerFlow.step1_get_authorize_url-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2WebServerFlow.step1_get_authorize_url-expanded"><a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns a URI to redirect to the provider.</tt> </tt>
-<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line"><tt class="py-docstring">      redirect_uri: string, Either the string 'urn:ietf:wg:oauth:2.0:oob' for</tt> </tt>
-<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line"><tt class="py-docstring">          a non-web-based application, or a URI that handles the callback from</tt> </tt>
-<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line"><tt class="py-docstring">          the authorization server. This parameter is deprecated, please move to</tt> </tt>
-<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line"><tt class="py-docstring">          passing the redirect_uri in via the constructor.</tt> </tt>
-<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line"><tt class="py-docstring">      A URI as a string to redirect the user to begin the authorization flow.</tt> </tt>
-<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">redirect_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">      <tt id="link-146" class="py-name"><a title="apiclient.discovery.logger
-oauth2client.appengine.logger
-oauth2client.client.logger
-oauth2client.crypt.logger
-oauth2client.gce.logger
-oauth2client.locked_file.logger
-oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-146', 'logger', 'link-16');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'The redirect_uri parameter for'</tt> </tt>
-<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">          <tt class="py-string">'OAuth2WebServerFlow.step1_get_authorize_url is deprecated. Please'</tt> </tt>
-<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">          <tt class="py-string">'move to passing the redirect_uri in via the constructor.'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">redirect_uri</tt> </tt>
-<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line"> </tt>
-<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'The value of redirect_uri must not be None.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line"> </tt>
-<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">    <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">        <tt class="py-string">'client_id'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> </tt>
-<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">        <tt class="py-string">'redirect_uri'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">        <tt class="py-string">'scope'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
-<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
-<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">    <tt class="py-name">query</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
-<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">    <tt class="py-name">parts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auth_uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line">    <tt class="py-name">query</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">parts</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-comment"># 4 is the index of the query part</tt> </tt>
-<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line">    <tt class="py-name">parts</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">query</tt><tt class="py-op">)</tt> </tt>
-<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt><tt class="py-name">parts</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line"> </tt>
-<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-147', 'positional', 'link-46');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="OAuth2WebServerFlow.step2_exchange"></a><div id="OAuth2WebServerFlow.step2_exchange-def"><a name="L1089"></a><tt class="py-lineno">1089</tt> <a class="py-toggle" href="#" id="OAuth2WebServerFlow.step2_exchange-toggle" onclick="return toggle('OAuth2WebServerFlow.step2_exchange');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange">step2_exchange</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">code</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2WebServerFlow.step2_exchange-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2WebServerFlow.step2_exchange-expanded"><a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line">    <tt class="py-docstring">"""Exhanges a code for OAuth2Credentials.</tt> </tt>
-<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line"><tt class="py-docstring">      code: string or dict, either the code as a string, or a dictionary</tt> </tt>
-<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line"><tt class="py-docstring">        of the query parameters to the redirect_uri, which contains</tt> </tt>
-<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line"><tt class="py-docstring">        the code.</tt> </tt>
-<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, optional http instance to use to do the fetch</tt> </tt>
-<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line"><tt class="py-docstring">      An OAuth2Credentials object that can be used to authorize requests.</tt> </tt>
-<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line"><tt class="py-docstring">      FlowExchangeError if a problem occured exchanging the code for a</tt> </tt>
-<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line"><tt class="py-docstring">      refresh_token.</tt> </tt>
-<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line"> </tt>
-<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'code'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">code</tt><tt class="py-op">:</tt> </tt>
-<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'error'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">code</tt><tt class="py-op">:</tt> </tt>
-<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">          <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-name">code</tt><tt class="py-op">[</tt><tt class="py-string">'error'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">          <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-string">'No code was supplied in the query parameters.'</tt> </tt>
-<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-148" class="py-name" targets="Class oauth2client.client.FlowExchangeError=oauth2client.client.FlowExchangeError-class.html"><a title="oauth2client.client.FlowExchangeError" class="py-name" href="#" onclick="return doclink('link-148', 'FlowExchangeError', 'link-148');">FlowExchangeError</a></tt><tt class="py-op">(</tt><tt class="py-name">error_msg</tt><tt class="py-op">)</tt> </tt>
-<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">        <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">code</tt><tt class="py-op">[</tt><tt class="py-string">'code'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line"> </tt>
-<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line">    <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-op">{</tt> </tt>
-<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">        <tt class="py-string">'grant_type'</tt><tt class="py-op">:</tt> <tt class="py-string">'authorization_code'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">        <tt class="py-string">'client_id'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> </tt>
-<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line">        <tt class="py-string">'client_secret'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_secret</tt><tt class="py-op">,</tt> </tt>
-<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">        <tt class="py-string">'code'</tt><tt class="py-op">:</tt> <tt class="py-name">code</tt><tt class="py-op">,</tt> </tt>
-<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">        <tt class="py-string">'redirect_uri'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">        <tt class="py-string">'scope'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
-<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">        <tt class="py-string">'content-type'</tt><tt class="py-op">:</tt> <tt class="py-string">'application/x-www-form-urlencoded'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
-<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line"> </tt>
-<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> </tt>
-<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line"> </tt>
-<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-149" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-149', 'http', 'link-47');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">      <tt id="link-150" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-150', 'http', 'link-47');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line"> </tt>
-<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-151" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-151', 'http', 'link-47');">http</a></tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line"><tt class="py-docstring">      oauth2client.crypt.AppIdentityError if the JWT fails to verify.</tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-118" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-118', 'http', 'link-42');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">      <tt id="link-119" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-119', 'http', 'link-42');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-120" class="py-name"><a title="oauth2client.client._cached_http" class="py-name" href="#" onclick="return doclink('link-120', '_cached_http', 'link-114');">_cached_http</a></tt> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line"> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-121" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-121', 'http', 'link-42');">http</a></tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="apiclient.http.HttpMock.request
 apiclient.http.HttpMockSequence.request
 apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-152', 'request', 'link-48');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> </tt>
-<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">                                 <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">    <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-153" class="py-name" targets="Function oauth2client.client._parse_exchange_token_response()=oauth2client.client-module.html#_parse_exchange_token_response"><a title="oauth2client.client._parse_exchange_token_response" class="py-name" href="#" onclick="return doclink('link-153', '_parse_exchange_token_response', 'link-153');">_parse_exchange_token_response</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'access_token'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
-<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">      <tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'access_token'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">      <tt class="py-name">refresh_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="apiclient.schema.Schemas.get
-oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-154', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'refresh_token'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">      <tt class="py-name">token_expiry</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'expires_in'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
-<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">        <tt class="py-name">token_expiry</tt> <tt class="py-op">=</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">utcnow</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">timedelta</tt><tt class="py-op">(</tt> </tt>
-<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line">            <tt class="py-name">seconds</tt><tt class="py-op">=</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'expires_in'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line"> </tt>
-<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'id_token'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
-<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line">        <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'id_token'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-155" class="py-name" targets="Function oauth2client.client._extract_id_token()=oauth2client.client-module.html#_extract_id_token"><a title="oauth2client.client._extract_id_token" class="py-name" href="#" onclick="return doclink('link-155', '_extract_id_token', 'link-155');">_extract_id_token</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'id_token'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line"> </tt>
-<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line">      <tt id="link-156" class="py-name"><a title="apiclient.discovery.logger
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-122', 'request', 'link-43');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">cert_uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line"> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt><tt class="py-op">:</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">      <tt class="py-name">certs</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-123', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-124" class="py-name"><a title="oauth2client.crypt" class="py-name" href="#" onclick="return doclink('link-124', 'crypt', 'link-7');">crypt</a></tt><tt class="py-op">.</tt><tt id="link-125" class="py-name" targets="Function oauth2client.crypt.verify_signed_jwt_with_certs()=oauth2client.crypt-module.html#verify_signed_jwt_with_certs"><a title="oauth2client.crypt.verify_signed_jwt_with_certs" class="py-name" href="#" onclick="return doclink('link-125', 'verify_signed_jwt_with_certs', 'link-125');">verify_signed_jwt_with_certs</a></tt><tt class="py-op">(</tt><tt class="py-name">id_token</tt><tt class="py-op">,</tt> <tt class="py-name">certs</tt><tt class="py-op">,</tt> <tt class="py-name">audience</tt><tt class="py-op">)</tt> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-126" class="py-name" targets="Class oauth2client.client.VerifyJwtTokenError=oauth2client.client.VerifyJwtTokenError-class.html"><a title="oauth2client.client.VerifyJwtTokenError" class="py-name" href="#" onclick="return doclink('link-126', 'VerifyJwtTokenError', 'link-126');">VerifyJwtTokenError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Status code: %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line"> </tt>
+<a name="_urlsafe_b64decode"></a><div id="_urlsafe_b64decode-def"><a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line"> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt> <a class="py-toggle" href="#" id="_urlsafe_b64decode-toggle" onclick="return toggle('_urlsafe_b64decode');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#_urlsafe_b64decode">_urlsafe_b64decode</a><tt class="py-op">(</tt><tt class="py-param">b64string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_urlsafe_b64decode-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_urlsafe_b64decode-expanded"><a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line">  <tt class="py-comment"># Guard against unicode strings, which base64 can't handle.</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">  <tt class="py-name">b64string</tt> <tt class="py-op">=</tt> <tt class="py-name">b64string</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'ascii'</tt><tt class="py-op">)</tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">  <tt class="py-name">padded</tt> <tt class="py-op">=</tt> <tt class="py-name">b64string</tt> <tt class="py-op">+</tt> <tt class="py-string">'='</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt class="py-number">4</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">b64string</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">urlsafe_b64decode</tt><tt class="py-op">(</tt><tt class="py-name">padded</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line"> </tt>
+<a name="_extract_id_token"></a><div id="_extract_id_token-def"><a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line"> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt> <a class="py-toggle" href="#" id="_extract_id_token-toggle" onclick="return toggle('_extract_id_token');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#_extract_id_token">_extract_id_token</a><tt class="py-op">(</tt><tt class="py-param">id_token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_extract_id_token-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_extract_id_token-expanded"><a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">  <tt class="py-docstring">"""Extract the JSON payload from a JWT.</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line"><tt class="py-docstring">  Does the extraction w/o checking the signature.</tt> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line"><tt class="py-docstring">    id_token: string, OAuth 2.0 id_token.</tt> </tt>
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line"><tt class="py-docstring">    object, The deserialized JSON payload.</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">  <tt class="py-name">segments</tt> <tt class="py-op">=</tt> <tt class="py-name">id_token</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line"> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-127" class="py-name"><a title="oauth2client.client.VerifyJwtTokenError" class="py-name" href="#" onclick="return doclink('link-127', 'VerifyJwtTokenError', 'link-126');">VerifyJwtTokenError</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">      <tt class="py-string">'Wrong number of segments in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">id_token</tt><tt class="py-op">)</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line"> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-128', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt id="link-129" class="py-name" targets="Function oauth2client.client._urlsafe_b64decode()=oauth2client.client-module.html#_urlsafe_b64decode,Function oauth2client.crypt._urlsafe_b64decode()=oauth2client.crypt-module.html#_urlsafe_b64decode"><a title="oauth2client.client._urlsafe_b64decode
+oauth2client.crypt._urlsafe_b64decode" class="py-name" href="#" onclick="return doclink('link-129', '_urlsafe_b64decode', 'link-129');">_urlsafe_b64decode</a></tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line"> </tt>
+<a name="_parse_exchange_token_response"></a><div id="_parse_exchange_token_response-def"><a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line"> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt> <a class="py-toggle" href="#" id="_parse_exchange_token_response-toggle" onclick="return toggle('_parse_exchange_token_response');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#_parse_exchange_token_response">_parse_exchange_token_response</a><tt class="py-op">(</tt><tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_parse_exchange_token_response-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_parse_exchange_token_response-expanded"><a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line">  <tt class="py-docstring">"""Parses response of an exchange token request.</tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line"><tt class="py-docstring">  Most providers return JSON but some (e.g. Facebook) return a</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line"><tt class="py-docstring">  url-encoded string.</tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line"><tt class="py-docstring">    content: The body of a response</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"><tt class="py-docstring">    Content as a dictionary object. Note that the dict could be empty,</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line"><tt class="py-docstring">    i.e. {}. That basically indicates a failure.</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">  <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">    <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-130', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">  <tt class="py-keyword">except</tt> <tt class="py-name">StandardError</tt><tt class="py-op">:</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">    <tt class="py-comment"># different JSON libs raise different exceptions,</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line">    <tt class="py-comment"># so we just do a catch-all here</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">    <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">  <tt class="py-comment"># some providers respond with 'expires', others with 'expires_in'</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'expires'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'expires_in'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-string">'expires'</tt><tt class="py-op">)</tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line"> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt> </tt>
+</div><a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line"> </tt>
+<a name="credentials_from_code"></a><div id="credentials_from_code-def"><a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line"> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-131', 'positional', 'link-41');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L956"></a><tt class="py-lineno"> 956</tt> <a class="py-toggle" href="#" id="credentials_from_code-toggle" onclick="return toggle('credentials_from_code');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#credentials_from_code">credentials_from_code</a><tt class="py-op">(</tt><tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">client_secret</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-param">code</tt><tt class="py-op">,</tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">    <tt class="py-param">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-string">'postmessage'</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">    <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/token'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="credentials_from_code-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="credentials_from_code-expanded"><a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">  <tt class="py-docstring">"""Exchanges an authorization code for an OAuth2Credentials object.</tt> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line"><tt class="py-docstring">    client_id: string, client identifier.</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line"><tt class="py-docstring">    client_secret: string, client secret.</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line"><tt class="py-docstring">    scope: string or iterable of strings, scope(s) to request.</tt> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line"><tt class="py-docstring">    code: string, An authroization code, most likely passed down from</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line"><tt class="py-docstring">      the client</tt> </tt>
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line"><tt class="py-docstring">    redirect_uri: string, this is generally set to 'postmessage' to match the</tt> </tt>
+<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line"><tt class="py-docstring">      redirect_uri that the client specified</tt> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line"><tt class="py-docstring">    http: httplib2.Http, optional http instance to use to do the fetch</tt> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line"><tt class="py-docstring">    token_uri: string, URI for token endpoint. For convenience</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"><tt class="py-docstring">      defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line"><tt class="py-docstring">    An OAuth2Credentials object.</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line"><tt class="py-docstring">  Raises:</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line"><tt class="py-docstring">    FlowExchangeError if the authorization code cannot be exchanged for an</tt> </tt>
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line"><tt class="py-docstring">     access token</tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">  <tt class="py-name">flow</tt> <tt class="py-op">=</tt> <tt id="link-132" class="py-name" targets="Class oauth2client.client.OAuth2WebServerFlow=oauth2client.client.OAuth2WebServerFlow-class.html"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-132', 'OAuth2WebServerFlow', 'link-132');">OAuth2WebServerFlow</a></tt><tt class="py-op">(</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> <tt class="py-name">client_secret</tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">                             <tt class="py-name">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> <tt class="py-name">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">user_agent</tt><tt class="py-op">,</tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">                             <tt class="py-name">auth_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/auth'</tt><tt class="py-op">,</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">                             <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">token_uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line"> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">  <tt id="link-133" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-133', 'credentials', 'link-35');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step2_exchange()=oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-134', 'step2_exchange', 'link-134');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt id="link-135" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-135', 'http', 'link-42');">http</a></tt><tt class="py-op">=</tt><tt id="link-136" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-136', 'http', 'link-42');">http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-137" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-137', 'credentials', 'link-35');">credentials</a></tt> </tt>
+</div><a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line"> </tt>
+<a name="credentials_from_clientsecrets_and_code"></a><div id="credentials_from_clientsecrets_and_code-def"><a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line"> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-138', 'positional', 'link-41');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt> <a class="py-toggle" href="#" id="credentials_from_clientsecrets_and_code-toggle" onclick="return toggle('credentials_from_clientsecrets_and_code');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#credentials_from_clientsecrets_and_code">credentials_from_clientsecrets_and_code</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-param">code</tt><tt class="py-op">,</tt> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">                                            <tt class="py-param">message</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">                                            <tt class="py-param">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-string">'postmessage'</tt><tt class="py-op">,</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">                                            <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">                                            <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="credentials_from_clientsecrets_and_code-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="credentials_from_clientsecrets_and_code-expanded"><a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">  <tt class="py-docstring">"""Returns OAuth2Credentials from a clientsecrets file and an auth code.</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line"><tt class="py-docstring">  Will create the right kind of Flow based on the contents of the clientsecrets</tt> </tt>
+<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line"><tt class="py-docstring">  file or will raise InvalidClientSecretsError for unknown types of Flows.</tt> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line"><tt class="py-docstring">    filename: string, File name of clientsecrets.</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line"><tt class="py-docstring">    scope: string or iterable of strings, scope(s) to request.</tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line"><tt class="py-docstring">    code: string, An authorization code, most likely passed down from</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line"><tt class="py-docstring">      the client</tt> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line"><tt class="py-docstring">    message: string, A friendly string to display to the user if the</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"><tt class="py-docstring">      clientsecrets file is missing or invalid. If message is provided then</tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line"><tt class="py-docstring">      sys.exit will be called in the case of an error. If message in not</tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line"><tt class="py-docstring">      provided then clientsecrets.InvalidClientSecretsError will be raised.</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line"><tt class="py-docstring">    redirect_uri: string, this is generally set to 'postmessage' to match the</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line"><tt class="py-docstring">      redirect_uri that the client specified</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line"><tt class="py-docstring">    http: httplib2.Http, optional http instance to use to do the fetch</tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line"><tt class="py-docstring">    cache: An optional cache service client that implements get() and set()</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line"><tt class="py-docstring">      methods. See clientsecrets.loadfile() for details.</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line"><tt class="py-docstring">    An OAuth2Credentials object.</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line"><tt class="py-docstring">  Raises:</tt> </tt>
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line"><tt class="py-docstring">    FlowExchangeError if the authorization code cannot be exchanged for an</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line"><tt class="py-docstring">     access token</tt> </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line"><tt class="py-docstring">    UnknownClientSecretsFlowError if the file describes an unknown kind of Flow.</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line"><tt class="py-docstring">    clientsecrets.InvalidClientSecretsError if the clientsecrets file is</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line"><tt class="py-docstring">      invalid.</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">  <tt class="py-name">flow</tt> <tt class="py-op">=</tt> <tt id="link-139" class="py-name" targets="Function oauth2client.client.flow_from_clientsecrets()=oauth2client.client-module.html#flow_from_clientsecrets"><a title="oauth2client.client.flow_from_clientsecrets" class="py-name" href="#" onclick="return doclink('link-139', 'flow_from_clientsecrets', 'link-139');">flow_from_clientsecrets</a></tt><tt class="py-op">(</tt><tt id="link-140" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-140', 'filename', 'link-140');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">=</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">,</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">                                 <tt class="py-name">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">  <tt id="link-141" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-141', 'credentials', 'link-35');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-142', 'step2_exchange', 'link-134');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt id="link-143" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-143', 'http', 'link-42');">http</a></tt><tt class="py-op">=</tt><tt id="link-144" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-144', 'http', 'link-42');">http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-145" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-145', 'credentials', 'link-35');">credentials</a></tt> </tt>
+</div><a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"> </tt>
+<a name="OAuth2WebServerFlow"></a><div id="OAuth2WebServerFlow-def"><a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line"> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt> <a class="py-toggle" href="#" id="OAuth2WebServerFlow-toggle" onclick="return toggle('OAuth2WebServerFlow');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.OAuth2WebServerFlow-class.html">OAuth2WebServerFlow</a><tt class="py-op">(</tt><tt class="py-base-class">Flow</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2WebServerFlow-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="OAuth2WebServerFlow-expanded"><a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">  <tt class="py-docstring">"""Does the Web Server Flow for OAuth 2.0.</tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line"><tt class="py-docstring">  OAuth2WebServerFlow objects may be safely pickled and unpickled.</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line"> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-146', 'positional', 'link-41');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="OAuth2WebServerFlow.__init__"></a><div id="OAuth2WebServerFlow.__init__-def"><a name="L1037"></a><tt class="py-lineno">1037</tt> <a class="py-toggle" href="#" id="OAuth2WebServerFlow.__init__-toggle" onclick="return toggle('OAuth2WebServerFlow.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2WebServerFlow-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">client_secret</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">               <tt class="py-param">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">               <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">               <tt class="py-param">auth_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/auth'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">               <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt class="py-string">'https://accounts.google.com/o/oauth2/token'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">               <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2WebServerFlow.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2WebServerFlow.__init__-expanded"><a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for OAuth2WebServerFlow.</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line"><tt class="py-docstring">    The kwargs argument is used to set extra query parameters on the</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line"><tt class="py-docstring">    auth_uri. For example, the access_type and approval_prompt</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line"><tt class="py-docstring">    query parameters can be set via kwargs.</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line"><tt class="py-docstring">      client_id: string, client identifier.</tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"><tt class="py-docstring">      client_secret: string client secret.</tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"><tt class="py-docstring">      scope: string or iterable of strings, scope(s) of the credentials being</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line"><tt class="py-docstring">        requested.</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"><tt class="py-docstring">      redirect_uri: string, Either the string 'urn:ietf:wg:oauth:2.0:oob' for</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line"><tt class="py-docstring">          a non-web-based application, or a URI that handles the callback from</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"><tt class="py-docstring">          the authorization server.</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"><tt class="py-docstring">      user_agent: string, HTTP User-Agent to provide for this application.</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"><tt class="py-docstring">      auth_uri: string, URI for authorization endpoint. For convenience</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line"><tt class="py-docstring">        defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line"><tt class="py-docstring">      token_uri: string, URI for token endpoint. For convenience</tt> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line"><tt class="py-docstring">        defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line"><tt class="py-docstring">      **kwargs: dict, The keyword arguments are all optional and required</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line"><tt class="py-docstring">                        parameters for the OAuth calls.</tt> </tt>
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt> <tt class="py-op">=</tt> <tt class="py-name">client_id</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_secret</tt> <tt class="py-op">=</tt> <tt class="py-name">client_secret</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt id="link-147" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-147', 'util', 'link-2');">util</a></tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-148', 'scopes_to_string', 'link-104');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">redirect_uri</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auth_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">auth_uri</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">token_uri</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">        <tt class="py-string">'access_type'</tt><tt class="py-op">:</tt> <tt class="py-string">'offline'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">        <tt class="py-string">'response_type'</tt><tt class="py-op">:</tt> <tt class="py-string">'code'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line"> </tt>
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-149', 'positional', 'link-41');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="OAuth2WebServerFlow.step1_get_authorize_url"></a><div id="OAuth2WebServerFlow.step1_get_authorize_url-def"><a name="L1079"></a><tt class="py-lineno">1079</tt> <a class="py-toggle" href="#" id="OAuth2WebServerFlow.step1_get_authorize_url-toggle" onclick="return toggle('OAuth2WebServerFlow.step1_get_authorize_url');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url">step1_get_authorize_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2WebServerFlow.step1_get_authorize_url-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2WebServerFlow.step1_get_authorize_url-expanded"><a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns a URI to redirect to the provider.</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line"><tt class="py-docstring">      redirect_uri: string, Either the string 'urn:ietf:wg:oauth:2.0:oob' for</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line"><tt class="py-docstring">          a non-web-based application, or a URI that handles the callback from</tt> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line"><tt class="py-docstring">          the authorization server. This parameter is deprecated, please move to</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"><tt class="py-docstring">          passing the redirect_uri in via the constructor.</tt> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line"><tt class="py-docstring">      A URI as a string to redirect the user to begin the authorization flow.</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">redirect_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">      <tt id="link-150" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-156', 'logger', 'link-16');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Successfully retrieved access token'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-157" class="py-name"><a title="oauth2client.client.OAuth2Credentials" class="py-name" href="#" onclick="return doclink('link-157', 'OAuth2Credentials', 'link-69');">OAuth2Credentials</a></tt><tt class="py-op">(</tt><tt class="py-name">access_token</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> </tt>
-<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line">                               <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_secret</tt><tt class="py-op">,</tt> <tt class="py-name">refresh_token</tt><tt class="py-op">,</tt> <tt class="py-name">token_expiry</tt><tt class="py-op">,</tt> </tt>
-<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line">                               <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt><tt class="py-op">,</tt> </tt>
-<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line">                               <tt class="py-name">id_token</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-150', 'logger', 'link-9');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'The redirect_uri parameter for'</tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">          <tt class="py-string">'OAuth2WebServerFlow.step1_get_authorize_url is deprecated. Please'</tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">          <tt class="py-string">'move to passing the redirect_uri in via the constructor.'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">redirect_uri</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'The value of redirect_uri must not be None.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line"> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">    <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line">        <tt class="py-string">'client_id'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">        <tt class="py-string">'redirect_uri'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">        <tt class="py-string">'scope'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">    <tt class="py-name">query</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">    <tt class="py-name">parts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auth_uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line">    <tt class="py-name">query</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">parts</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-comment"># 4 is the index of the query part</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">    <tt class="py-name">parts</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">query</tt><tt class="py-op">)</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt><tt class="py-name">parts</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line"> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-151', 'positional', 'link-41');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="OAuth2WebServerFlow.step2_exchange"></a><div id="OAuth2WebServerFlow.step2_exchange-def"><a name="L1112"></a><tt class="py-lineno">1112</tt> <a class="py-toggle" href="#" id="OAuth2WebServerFlow.step2_exchange-toggle" onclick="return toggle('OAuth2WebServerFlow.step2_exchange');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange">step2_exchange</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">code</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2WebServerFlow.step2_exchange-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2WebServerFlow.step2_exchange-expanded"><a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">    <tt class="py-docstring">"""Exhanges a code for OAuth2Credentials.</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line"><tt class="py-docstring">      code: string or dict, either the code as a string, or a dictionary</tt> </tt>
+<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line"><tt class="py-docstring">        of the query parameters to the redirect_uri, which contains</tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line"><tt class="py-docstring">        the code.</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, optional http instance to use to do the fetch</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line"><tt class="py-docstring">      An OAuth2Credentials object that can be used to authorize requests.</tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line"><tt class="py-docstring">      FlowExchangeError if a problem occured exchanging the code for a</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line"><tt class="py-docstring">      refresh_token.</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line"> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'code'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">code</tt><tt class="py-op">:</tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'error'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">code</tt><tt class="py-op">:</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">          <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-name">code</tt><tt class="py-op">[</tt><tt class="py-string">'error'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">          <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-string">'No code was supplied in the query parameters.'</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-152" class="py-name" targets="Class oauth2client.client.FlowExchangeError=oauth2client.client.FlowExchangeError-class.html"><a title="oauth2client.client.FlowExchangeError" class="py-name" href="#" onclick="return doclink('link-152', 'FlowExchangeError', 'link-152');">FlowExchangeError</a></tt><tt class="py-op">(</tt><tt class="py-name">error_msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line">        <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">code</tt><tt class="py-op">[</tt><tt class="py-string">'code'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line"> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">    <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-op">{</tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">        <tt class="py-string">'grant_type'</tt><tt class="py-op">:</tt> <tt class="py-string">'authorization_code'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">        <tt class="py-string">'client_id'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">        <tt class="py-string">'client_secret'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_secret</tt><tt class="py-op">,</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line">        <tt class="py-string">'code'</tt><tt class="py-op">:</tt> <tt class="py-name">code</tt><tt class="py-op">,</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line">        <tt class="py-string">'redirect_uri'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">        <tt class="py-string">'scope'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line">        <tt class="py-string">'content-type'</tt><tt class="py-op">:</tt> <tt class="py-string">'application/x-www-form-urlencoded'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line"> </tt>
+<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line"> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-153" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-153', 'http', 'link-42');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">      <tt id="link-154" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-154', 'http', 'link-42');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line"> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-155" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-155', 'http', 'link-42');">http</a></tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-156', 'request', 'link-43');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line">                                 <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">    <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-157" class="py-name" targets="Function oauth2client.client._parse_exchange_token_response()=oauth2client.client-module.html#_parse_exchange_token_response"><a title="oauth2client.client._parse_exchange_token_response" class="py-name" href="#" onclick="return doclink('link-157', '_parse_exchange_token_response', 'link-157');">_parse_exchange_token_response</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'access_token'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line">      <tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'access_token'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line">      <tt class="py-name">refresh_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-158', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'id_token'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">      <tt id="link-159" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-158', 'get', 'link-14');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'refresh_token'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line">      <tt class="py-name">token_expiry</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'expires_in'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line">        <tt class="py-name">token_expiry</tt> <tt class="py-op">=</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">utcnow</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">timedelta</tt><tt class="py-op">(</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">            <tt class="py-name">seconds</tt><tt class="py-op">=</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'expires_in'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line"> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'id_token'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">        <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'id_token'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-159" class="py-name" targets="Function oauth2client.client._extract_id_token()=oauth2client.client-module.html#_extract_id_token"><a title="oauth2client.client._extract_id_token" class="py-name" href="#" onclick="return doclink('link-159', '_extract_id_token', 'link-159');">_extract_id_token</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'id_token'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line"> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">      <tt id="link-160" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-159', 'logger', 'link-16');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Failed to retrieve access token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'error'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
-<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line">        <tt class="py-comment"># you never know what those providers got to say</tt> </tt>
-<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">        <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'error'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">        <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-string">'Invalid response: %s.'</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">)</tt> </tt>
-<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-160" class="py-name"><a title="oauth2client.client.FlowExchangeError" class="py-name" href="#" onclick="return doclink('link-160', 'FlowExchangeError', 'link-148');">FlowExchangeError</a></tt><tt class="py-op">(</tt><tt class="py-name">error_msg</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line"> </tt>
-<a name="flow_from_clientsecrets"></a><div id="flow_from_clientsecrets-def"><a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line"> </tt>
-<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-161', 'positional', 'link-46');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L1164"></a><tt class="py-lineno">1164</tt> <a class="py-toggle" href="#" id="flow_from_clientsecrets-toggle" onclick="return toggle('flow_from_clientsecrets');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#flow_from_clientsecrets">flow_from_clientsecrets</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-param">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="flow_from_clientsecrets-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="flow_from_clientsecrets-expanded"><a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line">  <tt class="py-docstring">"""Create a Flow from a clientsecrets file.</tt> </tt>
-<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line"><tt class="py-docstring">  Will create the right kind of Flow based on the contents of the clientsecrets</tt> </tt>
-<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line"><tt class="py-docstring">  file or will raise InvalidClientSecretsError for unknown types of Flows.</tt> </tt>
-<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line"><tt class="py-docstring">    filename: string, File name of client secrets.</tt> </tt>
-<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line"><tt class="py-docstring">    scope: string or list of strings, scope(s) to request.</tt> </tt>
-<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line"><tt class="py-docstring">    redirect_uri: string, Either the string 'urn:ietf:wg:oauth:2.0:oob' for</tt> </tt>
-<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line"><tt class="py-docstring">        a non-web-based application, or a URI that handles the callback from</tt> </tt>
-<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line"><tt class="py-docstring">        the authorization server.</tt> </tt>
-<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line"><tt class="py-docstring">    message: string, A friendly string to display to the user if the</tt> </tt>
-<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line"><tt class="py-docstring">      clientsecrets file is missing or invalid. If message is provided then</tt> </tt>
-<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line"><tt class="py-docstring">      sys.exit will be called in the case of an error. If message in not</tt> </tt>
-<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line"><tt class="py-docstring">      provided then clientsecrets.InvalidClientSecretsError will be raised.</tt> </tt>
-<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"><tt class="py-docstring">    cache: An optional cache service client that implements get() and set()</tt> </tt>
-<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line"><tt class="py-docstring">      methods. See clientsecrets.loadfile() for details.</tt> </tt>
-<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line"><tt class="py-docstring">    A Flow object.</tt> </tt>
-<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line"><tt class="py-docstring">  Raises:</tt> </tt>
-<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line"><tt class="py-docstring">    UnknownClientSecretsFlowError if the file describes an unknown kind of Flow.</tt> </tt>
-<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line"><tt class="py-docstring">    clientsecrets.InvalidClientSecretsError if the clientsecrets file is</tt> </tt>
-<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line"><tt class="py-docstring">      invalid.</tt> </tt>
-<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line">    <tt class="py-name">client_type</tt><tt class="py-op">,</tt> <tt class="py-name">client_info</tt> <tt class="py-op">=</tt> <tt id="link-162" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-162', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-163" class="py-name" targets="Function oauth2client.clientsecrets.loadfile()=oauth2client.clientsecrets-module.html#loadfile"><a title="oauth2client.clientsecrets.loadfile" class="py-name" href="#" onclick="return doclink('link-163', 'loadfile', 'link-163');">loadfile</a></tt><tt class="py-op">(</tt><tt id="link-164" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-164', 'filename', 'link-138');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> </tt>
-<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">client_type</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt id="link-165" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-165', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-166" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_WEB=oauth2client.clientsecrets-module.html#TYPE_WEB"><a title="oauth2client.clientsecrets.TYPE_WEB" class="py-name" href="#" onclick="return doclink('link-166', 'TYPE_WEB', 'link-166');">TYPE_WEB</a></tt><tt class="py-op">,</tt> <tt id="link-167" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-167', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-168" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_INSTALLED=oauth2client.clientsecrets-module.html#TYPE_INSTALLED"><a title="oauth2client.clientsecrets.TYPE_INSTALLED" class="py-name" href="#" onclick="return doclink('link-168', 'TYPE_INSTALLED', 'link-168');">TYPE_INSTALLED</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-169" class="py-name"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-169', 'OAuth2WebServerFlow', 'link-130');">OAuth2WebServerFlow</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">            <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'client_id'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">            <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'client_secret'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line">            <tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
-<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">            <tt class="py-name">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line">            <tt class="py-name">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">            <tt class="py-name">auth_uri</tt><tt class="py-op">=</tt><tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'auth_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line">            <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'token_uri'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line"> </tt>
-<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line">  <tt class="py-keyword">except</tt> <tt id="link-170" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-170', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-171" class="py-name" targets="Class oauth2client.appengine.InvalidClientSecretsError=oauth2client.appengine.InvalidClientSecretsError-class.html,Class oauth2client.clientsecrets.InvalidClientSecretsError=oauth2client.clientsecrets.InvalidClientSecretsError-class.html"><a title="oauth2client.appengine.InvalidClientSecretsError
-oauth2client.clientsecrets.InvalidClientSecretsError" class="py-name" href="#" onclick="return doclink('link-171', 'InvalidClientSecretsError', 'link-171');">InvalidClientSecretsError</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">message</tt><tt class="py-op">:</tt> </tt>
-<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">      <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
-<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> </tt>
-<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-172" class="py-name" targets="Class oauth2client.client.UnknownClientSecretsFlowError=oauth2client.client.UnknownClientSecretsFlowError-class.html"><a title="oauth2client.client.UnknownClientSecretsFlowError" class="py-name" href="#" onclick="return doclink('link-172', 'UnknownClientSecretsFlowError', 'link-172');">UnknownClientSecretsFlowError</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line">        <tt class="py-string">'This OAuth 2.0 flow is unsupported: "%s"'</tt> <tt class="py-op">*</tt> <tt class="py-name">client_type</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-160', 'logger', 'link-9');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Successfully retrieved access token'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-161" class="py-name"><a title="oauth2client.client.OAuth2Credentials" class="py-name" href="#" onclick="return doclink('link-161', 'OAuth2Credentials', 'link-67');">OAuth2Credentials</a></tt><tt class="py-op">(</tt><tt class="py-name">access_token</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line">                               <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_secret</tt><tt class="py-op">,</tt> <tt class="py-name">refresh_token</tt><tt class="py-op">,</tt> <tt class="py-name">token_expiry</tt><tt class="py-op">,</tt> </tt>
+<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line">                               <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt><tt class="py-op">,</tt> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line">                               <tt class="py-name">id_token</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-162', 'get', 'link-14');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'id_token'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line">      <tt id="link-163" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.appengine.logger
+oauth2client.client.logger
+oauth2client.crypt.logger
+oauth2client.gce.logger
+oauth2client.locked_file.logger
+oauth2client.multistore_file.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-163', 'logger', 'link-9');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Failed to retrieve access token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'error'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">        <tt class="py-comment"># you never know what those providers got to say</tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line">        <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'error'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line">        <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-string">'Invalid response: %s.'</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">)</tt> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-164" class="py-name"><a title="oauth2client.client.FlowExchangeError" class="py-name" href="#" onclick="return doclink('link-164', 'FlowExchangeError', 'link-152');">FlowExchangeError</a></tt><tt class="py-op">(</tt><tt class="py-name">error_msg</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line"> </tt>
+<a name="flow_from_clientsecrets"></a><div id="flow_from_clientsecrets-def"><a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line"> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-165', 'positional', 'link-41');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1187"></a><tt class="py-lineno">1187</tt> <a class="py-toggle" href="#" id="flow_from_clientsecrets-toggle" onclick="return toggle('flow_from_clientsecrets');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#flow_from_clientsecrets">flow_from_clientsecrets</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-param">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="flow_from_clientsecrets-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="flow_from_clientsecrets-expanded"><a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line">  <tt class="py-docstring">"""Create a Flow from a clientsecrets file.</tt> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line"><tt class="py-docstring">  Will create the right kind of Flow based on the contents of the clientsecrets</tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line"><tt class="py-docstring">  file or will raise InvalidClientSecretsError for unknown types of Flows.</tt> </tt>
+<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line"><tt class="py-docstring">    filename: string, File name of client secrets.</tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line"><tt class="py-docstring">    scope: string or iterable of strings, scope(s) to request.</tt> </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line"><tt class="py-docstring">    redirect_uri: string, Either the string 'urn:ietf:wg:oauth:2.0:oob' for</tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line"><tt class="py-docstring">        a non-web-based application, or a URI that handles the callback from</tt> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line"><tt class="py-docstring">        the authorization server.</tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line"><tt class="py-docstring">    message: string, A friendly string to display to the user if the</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line"><tt class="py-docstring">      clientsecrets file is missing or invalid. If message is provided then</tt> </tt>
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line"><tt class="py-docstring">      sys.exit will be called in the case of an error. If message in not</tt> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line"><tt class="py-docstring">      provided then clientsecrets.InvalidClientSecretsError will be raised.</tt> </tt>
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line"><tt class="py-docstring">    cache: An optional cache service client that implements get() and set()</tt> </tt>
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line"><tt class="py-docstring">      methods. See clientsecrets.loadfile() for details.</tt> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line"><tt class="py-docstring">    A Flow object.</tt> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line"><tt class="py-docstring">  Raises:</tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line"><tt class="py-docstring">    UnknownClientSecretsFlowError if the file describes an unknown kind of Flow.</tt> </tt>
+<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line"><tt class="py-docstring">    clientsecrets.InvalidClientSecretsError if the clientsecrets file is</tt> </tt>
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line"><tt class="py-docstring">      invalid.</tt> </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">    <tt class="py-name">client_type</tt><tt class="py-op">,</tt> <tt class="py-name">client_info</tt> <tt class="py-op">=</tt> <tt id="link-166" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-166', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-167" class="py-name" targets="Function oauth2client.clientsecrets.loadfile()=oauth2client.clientsecrets-module.html#loadfile"><a title="oauth2client.clientsecrets.loadfile" class="py-name" href="#" onclick="return doclink('link-167', 'loadfile', 'link-167');">loadfile</a></tt><tt class="py-op">(</tt><tt id="link-168" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-168', 'filename', 'link-140');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">client_type</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt id="link-169" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-169', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-170" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_WEB=oauth2client.clientsecrets-module.html#TYPE_WEB"><a title="oauth2client.clientsecrets.TYPE_WEB" class="py-name" href="#" onclick="return doclink('link-170', 'TYPE_WEB', 'link-170');">TYPE_WEB</a></tt><tt class="py-op">,</tt> <tt id="link-171" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-171', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-172" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_INSTALLED=oauth2client.clientsecrets-module.html#TYPE_INSTALLED"><a title="oauth2client.clientsecrets.TYPE_INSTALLED" class="py-name" href="#" onclick="return doclink('link-172', 'TYPE_INSTALLED', 'link-172');">TYPE_INSTALLED</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-173" class="py-name"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-173', 'OAuth2WebServerFlow', 'link-132');">OAuth2WebServerFlow</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line">            <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'client_id'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line">            <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'client_secret'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line">            <tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line">            <tt class="py-name">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line">            <tt class="py-name">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line">            <tt class="py-name">auth_uri</tt><tt class="py-op">=</tt><tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'auth_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line">            <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'token_uri'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line"> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line">  <tt class="py-keyword">except</tt> <tt id="link-174" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-174', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-175" class="py-name" targets="Class oauth2client.appengine.InvalidClientSecretsError=oauth2client.appengine.InvalidClientSecretsError-class.html,Class oauth2client.clientsecrets.InvalidClientSecretsError=oauth2client.clientsecrets.InvalidClientSecretsError-class.html"><a title="oauth2client.appengine.InvalidClientSecretsError
+oauth2client.clientsecrets.InvalidClientSecretsError" class="py-name" href="#" onclick="return doclink('link-175', 'InvalidClientSecretsError', 'link-175');">InvalidClientSecretsError</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">message</tt><tt class="py-op">:</tt> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line">      <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-176" class="py-name" targets="Class oauth2client.client.UnknownClientSecretsFlowError=oauth2client.client.UnknownClientSecretsFlowError-class.html"><a title="oauth2client.client.UnknownClientSecretsFlowError" class="py-name" href="#" onclick="return doclink('link-176', 'UnknownClientSecretsFlowError', 'link-176');">UnknownClientSecretsFlowError</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line">        <tt class="py-string">'This OAuth 2.0 flow is unsupported: "%s"'</tt> <tt class="py-op">*</tt> <tt class="py-name">client_type</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line"> </tt><script type="text/javascript">
 <!--
 expandto(location.href);
 // -->
@@ -1636,7 +1673,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:49 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.AccessTokenCredentials-class.html b/docs/epy/oauth2client.client.AccessTokenCredentials-class.html
index 166c4a6..f30d1fe 100644
--- a/docs/epy/oauth2client.client.AccessTokenCredentials-class.html
+++ b/docs/epy/oauth2client.client.AccessTokenCredentials-class.html
@@ -56,9 +56,9 @@
 <h1 class="epydoc">Class AccessTokenCredentials</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#AccessTokenCredentials">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_accesstoke" name="class_hierarchy_for_accesstoke">
-<area shape="rect" href="oauth2client.client.AccessTokenCredentials-class.html" title="AccessTokenCredentials" alt="" coords="5,5,168,32"/>
-<area shape="rect" href="oauth2client.client.Credentials-class.html" title="Credentials" alt="" coords="192,5,277,32"/>
-<area shape="rect" href="oauth2client.client.OAuth2Credentials-class.html" title="OAuth2Credentials" alt="" coords="301,5,432,32"/>
+<area shape="rect" id="node1" href="oauth2client.client.AccessTokenCredentials-class.html" title="AccessTokenCredentials" alt="" coords="5,6,173,34"/>
+<area shape="rect" id="node2" href="oauth2client.client.Credentials-class.html" title="Credentials" alt="" coords="197,6,285,34"/>
+<area shape="rect" id="node3" href="oauth2client.client.OAuth2Credentials-class.html" title="OAuth2Credentials" alt="" coords="309,6,440,34"/>
 </map>
   <img src="class_hierarchy_for_accesstoke.gif" alt='' usemap="#class_hierarchy_for_accesstoke" ismap="ismap" class="graph-without-title" />
 </center>
@@ -69,7 +69,7 @@
 
 Credentials can be applied to an httplib2.Http object using the
 authorize() method, which then signs each request from that object
-with the OAuth 2.0 access token.  This set of credentials is for the
+with the OAuth 2.0 access token. This set of credentials is for the
 use case where you have acquired an OAuth 2.0 access_token from
 another place such as a JavaScript client or another web
 application, and wish to use it from Python. Because only the
@@ -429,7 +429,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:14 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:40 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.AccessTokenCredentialsError-class.html b/docs/epy/oauth2client.client.AccessTokenCredentialsError-class.html
index 922733b..1fe9b28 100644
--- a/docs/epy/oauth2client.client.AccessTokenCredentialsError-class.html
+++ b/docs/epy/oauth2client.client.AccessTokenCredentialsError-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class AccessTokenCredentialsError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#AccessTokenCredentialsError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_accesstoke_2" name="class_hierarchy_for_accesstoke_2">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
-<area shape="rect" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="oauth2client.client.AccessTokenCredentialsError-class.html" title="AccessTokenCredentialsError" alt="" coords="205,5,397,32"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<area shape="rect" id="node4" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node3" href="oauth2client.client.AccessTokenCredentialsError-class.html" title="AccessTokenCredentialsError" alt="" coords="205,6,400,34"/>
 </map>
   <img src="class_hierarchy_for_accesstoke_2.gif" alt='' usemap="#class_hierarchy_for_accesstoke_2" ismap="ismap" class="graph-without-title" />
 </center>
@@ -167,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:14 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:41 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.AccessTokenRefreshError-class.html b/docs/epy/oauth2client.client.AccessTokenRefreshError-class.html
index 7e74cb4..8fff0c1 100644
--- a/docs/epy/oauth2client.client.AccessTokenRefreshError-class.html
+++ b/docs/epy/oauth2client.client.AccessTokenRefreshError-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class AccessTokenRefreshError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#AccessTokenRefreshError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_accesstoke_3" name="class_hierarchy_for_accesstoke_3">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
-<area shape="rect" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="oauth2client.client.AccessTokenRefreshError-class.html" title="AccessTokenRefreshError" alt="" coords="205,5,376,32"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<area shape="rect" id="node4" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node3" href="oauth2client.client.AccessTokenRefreshError-class.html" title="AccessTokenRefreshError" alt="" coords="205,6,381,34"/>
 </map>
   <img src="class_hierarchy_for_accesstoke_3.gif" alt='' usemap="#class_hierarchy_for_accesstoke_3" ismap="ismap" class="graph-without-title" />
 </center>
@@ -167,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:14 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:41 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.AssertionCredentials-class.html b/docs/epy/oauth2client.client.AssertionCredentials-class.html
index 66bdb34..f30eef2 100644
--- a/docs/epy/oauth2client.client.AssertionCredentials-class.html
+++ b/docs/epy/oauth2client.client.AssertionCredentials-class.html
@@ -56,9 +56,9 @@
 <h1 class="epydoc">Class AssertionCredentials</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#AssertionCredentials">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_assertionc" name="class_hierarchy_for_assertionc">
-<area shape="rect" href="oauth2client.client.AssertionCredentials-class.html" title="AssertionCredentials" alt="" coords="5,5,147,32"/>
-<area shape="rect" href="oauth2client.client.Credentials-class.html" title="Credentials" alt="" coords="171,5,256,32"/>
-<area shape="rect" href="oauth2client.client.OAuth2Credentials-class.html" title="OAuth2Credentials" alt="" coords="280,5,411,32"/>
+<area shape="rect" id="node1" href="oauth2client.client.AssertionCredentials-class.html" title="AssertionCredentials" alt="" coords="5,6,147,34"/>
+<area shape="rect" id="node2" href="oauth2client.client.Credentials-class.html" title="Credentials" alt="" coords="171,6,259,34"/>
+<area shape="rect" id="node3" href="oauth2client.client.OAuth2Credentials-class.html" title="OAuth2Credentials" alt="" coords="283,6,413,34"/>
 </map>
   <img src="class_hierarchy_for_assertionc.gif" alt='' usemap="#class_hierarchy_for_assertionc" ismap="ismap" class="graph-without-title" />
 </center>
@@ -69,7 +69,7 @@
 
 This credential does not require a flow to instantiate because it
 represents a two legged flow, and therefore has all of the required
-information to generate and refresh its own access tokens.  It must
+information to generate and refresh its own access tokens. It must
 be subclassed to generate the appropriate assertion string.
 
 AssertionCredentials objects may be safely pickled and unpickled.
@@ -374,7 +374,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:14 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:41 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.Credentials-class.html b/docs/epy/oauth2client.client.Credentials-class.html
index 1b36e82..5f11487 100644
--- a/docs/epy/oauth2client.client.Credentials-class.html
+++ b/docs/epy/oauth2client.client.Credentials-class.html
@@ -55,10 +55,10 @@
 <!-- ==================== CLASS DESCRIPTION ==================== -->
 <h1 class="epydoc">Class Credentials</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#Credentials">source&nbsp;code</a></span></p>
 <center>
-<center>  <map id="class_hierarchy_for_credential_3" name="class_hierarchy_for_credential_3">
-<area shape="rect" href="oauth2client.client.Credentials-class.html" title="Credentials" alt="" coords="5,5,91,32"/>
+<center>  <map id="class_hierarchy_for_credential_5" name="class_hierarchy_for_credential_5">
+<area shape="rect" id="node1" href="oauth2client.client.Credentials-class.html" title="Credentials" alt="" coords="5,6,93,34"/>
 </map>
-  <img src="class_hierarchy_for_credential_3.gif" alt='' usemap="#class_hierarchy_for_credential_3" ismap="ismap" class="graph-without-title" />
+  <img src="class_hierarchy_for_credential_5.gif" alt='' usemap="#class_hierarchy_for_credential_5" ismap="ismap" class="graph-without-title" />
 </center>
 </center>
 <hr />
@@ -523,7 +523,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:14 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:41 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.Error-class.html b/docs/epy/oauth2client.client.Error-class.html
index 4601b22..fdeac7f 100644
--- a/docs/epy/oauth2client.client.Error-class.html
+++ b/docs/epy/oauth2client.client.Error-class.html
@@ -56,9 +56,9 @@
 <h1 class="epydoc">Class Error</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#Error">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_error_2" name="class_hierarchy_for_error_2">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
-<area shape="rect" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<area shape="rect" id="node3" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
 </map>
   <img src="class_hierarchy_for_error_2.gif" alt='' usemap="#class_hierarchy_for_error_2" ismap="ismap" class="graph-without-title" />
 </center>
@@ -166,7 +166,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:14 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:41 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.Flow-class.html b/docs/epy/oauth2client.client.Flow-class.html
index 32df8f2..3c08a7f 100644
--- a/docs/epy/oauth2client.client.Flow-class.html
+++ b/docs/epy/oauth2client.client.Flow-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class Flow</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#Flow">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_flow" name="class_hierarchy_for_flow">
-<area shape="rect" href="oauth2client.client.Flow-class.html" title="Flow" alt="" coords="5,5,53,32"/>
+<area shape="rect" id="node1" href="oauth2client.client.Flow-class.html" title="Flow" alt="" coords="5,6,56,34"/>
 </map>
   <img src="class_hierarchy_for_flow.gif" alt='' usemap="#class_hierarchy_for_flow" ismap="ismap" class="graph-without-title" />
 </center>
@@ -152,7 +152,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:14 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:41 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.FlowExchangeError-class.html b/docs/epy/oauth2client.client.FlowExchangeError-class.html
index 733789c..4cca1f2 100644
--- a/docs/epy/oauth2client.client.FlowExchangeError-class.html
+++ b/docs/epy/oauth2client.client.FlowExchangeError-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class FlowExchangeError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#FlowExchangeError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_flowexchan" name="class_hierarchy_for_flowexchan">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
-<area shape="rect" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="oauth2client.client.FlowExchangeError-class.html" title="FlowExchangeError" alt="" coords="205,5,339,32"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<area shape="rect" id="node3" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node4" href="oauth2client.client.FlowExchangeError-class.html" title="FlowExchangeError" alt="" coords="205,6,341,34"/>
 </map>
   <img src="class_hierarchy_for_flowexchan.gif" alt='' usemap="#class_hierarchy_for_flowexchan" ismap="ismap" class="graph-without-title" />
 </center>
@@ -167,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:14 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:42 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.MemoryCache-class.html b/docs/epy/oauth2client.client.MemoryCache-class.html
index 6d3d452..5c809db 100644
--- a/docs/epy/oauth2client.client.MemoryCache-class.html
+++ b/docs/epy/oauth2client.client.MemoryCache-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class MemoryCache</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#MemoryCache">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_memorycach" name="class_hierarchy_for_memorycach">
-<area shape="rect" href="oauth2client.client.MemoryCache-class.html" title="MemoryCache" alt="" coords="5,5,109,32"/>
+<area shape="rect" id="node1" href="oauth2client.client.MemoryCache-class.html" title="MemoryCache" alt="" coords="5,6,112,34"/>
 </map>
   <img src="class_hierarchy_for_memorycach.gif" alt='' usemap="#class_hierarchy_for_memorycach" ismap="ismap" class="graph-without-title" />
 </center>
@@ -91,7 +91,7 @@
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
           <td><span class="summary-sig"><a href="oauth2client.client.MemoryCache-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+      x.__init__(...) initializes x; see help(type(x)) for signature</td>
           <td align="right" valign="top">
             <span class="codelink"><a href="oauth2client.client-pysrc.html#MemoryCache.__init__">source&nbsp;code</a></span>
             
@@ -231,7 +231,7 @@
   </tr></table>
   
   <pre class="literalblock">
-x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+x.__init__(...) initializes x; see help(type(x)) for signature
 
 </pre>
   <dl class="fields">
@@ -266,7 +266,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:14 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:42 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.NonAsciiHeaderError-class.html b/docs/epy/oauth2client.client.NonAsciiHeaderError-class.html
new file mode 100644
index 0000000..e7b2cff
--- /dev/null
+++ b/docs/epy/oauth2client.client.NonAsciiHeaderError-class.html
@@ -0,0 +1,189 @@
+<?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>oauth2client.client.NonAsciiHeaderError</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>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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%">
+      <span class="breadcrumbs">
+        <a href="oauth2client-module.html">Package&nbsp;oauth2client</a> ::
+        <a href="oauth2client.client-module.html">Module&nbsp;client</a> ::
+        Class&nbsp;NonAsciiHeaderError
+      </span>
+    </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="oauth2client.client.NonAsciiHeaderError-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NonAsciiHeaderError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#NonAsciiHeaderError">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_nonasciihe" name="class_hierarchy_for_nonasciihe">
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<area shape="rect" id="node3" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node4" href="oauth2client.client.NonAsciiHeaderError-class.html" title="NonAsciiHeaderError" alt="" coords="205,6,349,34"/>
+</map>
+  <img src="class_hierarchy_for_nonasciihe.gif" alt='' usemap="#class_hierarchy_for_nonasciihe" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<pre class="literalblock">
+Header names and values must be ASCII strings.
+
+</pre>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+      <code>__init__</code>,
+      <code>__new__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__getitem__</code>,
+      <code>__getslice__</code>,
+      <code>__reduce__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__setstate__</code>,
+      <code>__str__</code>,
+      <code>__unicode__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__format__</code>,
+      <code>__hash__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__sizeof__</code>,
+      <code>__subclasshook__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+      <code>args</code>,
+      <code>message</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&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 Thu Jan 24 16:14:42 2013
+    </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>
diff --git a/docs/epy/oauth2client.client.OAuth2Credentials-class.html b/docs/epy/oauth2client.client.OAuth2Credentials-class.html
index eb89f13..cd3bcc1 100644
--- a/docs/epy/oauth2client.client.OAuth2Credentials-class.html
+++ b/docs/epy/oauth2client.client.OAuth2Credentials-class.html
@@ -56,8 +56,8 @@
 <h1 class="epydoc">Class OAuth2Credentials</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#OAuth2Credentials">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_oauth2cred" name="class_hierarchy_for_oauth2cred">
-<area shape="rect" href="oauth2client.client.Credentials-class.html" title="Credentials" alt="" coords="5,5,91,32"/>
-<area shape="rect" href="oauth2client.client.OAuth2Credentials-class.html" title="OAuth2Credentials" alt="" coords="115,5,245,32"/>
+<area shape="rect" id="node1" href="oauth2client.client.Credentials-class.html" title="Credentials" alt="" coords="5,6,93,34"/>
+<area shape="rect" id="node2" href="oauth2client.client.OAuth2Credentials-class.html" title="OAuth2Credentials" alt="" coords="117,6,248,34"/>
 </map>
   <img src="class_hierarchy_for_oauth2cred.gif" alt='' usemap="#class_hierarchy_for_oauth2cred" ismap="ismap" class="graph-without-title" />
 </center>
@@ -756,7 +756,7 @@
 Args:
   store: Storage, an implementation of Stroage object.
     This is needed to store the latest access_token if it
-    has expired and been refreshed.  This implementation uses
+    has expired and been refreshed. This implementation uses
     locking to check for updates before updating the
     access_token.
 
@@ -853,7 +853,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:14 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:42 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.OAuth2WebServerFlow-class.html b/docs/epy/oauth2client.client.OAuth2WebServerFlow-class.html
index 75ab84c..e1d8970 100644
--- a/docs/epy/oauth2client.client.OAuth2WebServerFlow-class.html
+++ b/docs/epy/oauth2client.client.OAuth2WebServerFlow-class.html
@@ -56,8 +56,8 @@
 <h1 class="epydoc">Class OAuth2WebServerFlow</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#OAuth2WebServerFlow">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_oauth2webs" name="class_hierarchy_for_oauth2webs">
-<area shape="rect" href="oauth2client.client.Flow-class.html" title="Flow" alt="" coords="5,5,53,32"/>
-<area shape="rect" href="oauth2client.client.OAuth2WebServerFlow-class.html" title="OAuth2WebServerFlow" alt="" coords="77,5,232,32"/>
+<area shape="rect" id="node1" href="oauth2client.client.Flow-class.html" title="Flow" alt="" coords="5,6,56,34"/>
+<area shape="rect" id="node2" href="oauth2client.client.OAuth2WebServerFlow-class.html" title="OAuth2WebServerFlow" alt="" coords="80,6,237,34"/>
 </map>
   <img src="class_hierarchy_for_oauth2webs.gif" alt='' usemap="#class_hierarchy_for_oauth2webs" ismap="ismap" class="graph-without-title" />
 </center>
@@ -244,7 +244,7 @@
 Args:
   client_id: string, client identifier.
   client_secret: string client secret.
-  scope: string or list of strings, scope(s) of the credentials being
+  scope: string or iterable of strings, scope(s) of the credentials being
     requested.
   redirect_uri: string, Either the string 'urn:ietf:wg:oauth:2.0:oob' for
       a non-web-based application, or a URI that handles the callback from
@@ -370,7 +370,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:14 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:42 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.SignedJwtAssertionCredentials-class.html b/docs/epy/oauth2client.client.SignedJwtAssertionCredentials-class.html
index bedf52d..9834375 100644
--- a/docs/epy/oauth2client.client.SignedJwtAssertionCredentials-class.html
+++ b/docs/epy/oauth2client.client.SignedJwtAssertionCredentials-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class SignedJwtAssertionCredentials</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#SignedJwtAssertionCredentials">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_signedjwta" name="class_hierarchy_for_signedjwta">
-<area shape="rect" href="oauth2client.client.AssertionCredentials-class.html" title="AssertionCredentials" alt="" coords="5,5,147,32"/>
-<area shape="rect" href="oauth2client.client.Credentials-class.html" title="Credentials" alt="" coords="171,5,256,32"/>
-<area shape="rect" href="oauth2client.client.OAuth2Credentials-class.html" title="OAuth2Credentials" alt="" coords="280,5,411,32"/>
-<area shape="rect" href="oauth2client.client.SignedJwtAssertionCredentials-class.html" title="SignedJwtAssertionCredentials" alt="" coords="435,5,635,32"/>
+<area shape="rect" id="node1" href="oauth2client.client.AssertionCredentials-class.html" title="AssertionCredentials" alt="" coords="5,6,147,34"/>
+<area shape="rect" id="node2" href="oauth2client.client.Credentials-class.html" title="Credentials" alt="" coords="171,6,259,34"/>
+<area shape="rect" id="node3" href="oauth2client.client.OAuth2Credentials-class.html" title="OAuth2Credentials" alt="" coords="283,6,413,34"/>
+<area shape="rect" id="node4" href="oauth2client.client.SignedJwtAssertionCredentials-class.html" title="SignedJwtAssertionCredentials" alt="" coords="437,6,640,34"/>
 </map>
   <img src="class_hierarchy_for_signedjwta.gif" alt='' usemap="#class_hierarchy_for_signedjwta" ismap="ismap" class="graph-without-title" />
 </center>
@@ -72,9 +72,8 @@
 a two legged flow, and therefore has all of the required information to
 generate and refresh its own access tokens.
 
-SignedJwtAssertionCredentials requires PyOpenSSL and because of that it does
-not work on App Engine. For App Engine you may consider using
-AppAssertionCredentials.
+SignedJwtAssertionCredentials requires either PyOpenSSL, or PyCrypto 2.6 or
+later. For App Engine you may also consider using AppAssertionCredentials.
 
 </pre>
 
@@ -322,10 +321,11 @@
 
 Args:
   service_account_name: string, id for account, usually an email address.
-  private_key: string, private key in P12 format.
-  scope: string or list of strings, scope(s) of the credentials being
+  private_key: string, private key in PKCS12 or PEM format.
+  scope: string or iterable of strings, scope(s) of the credentials being
     requested.
-  private_key_password: string, password for private_key.
+  private_key_password: string, password for private_key, unused if
+    private_key is in PEM format.
   user_agent: string, HTTP User-Agent to provide for this application.
   token_uri: string, URI for token endpoint. For convenience
     defaults to Google's endpoints but any OAuth 2.0 provider can be used.
@@ -428,7 +428,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:15 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:42 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.Storage-class.html b/docs/epy/oauth2client.client.Storage-class.html
index 9320c68..cf6d8a9 100644
--- a/docs/epy/oauth2client.client.Storage-class.html
+++ b/docs/epy/oauth2client.client.Storage-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class Storage</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#Storage">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_storage" name="class_hierarchy_for_storage">
-<area shape="rect" href="oauth2client.client.Storage-class.html" title="Storage" alt="" coords="5,5,72,32"/>
+<area shape="rect" id="node1" href="oauth2client.client.Storage-class.html" title="Storage" alt="" coords="5,6,72,34"/>
 </map>
   <img src="class_hierarchy_for_storage.gif" alt='' usemap="#class_hierarchy_for_storage" ismap="ismap" class="graph-without-title" />
 </center>
@@ -65,7 +65,7 @@
 <pre class="literalblock">
 Base class for all Storage objects.
 
-Store and retrieve a single credential.  This class supports locking
+Store and retrieve a single credential. This class supports locking
 such that multiple processes and threads can operate on a single
 store.
 
@@ -524,7 +524,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:15 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:42 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.UnknownClientSecretsFlowError-class.html b/docs/epy/oauth2client.client.UnknownClientSecretsFlowError-class.html
index 728e330..84f145c 100644
--- a/docs/epy/oauth2client.client.UnknownClientSecretsFlowError-class.html
+++ b/docs/epy/oauth2client.client.UnknownClientSecretsFlowError-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class UnknownClientSecretsFlowError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#UnknownClientSecretsFlowError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_unknowncli" name="class_hierarchy_for_unknowncli">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
-<area shape="rect" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="oauth2client.client.UnknownClientSecretsFlowError-class.html" title="UnknownClientSecretsFlowError" alt="" coords="205,5,413,32"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<area shape="rect" id="node3" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node4" href="oauth2client.client.UnknownClientSecretsFlowError-class.html" title="UnknownClientSecretsFlowError" alt="" coords="205,6,416,34"/>
 </map>
   <img src="class_hierarchy_for_unknowncli.gif" alt='' usemap="#class_hierarchy_for_unknowncli" ismap="ismap" class="graph-without-title" />
 </center>
@@ -167,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:15 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:43 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.VerifyJwtTokenError-class.html b/docs/epy/oauth2client.client.VerifyJwtTokenError-class.html
index fed71dd..81c630c 100644
--- a/docs/epy/oauth2client.client.VerifyJwtTokenError-class.html
+++ b/docs/epy/oauth2client.client.VerifyJwtTokenError-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class VerifyJwtTokenError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#VerifyJwtTokenError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_verifyjwtt" name="class_hierarchy_for_verifyjwtt">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
-<area shape="rect" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="oauth2client.client.VerifyJwtTokenError-class.html" title="VerifyJwtTokenError" alt="" coords="205,5,341,32"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<area shape="rect" id="node3" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node4" href="oauth2client.client.VerifyJwtTokenError-class.html" title="VerifyJwtTokenError" alt="" coords="205,6,347,34"/>
 </map>
   <img src="class_hierarchy_for_verifyjwtt.gif" alt='' usemap="#class_hierarchy_for_verifyjwtt" ismap="ismap" class="graph-without-title" />
 </center>
@@ -167,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:15 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:43 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.clientsecrets-module.html b/docs/epy/oauth2client.clientsecrets-module.html
index d61172f..ec89c73 100644
--- a/docs/epy/oauth2client.clientsecrets-module.html
+++ b/docs/epy/oauth2client.clientsecrets-module.html
@@ -376,7 +376,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.clientsecrets-pysrc.html b/docs/epy/oauth2client.clientsecrets-pysrc.html
index 127c228..954b0e1 100644
--- a/docs/epy/oauth2client.clientsecrets-pysrc.html
+++ b/docs/epy/oauth2client.clientsecrets-pysrc.html
@@ -246,7 +246,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:49 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.clientsecrets.Error-class.html b/docs/epy/oauth2client.clientsecrets.Error-class.html
index 134e5bc..7784ec0 100644
--- a/docs/epy/oauth2client.clientsecrets.Error-class.html
+++ b/docs/epy/oauth2client.clientsecrets.Error-class.html
@@ -56,9 +56,9 @@
 <h1 class="epydoc">Class Error</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.clientsecrets-pysrc.html#Error">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_error_3" name="class_hierarchy_for_error_3">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
-<area shape="rect" href="oauth2client.clientsecrets.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<area shape="rect" id="node3" href="oauth2client.clientsecrets.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
 </map>
   <img src="class_hierarchy_for_error_3.gif" alt='' usemap="#class_hierarchy_for_error_3" ismap="ismap" class="graph-without-title" />
 </center>
@@ -166,7 +166,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:15 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:43 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.clientsecrets.InvalidClientSecretsError-class.html b/docs/epy/oauth2client.clientsecrets.InvalidClientSecretsError-class.html
index 42a5f12..3b4ce36 100644
--- a/docs/epy/oauth2client.clientsecrets.InvalidClientSecretsError-class.html
+++ b/docs/epy/oauth2client.clientsecrets.InvalidClientSecretsError-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class InvalidClientSecretsError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.clientsecrets-pysrc.html#InvalidClientSecretsError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_invalidcli_2" name="class_hierarchy_for_invalidcli_2">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
-<area shape="rect" href="oauth2client.clientsecrets.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="oauth2client.clientsecrets.InvalidClientSecretsError-class.html" title="InvalidClientSecretsError" alt="" coords="205,5,368,32"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<area shape="rect" id="node3" href="oauth2client.clientsecrets.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node4" href="oauth2client.clientsecrets.InvalidClientSecretsError-class.html" title="InvalidClientSecretsError" alt="" coords="205,6,371,34"/>
 </map>
   <img src="class_hierarchy_for_invalidcli_2.gif" alt='' usemap="#class_hierarchy_for_invalidcli_2" ismap="ismap" class="graph-without-title" />
 </center>
@@ -167,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:15 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:43 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.crypt-module.html b/docs/epy/oauth2client.crypt-module.html
index 1853aa3..a01fb1c 100644
--- a/docs/epy/oauth2client.crypt-module.html
+++ b/docs/epy/oauth2client.crypt-module.html
@@ -77,22 +77,6 @@
         <a href="oauth2client.crypt.AppIdentityError-class.html" class="summary-name">AppIdentityError</a>
     </td>
   </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="oauth2client.crypt.Verifier-class.html" class="summary-name">Verifier</a><br />
-      Verifies the signature on a message.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-        <a href="oauth2client.crypt.Signer-class.html" class="summary-name">Signer</a><br />
-      Signs messages with a private key.
-    </td>
-  </tr>
 </table>
 <!-- ==================== FUNCTIONS ==================== -->
 <a name="section-Functions"></a>
@@ -218,13 +202,6 @@
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
         <a name="CLOCK_SKEW_SECS"></a><span class="summary-name">CLOCK_SKEW_SECS</span> = <code title="300">300</code>
     </td>
   </tr>
@@ -242,6 +219,55 @@
         <a name="MAX_TOKEN_LIFETIME_SECS"></a><span class="summary-name">MAX_TOKEN_LIFETIME_SECS</span> = <code title="86400">86400</code>
     </td>
   </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="OpenSSLVerifier"></a><span class="summary-name">OpenSSLVerifier</span> = <code title="None">None</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="OpenSSLSigner"></a><span class="summary-name">OpenSSLSigner</span> = <code title="None">None</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="PyCryptoVerifier"></a><span class="summary-name">PyCryptoVerifier</span> = <code title="None">None</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="PyCryptoSigner"></a><span class="summary-name">PyCryptoSigner</span> = <code title="None">None</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="Signer"></a><span class="summary-name">Signer</span> = <code title="None">None</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="Verifier"></a><span class="summary-name">Verifier</span> = <code title="None">None</code>
+    </td>
+  </tr>
 </table>
 <!-- ==================== FUNCTION DETAILS ==================== -->
 <a name="section-FunctionDetails"></a>
@@ -355,7 +381,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.crypt-pysrc.html b/docs/epy/oauth2client.crypt-pysrc.html
index ece9bfe..ded2b19 100644
--- a/docs/epy/oauth2client.crypt-pysrc.html
+++ b/docs/epy/oauth2client.crypt-pysrc.html
@@ -75,256 +75,386 @@
 <a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
 <a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">time</tt> </tt>
 <a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"> </tt>
-<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">OpenSSL</tt> <tt class="py-keyword">import</tt> <tt class="py-name">crypto</tt> </tt>
-<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Module oauth2client.anyjson=oauth2client.anyjson-module.html"><a title="oauth2client.anyjson" class="py-name" href="#" onclick="return doclink('link-0', 'anyjson', 'link-0');">anyjson</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Module oauth2client.anyjson=oauth2client.anyjson-module.html"><a title="oauth2client.anyjson" class="py-name" href="#" onclick="return doclink('link-0', 'anyjson', 'link-0');">anyjson</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"> </tt>
 <a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"> </tt>
-<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"> </tt>
-<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable oauth2client.crypt.CLOCK_SKEW_SECS=oauth2client.crypt-module.html#CLOCK_SKEW_SECS"><a title="oauth2client.crypt.CLOCK_SKEW_SECS" class="py-name" href="#" onclick="return doclink('link-1', 'CLOCK_SKEW_SECS', 'link-1');">CLOCK_SKEW_SECS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">300</tt>  <tt class="py-comment"># 5 minutes in seconds</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable oauth2client.crypt.AUTH_TOKEN_LIFETIME_SECS=oauth2client.crypt-module.html#AUTH_TOKEN_LIFETIME_SECS"><a title="oauth2client.crypt.AUTH_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-2', 'AUTH_TOKEN_LIFETIME_SECS', 'link-2');">AUTH_TOKEN_LIFETIME_SECS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">300</tt>  <tt class="py-comment"># 5 minutes in seconds</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS=oauth2client.client.SignedJwtAssertionCredentials-class.html#MAX_TOKEN_LIFETIME_SECS,Variable oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS=oauth2client.crypt-module.html#MAX_TOKEN_LIFETIME_SECS"><a title="oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS
+oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-3', 'MAX_TOKEN_LIFETIME_SECS', 'link-3');">MAX_TOKEN_LIFETIME_SECS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">86400</tt>  <tt class="py-comment"># 1 day in seconds</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-1', 'logger', 'link-1');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
-<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"> </tt>
-<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable oauth2client.crypt.CLOCK_SKEW_SECS=oauth2client.crypt-module.html#CLOCK_SKEW_SECS"><a title="oauth2client.crypt.CLOCK_SKEW_SECS" class="py-name" href="#" onclick="return doclink('link-2', 'CLOCK_SKEW_SECS', 'link-2');">CLOCK_SKEW_SECS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">300</tt>  <tt class="py-comment"># 5 minutes in seconds</tt> </tt>
-<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable oauth2client.crypt.AUTH_TOKEN_LIFETIME_SECS=oauth2client.crypt-module.html#AUTH_TOKEN_LIFETIME_SECS"><a title="oauth2client.crypt.AUTH_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-3', 'AUTH_TOKEN_LIFETIME_SECS', 'link-3');">AUTH_TOKEN_LIFETIME_SECS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">300</tt>  <tt class="py-comment"># 5 minutes in seconds</tt> </tt>
-<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS=oauth2client.client.SignedJwtAssertionCredentials-class.html#MAX_TOKEN_LIFETIME_SECS,Variable oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS=oauth2client.crypt-module.html#MAX_TOKEN_LIFETIME_SECS"><a title="oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS
-oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-4', 'MAX_TOKEN_LIFETIME_SECS', 'link-4');">MAX_TOKEN_LIFETIME_SECS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">86400</tt>  <tt class="py-comment"># 1 day in seconds</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-4', 'logger', 'link-4');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
 <a name="AppIdentityError"></a><div id="AppIdentityError-def"><a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"> </tt>
 <a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"> </tt>
 <a name="L34"></a><tt class="py-lineno"> 34</tt> <a class="py-toggle" href="#" id="AppIdentityError-toggle" onclick="return toggle('AppIdentityError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.crypt.AppIdentityError-class.html">AppIdentityError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
 </div><div id="AppIdentityError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AppIdentityError-expanded"><a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">  <tt class="py-keyword">pass</tt> </tt>
 </div><a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"> </tt>
-<a name="Verifier"></a><div id="Verifier-def"><a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"> </tt>
-<a name="L38"></a><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="Verifier-toggle" onclick="return toggle('Verifier');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.crypt.Verifier-class.html">Verifier</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Verifier-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Verifier-expanded"><a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">  <tt class="py-docstring">"""Verifies the signature on a message."""</tt> </tt>
-<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"> </tt>
-<a name="Verifier.__init__"></a><div id="Verifier.__init__-def"><a name="L41"></a><tt class="py-lineno"> 41</tt> <a class="py-toggle" href="#" id="Verifier.__init__-toggle" onclick="return toggle('Verifier.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.Verifier-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">pubkey</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Verifier.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Verifier.__init__-expanded"><a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor.</tt> </tt>
-<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">      pubkey, OpenSSL.crypto.PKey, The public key to verify with.</tt> </tt>
-<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pubkey</tt> <tt class="py-op">=</tt> <tt class="py-name">pubkey</tt> </tt>
-</div><a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"> </tt>
-<a name="Verifier.verify"></a><div id="Verifier.verify-def"><a name="L49"></a><tt class="py-lineno"> 49</tt> <a class="py-toggle" href="#" id="Verifier.verify-toggle" onclick="return toggle('Verifier.verify');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.Verifier-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">,</tt> <tt class="py-param">signature</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Verifier.verify-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Verifier.verify-expanded"><a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">    <tt class="py-docstring">"""Verifies a message against a signature.</tt> </tt>
-<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">      message: string, The message to verify.</tt> </tt>
-<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">      signature: string, The signature on the message.</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">OpenSSL</tt> <tt class="py-keyword">import</tt> <tt class="py-name">crypto</tt> </tt>
+<a name="OpenSSLVerifier"></a><div id="OpenSSLVerifier-def"><a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <a class="py-toggle" href="#" id="OpenSSLVerifier-toggle" onclick="return toggle('OpenSSLVerifier');">-</a><tt class="py-line">  <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.crypt.OpenSSLVerifier-class.html">OpenSSLVerifier</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OpenSSLVerifier-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OpenSSLVerifier-expanded"><a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">    <tt class="py-docstring">"""Verifies the signature on a message."""</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"> </tt>
+<a name="OpenSSLVerifier.__init__"></a><div id="OpenSSLVerifier.__init__-def"><a name="L45"></a><tt class="py-lineno"> 45</tt> <a class="py-toggle" href="#" id="OpenSSLVerifier.__init__-toggle" onclick="return toggle('OpenSSLVerifier.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.OpenSSLVerifier-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">pubkey</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OpenSSLVerifier.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="OpenSSLVerifier.__init__-expanded"><a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">      <tt class="py-docstring">"""Constructor.</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">        pubkey, OpenSSL.crypto.PKey, The public key to verify with.</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pubkey</tt> <tt class="py-op">=</tt> <tt class="py-name">pubkey</tt> </tt>
+</div><a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"> </tt>
+<a name="OpenSSLVerifier.verify"></a><div id="OpenSSLVerifier.verify-def"><a name="L53"></a><tt class="py-lineno"> 53</tt> <a class="py-toggle" href="#" id="OpenSSLVerifier.verify-toggle" onclick="return toggle('OpenSSLVerifier.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.OpenSSLVerifier-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">,</tt> <tt class="py-param">signature</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OpenSSLVerifier.verify-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="OpenSSLVerifier.verify-expanded"><a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">      <tt class="py-docstring">"""Verifies a message against a signature.</tt> </tt>
 <a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">      True if message was singed by the private key associated with the public</tt> </tt>
-<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">      key that this object was constructed with.</tt> </tt>
-<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">      <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Method oauth2client.crypt.Verifier.verify()=oauth2client.crypt.Verifier-class.html#verify"><a title="oauth2client.crypt.Verifier.verify" class="py-name" href="#" onclick="return doclink('link-5', 'verify', 'link-5');">verify</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pubkey</tt><tt class="py-op">,</tt> <tt class="py-name">signature</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">'sha256'</tt><tt class="py-op">)</tt> </tt>
-<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
-<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
-<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
-</div><a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"> </tt>
-<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
-<a name="Verifier.from_string"></a><div id="Verifier.from_string-def"><a name="L67"></a><tt class="py-lineno"> 67</tt> <a class="py-toggle" href="#" id="Verifier.from_string-toggle" onclick="return toggle('Verifier.from_string');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.Verifier-class.html#from_string">from_string</a><tt class="py-op">(</tt><tt class="py-param">key_pem</tt><tt class="py-op">,</tt> <tt class="py-param">is_x509_cert</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Verifier.from_string-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Verifier.from_string-expanded"><a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">    <tt class="py-docstring">"""Construct a Verified instance from a string.</tt> </tt>
-<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring">      key_pem: string, public key in PEM format.</tt> </tt>
-<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">      is_x509_cert: bool, True if key_pem is an X509 cert, otherwise it is</tt> </tt>
-<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">        expected to be an RSA key in PEM format.</tt> </tt>
-<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">      Verifier instance.</tt> </tt>
-<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring">      OpenSSL.crypto.Error if the key_pem can't be parsed.</tt> </tt>
-<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">is_x509_cert</tt><tt class="py-op">:</tt> </tt>
-<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">      <tt class="py-name">pubkey</tt> <tt class="py-op">=</tt> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">load_certificate</tt><tt class="py-op">(</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">FILETYPE_PEM</tt><tt class="py-op">,</tt> <tt class="py-name">key_pem</tt><tt class="py-op">)</tt> </tt>
-<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">      <tt class="py-name">pubkey</tt> <tt class="py-op">=</tt> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">load_privatekey</tt><tt class="py-op">(</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">FILETYPE_PEM</tt><tt class="py-op">,</tt> <tt class="py-name">key_pem</tt><tt class="py-op">)</tt> </tt>
-<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-6" class="py-name" targets="Class oauth2client.crypt.Verifier=oauth2client.crypt.Verifier-class.html"><a title="oauth2client.crypt.Verifier" class="py-name" href="#" onclick="return doclink('link-6', 'Verifier', 'link-6');">Verifier</a></tt><tt class="py-op">(</tt><tt class="py-name">pubkey</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"> </tt>
-<a name="Signer"></a><div id="Signer-def"><a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"> </tt>
-<a name="L88"></a><tt class="py-lineno"> 88</tt> <a class="py-toggle" href="#" id="Signer-toggle" onclick="return toggle('Signer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.crypt.Signer-class.html">Signer</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Signer-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Signer-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">  <tt class="py-docstring">"""Signs messages with a private key."""</tt> </tt>
-<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"> </tt>
-<a name="Signer.__init__"></a><div id="Signer.__init__-def"><a name="L91"></a><tt class="py-lineno"> 91</tt> <a class="py-toggle" href="#" id="Signer.__init__-toggle" onclick="return toggle('Signer.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.Signer-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">pkey</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Signer.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Signer.__init__-expanded"><a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor.</tt> </tt>
-<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">      pkey, OpenSSL.crypto.PKey, The private key to sign with.</tt> </tt>
-<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt> <tt class="py-op">=</tt> <tt class="py-name">pkey</tt> </tt>
-</div><a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"> </tt>
-<a name="Signer.sign"></a><div id="Signer.sign-def"><a name="L99"></a><tt class="py-lineno"> 99</tt> <a class="py-toggle" href="#" id="Signer.sign-toggle" onclick="return toggle('Signer.sign');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.Signer-class.html#sign">sign</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Signer.sign-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Signer.sign-expanded"><a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">    <tt class="py-docstring">"""Signs a message.</tt> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">      message: string, Message to be signed.</tt> </tt>
-<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring">      string, The signature of the message for the given key.</tt> </tt>
-<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Method oauth2client.crypt.Signer.sign()=oauth2client.crypt.Signer-class.html#sign"><a title="oauth2client.crypt.Signer.sign" class="py-name" href="#" onclick="return doclink('link-7', 'sign', 'link-7');">sign</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">'sha256'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"> </tt>
-<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
-<a name="Signer.from_string"></a><div id="Signer.from_string-def"><a name="L111"></a><tt class="py-lineno">111</tt> <a class="py-toggle" href="#" id="Signer.from_string-toggle" onclick="return toggle('Signer.from_string');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.Signer-class.html#from_string">from_string</a><tt class="py-op">(</tt><tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">=</tt><tt class="py-string">'notasecret'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Signer.from_string-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Signer.from_string-expanded"><a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">    <tt class="py-docstring">"""Construct a Signer instance from a string.</tt> </tt>
-<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-docstring">      key: string, private key in P12 format.</tt> </tt>
-<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-docstring">      password: string, password for the private key file.</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">        message: string, The message to verify.</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">        signature: string, The signature on the message.</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">      Returns:</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">        True if message was signed by the private key associated with the public</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">        key that this object was constructed with.</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Method apiclient.push.Subscription.verify()=apiclient.push.Subscription-class.html#verify"><a title="apiclient.push.Subscription.verify" class="py-name" href="#" onclick="return doclink('link-5', 'verify', 'link-5');">verify</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pubkey</tt><tt class="py-op">,</tt> <tt class="py-name">signature</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">'sha256'</tt><tt class="py-op">)</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
+<a name="OpenSSLVerifier.from_string"></a><div id="OpenSSLVerifier.from_string-def"><a name="L71"></a><tt class="py-lineno"> 71</tt> <a class="py-toggle" href="#" id="OpenSSLVerifier.from_string-toggle" onclick="return toggle('OpenSSLVerifier.from_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.OpenSSLVerifier-class.html#from_string">from_string</a><tt class="py-op">(</tt><tt class="py-param">key_pem</tt><tt class="py-op">,</tt> <tt class="py-param">is_x509_cert</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OpenSSLVerifier.from_string-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="OpenSSLVerifier.from_string-expanded"><a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">      <tt class="py-docstring">"""Construct a Verified instance from a string.</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">        key_pem: string, public key in PEM format.</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">        is_x509_cert: bool, True if key_pem is an X509 cert, otherwise it is</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">          expected to be an RSA key in PEM format.</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring">      Returns:</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">        Verifier instance.</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">      Raises:</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">        OpenSSL.crypto.Error if the key_pem can't be parsed.</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">is_x509_cert</tt><tt class="py-op">:</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">        <tt class="py-name">pubkey</tt> <tt class="py-op">=</tt> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">load_certificate</tt><tt class="py-op">(</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">FILETYPE_PEM</tt><tt class="py-op">,</tt> <tt class="py-name">key_pem</tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt class="py-name">pubkey</tt> <tt class="py-op">=</tt> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">load_privatekey</tt><tt class="py-op">(</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">FILETYPE_PEM</tt><tt class="py-op">,</tt> <tt class="py-name">key_pem</tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-6" class="py-name" targets="Variable oauth2client.crypt.OpenSSLVerifier=oauth2client.crypt-module.html#OpenSSLVerifier"><a title="oauth2client.crypt.OpenSSLVerifier" class="py-name" href="#" onclick="return doclink('link-6', 'OpenSSLVerifier', 'link-6');">OpenSSLVerifier</a></tt><tt class="py-op">(</tt><tt class="py-name">pubkey</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"> </tt>
+<a name="OpenSSLSigner"></a><div id="OpenSSLSigner-def"><a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <a class="py-toggle" href="#" id="OpenSSLSigner-toggle" onclick="return toggle('OpenSSLSigner');">-</a><tt class="py-line">  <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.crypt.OpenSSLSigner-class.html">OpenSSLSigner</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OpenSSLSigner-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OpenSSLSigner-expanded"><a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">    <tt class="py-docstring">"""Signs messages with a private key."""</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"> </tt>
+<a name="OpenSSLSigner.__init__"></a><div id="OpenSSLSigner.__init__-def"><a name="L95"></a><tt class="py-lineno"> 95</tt> <a class="py-toggle" href="#" id="OpenSSLSigner.__init__-toggle" onclick="return toggle('OpenSSLSigner.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.OpenSSLSigner-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">pkey</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OpenSSLSigner.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="OpenSSLSigner.__init__-expanded"><a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">      <tt class="py-docstring">"""Constructor.</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">        pkey, OpenSSL.crypto.PKey (or equiv), The private key to sign with.</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt> <tt class="py-op">=</tt> <tt class="py-name">pkey</tt> </tt>
+</div><a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"> </tt>
+<a name="OpenSSLSigner.sign"></a><div id="OpenSSLSigner.sign-def"><a name="L103"></a><tt class="py-lineno">103</tt> <a class="py-toggle" href="#" id="OpenSSLSigner.sign-toggle" onclick="return toggle('OpenSSLSigner.sign');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.OpenSSLSigner-class.html#sign">sign</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OpenSSLSigner.sign-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="OpenSSLSigner.sign-expanded"><a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">      <tt class="py-docstring">"""Signs a message.</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-docstring">        message: string, Message to be signed.</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-docstring">      Returns:</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-docstring">        string, The signature of the message for the given key.</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">sign</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">'sha256'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
+<a name="OpenSSLSigner.from_string"></a><div id="OpenSSLSigner.from_string-def"><a name="L115"></a><tt class="py-lineno">115</tt> <a class="py-toggle" href="#" id="OpenSSLSigner.from_string-toggle" onclick="return toggle('OpenSSLSigner.from_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.OpenSSLSigner-class.html#from_string">from_string</a><tt class="py-op">(</tt><tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">=</tt><tt class="py-string">'notasecret'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OpenSSLSigner.from_string-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="OpenSSLSigner.from_string-expanded"><a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">      <tt class="py-docstring">"""Construct a Signer instance from a string.</tt> </tt>
 <a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">      Signer instance.</tt> </tt>
-<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring">      OpenSSL.crypto.Error if the key can't be parsed.</tt> </tt>
-<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">    <tt class="py-name">pkey</tt> <tt class="py-op">=</tt> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">load_pkcs12</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">get_privatekey</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-8" class="py-name" targets="Class oauth2client.crypt.Signer=oauth2client.crypt.Signer-class.html"><a title="oauth2client.crypt.Signer" class="py-name" href="#" onclick="return doclink('link-8', 'Signer', 'link-8');">Signer</a></tt><tt class="py-op">(</tt><tt class="py-name">pkey</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"> </tt>
-<a name="_urlsafe_b64encode"></a><div id="_urlsafe_b64encode-def"><a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"> </tt>
-<a name="L128"></a><tt class="py-lineno">128</tt> <a class="py-toggle" href="#" id="_urlsafe_b64encode-toggle" onclick="return toggle('_urlsafe_b64encode');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt-module.html#_urlsafe_b64encode">_urlsafe_b64encode</a><tt class="py-op">(</tt><tt class="py-param">raw_bytes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_urlsafe_b64encode-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_urlsafe_b64encode-expanded"><a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">urlsafe_b64encode</tt><tt class="py-op">(</tt><tt class="py-name">raw_bytes</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-string">'='</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"> </tt>
-<a name="_urlsafe_b64decode"></a><div id="_urlsafe_b64decode-def"><a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"> </tt>
-<a name="L132"></a><tt class="py-lineno">132</tt> <a class="py-toggle" href="#" id="_urlsafe_b64decode-toggle" onclick="return toggle('_urlsafe_b64decode');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt-module.html#_urlsafe_b64decode">_urlsafe_b64decode</a><tt class="py-op">(</tt><tt class="py-param">b64string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_urlsafe_b64decode-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_urlsafe_b64decode-expanded"><a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">  <tt class="py-comment"># Guard against unicode strings, which base64 can't handle.</tt> </tt>
-<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">  <tt class="py-name">b64string</tt> <tt class="py-op">=</tt> <tt class="py-name">b64string</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'ascii'</tt><tt class="py-op">)</tt> </tt>
-<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">  <tt class="py-name">padded</tt> <tt class="py-op">=</tt> <tt class="py-name">b64string</tt> <tt class="py-op">+</tt> <tt class="py-string">'='</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt class="py-number">4</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">b64string</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">urlsafe_b64decode</tt><tt class="py-op">(</tt><tt class="py-name">padded</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"> </tt>
-<a name="_json_encode"></a><div id="_json_encode-def"><a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"> </tt>
-<a name="L139"></a><tt class="py-lineno">139</tt> <a class="py-toggle" href="#" id="_json_encode-toggle" onclick="return toggle('_json_encode');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt-module.html#_json_encode">_json_encode</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_json_encode-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_json_encode-expanded"><a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">separators</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">,</tt> <tt class="py-string">':'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"> </tt>
-<a name="make_signed_jwt"></a><div id="make_signed_jwt-def"><a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"> </tt>
-<a name="L143"></a><tt class="py-lineno">143</tt> <a class="py-toggle" href="#" id="make_signed_jwt-toggle" onclick="return toggle('make_signed_jwt');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt-module.html#make_signed_jwt">make_signed_jwt</a><tt class="py-op">(</tt><tt class="py-param">signer</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="make_signed_jwt-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="make_signed_jwt-expanded"><a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">  <tt class="py-docstring">"""Make a signed JWT.</tt> </tt>
-<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-docstring">  See http://self-issued.info/docs/draft-jones-json-web-token.html.</tt> </tt>
-<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-docstring">    signer: crypt.Signer, Cryptographic signer.</tt> </tt>
-<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring">    payload: dict, Dictionary of data to convert to JSON and then sign.</tt> </tt>
-<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-docstring">    string, The JWT for the payload.</tt> </tt>
-<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">  <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'typ'</tt><tt class="py-op">:</tt> <tt class="py-string">'JWT'</tt><tt class="py-op">,</tt> <tt class="py-string">'alg'</tt><tt class="py-op">:</tt> <tt class="py-string">'RS256'</tt><tt class="py-op">}</tt> </tt>
-<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"> </tt>
-<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">  <tt class="py-name">segments</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
-<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">          <tt id="link-9" class="py-name" targets="Function oauth2client.crypt._urlsafe_b64encode()=oauth2client.crypt-module.html#_urlsafe_b64encode"><a title="oauth2client.crypt._urlsafe_b64encode" class="py-name" href="#" onclick="return doclink('link-9', '_urlsafe_b64encode', 'link-9');">_urlsafe_b64encode</a></tt><tt class="py-op">(</tt><tt id="link-10" class="py-name" targets="Function oauth2client.crypt._json_encode()=oauth2client.crypt-module.html#_json_encode"><a title="oauth2client.crypt._json_encode" class="py-name" href="#" onclick="return doclink('link-10', '_json_encode', 'link-10');">_json_encode</a></tt><tt class="py-op">(</tt><tt class="py-name">header</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">          <tt id="link-11" class="py-name"><a title="oauth2client.crypt._urlsafe_b64encode" class="py-name" href="#" onclick="return doclink('link-11', '_urlsafe_b64encode', 'link-9');">_urlsafe_b64encode</a></tt><tt class="py-op">(</tt><tt id="link-12" class="py-name"><a title="oauth2client.crypt._json_encode" class="py-name" href="#" onclick="return doclink('link-12', '_json_encode', 'link-10');">_json_encode</a></tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">  <tt class="py-op">]</tt> </tt>
-<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">  <tt class="py-name">signing_input</tt> <tt class="py-op">=</tt> <tt class="py-string">'.'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt> </tt>
-<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"> </tt>
-<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">  <tt class="py-name">signature</tt> <tt class="py-op">=</tt> <tt class="py-name">signer</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="oauth2client.crypt.Signer.sign" class="py-name" href="#" onclick="return doclink('link-13', 'sign', 'link-7');">sign</a></tt><tt class="py-op">(</tt><tt class="py-name">signing_input</tt><tt class="py-op">)</tt> </tt>
-<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">  <tt class="py-name">segments</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-14" class="py-name"><a title="oauth2client.crypt._urlsafe_b64encode" class="py-name" href="#" onclick="return doclink('link-14', '_urlsafe_b64encode', 'link-9');">_urlsafe_b64encode</a></tt><tt class="py-op">(</tt><tt class="py-name">signature</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"> </tt>
-<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">  <tt id="link-15" class="py-name"><a title="apiclient.discovery.logger
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">        key: string, private key in PKCS12 or PEM format.</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring">        password: string, password for the private key file.</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring">      Returns:</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring">        Signer instance.</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-docstring">      Raises:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-docstring">        OpenSSL.crypto.Error if the key can't be parsed.</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'-----BEGIN '</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">        <tt class="py-name">pkey</tt> <tt class="py-op">=</tt> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">load_privatekey</tt><tt class="py-op">(</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">FILETYPE_PEM</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">        <tt class="py-name">pkey</tt> <tt class="py-op">=</tt> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">load_pkcs12</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">get_privatekey</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-7" class="py-name" targets="Variable oauth2client.crypt.OpenSSLSigner=oauth2client.crypt-module.html#OpenSSLSigner"><a title="oauth2client.crypt.OpenSSLSigner" class="py-name" href="#" onclick="return doclink('link-7', 'OpenSSLSigner', 'link-7');">OpenSSLSigner</a></tt><tt class="py-op">(</tt><tt class="py-name">pkey</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">  <tt id="link-8" class="py-name"><a title="oauth2client.crypt.OpenSSLVerifier" class="py-name" href="#" onclick="return doclink('link-8', 'OpenSSLVerifier', 'link-6');">OpenSSLVerifier</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">  <tt id="link-9" class="py-name"><a title="oauth2client.crypt.OpenSSLSigner" class="py-name" href="#" onclick="return doclink('link-9', 'OpenSSLSigner', 'link-7');">OpenSSLSigner</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">Crypto</tt><tt class="py-op">.</tt><tt class="py-name">PublicKey</tt> <tt class="py-keyword">import</tt> <tt class="py-name">RSA</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">Crypto</tt><tt class="py-op">.</tt><tt class="py-name">Hash</tt> <tt class="py-keyword">import</tt> <tt class="py-name">SHA256</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">Crypto</tt><tt class="py-op">.</tt><tt class="py-name">Signature</tt> <tt class="py-keyword">import</tt> <tt class="py-name">PKCS1_v1_5</tt> </tt>
+<a name="PyCryptoVerifier"></a><div id="PyCryptoVerifier-def"><a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <a class="py-toggle" href="#" id="PyCryptoVerifier-toggle" onclick="return toggle('PyCryptoVerifier');">-</a><tt class="py-line">  <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.crypt.PyCryptoVerifier-class.html">PyCryptoVerifier</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PyCryptoVerifier-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="PyCryptoVerifier-expanded"><a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">    <tt class="py-docstring">"""Verifies the signature on a message."""</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"> </tt>
+<a name="PyCryptoVerifier.__init__"></a><div id="PyCryptoVerifier.__init__-def"><a name="L148"></a><tt class="py-lineno">148</tt> <a class="py-toggle" href="#" id="PyCryptoVerifier.__init__-toggle" onclick="return toggle('PyCryptoVerifier.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.PyCryptoVerifier-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">pubkey</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PyCryptoVerifier.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="PyCryptoVerifier.__init__-expanded"><a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">      <tt class="py-docstring">"""Constructor.</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring">        pubkey, OpenSSL.crypto.PKey (or equiv), The public key to verify with.</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pubkey</tt> <tt class="py-op">=</tt> <tt class="py-name">pubkey</tt> </tt>
+</div><a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"> </tt>
+<a name="PyCryptoVerifier.verify"></a><div id="PyCryptoVerifier.verify-def"><a name="L156"></a><tt class="py-lineno">156</tt> <a class="py-toggle" href="#" id="PyCryptoVerifier.verify-toggle" onclick="return toggle('PyCryptoVerifier.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.PyCryptoVerifier-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">,</tt> <tt class="py-param">signature</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PyCryptoVerifier.verify-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="PyCryptoVerifier.verify-expanded"><a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">      <tt class="py-docstring">"""Verifies a message against a signature.</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-docstring">        message: string, The message to verify.</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-docstring">        signature: string, The signature on the message.</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-docstring">      Returns:</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-docstring">        True if message was signed by the private key associated with the public</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-docstring">        key that this object was constructed with.</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">PKCS1_v1_5</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pubkey</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="apiclient.push.Subscription.verify" class="py-name" href="#" onclick="return doclink('link-10', 'verify', 'link-5');">verify</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">            <tt class="py-name">SHA256</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">signature</tt><tt class="py-op">)</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
+<a name="PyCryptoVerifier.from_string"></a><div id="PyCryptoVerifier.from_string-def"><a name="L174"></a><tt class="py-lineno">174</tt> <a class="py-toggle" href="#" id="PyCryptoVerifier.from_string-toggle" onclick="return toggle('PyCryptoVerifier.from_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.PyCryptoVerifier-class.html#from_string">from_string</a><tt class="py-op">(</tt><tt class="py-param">key_pem</tt><tt class="py-op">,</tt> <tt class="py-param">is_x509_cert</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PyCryptoVerifier.from_string-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="PyCryptoVerifier.from_string-expanded"><a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">      <tt class="py-docstring">"""Construct a Verified instance from a string.</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-docstring">        key_pem: string, public key in PEM format.</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-docstring">        is_x509_cert: bool, True if key_pem is an X509 cert, otherwise it is</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-docstring">          expected to be an RSA key in PEM format.</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-docstring">      Returns:</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-docstring">        Verifier instance.</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-docstring">      Raises:</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-docstring">        NotImplementedError if is_x509_cert is true.</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">is_x509_cert</tt><tt class="py-op">:</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">            <tt class="py-string">'X509 certs are not supported by the PyCrypto library. '</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">            <tt class="py-string">'Try using PyOpenSSL if native code is an option.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">        <tt class="py-name">pubkey</tt> <tt class="py-op">=</tt> <tt class="py-name">RSA</tt><tt class="py-op">.</tt><tt class="py-name">importKey</tt><tt class="py-op">(</tt><tt class="py-name">key_pem</tt><tt class="py-op">)</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-11" class="py-name" targets="Variable oauth2client.crypt.PyCryptoVerifier=oauth2client.crypt-module.html#PyCryptoVerifier"><a title="oauth2client.crypt.PyCryptoVerifier" class="py-name" href="#" onclick="return doclink('link-11', 'PyCryptoVerifier', 'link-11');">PyCryptoVerifier</a></tt><tt class="py-op">(</tt><tt class="py-name">pubkey</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"> </tt>
+<a name="PyCryptoSigner"></a><div id="PyCryptoSigner-def"><a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line"> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <a class="py-toggle" href="#" id="PyCryptoSigner-toggle" onclick="return toggle('PyCryptoSigner');">-</a><tt class="py-line">  <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.crypt.PyCryptoSigner-class.html">PyCryptoSigner</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PyCryptoSigner-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="PyCryptoSigner-expanded"><a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">    <tt class="py-docstring">"""Signs messages with a private key."""</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line"> </tt>
+<a name="PyCryptoSigner.__init__"></a><div id="PyCryptoSigner.__init__-def"><a name="L200"></a><tt class="py-lineno">200</tt> <a class="py-toggle" href="#" id="PyCryptoSigner.__init__-toggle" onclick="return toggle('PyCryptoSigner.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.PyCryptoSigner-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">pkey</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PyCryptoSigner.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="PyCryptoSigner.__init__-expanded"><a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">      <tt class="py-docstring">"""Constructor.</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"><tt class="py-docstring">        pkey, OpenSSL.crypto.PKey (or equiv), The private key to sign with.</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt> <tt class="py-op">=</tt> <tt class="py-name">pkey</tt> </tt>
+</div><a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"> </tt>
+<a name="PyCryptoSigner.sign"></a><div id="PyCryptoSigner.sign-def"><a name="L208"></a><tt class="py-lineno">208</tt> <a class="py-toggle" href="#" id="PyCryptoSigner.sign-toggle" onclick="return toggle('PyCryptoSigner.sign');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.PyCryptoSigner-class.html#sign">sign</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PyCryptoSigner.sign-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="PyCryptoSigner.sign-expanded"><a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">      <tt class="py-docstring">"""Signs a message.</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"><tt class="py-docstring">        message: string, Message to be signed.</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"><tt class="py-docstring">      Returns:</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"><tt class="py-docstring">        string, The signature of the message for the given key.</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">PKCS1_v1_5</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">sign</tt><tt class="py-op">(</tt><tt class="py-name">SHA256</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
+<a name="PyCryptoSigner.from_string"></a><div id="PyCryptoSigner.from_string-def"><a name="L220"></a><tt class="py-lineno">220</tt> <a class="py-toggle" href="#" id="PyCryptoSigner.from_string-toggle" onclick="return toggle('PyCryptoSigner.from_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt.PyCryptoSigner-class.html#from_string">from_string</a><tt class="py-op">(</tt><tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">=</tt><tt class="py-string">'notasecret'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PyCryptoSigner.from_string-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="PyCryptoSigner.from_string-expanded"><a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">      <tt class="py-docstring">"""Construct a Signer instance from a string.</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-docstring">        key: string, private key in PEM format.</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"><tt class="py-docstring">        password: string, password for private key file. Unused for PEM files.</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"><tt class="py-docstring">      Returns:</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"><tt class="py-docstring">        Signer instance.</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"><tt class="py-docstring">      Raises:</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"><tt class="py-docstring">        NotImplementedError if they key isn't in PEM format.</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'-----BEGIN '</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">        <tt class="py-name">pkey</tt> <tt class="py-op">=</tt> <tt class="py-name">RSA</tt><tt class="py-op">.</tt><tt class="py-name">importKey</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">            <tt class="py-string">'PKCS12 format is not supported by the PyCrpto library. '</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">            <tt class="py-string">'Try converting to a "PEM" '</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">            <tt class="py-string">'(openssl pkcs12 -in xxxxx.p12 -nodes -nocerts &gt; privatekey.pem) '</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">            <tt class="py-string">'or using PyOpenSSL if native code is an option.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-12" class="py-name" targets="Variable oauth2client.crypt.PyCryptoSigner=oauth2client.crypt-module.html#PyCryptoSigner"><a title="oauth2client.crypt.PyCryptoSigner" class="py-name" href="#" onclick="return doclink('link-12', 'PyCryptoSigner', 'link-12');">PyCryptoSigner</a></tt><tt class="py-op">(</tt><tt class="py-name">pkey</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">  <tt id="link-13" class="py-name"><a title="oauth2client.crypt.PyCryptoVerifier" class="py-name" href="#" onclick="return doclink('link-13', 'PyCryptoVerifier', 'link-11');">PyCryptoVerifier</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">  <tt id="link-14" class="py-name"><a title="oauth2client.crypt.PyCryptoSigner" class="py-name" href="#" onclick="return doclink('link-14', 'PyCryptoSigner', 'link-12');">PyCryptoSigner</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-15" class="py-name"><a title="oauth2client.crypt.OpenSSLSigner" class="py-name" href="#" onclick="return doclink('link-15', 'OpenSSLSigner', 'link-7');">OpenSSLSigner</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">  <tt id="link-16" class="py-name" targets="Variable oauth2client.crypt.Signer=oauth2client.crypt-module.html#Signer"><a title="oauth2client.crypt.Signer" class="py-name" href="#" onclick="return doclink('link-16', 'Signer', 'link-16');">Signer</a></tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name"><a title="oauth2client.crypt.OpenSSLSigner" class="py-name" href="#" onclick="return doclink('link-17', 'OpenSSLSigner', 'link-7');">OpenSSLSigner</a></tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">  <tt id="link-18" class="py-name" targets="Variable oauth2client.crypt.Verifier=oauth2client.crypt-module.html#Verifier"><a title="oauth2client.crypt.Verifier" class="py-name" href="#" onclick="return doclink('link-18', 'Verifier', 'link-18');">Verifier</a></tt> <tt class="py-op">=</tt> <tt id="link-19" class="py-name"><a title="oauth2client.crypt.OpenSSLVerifier" class="py-name" href="#" onclick="return doclink('link-19', 'OpenSSLVerifier', 'link-6');">OpenSSLVerifier</a></tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"><tt class="py-keyword">elif</tt> <tt id="link-20" class="py-name"><a title="oauth2client.crypt.PyCryptoSigner" class="py-name" href="#" onclick="return doclink('link-20', 'PyCryptoSigner', 'link-12');">PyCryptoSigner</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">  <tt id="link-21" class="py-name"><a title="oauth2client.crypt.Signer" class="py-name" href="#" onclick="return doclink('link-21', 'Signer', 'link-16');">Signer</a></tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name"><a title="oauth2client.crypt.PyCryptoSigner" class="py-name" href="#" onclick="return doclink('link-22', 'PyCryptoSigner', 'link-12');">PyCryptoSigner</a></tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">  <tt id="link-23" class="py-name"><a title="oauth2client.crypt.Verifier" class="py-name" href="#" onclick="return doclink('link-23', 'Verifier', 'link-18');">Verifier</a></tt> <tt class="py-op">=</tt> <tt id="link-24" class="py-name"><a title="oauth2client.crypt.PyCryptoVerifier" class="py-name" href="#" onclick="return doclink('link-24', 'PyCryptoVerifier', 'link-11');">PyCryptoVerifier</a></tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"><tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">  <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">(</tt><tt class="py-string">'No encryption library found. Please install either '</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">                    <tt class="py-string">'PyOpenSSL, or PyCrypto 2.6 or later'</tt><tt class="py-op">)</tt> </tt>
+<a name="_urlsafe_b64encode"></a><div id="_urlsafe_b64encode-def"><a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line"> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line"> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt> <a class="py-toggle" href="#" id="_urlsafe_b64encode-toggle" onclick="return toggle('_urlsafe_b64encode');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt-module.html#_urlsafe_b64encode">_urlsafe_b64encode</a><tt class="py-op">(</tt><tt class="py-param">raw_bytes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_urlsafe_b64encode-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_urlsafe_b64encode-expanded"><a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">urlsafe_b64encode</tt><tt class="py-op">(</tt><tt class="py-name">raw_bytes</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-string">'='</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"> </tt>
+<a name="_urlsafe_b64decode"></a><div id="_urlsafe_b64decode-def"><a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt> <a class="py-toggle" href="#" id="_urlsafe_b64decode-toggle" onclick="return toggle('_urlsafe_b64decode');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt-module.html#_urlsafe_b64decode">_urlsafe_b64decode</a><tt class="py-op">(</tt><tt class="py-param">b64string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_urlsafe_b64decode-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_urlsafe_b64decode-expanded"><a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">  <tt class="py-comment"># Guard against unicode strings, which base64 can't handle.</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line">  <tt class="py-name">b64string</tt> <tt class="py-op">=</tt> <tt class="py-name">b64string</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'ascii'</tt><tt class="py-op">)</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">  <tt class="py-name">padded</tt> <tt class="py-op">=</tt> <tt class="py-name">b64string</tt> <tt class="py-op">+</tt> <tt class="py-string">'='</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt class="py-number">4</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">b64string</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">urlsafe_b64decode</tt><tt class="py-op">(</tt><tt class="py-name">padded</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line"> </tt>
+<a name="_json_encode"></a><div id="_json_encode-def"><a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt> <a class="py-toggle" href="#" id="_json_encode-toggle" onclick="return toggle('_json_encode');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt-module.html#_json_encode">_json_encode</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_json_encode-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_json_encode-expanded"><a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">separators</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">,</tt> <tt class="py-string">':'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"> </tt>
+<a name="make_signed_jwt"></a><div id="make_signed_jwt-def"><a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt> <a class="py-toggle" href="#" id="make_signed_jwt-toggle" onclick="return toggle('make_signed_jwt');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt-module.html#make_signed_jwt">make_signed_jwt</a><tt class="py-op">(</tt><tt class="py-param">signer</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="make_signed_jwt-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="make_signed_jwt-expanded"><a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">  <tt class="py-docstring">"""Make a signed JWT.</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line"><tt class="py-docstring">  See http://self-issued.info/docs/draft-jones-json-web-token.html.</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line"><tt class="py-docstring">    signer: crypt.Signer, Cryptographic signer.</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line"><tt class="py-docstring">    payload: dict, Dictionary of data to convert to JSON and then sign.</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line"><tt class="py-docstring">    string, The JWT for the payload.</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">  <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'typ'</tt><tt class="py-op">:</tt> <tt class="py-string">'JWT'</tt><tt class="py-op">,</tt> <tt class="py-string">'alg'</tt><tt class="py-op">:</tt> <tt class="py-string">'RS256'</tt><tt class="py-op">}</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line"> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">  <tt class="py-name">segments</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line">          <tt id="link-25" class="py-name" targets="Function oauth2client.crypt._urlsafe_b64encode()=oauth2client.crypt-module.html#_urlsafe_b64encode"><a title="oauth2client.crypt._urlsafe_b64encode" class="py-name" href="#" onclick="return doclink('link-25', '_urlsafe_b64encode', 'link-25');">_urlsafe_b64encode</a></tt><tt class="py-op">(</tt><tt id="link-26" class="py-name" targets="Function oauth2client.crypt._json_encode()=oauth2client.crypt-module.html#_json_encode"><a title="oauth2client.crypt._json_encode" class="py-name" href="#" onclick="return doclink('link-26', '_json_encode', 'link-26');">_json_encode</a></tt><tt class="py-op">(</tt><tt class="py-name">header</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line">          <tt id="link-27" class="py-name"><a title="oauth2client.crypt._urlsafe_b64encode" class="py-name" href="#" onclick="return doclink('link-27', '_urlsafe_b64encode', 'link-25');">_urlsafe_b64encode</a></tt><tt class="py-op">(</tt><tt id="link-28" class="py-name"><a title="oauth2client.crypt._json_encode" class="py-name" href="#" onclick="return doclink('link-28', '_json_encode', 'link-26');">_json_encode</a></tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">  <tt class="py-op">]</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line">  <tt class="py-name">signing_input</tt> <tt class="py-op">=</tt> <tt class="py-string">'.'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line"> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">  <tt class="py-name">signature</tt> <tt class="py-op">=</tt> <tt class="py-name">signer</tt><tt class="py-op">.</tt><tt class="py-name">sign</tt><tt class="py-op">(</tt><tt class="py-name">signing_input</tt><tt class="py-op">)</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">  <tt class="py-name">segments</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-29" class="py-name"><a title="oauth2client.crypt._urlsafe_b64encode" class="py-name" href="#" onclick="return doclink('link-29', '_urlsafe_b64encode', 'link-25');">_urlsafe_b64encode</a></tt><tt class="py-op">(</tt><tt class="py-name">signature</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line"> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">  <tt id="link-30" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-15', 'logger', 'link-1');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"> </tt>
-<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-string">'.'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"> </tt>
-<a name="verify_signed_jwt_with_certs"></a><div id="verify_signed_jwt_with_certs-def"><a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"> </tt>
-<a name="L171"></a><tt class="py-lineno">171</tt> <a class="py-toggle" href="#" id="verify_signed_jwt_with_certs-toggle" onclick="return toggle('verify_signed_jwt_with_certs');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt-module.html#verify_signed_jwt_with_certs">verify_signed_jwt_with_certs</a><tt class="py-op">(</tt><tt class="py-param">jwt</tt><tt class="py-op">,</tt> <tt class="py-param">certs</tt><tt class="py-op">,</tt> <tt class="py-param">audience</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="verify_signed_jwt_with_certs-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="verify_signed_jwt_with_certs-expanded"><a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">  <tt class="py-docstring">"""Verify a JWT against public certs.</tt> </tt>
-<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-docstring">  See http://self-issued.info/docs/draft-jones-json-web-token.html.</tt> </tt>
-<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-docstring">    jwt: string, A JWT.</tt> </tt>
-<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-docstring">    certs: dict, Dictionary where values of public keys in PEM format.</tt> </tt>
-<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-docstring">    audience: string, The audience, 'aud', that this JWT should contain. If</tt> </tt>
-<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-docstring">      None then the JWT's 'aud' parameter is not verified.</tt> </tt>
-<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-docstring">    dict, The deserialized JSON payload in the JWT.</tt> </tt>
-<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-docstring">  Raises:</tt> </tt>
-<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-docstring">    AppIdentityError if any checks are failed.</tt> </tt>
-<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">  <tt class="py-name">segments</tt> <tt class="py-op">=</tt> <tt class="py-name">jwt</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"> </tt>
-<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-16" class="py-name" targets="Class oauth2client.crypt.AppIdentityError=oauth2client.crypt.AppIdentityError-class.html"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-16', 'AppIdentityError', 'link-16');">AppIdentityError</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">      <tt class="py-string">'Wrong number of segments in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">jwt</tt><tt class="py-op">)</tt> </tt>
-<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">  <tt class="py-name">signed</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s.%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line"> </tt>
-<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">  <tt class="py-name">signature</tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name" targets="Function oauth2client.client._urlsafe_b64decode()=oauth2client.client-module.html#_urlsafe_b64decode,Function oauth2client.crypt._urlsafe_b64decode()=oauth2client.crypt-module.html#_urlsafe_b64decode"><a title="oauth2client.client._urlsafe_b64decode
-oauth2client.crypt._urlsafe_b64decode" class="py-name" href="#" onclick="return doclink('link-17', '_urlsafe_b64decode', 'link-17');">_urlsafe_b64decode</a></tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line"> </tt>
-<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">  <tt class="py-comment"># Parse token.</tt> </tt>
-<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">  <tt class="py-name">json_body</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name"><a title="oauth2client.client._urlsafe_b64decode
-oauth2client.crypt._urlsafe_b64decode" class="py-name" href="#" onclick="return doclink('link-18', '_urlsafe_b64decode', 'link-17');">_urlsafe_b64decode</a></tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-19', 'loads', 'link-19');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
-<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">  <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
-<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-20" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-20', 'AppIdentityError', 'link-16');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Can\'t parse token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
-<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"> </tt>
-<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">  <tt class="py-comment"># Check signature.</tt> </tt>
-<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">  <tt class="py-name">verified</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">keyname</tt><tt class="py-op">,</tt> <tt class="py-name">pem</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">certs</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">    <tt class="py-name">verifier</tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="oauth2client.crypt.Verifier" class="py-name" href="#" onclick="return doclink('link-21', 'Verifier', 'link-6');">Verifier</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Static Method oauth2client.crypt.Signer.from_string()=oauth2client.crypt.Signer-class.html#from_string,Static Method oauth2client.crypt.Verifier.from_string()=oauth2client.crypt.Verifier-class.html#from_string"><a title="oauth2client.crypt.Signer.from_string
-oauth2client.crypt.Verifier.from_string" class="py-name" href="#" onclick="return doclink('link-22', 'from_string', 'link-22');">from_string</a></tt><tt class="py-op">(</tt><tt class="py-name">pem</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
-<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">verifier</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="oauth2client.crypt.Verifier.verify" class="py-name" href="#" onclick="return doclink('link-23', 'verify', 'link-5');">verify</a></tt><tt class="py-op">(</tt><tt class="py-name">signed</tt><tt class="py-op">,</tt> <tt class="py-name">signature</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">      <tt class="py-name">verified</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">      <tt class="py-keyword">break</tt> </tt>
-<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">verified</tt><tt class="py-op">:</tt> </tt>
-<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-24" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-24', 'AppIdentityError', 'link-16');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Invalid token signature: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">jwt</tt><tt class="py-op">)</tt> </tt>
-<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line"> </tt>
-<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">  <tt class="py-comment"># Check creation timestamp.</tt> </tt>
-<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">  <tt class="py-name">iat</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-30', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line"> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-string">'.'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line"> </tt>
+<a name="verify_signed_jwt_with_certs"></a><div id="verify_signed_jwt_with_certs-def"><a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line"> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt> <a class="py-toggle" href="#" id="verify_signed_jwt_with_certs-toggle" onclick="return toggle('verify_signed_jwt_with_certs');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.crypt-module.html#verify_signed_jwt_with_certs">verify_signed_jwt_with_certs</a><tt class="py-op">(</tt><tt class="py-param">jwt</tt><tt class="py-op">,</tt> <tt class="py-param">certs</tt><tt class="py-op">,</tt> <tt class="py-param">audience</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="verify_signed_jwt_with_certs-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="verify_signed_jwt_with_certs-expanded"><a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">  <tt class="py-docstring">"""Verify a JWT against public certs.</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line"><tt class="py-docstring">  See http://self-issued.info/docs/draft-jones-json-web-token.html.</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line"><tt class="py-docstring">    jwt: string, A JWT.</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line"><tt class="py-docstring">    certs: dict, Dictionary where values of public keys in PEM format.</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"><tt class="py-docstring">    audience: string, The audience, 'aud', that this JWT should contain. If</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line"><tt class="py-docstring">      None then the JWT's 'aud' parameter is not verified.</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line"><tt class="py-docstring">    dict, The deserialized JSON payload in the JWT.</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line"><tt class="py-docstring">  Raises:</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line"><tt class="py-docstring">    AppIdentityError if any checks are failed.</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line">  <tt class="py-name">segments</tt> <tt class="py-op">=</tt> <tt class="py-name">jwt</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line"> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-31" class="py-name" targets="Class oauth2client.crypt.AppIdentityError=oauth2client.crypt.AppIdentityError-class.html"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-31', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">      <tt class="py-string">'Wrong number of segments in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">jwt</tt><tt class="py-op">)</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">  <tt class="py-name">signed</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s.%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line"> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">  <tt class="py-name">signature</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name" targets="Function oauth2client.client._urlsafe_b64decode()=oauth2client.client-module.html#_urlsafe_b64decode,Function oauth2client.crypt._urlsafe_b64decode()=oauth2client.crypt-module.html#_urlsafe_b64decode"><a title="oauth2client.client._urlsafe_b64decode
+oauth2client.crypt._urlsafe_b64decode" class="py-name" href="#" onclick="return doclink('link-32', '_urlsafe_b64decode', 'link-32');">_urlsafe_b64decode</a></tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line"> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line">  <tt class="py-comment"># Parse token.</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">  <tt class="py-name">json_body</tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name"><a title="oauth2client.client._urlsafe_b64decode
+oauth2client.crypt._urlsafe_b64decode" class="py-name" href="#" onclick="return doclink('link-33', '_urlsafe_b64decode', 'link-32');">_urlsafe_b64decode</a></tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-34', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line">  <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-35" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-35', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Can\'t parse token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line"> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line">  <tt class="py-comment"># Check signature.</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line">  <tt class="py-name">verified</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">keyname</tt><tt class="py-op">,</tt> <tt class="py-name">pem</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">certs</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method apiclient.push.Headers.items()=apiclient.push.Headers-class.html#items"><a title="apiclient.push.Headers.items" class="py-name" href="#" onclick="return doclink('link-36', 'items', 'link-36');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">    <tt class="py-name">verifier</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="oauth2client.crypt.Verifier" class="py-name" href="#" onclick="return doclink('link-37', 'Verifier', 'link-18');">Verifier</a></tt><tt class="py-op">.</tt><tt class="py-name">from_string</tt><tt class="py-op">(</tt><tt class="py-name">pem</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">verifier</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="apiclient.push.Subscription.verify" class="py-name" href="#" onclick="return doclink('link-38', 'verify', 'link-5');">verify</a></tt><tt class="py-op">(</tt><tt class="py-name">signed</tt><tt class="py-op">,</tt> <tt class="py-name">signature</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">      <tt class="py-name">verified</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">      <tt class="py-keyword">break</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">verified</tt><tt class="py-op">:</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-39" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-39', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Invalid token signature: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">jwt</tt><tt class="py-op">)</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line"> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">  <tt class="py-comment"># Check creation timestamp.</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">  <tt class="py-name">iat</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-25', 'get', 'link-25');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'iat'</tt><tt class="py-op">)</tt> </tt>
-<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">iat</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-26" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-26', 'AppIdentityError', 'link-16');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'No iat field in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
-<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">  <tt class="py-name">earliest</tt> <tt class="py-op">=</tt> <tt class="py-name">iat</tt> <tt class="py-op">-</tt> <tt id="link-27" class="py-name"><a title="oauth2client.crypt.CLOCK_SKEW_SECS" class="py-name" href="#" onclick="return doclink('link-27', 'CLOCK_SKEW_SECS', 'link-2');">CLOCK_SKEW_SECS</a></tt> </tt>
-<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"> </tt>
-<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">  <tt class="py-comment"># Check expiration timestamp.</tt> </tt>
-<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">  <tt class="py-name">now</tt> <tt class="py-op">=</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">  <tt class="py-name">exp</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-40', 'get', 'link-40');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'iat'</tt><tt class="py-op">)</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">iat</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-41" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-41', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'No iat field in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">  <tt class="py-name">earliest</tt> <tt class="py-op">=</tt> <tt class="py-name">iat</tt> <tt class="py-op">-</tt> <tt id="link-42" class="py-name"><a title="oauth2client.crypt.CLOCK_SKEW_SECS" class="py-name" href="#" onclick="return doclink('link-42', 'CLOCK_SKEW_SECS', 'link-1');">CLOCK_SKEW_SECS</a></tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line"> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">  <tt class="py-comment"># Check expiration timestamp.</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line">  <tt class="py-name">now</tt> <tt class="py-op">=</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">  <tt class="py-name">exp</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-28', 'get', 'link-25');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'exp'</tt><tt class="py-op">)</tt> </tt>
-<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">exp</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-29" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-29', 'AppIdentityError', 'link-16');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'No exp field in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
-<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">exp</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">now</tt> <tt class="py-op">+</tt> <tt id="link-30" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS
-oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-30', 'MAX_TOKEN_LIFETIME_SECS', 'link-4');">MAX_TOKEN_LIFETIME_SECS</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-31" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-31', 'AppIdentityError', 'link-16');">AppIdentityError</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">      <tt class="py-string">'exp field too far in future: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
-<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">  <tt class="py-name">latest</tt> <tt class="py-op">=</tt> <tt class="py-name">exp</tt> <tt class="py-op">+</tt> <tt id="link-32" class="py-name"><a title="oauth2client.crypt.CLOCK_SKEW_SECS" class="py-name" href="#" onclick="return doclink('link-32', 'CLOCK_SKEW_SECS', 'link-2');">CLOCK_SKEW_SECS</a></tt> </tt>
-<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"> </tt>
-<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">now</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">earliest</tt><tt class="py-op">:</tt> </tt>
-<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-33" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-33', 'AppIdentityError', 'link-16');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Token used too early, %d &lt; %d: %s'</tt> <tt class="py-op">%</tt> </tt>
-<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">      <tt class="py-op">(</tt><tt class="py-name">now</tt><tt class="py-op">,</tt> <tt class="py-name">earliest</tt><tt class="py-op">,</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">now</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">latest</tt><tt class="py-op">:</tt> </tt>
-<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-34" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-34', 'AppIdentityError', 'link-16');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Token used too late, %d &gt; %d: %s'</tt> <tt class="py-op">%</tt> </tt>
-<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">      <tt class="py-op">(</tt><tt class="py-name">now</tt><tt class="py-op">,</tt> <tt class="py-name">latest</tt><tt class="py-op">,</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"> </tt>
-<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">  <tt class="py-comment"># Check audience.</tt> </tt>
-<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">audience</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">    <tt class="py-name">aud</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-43', 'get', 'link-40');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'exp'</tt><tt class="py-op">)</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">exp</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-44" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-44', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'No exp field in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">exp</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">now</tt> <tt class="py-op">+</tt> <tt id="link-45" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS
+oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-45', 'MAX_TOKEN_LIFETIME_SECS', 'link-3');">MAX_TOKEN_LIFETIME_SECS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-46" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-46', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line">      <tt class="py-string">'exp field too far in future: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line">  <tt class="py-name">latest</tt> <tt class="py-op">=</tt> <tt class="py-name">exp</tt> <tt class="py-op">+</tt> <tt id="link-47" class="py-name"><a title="oauth2client.crypt.CLOCK_SKEW_SECS" class="py-name" href="#" onclick="return doclink('link-47', 'CLOCK_SKEW_SECS', 'link-1');">CLOCK_SKEW_SECS</a></tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line"> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">now</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">earliest</tt><tt class="py-op">:</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-48" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-48', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Token used too early, %d &lt; %d: %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line">      <tt class="py-op">(</tt><tt class="py-name">now</tt><tt class="py-op">,</tt> <tt class="py-name">earliest</tt><tt class="py-op">,</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">now</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">latest</tt><tt class="py-op">:</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-49" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-49', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Token used too late, %d &gt; %d: %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">      <tt class="py-op">(</tt><tt class="py-name">now</tt><tt class="py-op">,</tt> <tt class="py-name">latest</tt><tt class="py-op">,</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line"> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line">  <tt class="py-comment"># Check audience.</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">audience</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line">    <tt class="py-name">aud</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-35', 'get', 'link-25');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'aud'</tt><tt class="py-op">)</tt> </tt>
-<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">aud</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-36" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-36', 'AppIdentityError', 'link-16');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'No aud field in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
-<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">aud</tt> <tt class="py-op">!=</tt> <tt class="py-name">audience</tt><tt class="py-op">:</tt> </tt>
-<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-37" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-37', 'AppIdentityError', 'link-16');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Wrong recipient, %s != %s: %s'</tt> <tt class="py-op">%</tt> </tt>
-<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">          <tt class="py-op">(</tt><tt class="py-name">aud</tt><tt class="py-op">,</tt> <tt class="py-name">audience</tt><tt class="py-op">,</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line"> </tt>
-<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">parsed</tt> </tt>
-</div><a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-50', 'get', 'link-40');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'aud'</tt><tt class="py-op">)</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">aud</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-51" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-51', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'No aud field in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">aud</tt> <tt class="py-op">!=</tt> <tt class="py-name">audience</tt><tt class="py-op">:</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-52" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-52', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Wrong recipient, %s != %s: %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line">          <tt class="py-op">(</tt><tt class="py-name">aud</tt><tt class="py-op">,</tt> <tt class="py-name">audience</tt><tt class="py-op">,</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line"> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">parsed</tt> </tt>
+</div><a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line"> </tt><script type="text/javascript">
 <!--
 expandto(location.href);
 // -->
@@ -354,7 +484,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:48 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.crypt.AppIdentityError-class.html b/docs/epy/oauth2client.crypt.AppIdentityError-class.html
index f71f3fc..f8439f5 100644
--- a/docs/epy/oauth2client.crypt.AppIdentityError-class.html
+++ b/docs/epy/oauth2client.crypt.AppIdentityError-class.html
@@ -56,9 +56,9 @@
 <h1 class="epydoc">Class AppIdentityError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.crypt-pysrc.html#AppIdentityError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_appidentit" name="class_hierarchy_for_appidentit">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
-<area shape="rect" href="oauth2client.crypt.AppIdentityError-class.html" title="AppIdentityError" alt="" coords="36,117,151,144"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<area shape="rect" id="node3" href="oauth2client.crypt.AppIdentityError-class.html" title="AppIdentityError" alt="" coords="36,123,151,151"/>
 </map>
   <img src="class_hierarchy_for_appidentit.gif" alt='' usemap="#class_hierarchy_for_appidentit" ismap="ismap" class="graph-without-title" />
 </center>
@@ -161,7 +161,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:15 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:43 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.django_orm-module.html b/docs/epy/oauth2client.django_orm-module.html
index b96bab9..6a117b0 100644
--- a/docs/epy/oauth2client.django_orm-module.html
+++ b/docs/epy/oauth2client.django_orm-module.html
@@ -129,7 +129,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:10 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.django_orm-pysrc.html b/docs/epy/oauth2client.django_orm-pysrc.html
index b0f1cb7..c466504 100644
--- a/docs/epy/oauth2client.django_orm-pysrc.html
+++ b/docs/epy/oauth2client.django_orm-pysrc.html
@@ -93,7 +93,8 @@
 <a name="CredentialsField.__init__"></a><div id="CredentialsField.__init__-def"><a name="L34"></a><tt class="py-lineno"> 34</tt> <a class="py-toggle" href="#" id="CredentialsField.__init__-toggle" onclick="return toggle('CredentialsField.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.django_orm.CredentialsField-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
 </div><div id="CredentialsField.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsField.__init__-expanded"><a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'null'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
 <a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">      <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-string">'null'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-5" class="py-name" targets="Class oauth2client.django_orm.CredentialsField=oauth2client.django_orm.CredentialsField-class.html"><a title="oauth2client.django_orm.CredentialsField" class="py-name" href="#" onclick="return doclink('link-5', 'CredentialsField', 'link-5');">CredentialsField</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.crypt.Signer.__init__()=oauth2client.crypt.Signer-class.html#__init__,Method oauth2client.crypt.Verifier.__init__()=oauth2client.crypt.Verifier-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.errors.BatchError.__init__
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-5" class="py-name" targets="Class oauth2client.django_orm.CredentialsField=oauth2client.django_orm.CredentialsField-class.html"><a title="oauth2client.django_orm.CredentialsField" class="py-name" href="#" onclick="return doclink('link-5', 'CredentialsField', 'link-5');">CredentialsField</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.push.Channel.__init__()=apiclient.push.Channel-class.html#__init__,Method apiclient.push.Headers.__init__()=apiclient.push.Headers-class.html#__init__,Method apiclient.push.Subscription.__init__()=apiclient.push.Subscription-class.html#__init__,Method apiclient.push.WebhookChannel.__init__()=apiclient.push.WebhookChannel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.discovery.Resource.__init__
+apiclient.errors.BatchError.__init__
 apiclient.errors.HttpError.__init__
 apiclient.errors.UnexpectedBodyError.__init__
 apiclient.errors.UnexpectedMethodError.__init__
@@ -112,6 +113,10 @@
 apiclient.http._StreamSlice.__init__
 apiclient.model.JsonModel.__init__
 apiclient.model.ProtocolBufferModel.__init__
+apiclient.push.Channel.__init__
+apiclient.push.Headers.__init__
+apiclient.push.Subscription.__init__
+apiclient.push.WebhookChannel.__init__
 apiclient.schema.Schemas.__init__
 apiclient.schema._SchemaToStruct.__init__
 oauth2client.appengine.AppAssertionCredentials.__init__
@@ -124,8 +129,6 @@
 oauth2client.client.OAuth2Credentials.__init__
 oauth2client.client.OAuth2WebServerFlow.__init__
 oauth2client.client.SignedJwtAssertionCredentials.__init__
-oauth2client.crypt.Signer.__init__
-oauth2client.crypt.Verifier.__init__
 oauth2client.django_orm.CredentialsField.__init__
 oauth2client.django_orm.FlowField.__init__
 oauth2client.django_orm.Storage.__init__
@@ -161,7 +164,8 @@
 <a name="FlowField.__init__"></a><div id="FlowField.__init__-def"><a name="L59"></a><tt class="py-lineno"> 59</tt> <a class="py-toggle" href="#" id="FlowField.__init__-toggle" onclick="return toggle('FlowField.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.django_orm.FlowField-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
 </div><div id="FlowField.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowField.__init__-expanded"><a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'null'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
 <a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">      <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-string">'null'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-12" class="py-name" targets="Class oauth2client.django_orm.FlowField=oauth2client.django_orm.FlowField-class.html"><a title="oauth2client.django_orm.FlowField" class="py-name" href="#" onclick="return doclink('link-12', 'FlowField', 'link-12');">FlowField</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="apiclient.errors.BatchError.__init__
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-12" class="py-name" targets="Class oauth2client.django_orm.FlowField=oauth2client.django_orm.FlowField-class.html"><a title="oauth2client.django_orm.FlowField" class="py-name" href="#" onclick="return doclink('link-12', 'FlowField', 'link-12');">FlowField</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="apiclient.discovery.Resource.__init__
+apiclient.errors.BatchError.__init__
 apiclient.errors.HttpError.__init__
 apiclient.errors.UnexpectedBodyError.__init__
 apiclient.errors.UnexpectedMethodError.__init__
@@ -180,6 +184,10 @@
 apiclient.http._StreamSlice.__init__
 apiclient.model.JsonModel.__init__
 apiclient.model.ProtocolBufferModel.__init__
+apiclient.push.Channel.__init__
+apiclient.push.Headers.__init__
+apiclient.push.Subscription.__init__
+apiclient.push.WebhookChannel.__init__
 apiclient.schema.Schemas.__init__
 apiclient.schema._SchemaToStruct.__init__
 oauth2client.appengine.AppAssertionCredentials.__init__
@@ -192,8 +200,6 @@
 oauth2client.client.OAuth2Credentials.__init__
 oauth2client.client.OAuth2WebServerFlow.__init__
 oauth2client.client.SignedJwtAssertionCredentials.__init__
-oauth2client.crypt.Signer.__init__
-oauth2client.crypt.Verifier.__init__
 oauth2client.django_orm.CredentialsField.__init__
 oauth2client.django_orm.FlowField.__init__
 oauth2client.django_orm.Storage.__init__
@@ -268,7 +274,8 @@
 <a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
 <a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">    <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">key_name</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">key_value</tt><tt class="py-op">}</tt> </tt>
 <a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">    <tt class="py-name">entity</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">model_class</tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
-<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">entity</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">property_name</tt><tt class="py-op">,</tt> <tt id="link-19" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-19', 'credentials', 'link-19');">credentials</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">entity</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">property_name</tt><tt class="py-op">,</tt> <tt id="link-19" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-19', 'credentials', 'link-19');">credentials</a></tt><tt class="py-op">)</tt> </tt>
 <a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">    <tt class="py-name">entity</tt><tt class="py-op">.</tt><tt class="py-name">save</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 </div><a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"> </tt>
 <a name="Storage.locked_delete"></a><div id="Storage.locked_delete-def"><a name="L130"></a><tt class="py-lineno">130</tt> <a class="py-toggle" href="#" id="Storage.locked_delete-toggle" onclick="return toggle('Storage.locked_delete');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.django_orm.Storage-class.html#locked_delete">locked_delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -307,7 +314,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:46 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.django_orm.CredentialsField-class.html b/docs/epy/oauth2client.django_orm.CredentialsField-class.html
index 9a21ed5..1829330 100644
--- a/docs/epy/oauth2client.django_orm.CredentialsField-class.html
+++ b/docs/epy/oauth2client.django_orm.CredentialsField-class.html
@@ -55,11 +55,11 @@
 <!-- ==================== CLASS DESCRIPTION ==================== -->
 <h1 class="epydoc">Class CredentialsField</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.django_orm-pysrc.html#CredentialsField">source&nbsp;code</a></span></p>
 <center>
-<center>  <map id="class_hierarchy_for_credential_4" name="class_hierarchy_for_credential_4">
-<area shape="rect" href="javascript:void(0);" title="django.db.models.Field" alt="" coords="5,5,160,32"/>
-<area shape="rect" href="oauth2client.django_orm.CredentialsField-class.html" title="CredentialsField" alt="" coords="184,5,299,32"/>
+<center>  <map id="class_hierarchy_for_credential_6" name="class_hierarchy_for_credential_6">
+<area shape="rect" id="node1" href="javascript:void(0);" title="django.db.models.Field" alt="" coords="5,6,160,34"/>
+<area shape="rect" id="node2" href="oauth2client.django_orm.CredentialsField-class.html" title="CredentialsField" alt="" coords="184,6,299,34"/>
 </map>
-  <img src="class_hierarchy_for_credential_4.gif" alt='' usemap="#class_hierarchy_for_credential_4" ismap="ismap" class="graph-without-title" />
+  <img src="class_hierarchy_for_credential_6.gif" alt='' usemap="#class_hierarchy_for_credential_6" ismap="ismap" class="graph-without-title" />
 </center>
 </center>
 <hr />
@@ -199,7 +199,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:15 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:43 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.django_orm.FlowField-class.html b/docs/epy/oauth2client.django_orm.FlowField-class.html
index e31fc92..04ebc5f 100644
--- a/docs/epy/oauth2client.django_orm.FlowField-class.html
+++ b/docs/epy/oauth2client.django_orm.FlowField-class.html
@@ -56,8 +56,8 @@
 <h1 class="epydoc">Class FlowField</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.django_orm-pysrc.html#FlowField">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_flowfield" name="class_hierarchy_for_flowfield">
-<area shape="rect" href="javascript:void(0);" title="django.db.models.Field" alt="" coords="5,5,160,32"/>
-<area shape="rect" href="oauth2client.django_orm.FlowField-class.html" title="FlowField" alt="" coords="184,5,259,32"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="django.db.models.Field" alt="" coords="5,6,160,34"/>
+<area shape="rect" id="node2" href="oauth2client.django_orm.FlowField-class.html" title="FlowField" alt="" coords="184,6,261,34"/>
 </map>
   <img src="class_hierarchy_for_flowfield.gif" alt='' usemap="#class_hierarchy_for_flowfield" ismap="ismap" class="graph-without-title" />
 </center>
@@ -199,7 +199,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:15 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:43 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.django_orm.Storage-class.html b/docs/epy/oauth2client.django_orm.Storage-class.html
index 30ebfc3..8bc867f 100644
--- a/docs/epy/oauth2client.django_orm.Storage-class.html
+++ b/docs/epy/oauth2client.django_orm.Storage-class.html
@@ -56,8 +56,8 @@
 <h1 class="epydoc">Class Storage</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.django_orm-pysrc.html#Storage">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_storage_2" name="class_hierarchy_for_storage_2">
-<area shape="rect" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="5,5,107,32"/>
-<area shape="rect" href="oauth2client.django_orm.Storage-class.html" title="Storage" alt="" coords="131,5,197,32"/>
+<area shape="rect" id="node1" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="5,6,107,34"/>
+<area shape="rect" id="node2" href="oauth2client.django_orm.Storage-class.html" title="Storage" alt="" coords="131,6,197,34"/>
 </map>
   <img src="class_hierarchy_for_storage_2.gif" alt='' usemap="#class_hierarchy_for_storage_2" ismap="ismap" class="graph-without-title" />
 </center>
@@ -374,7 +374,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:15 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:44 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.file-module.html b/docs/epy/oauth2client.file-module.html
index b762946..f92d283 100644
--- a/docs/epy/oauth2client.file-module.html
+++ b/docs/epy/oauth2client.file-module.html
@@ -122,7 +122,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.file-pysrc.html b/docs/epy/oauth2client.file-pysrc.html
index da51d34..9800877 100644
--- a/docs/epy/oauth2client.file-pysrc.html
+++ b/docs/epy/oauth2client.file-pysrc.html
@@ -128,23 +128,29 @@
 <a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
 <a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">      CredentialsFileSymbolicLinkError if the file is a symbolic link.</tt> </tt>
 <a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">    <tt id="link-10" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-10', 'credentials', 'link-10');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">    <tt id="link-10" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-10', 'credentials', 'link-10');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
 <a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Method oauth2client.file.Storage._validate_file()=oauth2client.file.Storage-class.html#_validate_file"><a title="oauth2client.file.Storage._validate_file" class="py-name" href="#" onclick="return doclink('link-11', '_validate_file', 'link-11');">_validate_file</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 <a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
 <a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">      <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
-<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method apiclient.http._StreamSlice.read()=apiclient.http._StreamSlice-class.html#read"><a title="apiclient.http._StreamSlice.read" class="py-name" href="#" onclick="return doclink('link-12', 'read', 'link-12');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method apiclient.http._StreamSlice.read()=apiclient.http._StreamSlice-class.html#read,Method apiclient.push.Headers.read()=apiclient.push.Headers-class.html#read"><a title="apiclient.http._StreamSlice.read
+apiclient.push.Headers.read" class="py-name" href="#" onclick="return doclink('link-12', 'read', 'link-12');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 <a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">      <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 <a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">:</tt> </tt>
-<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-13" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-13', 'credentials', 'link-10');">credentials</a></tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-13" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-13', 'credentials', 'link-10');">credentials</a></tt> </tt>
 <a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"> </tt>
 <a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">      <tt id="link-14" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-14', 'credentials', 'link-10');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-15', 'Credentials', 'link-4');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">      <tt id="link-14" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-14', 'credentials', 'link-10');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-15', 'Credentials', 'link-4');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
 oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-16', 'new_from_json', 'link-16');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">      <tt id="link-17" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-17', 'credentials', 'link-10');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-18', 'set_store', 'link-18');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">      <tt id="link-17" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-17', 'credentials', 'link-10');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-18', 'set_store', 'link-18');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
 <a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
 <a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">      <tt class="py-keyword">pass</tt> </tt>
 <a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"> </tt>
-<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-19" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-19', 'credentials', 'link-10');">credentials</a></tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-19" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-19', 'credentials', 'link-10');">credentials</a></tt> </tt>
 </div><a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"> </tt>
 <a name="Storage._create_file_if_needed"></a><div id="Storage._create_file_if_needed-def"><a name="L88"></a><tt class="py-lineno"> 88</tt> <a class="py-toggle" href="#" id="Storage._create_file_if_needed-toggle" onclick="return toggle('Storage._create_file_if_needed');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.file.Storage-class.html#_create_file_if_needed">_create_file_if_needed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
 </div><div id="Storage._create_file_if_needed-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Storage._create_file_if_needed-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create an empty file if necessary.</tt> </tt>
@@ -173,12 +179,13 @@
 oauth2client.multistore_file._MultiStore._create_file_if_needed" class="py-name" href="#" onclick="return doclink('link-20', '_create_file_if_needed', 'link-20');">_create_file_if_needed</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 <a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="oauth2client.file.Storage._validate_file" class="py-name" href="#" onclick="return doclink('link-21', '_validate_file', 'link-11');">_validate_file</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 <a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">    <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-string">'wb'</tt><tt class="py-op">)</tt> </tt>
-<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">    <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt id="link-22" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-22', 'credentials', 'link-10');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">    <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method apiclient.push.Headers.write()=apiclient.push.Headers-class.html#write"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-22', 'write', 'link-22');">write</a></tt><tt class="py-op">(</tt><tt id="link-23" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-23', 'credentials', 'link-10');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
 apiclient.http.MediaFileUpload.to_json
 apiclient.http.MediaIoBaseUpload.to_json
 apiclient.http.MediaUpload.to_json
 oauth2client.client.Credentials.to_json
-oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-23', 'to_json', 'link-23');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-24', 'to_json', 'link-24');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
 <a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">    <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 </div><a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"> </tt>
 <a name="Storage.locked_delete"></a><div id="Storage.locked_delete-def"><a name="L117"></a><tt class="py-lineno">117</tt> <a class="py-toggle" href="#" id="Storage.locked_delete-toggle" onclick="return toggle('Storage.locked_delete');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.file.Storage-class.html#locked_delete">locked_delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -219,7 +226,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:49 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.file.CredentialsFileSymbolicLinkError-class.html b/docs/epy/oauth2client.file.CredentialsFileSymbolicLinkError-class.html
index 7f902e8..1894525 100644
--- a/docs/epy/oauth2client.file.CredentialsFileSymbolicLinkError-class.html
+++ b/docs/epy/oauth2client.file.CredentialsFileSymbolicLinkError-class.html
@@ -55,12 +55,12 @@
 <!-- ==================== CLASS DESCRIPTION ==================== -->
 <h1 class="epydoc">Class CredentialsFileSymbolicLinkError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.file-pysrc.html#CredentialsFileSymbolicLinkError">source&nbsp;code</a></span></p>
 <center>
-<center>  <map id="class_hierarchy_for_credential_5" name="class_hierarchy_for_credential_5">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="24,5,200,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="39,61,185,88"/>
-<area shape="rect" href="oauth2client.file.CredentialsFileSymbolicLinkError-class.html" title="CredentialsFileSymbolicLinkError" alt="" coords="5,117,219,144"/>
+<center>  <map id="class_hierarchy_for_credential_7" name="class_hierarchy_for_credential_7">
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="24,6,200,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="39,65,185,93"/>
+<area shape="rect" id="node3" href="oauth2client.file.CredentialsFileSymbolicLinkError-class.html" title="CredentialsFileSymbolicLinkError" alt="" coords="5,123,219,151"/>
 </map>
-  <img src="class_hierarchy_for_credential_5.gif" alt='' usemap="#class_hierarchy_for_credential_5" ismap="ismap" class="graph-without-title" />
+  <img src="class_hierarchy_for_credential_7.gif" alt='' usemap="#class_hierarchy_for_credential_7" ismap="ismap" class="graph-without-title" />
 </center>
 </center>
 <hr />
@@ -166,7 +166,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:15 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:44 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.file.Storage-class.html b/docs/epy/oauth2client.file.Storage-class.html
index c925242..b7d35ad 100644
--- a/docs/epy/oauth2client.file.Storage-class.html
+++ b/docs/epy/oauth2client.file.Storage-class.html
@@ -56,8 +56,8 @@
 <h1 class="epydoc">Class Storage</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.file-pysrc.html#Storage">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_storage_3" name="class_hierarchy_for_storage_3">
-<area shape="rect" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="5,5,107,32"/>
-<area shape="rect" href="oauth2client.file.Storage-class.html" title="Storage" alt="" coords="131,5,197,32"/>
+<area shape="rect" id="node1" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="5,6,107,34"/>
+<area shape="rect" id="node2" href="oauth2client.file.Storage-class.html" title="Storage" alt="" coords="131,6,197,34"/>
 </map>
   <img src="class_hierarchy_for_storage_3.gif" alt='' usemap="#class_hierarchy_for_storage_3" ismap="ismap" class="graph-without-title" />
 </center>
@@ -93,7 +93,7 @@
         <tr>
           <td><span class="summary-sig"><a href="oauth2client.file.Storage-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
         <span class="summary-sig-arg">filename</span>)</span><br />
-      x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+      x.__init__(...) initializes x; see help(type(x)) for signature</td>
           <td align="right" valign="top">
             <span class="codelink"><a href="oauth2client.file-pysrc.html#Storage.__init__">source&nbsp;code</a></span>
             
@@ -306,7 +306,7 @@
   </tr></table>
   
   <pre class="literalblock">
-x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+x.__init__(...) initializes x; see help(type(x)) for signature
 
 </pre>
   <dl class="fields">
@@ -512,7 +512,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:15 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:44 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.gce-module.html b/docs/epy/oauth2client.gce-module.html
index 7cab07b..33c7ea2 100644
--- a/docs/epy/oauth2client.gce-module.html
+++ b/docs/epy/oauth2client.gce-module.html
@@ -184,7 +184,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.gce-pysrc.html b/docs/epy/oauth2client.gce-pysrc.html
index 144f3ac..f729a3f 100644
--- a/docs/epy/oauth2client.gce-pysrc.html
+++ b/docs/epy/oauth2client.gce-pysrc.html
@@ -115,15 +115,14 @@
 </div><div id="AppAssertionCredentials.__init__-collapsed" style="display:none;" pad="++" indent="++++++"></div><div id="AppAssertionCredentials.__init__-expanded"><a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for AppAssertionCredentials</tt> </tt>
 <a name="L54"></a><tt class="py-lineno">54</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
 <a name="L55"></a><tt class="py-lineno">55</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L56"></a><tt class="py-lineno">56</tt>  <tt class="py-line"><tt class="py-docstring">      scope: string or list of strings, scope(s) of the credentials being</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">56</tt>  <tt class="py-line"><tt class="py-docstring">      scope: string or iterable of strings, scope(s) of the credentials being</tt> </tt>
 <a name="L57"></a><tt class="py-lineno">57</tt>  <tt class="py-line"><tt class="py-docstring">        requested.</tt> </tt>
 <a name="L58"></a><tt class="py-lineno">58</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L59"></a><tt class="py-lineno">59</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">list</tt><tt class="py-op">:</tt> </tt>
-<a name="L60"></a><tt class="py-lineno">60</tt>  <tt class="py-line">      <tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
-<a name="L61"></a><tt class="py-lineno">61</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-name">scope</tt> </tt>
-<a name="L62"></a><tt class="py-lineno">62</tt>  <tt class="py-line"> </tt>
-<a name="L63"></a><tt class="py-lineno">63</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-13" class="py-name" targets="Class oauth2client.appengine.AppAssertionCredentials=oauth2client.appengine.AppAssertionCredentials-class.html,Class oauth2client.gce.AppAssertionCredentials=oauth2client.gce.AppAssertionCredentials-class.html"><a title="oauth2client.appengine.AppAssertionCredentials
-oauth2client.gce.AppAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-13', 'AppAssertionCredentials', 'link-13');">AppAssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.crypt.Signer.__init__()=oauth2client.crypt.Signer-class.html#__init__,Method oauth2client.crypt.Verifier.__init__()=oauth2client.crypt.Verifier-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.errors.BatchError.__init__
+<a name="L59"></a><tt class="py-lineno">59</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt id="link-13" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-13', 'util', 'link-1');">util</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Function oauth2client.util.scopes_to_string()=oauth2client.util-module.html#scopes_to_string"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-14', 'scopes_to_string', 'link-14');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">60</tt>  <tt class="py-line"> </tt>
+<a name="L61"></a><tt class="py-lineno">61</tt>  <tt class="py-line">    <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-15" class="py-name" targets="Class oauth2client.appengine.AppAssertionCredentials=oauth2client.appengine.AppAssertionCredentials-class.html,Class oauth2client.gce.AppAssertionCredentials=oauth2client.gce.AppAssertionCredentials-class.html"><a title="oauth2client.appengine.AppAssertionCredentials
+oauth2client.gce.AppAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-15', 'AppAssertionCredentials', 'link-15');">AppAssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.push.Channel.__init__()=apiclient.push.Channel-class.html#__init__,Method apiclient.push.Headers.__init__()=apiclient.push.Headers-class.html#__init__,Method apiclient.push.Subscription.__init__()=apiclient.push.Subscription-class.html#__init__,Method apiclient.push.WebhookChannel.__init__()=apiclient.push.WebhookChannel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.discovery.Resource.__init__
+apiclient.errors.BatchError.__init__
 apiclient.errors.HttpError.__init__
 apiclient.errors.UnexpectedBodyError.__init__
 apiclient.errors.UnexpectedMethodError.__init__
@@ -142,6 +141,10 @@
 apiclient.http._StreamSlice.__init__
 apiclient.model.JsonModel.__init__
 apiclient.model.ProtocolBufferModel.__init__
+apiclient.push.Channel.__init__
+apiclient.push.Headers.__init__
+apiclient.push.Subscription.__init__
+apiclient.push.WebhookChannel.__init__
 apiclient.schema.Schemas.__init__
 apiclient.schema._SchemaToStruct.__init__
 oauth2client.appengine.AppAssertionCredentials.__init__
@@ -154,8 +157,6 @@
 oauth2client.client.OAuth2Credentials.__init__
 oauth2client.client.OAuth2WebServerFlow.__init__
 oauth2client.client.SignedJwtAssertionCredentials.__init__
-oauth2client.crypt.Signer.__init__
-oauth2client.crypt.Verifier.__init__
 oauth2client.django_orm.CredentialsField.__init__
 oauth2client.django_orm.FlowField.__init__
 oauth2client.django_orm.Storage.__init__
@@ -165,41 +166,41 @@
 oauth2client.locked_file.LockedFile.__init__
 oauth2client.locked_file._Opener.__init__
 oauth2client.multistore_file._MultiStore._Storage.__init__
-oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-14', '__init__', 'link-14');">__init__</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L64"></a><tt class="py-lineno">64</tt>  <tt class="py-line">        <tt class="py-string">'ignored'</tt> <tt class="py-comment"># assertion_type is ignore in this subclass.</tt> </tt>
-<a name="L65"></a><tt class="py-lineno">65</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
-</div><a name="L66"></a><tt class="py-lineno">66</tt>  <tt class="py-line"> </tt>
-<a name="L67"></a><tt class="py-lineno">67</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
-<a name="AppAssertionCredentials.from_json"></a><div id="AppAssertionCredentials.from_json-def"><a name="L68"></a><tt class="py-lineno">68</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials.from_json-toggle" onclick="return toggle('AppAssertionCredentials.from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.gce.AppAssertionCredentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">json</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AppAssertionCredentials.from_json-collapsed" style="display:none;" pad="++" indent="++++++"></div><div id="AppAssertionCredentials.from_json-expanded"><a name="L69"></a><tt class="py-lineno">69</tt>  <tt class="py-line">    <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-15', 'loads', 'link-15');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">json</tt><tt class="py-op">)</tt> </tt>
-<a name="L70"></a><tt class="py-lineno">70</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-16" class="py-name"><a title="oauth2client.appengine.AppAssertionCredentials
-oauth2client.gce.AppAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-16', 'AppAssertionCredentials', 'link-13');">AppAssertionCredentials</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'scope'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L71"></a><tt class="py-lineno">71</tt>  <tt class="py-line"> </tt>
-<a name="AppAssertionCredentials._refresh"></a><div id="AppAssertionCredentials._refresh-def"><a name="L72"></a><tt class="py-lineno">72</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials._refresh-toggle" onclick="return toggle('AppAssertionCredentials._refresh');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.gce.AppAssertionCredentials-class.html#_refresh">_refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AppAssertionCredentials._refresh-collapsed" style="display:none;" pad="++" indent="++++++"></div><div id="AppAssertionCredentials._refresh-expanded"><a name="L73"></a><tt class="py-lineno">73</tt>  <tt class="py-line">    <tt class="py-docstring">"""Refreshes the access_token.</tt> </tt>
+oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-16', '__init__', 'link-16');">__init__</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">62</tt>  <tt class="py-line">        <tt class="py-string">'ignored'</tt> <tt class="py-comment"># assertion_type is ignore in this subclass.</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">63</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+</div><a name="L64"></a><tt class="py-lineno">64</tt>  <tt class="py-line"> </tt>
+<a name="L65"></a><tt class="py-lineno">65</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="AppAssertionCredentials.from_json"></a><div id="AppAssertionCredentials.from_json-def"><a name="L66"></a><tt class="py-lineno">66</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials.from_json-toggle" onclick="return toggle('AppAssertionCredentials.from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.gce.AppAssertionCredentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">json</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppAssertionCredentials.from_json-collapsed" style="display:none;" pad="++" indent="++++++"></div><div id="AppAssertionCredentials.from_json-expanded"><a name="L67"></a><tt class="py-lineno">67</tt>  <tt class="py-line">    <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-17', 'loads', 'link-17');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">json</tt><tt class="py-op">)</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">68</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-18" class="py-name"><a title="oauth2client.appengine.AppAssertionCredentials
+oauth2client.gce.AppAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-18', 'AppAssertionCredentials', 'link-15');">AppAssertionCredentials</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'scope'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L69"></a><tt class="py-lineno">69</tt>  <tt class="py-line"> </tt>
+<a name="AppAssertionCredentials._refresh"></a><div id="AppAssertionCredentials._refresh-def"><a name="L70"></a><tt class="py-lineno">70</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials._refresh-toggle" onclick="return toggle('AppAssertionCredentials._refresh');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.gce.AppAssertionCredentials-class.html#_refresh">_refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppAssertionCredentials._refresh-collapsed" style="display:none;" pad="++" indent="++++++"></div><div id="AppAssertionCredentials._refresh-expanded"><a name="L71"></a><tt class="py-lineno">71</tt>  <tt class="py-line">    <tt class="py-docstring">"""Refreshes the access_token.</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">72</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L73"></a><tt class="py-lineno">73</tt>  <tt class="py-line"><tt class="py-docstring">    Skip all the storage hoops and just refresh using the API.</tt> </tt>
 <a name="L74"></a><tt class="py-lineno">74</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L75"></a><tt class="py-lineno">75</tt>  <tt class="py-line"><tt class="py-docstring">    Skip all the storage hoops and just refresh using the API.</tt> </tt>
-<a name="L76"></a><tt class="py-lineno">76</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L77"></a><tt class="py-lineno">77</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L78"></a><tt class="py-lineno">78</tt>  <tt class="py-line"><tt class="py-docstring">      http_request: callable, a callable that matches the method signature of</tt> </tt>
-<a name="L79"></a><tt class="py-lineno">79</tt>  <tt class="py-line"><tt class="py-docstring">        httplib2.Http.request, used to make the refresh request.</tt> </tt>
-<a name="L80"></a><tt class="py-lineno">80</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L81"></a><tt class="py-lineno">81</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L82"></a><tt class="py-lineno">82</tt>  <tt class="py-line"><tt class="py-docstring">      AccessTokenRefreshError: When the refresh fails.</tt> </tt>
-<a name="L83"></a><tt class="py-lineno">83</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L84"></a><tt class="py-lineno">84</tt>  <tt class="py-line">    <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt id="link-17" class="py-name"><a title="oauth2client.gce.META" class="py-name" href="#" onclick="return doclink('link-17', 'META', 'link-11');">META</a></tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'scope'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L85"></a><tt class="py-lineno">85</tt>  <tt class="py-line">    <tt id="link-18" class="py-name" targets="Method apiclient.model.BaseModel.response()=apiclient.model.BaseModel-class.html#response,Method apiclient.model.Model.response()=apiclient.model.Model-class.html#response"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-18', 'response', 'link-18');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">http_request</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L86"></a><tt class="py-lineno">86</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-19" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-19', 'response', 'link-18');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt><tt class="py-op">:</tt> </tt>
-<a name="L87"></a><tt class="py-lineno">87</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L88"></a><tt class="py-lineno">88</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-20', 'loads', 'link-15');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L89"></a><tt class="py-lineno">89</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt> <tt class="py-name">StandardError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L90"></a><tt class="py-lineno">90</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-21" class="py-name"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-21', 'AccessTokenRefreshError', 'link-6');">AccessTokenRefreshError</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L91"></a><tt class="py-lineno">91</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'accessToken'</tt><tt class="py-op">]</tt> </tt>
-<a name="L92"></a><tt class="py-lineno">92</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L93"></a><tt class="py-lineno">93</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-22" class="py-name"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-22', 'AccessTokenRefreshError', 'link-6');">AccessTokenRefreshError</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L94"></a><tt class="py-lineno">94</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<a name="L75"></a><tt class="py-lineno">75</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">76</tt>  <tt class="py-line"><tt class="py-docstring">      http_request: callable, a callable that matches the method signature of</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">77</tt>  <tt class="py-line"><tt class="py-docstring">        httplib2.Http.request, used to make the refresh request.</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">78</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L79"></a><tt class="py-lineno">79</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">80</tt>  <tt class="py-line"><tt class="py-docstring">      AccessTokenRefreshError: When the refresh fails.</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">81</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">82</tt>  <tt class="py-line">    <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt id="link-19" class="py-name"><a title="oauth2client.gce.META" class="py-name" href="#" onclick="return doclink('link-19', 'META', 'link-11');">META</a></tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'scope'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">83</tt>  <tt class="py-line">    <tt id="link-20" class="py-name" targets="Method apiclient.model.BaseModel.response()=apiclient.model.BaseModel-class.html#response,Method apiclient.model.Model.response()=apiclient.model.Model-class.html#response"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-20', 'response', 'link-20');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">http_request</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">84</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-21" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-21', 'response', 'link-20');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt><tt class="py-op">:</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">85</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">86</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-22', 'loads', 'link-17');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">87</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt> <tt class="py-name">StandardError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">88</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-23" class="py-name"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-23', 'AccessTokenRefreshError', 'link-6');">AccessTokenRefreshError</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">89</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'accessToken'</tt><tt class="py-op">]</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">90</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L91"></a><tt class="py-lineno">91</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-24" class="py-name"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-24', 'AccessTokenRefreshError', 'link-6');">AccessTokenRefreshError</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L92"></a><tt class="py-lineno">92</tt>  <tt class="py-line"> </tt><script type="text/javascript">
 <!--
 expandto(location.href);
 // -->
@@ -229,7 +230,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:48 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.gce.AppAssertionCredentials-class.html b/docs/epy/oauth2client.gce.AppAssertionCredentials-class.html
index 55e8e53..79ce7d6 100644
--- a/docs/epy/oauth2client.gce.AppAssertionCredentials-class.html
+++ b/docs/epy/oauth2client.gce.AppAssertionCredentials-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class AppAssertionCredentials</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.gce-pysrc.html#AppAssertionCredentials">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_appasserti_2" name="class_hierarchy_for_appasserti_2">
-<area shape="rect" href="oauth2client.client.AssertionCredentials-class.html" title="client.AssertionCredentials" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="oauth2client.client.Credentials-class.html" title="client.Credentials" alt="" coords="205,5,325,32"/>
-<area shape="rect" href="oauth2client.client.OAuth2Credentials-class.html" title="client.OAuth2Credentials" alt="" coords="349,5,515,32"/>
-<area shape="rect" href="oauth2client.gce.AppAssertionCredentials-class.html" title="AppAssertionCredentials" alt="" coords="539,5,701,32"/>
+<area shape="rect" id="node1" href="oauth2client.client.AssertionCredentials-class.html" title="client.AssertionCredentials" alt="" coords="5,6,184,34"/>
+<area shape="rect" id="node2" href="oauth2client.client.Credentials-class.html" title="client.Credentials" alt="" coords="208,6,331,34"/>
+<area shape="rect" id="node3" href="oauth2client.client.OAuth2Credentials-class.html" title="client.OAuth2Credentials" alt="" coords="355,6,520,34"/>
+<area shape="rect" id="node4" href="oauth2client.gce.AppAssertionCredentials-class.html" title="AppAssertionCredentials" alt="" coords="544,6,709,34"/>
 </map>
   <img src="class_hierarchy_for_appasserti_2.gif" alt='' usemap="#class_hierarchy_for_appasserti_2" ismap="ismap" class="graph-without-title" />
 </center>
@@ -306,7 +306,7 @@
 Constructor for AppAssertionCredentials
 
 Args:
-  scope: string or list of strings, scope(s) of the credentials being
+  scope: string or iterable of strings, scope(s) of the credentials being
     requested.
 
 </pre>
@@ -415,7 +415,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:44 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.keyring_storage-module.html b/docs/epy/oauth2client.keyring_storage-module.html
index bf634aa..55899e8 100644
--- a/docs/epy/oauth2client.keyring_storage-module.html
+++ b/docs/epy/oauth2client.keyring_storage-module.html
@@ -113,7 +113,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.keyring_storage-pysrc.html b/docs/epy/oauth2client.keyring_storage-pysrc.html
index c174a8d..caffbc1 100644
--- a/docs/epy/oauth2client.keyring_storage-pysrc.html
+++ b/docs/epy/oauth2client.keyring_storage-pysrc.html
@@ -137,18 +137,22 @@
 <a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
 <a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">      oauth2client.client.Credentials</tt> </tt>
 <a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">    <tt id="link-7" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-7', 'credentials', 'link-7');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">    <tt id="link-7" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-7', 'credentials', 'link-7');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
 <a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">    <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">keyring</tt><tt class="py-op">.</tt><tt class="py-name">get_password</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_service_name</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_user_name</tt><tt class="py-op">)</tt> </tt>
 <a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"> </tt>
 <a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">content</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
 <a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt id="link-8" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-8', 'credentials', 'link-7');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-9', 'Credentials', 'link-3');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt id="link-8" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-8', 'credentials', 'link-7');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-9', 'Credentials', 'link-3');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
 oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-10', 'new_from_json', 'link-10');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt id="link-11" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-11', 'credentials', 'link-7');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-12', 'set_store', 'link-12');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt id="link-11" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-11', 'credentials', 'link-7');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-12', 'set_store', 'link-12');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
 <a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
 <a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
 <a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"> </tt>
-<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-13" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-13', 'credentials', 'link-7');">credentials</a></tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-13" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-13', 'credentials', 'link-7');">credentials</a></tt> </tt>
 </div><a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"> </tt>
 <a name="Storage.locked_put"></a><div id="Storage.locked_put-def"><a name="L94"></a><tt class="py-lineno"> 94</tt> <a class="py-toggle" href="#" id="Storage.locked_put-toggle" onclick="return toggle('Storage.locked_put');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.keyring_storage.Storage-class.html#locked_put">locked_put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
 </div><div id="Storage.locked_put-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Storage.locked_put-expanded"><a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">    <tt class="py-docstring">"""Write Credentials to file.</tt> </tt>
@@ -157,7 +161,8 @@
 <a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">      credentials: Credentials, the credentials to store.</tt> </tt>
 <a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
 <a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">    <tt class="py-name">keyring</tt><tt class="py-op">.</tt><tt class="py-name">set_password</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_service_name</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_user_name</tt><tt class="py-op">,</tt> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">                         <tt id="link-14" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-14', 'credentials', 'link-7');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">                         <tt id="link-14" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-14', 'credentials', 'link-7');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
 apiclient.http.MediaFileUpload.to_json
 apiclient.http.MediaIoBaseUpload.to_json
 apiclient.http.MediaUpload.to_json
@@ -201,7 +206,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:48 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.keyring_storage.Storage-class.html b/docs/epy/oauth2client.keyring_storage.Storage-class.html
index 96b659c..1786007 100644
--- a/docs/epy/oauth2client.keyring_storage.Storage-class.html
+++ b/docs/epy/oauth2client.keyring_storage.Storage-class.html
@@ -56,8 +56,8 @@
 <h1 class="epydoc">Class Storage</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.keyring_storage-pysrc.html#Storage">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_storage_4" name="class_hierarchy_for_storage_4">
-<area shape="rect" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="5,5,107,32"/>
-<area shape="rect" href="oauth2client.keyring_storage.Storage-class.html" title="Storage" alt="" coords="131,5,197,32"/>
+<area shape="rect" id="node1" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="5,6,107,34"/>
+<area shape="rect" id="node2" href="oauth2client.keyring_storage.Storage-class.html" title="Storage" alt="" coords="131,6,197,34"/>
 </map>
   <img src="class_hierarchy_for_storage_4.gif" alt='' usemap="#class_hierarchy_for_storage_4" ismap="ismap" class="graph-without-title" />
 </center>
@@ -470,7 +470,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:44 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.locked_file-module.html b/docs/epy/oauth2client.locked_file-module.html
index 068a4b6..efb4977 100644
--- a/docs/epy/oauth2client.locked_file-module.html
+++ b/docs/epy/oauth2client.locked_file-module.html
@@ -229,7 +229,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.locked_file-pysrc.html b/docs/epy/oauth2client.locked_file-pysrc.html
index 2f072fa..2e62a8e 100644
--- a/docs/epy/oauth2client.locked_file-pysrc.html
+++ b/docs/epy/oauth2client.locked_file-pysrc.html
@@ -130,7 +130,7 @@
 <a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> </tt>
 </div><a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"> </tt>
 <a name="_Opener.file_handle"></a><div id="_Opener.file_handle-def"><a name="L66"></a><tt class="py-lineno"> 66</tt> <a class="py-toggle" href="#" id="_Opener.file_handle-toggle" onclick="return toggle('_Opener.file_handle');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html#file_handle">file_handle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_Opener.file_handle-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Opener.file_handle-expanded"><a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">    <tt class="py-docstring">"""The file handle to the file.  Valid only after opened."""</tt> </tt>
+</div><div id="_Opener.file_handle-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Opener.file_handle-expanded"><a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">    <tt class="py-docstring">"""The file handle to the file. Valid only after opened."""</tt> </tt>
 <a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> </tt>
 </div><a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"> </tt>
 <a name="_Opener.filename"></a><div id="_Opener.filename-def"><a name="L70"></a><tt class="py-lineno"> 70</tt> <a class="py-toggle" href="#" id="_Opener.filename-toggle" onclick="return toggle('_Opener.filename');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html#filename">filename</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -272,7 +272,7 @@
 <a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt>
 <a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">errno</tt> <tt class="py-op">!=</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EACCES</tt><tt class="py-op">:</tt> </tt>
 <a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt>
-<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">          <tt class="py-comment"># We could not acquire the lock.  Try again.</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">          <tt class="py-comment"># We could not acquire the lock. Try again.</tt> </tt>
 <a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">start_time</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">timeout</tt><tt class="py-op">:</tt> </tt>
 <a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">            <tt id="link-15" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
@@ -361,7 +361,7 @@
 <a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt id="link-19" class="py-name" targets="Variable oauth2client.locked_file._Win32Opener=oauth2client.locked_file-module.html#_Win32Opener"><a title="oauth2client.locked_file._Win32Opener" class="py-name" href="#" onclick="return doclink('link-19', '_Win32Opener', 'link-19');">_Win32Opener</a></tt><tt class="py-op">.</tt><tt class="py-name">FILE_IN_USE_ERROR</tt><tt class="py-op">:</tt> </tt>
 <a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> </tt>
 <a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line"> </tt>
-<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">          <tt class="py-comment"># We could not acquire the lock.  Try again.</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">          <tt class="py-comment"># We could not acquire the lock. Try again.</tt> </tt>
 <a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">start_time</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">timeout</tt><tt class="py-op">:</tt> </tt>
 <a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">            <tt id="link-20" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
@@ -486,7 +486,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:47 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.locked_file.AlreadyLockedException-class.html b/docs/epy/oauth2client.locked_file.AlreadyLockedException-class.html
index 09cb3a8..44d1ca9 100644
--- a/docs/epy/oauth2client.locked_file.AlreadyLockedException-class.html
+++ b/docs/epy/oauth2client.locked_file.AlreadyLockedException-class.html
@@ -56,9 +56,9 @@
 <h1 class="epydoc">Class AlreadyLockedException</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.locked_file-pysrc.html#AlreadyLockedException">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_alreadyloc" name="class_hierarchy_for_alreadyloc">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
-<area shape="rect" href="oauth2client.locked_file.AlreadyLockedException-class.html" title="AlreadyLockedException" alt="" coords="11,117,176,144"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<area shape="rect" id="node3" href="oauth2client.locked_file.AlreadyLockedException-class.html" title="AlreadyLockedException" alt="" coords="11,123,176,151"/>
 </map>
   <img src="class_hierarchy_for_alreadyloc.gif" alt='' usemap="#class_hierarchy_for_alreadyloc" ismap="ismap" class="graph-without-title" />
 </center>
@@ -166,7 +166,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:44 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html b/docs/epy/oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html
index 1b8598d..56a4c40 100644
--- a/docs/epy/oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html
+++ b/docs/epy/oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html
@@ -55,12 +55,12 @@
 <!-- ==================== CLASS DESCRIPTION ==================== -->
 <h1 class="epydoc">Class CredentialsFileSymbolicLinkError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.locked_file-pysrc.html#CredentialsFileSymbolicLinkError">source&nbsp;code</a></span></p>
 <center>
-<center>  <map id="class_hierarchy_for_credential_6" name="class_hierarchy_for_credential_6">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="24,5,200,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="39,61,185,88"/>
-<area shape="rect" href="oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html" title="CredentialsFileSymbolicLinkError" alt="" coords="5,117,219,144"/>
+<center>  <map id="class_hierarchy_for_credential_8" name="class_hierarchy_for_credential_8">
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="24,6,200,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="39,65,185,93"/>
+<area shape="rect" id="node3" href="oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html" title="CredentialsFileSymbolicLinkError" alt="" coords="5,123,219,151"/>
 </map>
-  <img src="class_hierarchy_for_credential_6.gif" alt='' usemap="#class_hierarchy_for_credential_6" ismap="ismap" class="graph-without-title" />
+  <img src="class_hierarchy_for_credential_8.gif" alt='' usemap="#class_hierarchy_for_credential_8" ismap="ismap" class="graph-without-title" />
 </center>
 </center>
 <hr />
@@ -166,7 +166,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:45 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.locked_file.LockedFile-class.html b/docs/epy/oauth2client.locked_file.LockedFile-class.html
index bef059a..a941c60 100644
--- a/docs/epy/oauth2client.locked_file.LockedFile-class.html
+++ b/docs/epy/oauth2client.locked_file.LockedFile-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class LockedFile</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.locked_file-pysrc.html#LockedFile">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_lockedfile" name="class_hierarchy_for_lockedfile">
-<area shape="rect" href="oauth2client.locked_file.LockedFile-class.html" title="LockedFile" alt="" coords="5,5,88,32"/>
+<area shape="rect" id="node1" href="oauth2client.locked_file.LockedFile-class.html" title="LockedFile" alt="" coords="5,6,91,34"/>
 </map>
   <img src="class_hierarchy_for_lockedfile.gif" alt='' usemap="#class_hierarchy_for_lockedfile" ismap="ismap" class="graph-without-title" />
 </center>
@@ -350,7 +350,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:45 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.locked_file._Opener-class.html b/docs/epy/oauth2client.locked_file._Opener-class.html
index 44b245f..99601ca 100644
--- a/docs/epy/oauth2client.locked_file._Opener-class.html
+++ b/docs/epy/oauth2client.locked_file._Opener-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class _Opener</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.locked_file-pysrc.html#_Opener">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for__opener" name="class_hierarchy_for__opener">
-<area shape="rect" href="oauth2client.locked_file._Opener-class.html" title="_Opener" alt="" coords="5,5,75,32"/>
+<area shape="rect" id="node1" href="oauth2client.locked_file._Opener-class.html" title="_Opener" alt="" coords="5,6,75,34"/>
 </map>
   <img src="class_hierarchy_for__opener.gif" alt='' usemap="#class_hierarchy_for__opener" ismap="ismap" class="graph-without-title" />
 </center>
@@ -302,7 +302,7 @@
   </tr></table>
   
   <pre class="literalblock">
-The file handle to the file.  Valid only after opened.
+The file handle to the file. Valid only after opened.
 
 </pre>
   <dl class="fields">
@@ -361,7 +361,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:45 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.locked_file._PosixOpener-class.html b/docs/epy/oauth2client.locked_file._PosixOpener-class.html
index 810b9ee..8b6f731 100644
--- a/docs/epy/oauth2client.locked_file._PosixOpener-class.html
+++ b/docs/epy/oauth2client.locked_file._PosixOpener-class.html
@@ -56,8 +56,8 @@
 <h1 class="epydoc">Class _PosixOpener</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.locked_file-pysrc.html#_PosixOpener">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for__posixopen" name="class_hierarchy_for__posixopen">
-<area shape="rect" href="oauth2client.locked_file._Opener-class.html" title="_Opener" alt="" coords="5,5,75,32"/>
-<area shape="rect" href="oauth2client.locked_file._PosixOpener-class.html" title="_PosixOpener" alt="" coords="99,5,203,32"/>
+<area shape="rect" id="node1" href="oauth2client.locked_file._Opener-class.html" title="_Opener" alt="" coords="5,6,75,34"/>
+<area shape="rect" id="node2" href="oauth2client.locked_file._PosixOpener-class.html" title="_PosixOpener" alt="" coords="99,6,203,34"/>
 </map>
   <img src="class_hierarchy_for__posixopen.gif" alt='' usemap="#class_hierarchy_for__posixopen" ismap="ismap" class="graph-without-title" />
 </center>
@@ -294,7 +294,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:45 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.multistore_file-module.html b/docs/epy/oauth2client.multistore_file-module.html
index 95633ac..9783b53 100644
--- a/docs/epy/oauth2client.multistore_file-module.html
+++ b/docs/epy/oauth2client.multistore_file-module.html
@@ -57,7 +57,7 @@
 Multi-credential file store with lock support.
 
 This module implements a JSON credential store where multiple
-credentials can be stored in one file.  That file supports locking
+credentials can be stored in one file. That file supports locking
 both in a single process and across processes.
 
 The credential themselves are keyed off of:
@@ -168,6 +168,44 @@
       
     </td>
   </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="oauth2client.multistore_file-module.html#get_credential_storage_custom_string_key" class="summary-sig-name">get_credential_storage_custom_string_key</a>(<span class="summary-sig-arg">filename</span>,
+        <span class="summary-sig-arg">key_string</span>,
+        <span class="summary-sig-arg">warn_on_readonly</span>=<span class="summary-sig-default">True</span>)</span><br />
+      Get a Storage instance for a credential using a single string as a key.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#get_credential_storage_custom_string_key">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="oauth2client.multistore_file-module.html#get_credential_storage_custom_key" class="summary-sig-name">get_credential_storage_custom_key</a>(<span class="summary-sig-arg">filename</span>,
+        <span class="summary-sig-arg">key_dict</span>,
+        <span class="summary-sig-arg">warn_on_readonly</span>=<span class="summary-sig-default">True</span>)</span><br />
+      Get a Storage instance for a credential using a dictionary as a key.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#get_credential_storage_custom_key">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
 </table>
 <!-- ==================== VARIABLES ==================== -->
 <a name="section-Variables"></a>
@@ -251,7 +289,7 @@
   filename: The JSON file storing a set of credentials
   client_id: The client_id for the credential
   user_agent: The user agent for the credential
-  scope: string or list of strings, Scope(s) being requested
+  scope: string or iterable of strings, Scope(s) being requested
   warn_on_readonly: if True, log a warning if the store is readonly
 
 Returns:
@@ -267,6 +305,88 @@
   </dl>
 </td></tr></table>
 </div>
+<a name="get_credential_storage_custom_string_key"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_credential_storage_custom_string_key</span>(<span class="sig-arg">filename</span>,
+        <span class="sig-arg">key_string</span>,
+        <span class="sig-arg">warn_on_readonly</span>=<span class="sig-default">True</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#get_credential_storage_custom_string_key">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Get a Storage instance for a credential using a single string as a key.
+
+Allows you to provide a string as a custom key that will be used for
+credential storage and retrieval.
+
+Args:
+  filename: The JSON file storing a set of credentials
+  key_string: A string to use as the key for storing this credential.
+  warn_on_readonly: if True, log a warning if the store is readonly
+
+Returns:
+  An object derived from client.Storage for getting/setting the
+  credential.
+
+</pre>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@util.positional(2)</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_credential_storage_custom_key"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_credential_storage_custom_key</span>(<span class="sig-arg">filename</span>,
+        <span class="sig-arg">key_dict</span>,
+        <span class="sig-arg">warn_on_readonly</span>=<span class="sig-default">True</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#get_credential_storage_custom_key">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Get a Storage instance for a credential using a dictionary as a key.
+
+Allows you to provide a dictionary as a custom key that will be used for
+credential storage and retrieval.
+
+Args:
+  filename: The JSON file storing a set of credentials
+  key_dict: A dictionary to use as the key for storing this credential. There
+    is no ordering of the keys in the dictionary. Logically equivalent
+    dictionaries will produce equivalent storage keys.
+  warn_on_readonly: if True, log a warning if the store is readonly
+
+Returns:
+  An object derived from client.Storage for getting/setting the
+  credential.
+
+</pre>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@util.positional(2)</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
 <br />
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
@@ -291,7 +411,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.multistore_file-pysrc.html b/docs/epy/oauth2client.multistore_file-pysrc.html
index 738b543..6f19879 100644
--- a/docs/epy/oauth2client.multistore_file-pysrc.html
+++ b/docs/epy/oauth2client.multistore_file-pysrc.html
@@ -58,7 +58,7 @@
 <a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-docstring">"""Multi-credential file store with lock support.</tt> </tt>
 <a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
 <a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-docstring">This module implements a JSON credential store where multiple</tt> </tt>
-<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-docstring">credentials can be stored in one file.  That file supports locking</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-docstring">credentials can be stored in one file. That file supports locking</tt> </tt>
 <a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-docstring">both in a single process and across processes.</tt> </tt>
 <a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
 <a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">The credential themselves are keyed off of:</tt> </tt>
@@ -134,381 +134,414 @@
 <a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">    filename: The JSON file storing a set of credentials</tt> </tt>
 <a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">    client_id: The client_id for the credential</tt> </tt>
 <a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring">    user_agent: The user agent for the credential</tt> </tt>
-<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">    scope: string or list of strings, Scope(s) being requested</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">    scope: string or iterable of strings, Scope(s) being requested</tt> </tt>
 <a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">    warn_on_readonly: if True, log a warning if the store is readonly</tt> </tt>
 <a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
 <a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
 <a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">    An object derived from client.Storage for getting/setting the</tt> </tt>
 <a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">    credential.</tt> </tt>
 <a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">  <tt id="link-15" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-15', 'filename', 'link-15');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expanduser</tt><tt class="py-op">(</tt><tt id="link-16" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-16', 'filename', 'link-15');">filename</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">  <tt id="link-17" class="py-name"><a title="oauth2client.multistore_file._multistores_lock" class="py-name" href="#" onclick="return doclink('link-17', '_multistores_lock', 'link-13');">_multistores_lock</a></tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">    <tt class="py-name">multistore</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name"><a title="oauth2client.multistore_file._multistores" class="py-name" href="#" onclick="return doclink('link-18', '_multistores', 'link-12');">_multistores</a></tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt> </tt>
-<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt id="link-19" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-19', 'filename', 'link-15');">filename</a></tt><tt class="py-op">,</tt> <tt id="link-20" class="py-name" targets="Class oauth2client.multistore_file._MultiStore=oauth2client.multistore_file._MultiStore-class.html"><a title="oauth2client.multistore_file._MultiStore" class="py-name" href="#" onclick="return doclink('link-20', '_MultiStore', 'link-20');">_MultiStore</a></tt><tt class="py-op">(</tt><tt id="link-21" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-21', 'filename', 'link-15');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">warn_on_readonly</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">  <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
-<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">    <tt id="link-22" class="py-name"><a title="oauth2client.multistore_file._multistores_lock" class="py-name" href="#" onclick="return doclink('link-22', '_multistores_lock', 'link-13');">_multistores_lock</a></tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">list</tt><tt class="py-op">:</tt> </tt>
-<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">    <tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
-<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">multistore</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._get_storage()=oauth2client.multistore_file._MultiStore-class.html#_get_storage"><a title="oauth2client.multistore_file._MultiStore._get_storage" class="py-name" href="#" onclick="return doclink('link-23', '_get_storage', 'link-23');">_get_storage</a></tt><tt class="py-op">(</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> <tt class="py-name">user_agent</tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore"></a><div id="_MultiStore-def"><a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"> </tt>
-<a name="L91"></a><tt class="py-lineno"> 91</tt> <a class="py-toggle" href="#" id="_MultiStore-toggle" onclick="return toggle('_MultiStore');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html">_MultiStore</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_MultiStore-expanded"><a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">  <tt class="py-docstring">"""A file backed store for multiple credentials."""</tt> </tt>
-<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"> </tt>
-<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-24', 'positional', 'link-14');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="_MultiStore.__init__"></a><div id="_MultiStore.__init__-def"><a name="L95"></a><tt class="py-lineno"> 95</tt> <a class="py-toggle" href="#" id="_MultiStore.__init__-toggle" onclick="return toggle('_MultiStore.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore.__init__-expanded"><a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">    <tt class="py-docstring">"""Initialize the class.</tt> </tt>
-<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">    This will create the file if necessary.</tt> </tt>
-<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="oauth2client.locked_file.LockedFile" class="py-name" href="#" onclick="return doclink('link-25', 'LockedFile', 'link-10');">LockedFile</a></tt><tt class="py-op">(</tt><tt id="link-26" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-26', 'filename', 'link-15');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-string">'r+b'</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_warn_on_readonly</tt> <tt class="py-op">=</tt> <tt class="py-name">warn_on_readonly</tt> </tt>
-<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"> </tt>
-<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method oauth2client.file.Storage._create_file_if_needed()=oauth2client.file.Storage-class.html#_create_file_if_needed,Method oauth2client.multistore_file._MultiStore._create_file_if_needed()=oauth2client.multistore_file._MultiStore-class.html#_create_file_if_needed"><a title="oauth2client.file.Storage._create_file_if_needed
-oauth2client.multistore_file._MultiStore._create_file_if_needed" class="py-name" href="#" onclick="return doclink('link-27', '_create_file_if_needed', 'link-27');">_create_file_if_needed</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"> </tt>
-<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">    <tt class="py-comment"># Cache of deserialized store.  This is only valid after the</tt> </tt>
-<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">    <tt class="py-comment"># _MultiStore is locked or _refresh_data_cache is called.  This is</tt> </tt>
-<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">    <tt class="py-comment"># of the form of:</tt> </tt>
-<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">    <tt class="py-comment">#</tt> </tt>
-<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">    <tt class="py-comment"># (client_id, user_agent, scope) -&gt; OAuth2Credential</tt> </tt>
-<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">    <tt class="py-comment">#</tt> </tt>
-<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">    <tt class="py-comment"># If this is None, then the store hasn't been read yet.</tt> </tt>
-<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-</div><a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._Storage"></a><div id="_MultiStore._Storage-def"><a name="L116"></a><tt class="py-lineno">116</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage-toggle" onclick="return toggle('_MultiStore._Storage');">-</a><tt class="py-line">  <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html">_Storage</a><tt class="py-op">(</tt><tt class="py-base-class">BaseStorage</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._Storage-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._Storage-expanded"><a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">    <tt class="py-docstring">"""A Storage object that knows how to read/write a single credential."""</tt> </tt>
-<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._Storage.__init__"></a><div id="_MultiStore._Storage.__init__-def"><a name="L119"></a><tt class="py-lineno">119</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.__init__-toggle" onclick="return toggle('_MultiStore._Storage.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">multistore</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._Storage.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.__init__-expanded"><a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt> <tt class="py-op">=</tt> <tt class="py-name">multistore</tt> </tt>
-<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_id</tt> <tt class="py-op">=</tt> <tt class="py-name">client_id</tt> </tt>
-<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_user_agent</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
-<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_scope</tt> <tt class="py-op">=</tt> <tt class="py-name">scope</tt> </tt>
-</div><a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._Storage.acquire_lock"></a><div id="_MultiStore._Storage.acquire_lock-def"><a name="L125"></a><tt class="py-lineno">125</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.acquire_lock-toggle" onclick="return toggle('_MultiStore._Storage.acquire_lock');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#acquire_lock">acquire_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._Storage.acquire_lock-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.acquire_lock-expanded"><a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">      <tt class="py-docstring">"""Acquires any lock necessary to access this Storage.</tt> </tt>
-<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-docstring">      This lock is not reentrant.</tt> </tt>
-<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
-<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._lock()=oauth2client.multistore_file._MultiStore-class.html#_lock"><a title="oauth2client.multistore_file._MultiStore._lock" class="py-name" href="#" onclick="return doclink('link-28', '_lock', 'link-28');">_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._Storage.release_lock"></a><div id="_MultiStore._Storage.release_lock-def"><a name="L132"></a><tt class="py-lineno">132</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.release_lock-toggle" onclick="return toggle('_MultiStore._Storage.release_lock');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#release_lock">release_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._Storage.release_lock-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.release_lock-expanded"><a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">      <tt class="py-docstring">"""Release the Storage lock.</tt> </tt>
-<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-docstring">      Trying to release a lock that isn't held will result in a</tt> </tt>
-<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-docstring">      RuntimeError.</tt> </tt>
-<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
-<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._unlock()=oauth2client.multistore_file._MultiStore-class.html#_unlock"><a title="oauth2client.multistore_file._MultiStore._unlock" class="py-name" href="#" onclick="return doclink('link-29', '_unlock', 'link-29');">_unlock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._Storage.locked_get"></a><div id="_MultiStore._Storage.locked_get-def"><a name="L140"></a><tt class="py-lineno">140</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.locked_get-toggle" onclick="return toggle('_MultiStore._Storage.locked_get');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#locked_get">locked_get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._Storage.locked_get-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.locked_get-expanded"><a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">      <tt class="py-docstring">"""Retrieve credential.</tt> </tt>
-<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-docstring">      The Storage lock must be held when this is called.</tt> </tt>
-<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-docstring">      Returns:</tt> </tt>
-<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-docstring">        oauth2client.client.Credentials</tt> </tt>
-<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
-<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">      <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._get_credential()=oauth2client.multistore_file._MultiStore-class.html#_get_credential"><a title="oauth2client.multistore_file._MultiStore._get_credential" class="py-name" href="#" onclick="return doclink('link-30', '_get_credential', 'link-30');">_get_credential</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_id</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_user_agent</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_scope</tt><tt class="py-op">)</tt> </tt>
-<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">credential</tt><tt class="py-op">:</tt> </tt>
-<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">        <tt class="py-name">credential</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-31', 'set_store', 'link-31');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
-<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">credential</tt> </tt>
-</div><a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._Storage.locked_put"></a><div id="_MultiStore._Storage.locked_put-def"><a name="L154"></a><tt class="py-lineno">154</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.locked_put-toggle" onclick="return toggle('_MultiStore._Storage.locked_put');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#locked_put">locked_put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._Storage.locked_put-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.locked_put-expanded"><a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">      <tt class="py-docstring">"""Write a credential.</tt> </tt>
-<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-docstring">      The Storage lock must be held when this is called.</tt> </tt>
-<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
-<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-docstring">        credentials: Credentials, the credentials to store.</tt> </tt>
-<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
-<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._update_credential()=oauth2client.multistore_file._MultiStore-class.html#_update_credential"><a title="oauth2client.multistore_file._MultiStore._update_credential" class="py-name" href="#" onclick="return doclink('link-32', '_update_credential', 'link-32');">_update_credential</a></tt><tt class="py-op">(</tt><tt id="link-33" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-33', 'credentials', 'link-33');">credentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_scope</tt><tt class="py-op">)</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">  <tt class="py-comment"># Recreate the legacy key with these specific parameters</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">  <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'clientId'</tt><tt class="py-op">:</tt> <tt class="py-name">client_id</tt><tt class="py-op">,</tt> <tt class="py-string">'userAgent'</tt><tt class="py-op">:</tt> <tt class="py-name">user_agent</tt><tt class="py-op">,</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">         <tt class="py-string">'scope'</tt><tt class="py-op">:</tt> <tt id="link-15" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-15', 'util', 'link-8');">util</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Function oauth2client.util.scopes_to_string()=oauth2client.util-module.html#scopes_to_string"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-16', 'scopes_to_string', 'link-16');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt><tt class="py-op">}</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-17" class="py-name" targets="Function oauth2client.multistore_file.get_credential_storage_custom_key()=oauth2client.multistore_file-module.html#get_credential_storage_custom_key"><a title="oauth2client.multistore_file.get_credential_storage_custom_key" class="py-name" href="#" onclick="return doclink('link-17', 'get_credential_storage_custom_key', 'link-17');">get_credential_storage_custom_key</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">      <tt id="link-18" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-18', 'filename', 'link-18');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">warn_on_readonly</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"> </tt>
+<a name="get_credential_storage_custom_string_key"></a><div id="get_credential_storage_custom_string_key-def"><a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-19', 'positional', 'link-14');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <a class="py-toggle" href="#" id="get_credential_storage_custom_string_key-toggle" onclick="return toggle('get_credential_storage_custom_string_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file-module.html#get_credential_storage_custom_string_key">get_credential_storage_custom_string_key</a><tt class="py-op">(</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">    <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">key_string</tt><tt class="py-op">,</tt> <tt class="py-param">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_credential_storage_custom_string_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_credential_storage_custom_string_key-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">  <tt class="py-docstring">"""Get a Storage instance for a credential using a single string as a key.</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring">  Allows you to provide a string as a custom key that will be used for</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring">  credential storage and retrieval.</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">    filename: The JSON file storing a set of credentials</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring">    key_string: A string to use as the key for storing this credential.</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring">    warn_on_readonly: if True, log a warning if the store is readonly</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">    An object derived from client.Storage for getting/setting the</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">    credential.</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">  <tt class="py-comment"># Create a key dictionary that can be used</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">  <tt class="py-name">key_dict</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'key'</tt><tt class="py-op">:</tt> <tt class="py-name">key_string</tt><tt class="py-op">}</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-20" class="py-name"><a title="oauth2client.multistore_file.get_credential_storage_custom_key" class="py-name" href="#" onclick="return doclink('link-20', 'get_credential_storage_custom_key', 'link-17');">get_credential_storage_custom_key</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">      <tt id="link-21" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-21', 'filename', 'link-18');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">key_dict</tt><tt class="py-op">,</tt> <tt class="py-name">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">warn_on_readonly</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"> </tt>
+<a name="get_credential_storage_custom_key"></a><div id="get_credential_storage_custom_key-def"><a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-22', 'positional', 'link-14');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <a class="py-toggle" href="#" id="get_credential_storage_custom_key-toggle" onclick="return toggle('get_credential_storage_custom_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file-module.html#get_credential_storage_custom_key">get_credential_storage_custom_key</a><tt class="py-op">(</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">    <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">key_dict</tt><tt class="py-op">,</tt> <tt class="py-param">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_credential_storage_custom_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_credential_storage_custom_key-expanded"><a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">  <tt class="py-docstring">"""Get a Storage instance for a credential using a dictionary as a key.</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-docstring">  Allows you to provide a dictionary as a custom key that will be used for</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-docstring">  credential storage and retrieval.</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring">    filename: The JSON file storing a set of credentials</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">    key_dict: A dictionary to use as the key for storing this credential. There</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring">      is no ordering of the keys in the dictionary. Logically equivalent</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring">      dictionaries will produce equivalent storage keys.</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring">    warn_on_readonly: if True, log a warning if the store is readonly</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-docstring">    An object derived from client.Storage for getting/setting the</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-docstring">    credential.</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">  <tt id="link-23" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-23', 'filename', 'link-18');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expanduser</tt><tt class="py-op">(</tt><tt id="link-24" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-24', 'filename', 'link-18');">filename</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">  <tt id="link-25" class="py-name"><a title="oauth2client.multistore_file._multistores_lock" class="py-name" href="#" onclick="return doclink('link-25', '_multistores_lock', 'link-13');">_multistores_lock</a></tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">    <tt class="py-name">multistore</tt> <tt class="py-op">=</tt> <tt id="link-26" class="py-name"><a title="oauth2client.multistore_file._multistores" class="py-name" href="#" onclick="return doclink('link-26', '_multistores', 'link-12');">_multistores</a></tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">        <tt id="link-27" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-27', 'filename', 'link-18');">filename</a></tt><tt class="py-op">,</tt> <tt id="link-28" class="py-name" targets="Class oauth2client.multistore_file._MultiStore=oauth2client.multistore_file._MultiStore-class.html"><a title="oauth2client.multistore_file._MultiStore" class="py-name" href="#" onclick="return doclink('link-28', '_MultiStore', 'link-28');">_MultiStore</a></tt><tt class="py-op">(</tt><tt id="link-29" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-29', 'filename', 'link-18');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">warn_on_readonly</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">  <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">    <tt id="link-30" class="py-name"><a title="oauth2client.multistore_file._multistores_lock" class="py-name" href="#" onclick="return doclink('link-30', '_multistores_lock', 'link-13');">_multistores_lock</a></tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">  <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-31" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-31', 'util', 'link-8');">util</a></tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Function oauth2client.util.dict_to_tuple_key()=oauth2client.util-module.html#dict_to_tuple_key"><a title="oauth2client.util.dict_to_tuple_key" class="py-name" href="#" onclick="return doclink('link-32', 'dict_to_tuple_key', 'link-32');">dict_to_tuple_key</a></tt><tt class="py-op">(</tt><tt class="py-name">key_dict</tt><tt class="py-op">)</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">multistore</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._get_storage()=oauth2client.multistore_file._MultiStore-class.html#_get_storage"><a title="oauth2client.multistore_file._MultiStore._get_storage" class="py-name" href="#" onclick="return doclink('link-33', '_get_storage', 'link-33');">_get_storage</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore"></a><div id="_MultiStore-def"><a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <a class="py-toggle" href="#" id="_MultiStore-toggle" onclick="return toggle('_MultiStore');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html">_MultiStore</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_MultiStore-expanded"><a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">  <tt class="py-docstring">"""A file backed store for multiple credentials."""</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-34', 'positional', 'link-14');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="_MultiStore.__init__"></a><div id="_MultiStore.__init__-def"><a name="L143"></a><tt class="py-lineno">143</tt> <a class="py-toggle" href="#" id="_MultiStore.__init__-toggle" onclick="return toggle('_MultiStore.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore.__init__-expanded"><a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">    <tt class="py-docstring">"""Initialize the class.</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-docstring">    This will create the file if necessary.</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt> <tt class="py-op">=</tt> <tt id="link-35" class="py-name"><a title="oauth2client.locked_file.LockedFile" class="py-name" href="#" onclick="return doclink('link-35', 'LockedFile', 'link-10');">LockedFile</a></tt><tt class="py-op">(</tt><tt id="link-36" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-36', 'filename', 'link-18');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-string">'r+b'</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_warn_on_readonly</tt> <tt class="py-op">=</tt> <tt class="py-name">warn_on_readonly</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method oauth2client.file.Storage._create_file_if_needed()=oauth2client.file.Storage-class.html#_create_file_if_needed,Method oauth2client.multistore_file._MultiStore._create_file_if_needed()=oauth2client.multistore_file._MultiStore-class.html#_create_file_if_needed"><a title="oauth2client.file.Storage._create_file_if_needed
+oauth2client.multistore_file._MultiStore._create_file_if_needed" class="py-name" href="#" onclick="return doclink('link-37', '_create_file_if_needed', 'link-37');">_create_file_if_needed</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">    <tt class="py-comment"># Cache of deserialized store. This is only valid after the</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">    <tt class="py-comment"># _MultiStore is locked or _refresh_data_cache is called. This is</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">    <tt class="py-comment"># of the form of:</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">    <tt class="py-comment">#</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">    <tt class="py-comment"># ((key, value), (key, value)...) -&gt; OAuth2Credential</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">    <tt class="py-comment">#</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">    <tt class="py-comment"># If this is None, then the store hasn't been read yet.</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
 </div><a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._Storage.locked_delete"></a><div id="_MultiStore._Storage.locked_delete-def"><a name="L164"></a><tt class="py-lineno">164</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.locked_delete-toggle" onclick="return toggle('_MultiStore._Storage.locked_delete');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#locked_delete">locked_delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._Storage.locked_delete-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.locked_delete-expanded"><a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">      <tt class="py-docstring">"""Delete a credential.</tt> </tt>
-<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-docstring">      The Storage lock must be held when this is called.</tt> </tt>
-<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
-<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-docstring">        credentials: Credentials, the credentials to store.</tt> </tt>
-<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
-<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._delete_credential()=oauth2client.multistore_file._MultiStore-class.html#_delete_credential"><a title="oauth2client.multistore_file._MultiStore._delete_credential" class="py-name" href="#" onclick="return doclink('link-34', '_delete_credential', 'link-34');">_delete_credential</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_id</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_user_agent</tt><tt class="py-op">,</tt> </tt>
-<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_scope</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._create_file_if_needed"></a><div id="_MultiStore._create_file_if_needed-def"><a name="L175"></a><tt class="py-lineno">175</tt> <a class="py-toggle" href="#" id="_MultiStore._create_file_if_needed-toggle" onclick="return toggle('_MultiStore._create_file_if_needed');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_create_file_if_needed">_create_file_if_needed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._create_file_if_needed-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._create_file_if_needed-expanded"><a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create an empty file if necessary.</tt> </tt>
-<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-docstring">    This method will not initialize the file. Instead it implements a</tt> </tt>
-<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-docstring">    simple version of "touch" to ensure the file has been created.</tt> </tt>
-<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-35', 'filename', 'link-15');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">      <tt class="py-name">old_umask</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">umask</tt><tt class="py-op">(</tt><tt class="py-number">0177</tt><tt class="py-op">)</tt> </tt>
-<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">        <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-36', 'filename', 'link-15');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'a+b'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">      <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
-<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">        <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">umask</tt><tt class="py-op">(</tt><tt class="py-name">old_umask</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._lock"></a><div id="_MultiStore._lock-def"><a name="L188"></a><tt class="py-lineno">188</tt> <a class="py-toggle" href="#" id="_MultiStore._lock-toggle" onclick="return toggle('_MultiStore._lock');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_lock">_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._lock-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._lock-expanded"><a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">    <tt class="py-docstring">"""Lock the entire multistore."""</tt> </tt>
-<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method oauth2client.locked_file.LockedFile.open_and_lock()=oauth2client.locked_file.LockedFile-class.html#open_and_lock,Method oauth2client.locked_file._Opener.open_and_lock()=oauth2client.locked_file._Opener-class.html#open_and_lock,Method oauth2client.locked_file._PosixOpener.open_and_lock()=oauth2client.locked_file._PosixOpener-class.html#open_and_lock"><a title="oauth2client.locked_file.LockedFile.open_and_lock
+<a name="_MultiStore._Storage"></a><div id="_MultiStore._Storage-def"><a name="L164"></a><tt class="py-lineno">164</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage-toggle" onclick="return toggle('_MultiStore._Storage');">-</a><tt class="py-line">  <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html">_Storage</a><tt class="py-op">(</tt><tt class="py-base-class">BaseStorage</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._Storage-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._Storage-expanded"><a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">    <tt class="py-docstring">"""A Storage object that knows how to read/write a single credential."""</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._Storage.__init__"></a><div id="_MultiStore._Storage.__init__-def"><a name="L167"></a><tt class="py-lineno">167</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.__init__-toggle" onclick="return toggle('_MultiStore._Storage.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">multistore</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._Storage.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.__init__-expanded"><a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt> <tt class="py-op">=</tt> <tt class="py-name">multistore</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt>
+</div><a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._Storage.acquire_lock"></a><div id="_MultiStore._Storage.acquire_lock-def"><a name="L171"></a><tt class="py-lineno">171</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.acquire_lock-toggle" onclick="return toggle('_MultiStore._Storage.acquire_lock');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#acquire_lock">acquire_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._Storage.acquire_lock-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.acquire_lock-expanded"><a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">      <tt class="py-docstring">"""Acquires any lock necessary to access this Storage.</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-docstring">      This lock is not reentrant.</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._lock()=oauth2client.multistore_file._MultiStore-class.html#_lock"><a title="oauth2client.multistore_file._MultiStore._lock" class="py-name" href="#" onclick="return doclink('link-38', '_lock', 'link-38');">_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._Storage.release_lock"></a><div id="_MultiStore._Storage.release_lock-def"><a name="L178"></a><tt class="py-lineno">178</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.release_lock-toggle" onclick="return toggle('_MultiStore._Storage.release_lock');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#release_lock">release_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._Storage.release_lock-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.release_lock-expanded"><a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">      <tt class="py-docstring">"""Release the Storage lock.</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-docstring">      Trying to release a lock that isn't held will result in a</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-docstring">      RuntimeError.</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._unlock()=oauth2client.multistore_file._MultiStore-class.html#_unlock"><a title="oauth2client.multistore_file._MultiStore._unlock" class="py-name" href="#" onclick="return doclink('link-39', '_unlock', 'link-39');">_unlock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._Storage.locked_get"></a><div id="_MultiStore._Storage.locked_get-def"><a name="L186"></a><tt class="py-lineno">186</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.locked_get-toggle" onclick="return toggle('_MultiStore._Storage.locked_get');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#locked_get">locked_get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._Storage.locked_get-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.locked_get-expanded"><a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">      <tt class="py-docstring">"""Retrieve credential.</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-docstring">      The Storage lock must be held when this is called.</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"><tt class="py-docstring">      Returns:</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"><tt class="py-docstring">        oauth2client.client.Credentials</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">      <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._get_credential()=oauth2client.multistore_file._MultiStore-class.html#_get_credential"><a title="oauth2client.multistore_file._MultiStore._get_credential" class="py-name" href="#" onclick="return doclink('link-40', '_get_credential', 'link-40');">_get_credential</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt><tt class="py-op">)</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">credential</tt><tt class="py-op">:</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">        <tt class="py-name">credential</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-41', 'set_store', 'link-41');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">credential</tt> </tt>
+</div><a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._Storage.locked_put"></a><div id="_MultiStore._Storage.locked_put-def"><a name="L199"></a><tt class="py-lineno">199</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.locked_put-toggle" onclick="return toggle('_MultiStore._Storage.locked_put');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#locked_put">locked_put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._Storage.locked_put-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.locked_put-expanded"><a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">      <tt class="py-docstring">"""Write a credential.</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"><tt class="py-docstring">      The Storage lock must be held when this is called.</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"><tt class="py-docstring">        credentials: Credentials, the credentials to store.</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._update_credential()=oauth2client.multistore_file._MultiStore-class.html#_update_credential"><a title="oauth2client.multistore_file._MultiStore._update_credential" class="py-name" href="#" onclick="return doclink('link-42', '_update_credential', 'link-42');">_update_credential</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt><tt class="py-op">,</tt> <tt id="link-43" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-43', 'credentials', 'link-43');">credentials</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._Storage.locked_delete"></a><div id="_MultiStore._Storage.locked_delete-def"><a name="L209"></a><tt class="py-lineno">209</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.locked_delete-toggle" onclick="return toggle('_MultiStore._Storage.locked_delete');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#locked_delete">locked_delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._Storage.locked_delete-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.locked_delete-expanded"><a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">      <tt class="py-docstring">"""Delete a credential.</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"><tt class="py-docstring">      The Storage lock must be held when this is called.</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"><tt class="py-docstring">      Args:</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"><tt class="py-docstring">        credentials: Credentials, the credentials to store.</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"><tt class="py-docstring">      """</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._delete_credential()=oauth2client.multistore_file._MultiStore-class.html#_delete_credential"><a title="oauth2client.multistore_file._MultiStore._delete_credential" class="py-name" href="#" onclick="return doclink('link-44', '_delete_credential', 'link-44');">_delete_credential</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._create_file_if_needed"></a><div id="_MultiStore._create_file_if_needed-def"><a name="L219"></a><tt class="py-lineno">219</tt> <a class="py-toggle" href="#" id="_MultiStore._create_file_if_needed-toggle" onclick="return toggle('_MultiStore._create_file_if_needed');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_create_file_if_needed">_create_file_if_needed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._create_file_if_needed-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._create_file_if_needed-expanded"><a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create an empty file if necessary.</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-docstring">    This method will not initialize the file. Instead it implements a</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-docstring">    simple version of "touch" to ensure the file has been created.</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-45', 'filename', 'link-18');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">      <tt class="py-name">old_umask</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">umask</tt><tt class="py-op">(</tt><tt class="py-number">0177</tt><tt class="py-op">)</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">        <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-46', 'filename', 'link-18');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'a+b'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">      <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">        <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">umask</tt><tt class="py-op">(</tt><tt class="py-name">old_umask</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._lock"></a><div id="_MultiStore._lock-def"><a name="L232"></a><tt class="py-lineno">232</tt> <a class="py-toggle" href="#" id="_MultiStore._lock-toggle" onclick="return toggle('_MultiStore._lock');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_lock">_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._lock-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._lock-expanded"><a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">    <tt class="py-docstring">"""Lock the entire multistore."""</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method oauth2client.locked_file.LockedFile.open_and_lock()=oauth2client.locked_file.LockedFile-class.html#open_and_lock,Method oauth2client.locked_file._Opener.open_and_lock()=oauth2client.locked_file._Opener-class.html#open_and_lock,Method oauth2client.locked_file._PosixOpener.open_and_lock()=oauth2client.locked_file._PosixOpener-class.html#open_and_lock"><a title="oauth2client.locked_file.LockedFile.open_and_lock
 oauth2client.locked_file._Opener.open_and_lock
-oauth2client.locked_file._PosixOpener.open_and_lock" class="py-name" href="#" onclick="return doclink('link-37', 'open_and_lock', 'link-37');">open_and_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method oauth2client.locked_file.LockedFile.is_locked()=oauth2client.locked_file.LockedFile-class.html#is_locked,Method oauth2client.locked_file._Opener.is_locked()=oauth2client.locked_file._Opener-class.html#is_locked"><a title="oauth2client.locked_file.LockedFile.is_locked
-oauth2client.locked_file._Opener.is_locked" class="py-name" href="#" onclick="return doclink('link-38', 'is_locked', 'link-38');">is_locked</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_warn_on_readonly</tt><tt class="py-op">:</tt> </tt>
-<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">        <tt id="link-39" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.locked_file._PosixOpener.open_and_lock" class="py-name" href="#" onclick="return doclink('link-47', 'open_and_lock', 'link-47');">open_and_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Method oauth2client.locked_file.LockedFile.is_locked()=oauth2client.locked_file.LockedFile-class.html#is_locked,Method oauth2client.locked_file._Opener.is_locked()=oauth2client.locked_file._Opener-class.html#is_locked"><a title="oauth2client.locked_file.LockedFile.is_locked
+oauth2client.locked_file._Opener.is_locked" class="py-name" href="#" onclick="return doclink('link-48', 'is_locked', 'link-48');">is_locked</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_warn_on_readonly</tt><tt class="py-op">:</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">        <tt id="link-49" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-39', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'The credentials file (%s) is not writable. Opening in '</tt> </tt>
-<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">                    <tt class="py-string">'read-only mode. Any refreshed credentials will only be '</tt> </tt>
-<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">                    <tt class="py-string">'valid for this run.'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-40', 'filename', 'link-15');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">getsize</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-41', 'filename', 'link-15');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
-<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">      <tt id="link-42" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-49', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'The credentials file (%s) is not writable. Opening in '</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">                    <tt class="py-string">'read-only mode. Any refreshed credentials will only be '</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">                    <tt class="py-string">'valid for this run.'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-50', 'filename', 'link-18');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">getsize</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-51', 'filename', 'link-18');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">      <tt id="link-52" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-42', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Initializing empty multistore file'</tt><tt class="py-op">)</tt> </tt>
-<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">      <tt class="py-comment"># The multistore is empty so write out an empty file.</tt> </tt>
-<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._write()=oauth2client.multistore_file._MultiStore-class.html#_write"><a title="oauth2client.multistore_file._MultiStore._write" class="py-name" href="#" onclick="return doclink('link-43', '_write', 'link-43');">_write</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">      <tt class="py-comment"># Only refresh the data if we are read/write or we haven't</tt> </tt>
-<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">      <tt class="py-comment"># cached the data yet.  If we are readonly, we assume is isn't</tt> </tt>
-<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">      <tt class="py-comment"># changing out from under us and that we only have to read it</tt> </tt>
-<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">      <tt class="py-comment"># once.  This prevents us from whacking any new access keys that</tt> </tt>
-<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">      <tt class="py-comment"># we have cached in memory but were unable to write out.</tt> </tt>
-<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._refresh_data_cache()=oauth2client.multistore_file._MultiStore-class.html#_refresh_data_cache"><a title="oauth2client.multistore_file._MultiStore._refresh_data_cache" class="py-name" href="#" onclick="return doclink('link-44', '_refresh_data_cache', 'link-44');">_refresh_data_cache</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._unlock"></a><div id="_MultiStore._unlock-def"><a name="L211"></a><tt class="py-lineno">211</tt> <a class="py-toggle" href="#" id="_MultiStore._unlock-toggle" onclick="return toggle('_MultiStore._unlock');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_unlock">_unlock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._unlock-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._unlock-expanded"><a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">    <tt class="py-docstring">"""Release the lock on the multistore."""</tt> </tt>
-<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Method oauth2client.locked_file.LockedFile.unlock_and_close()=oauth2client.locked_file.LockedFile-class.html#unlock_and_close,Method oauth2client.locked_file._Opener.unlock_and_close()=oauth2client.locked_file._Opener-class.html#unlock_and_close,Method oauth2client.locked_file._PosixOpener.unlock_and_close()=oauth2client.locked_file._PosixOpener-class.html#unlock_and_close"><a title="oauth2client.locked_file.LockedFile.unlock_and_close
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-52', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Initializing empty multistore file'</tt><tt class="py-op">)</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">      <tt class="py-comment"># The multistore is empty so write out an empty file.</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._write()=oauth2client.multistore_file._MultiStore-class.html#_write"><a title="oauth2client.multistore_file._MultiStore._write" class="py-name" href="#" onclick="return doclink('link-53', '_write', 'link-53');">_write</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">      <tt class="py-comment"># Only refresh the data if we are read/write or we haven't</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">      <tt class="py-comment"># cached the data yet. If we are readonly, we assume is isn't</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">      <tt class="py-comment"># changing out from under us and that we only have to read it</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">      <tt class="py-comment"># once. This prevents us from whacking any new access keys that</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">      <tt class="py-comment"># we have cached in memory but were unable to write out.</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._refresh_data_cache()=oauth2client.multistore_file._MultiStore-class.html#_refresh_data_cache"><a title="oauth2client.multistore_file._MultiStore._refresh_data_cache" class="py-name" href="#" onclick="return doclink('link-54', '_refresh_data_cache', 'link-54');">_refresh_data_cache</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._unlock"></a><div id="_MultiStore._unlock-def"><a name="L255"></a><tt class="py-lineno">255</tt> <a class="py-toggle" href="#" id="_MultiStore._unlock-toggle" onclick="return toggle('_MultiStore._unlock');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_unlock">_unlock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._unlock-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._unlock-expanded"><a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">    <tt class="py-docstring">"""Release the lock on the multistore."""</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Method oauth2client.locked_file.LockedFile.unlock_and_close()=oauth2client.locked_file.LockedFile-class.html#unlock_and_close,Method oauth2client.locked_file._Opener.unlock_and_close()=oauth2client.locked_file._Opener-class.html#unlock_and_close,Method oauth2client.locked_file._PosixOpener.unlock_and_close()=oauth2client.locked_file._PosixOpener-class.html#unlock_and_close"><a title="oauth2client.locked_file.LockedFile.unlock_and_close
 oauth2client.locked_file._Opener.unlock_and_close
-oauth2client.locked_file._PosixOpener.unlock_and_close" class="py-name" href="#" onclick="return doclink('link-45', 'unlock_and_close', 'link-45');">unlock_and_close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._locked_json_read"></a><div id="_MultiStore._locked_json_read-def"><a name="L216"></a><tt class="py-lineno">216</tt> <a class="py-toggle" href="#" id="_MultiStore._locked_json_read-toggle" onclick="return toggle('_MultiStore._locked_json_read');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_read">_locked_json_read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._locked_json_read-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._locked_json_read-expanded"><a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">    <tt class="py-docstring">"""Get the raw content of the multistore file.</tt> </tt>
-<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"><tt class="py-docstring">    The multistore must be locked when this is called.</tt> </tt>
-<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-docstring">      The contents of the multistore decoded as JSON.</tt> </tt>
-<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">locked</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Method oauth2client.locked_file.LockedFile.file_handle()=oauth2client.locked_file.LockedFile-class.html#file_handle,Method oauth2client.locked_file._Opener.file_handle()=oauth2client.locked_file._Opener-class.html#file_handle"><a title="oauth2client.locked_file.LockedFile.file_handle
-oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-46', 'file_handle', 'link-46');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Function oauth2client.clientsecrets.load()=oauth2client.clientsecrets-module.html#load"><a title="oauth2client.clientsecrets.load" class="py-name" href="#" onclick="return doclink('link-47', 'load', 'link-47');">load</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
-oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-48', 'file_handle', 'link-46');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._locked_json_write"></a><div id="_MultiStore._locked_json_write-def"><a name="L228"></a><tt class="py-lineno">228</tt> <a class="py-toggle" href="#" id="_MultiStore._locked_json_write-toggle" onclick="return toggle('_MultiStore._locked_json_write');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_write">_locked_json_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._locked_json_write-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._locked_json_write-expanded"><a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">    <tt class="py-docstring">"""Write a JSON serializable data structure to the multistore.</tt> </tt>
-<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"><tt class="py-docstring">    The multistore must be locked when this is called.</tt> </tt>
-<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-docstring">      data: The data to be serialized and written.</tt> </tt>
-<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">locked</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt><tt class="py-op">:</tt> </tt>
-<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> </tt>
-<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
-oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-49', 'file_handle', 'link-46');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">    <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dump</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
-oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-50', 'file_handle', 'link-46');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">sort_keys</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt id="link-51" class="py-name" targets="Method apiclient.schema._SchemaToStruct.indent()=apiclient.schema._SchemaToStruct-class.html#indent"><a title="apiclient.schema._SchemaToStruct.indent" class="py-name" href="#" onclick="return doclink('link-51', 'indent', 'link-51');">indent</a></tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
-oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-52', 'file_handle', 'link-46');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">truncate</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._refresh_data_cache"></a><div id="_MultiStore._refresh_data_cache-def"><a name="L243"></a><tt class="py-lineno">243</tt> <a class="py-toggle" href="#" id="_MultiStore._refresh_data_cache-toggle" onclick="return toggle('_MultiStore._refresh_data_cache');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_refresh_data_cache">_refresh_data_cache</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._refresh_data_cache-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._refresh_data_cache-expanded"><a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">    <tt class="py-docstring">"""Refresh the contents of the multistore.</tt> </tt>
-<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"><tt class="py-docstring">    The multistore must be locked when this is called.</tt> </tt>
-<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"><tt class="py-docstring">      NewerCredentialStoreError: Raised when a newer client has written the</tt> </tt>
-<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"><tt class="py-docstring">        store.</tt> </tt>
-<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line">      <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._locked_json_read()=oauth2client.multistore_file._MultiStore-class.html#_locked_json_read"><a title="oauth2client.multistore_file._MultiStore._locked_json_read" class="py-name" href="#" onclick="return doclink('link-53', '_locked_json_read', 'link-53');">_locked_json_read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
-<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">      <tt id="link-54" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.locked_file._PosixOpener.unlock_and_close" class="py-name" href="#" onclick="return doclink('link-55', 'unlock_and_close', 'link-55');">unlock_and_close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._locked_json_read"></a><div id="_MultiStore._locked_json_read-def"><a name="L260"></a><tt class="py-lineno">260</tt> <a class="py-toggle" href="#" id="_MultiStore._locked_json_read-toggle" onclick="return toggle('_MultiStore._locked_json_read');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_read">_locked_json_read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._locked_json_read-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._locked_json_read-expanded"><a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line">    <tt class="py-docstring">"""Get the raw content of the multistore file.</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line"><tt class="py-docstring">    The multistore must be locked when this is called.</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"><tt class="py-docstring">      The contents of the multistore decoded as JSON.</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">locked</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Method oauth2client.locked_file.LockedFile.file_handle()=oauth2client.locked_file.LockedFile-class.html#file_handle,Method oauth2client.locked_file._Opener.file_handle()=oauth2client.locked_file._Opener-class.html#file_handle"><a title="oauth2client.locked_file.LockedFile.file_handle
+oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-56', 'file_handle', 'link-56');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Function oauth2client.clientsecrets.load()=oauth2client.clientsecrets-module.html#load"><a title="oauth2client.clientsecrets.load" class="py-name" href="#" onclick="return doclink('link-57', 'load', 'link-57');">load</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
+oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-58', 'file_handle', 'link-56');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._locked_json_write"></a><div id="_MultiStore._locked_json_write-def"><a name="L272"></a><tt class="py-lineno">272</tt> <a class="py-toggle" href="#" id="_MultiStore._locked_json_write-toggle" onclick="return toggle('_MultiStore._locked_json_write');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_write">_locked_json_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._locked_json_write-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._locked_json_write-expanded"><a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">    <tt class="py-docstring">"""Write a JSON serializable data structure to the multistore.</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line"><tt class="py-docstring">    The multistore must be locked when this is called.</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line"><tt class="py-docstring">      data: The data to be serialized and written.</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">locked</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt><tt class="py-op">:</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
+oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-59', 'file_handle', 'link-56');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">    <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dump</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
+oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-60', 'file_handle', 'link-56');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">sort_keys</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt id="link-61" class="py-name" targets="Method apiclient.schema._SchemaToStruct.indent()=apiclient.schema._SchemaToStruct-class.html#indent"><a title="apiclient.schema._SchemaToStruct.indent" class="py-name" href="#" onclick="return doclink('link-61', 'indent', 'link-61');">indent</a></tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
+oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-62', 'file_handle', 'link-56');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">truncate</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._refresh_data_cache"></a><div id="_MultiStore._refresh_data_cache-def"><a name="L287"></a><tt class="py-lineno">287</tt> <a class="py-toggle" href="#" id="_MultiStore._refresh_data_cache-toggle" onclick="return toggle('_MultiStore._refresh_data_cache');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_refresh_data_cache">_refresh_data_cache</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._refresh_data_cache-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._refresh_data_cache-expanded"><a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">    <tt class="py-docstring">"""Refresh the contents of the multistore.</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line"><tt class="py-docstring">    The multistore must be locked when this is called.</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line"><tt class="py-docstring">      NewerCredentialStoreError: Raised when a newer client has written the</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line"><tt class="py-docstring">        store.</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">      <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._locked_json_read()=oauth2client.multistore_file._MultiStore-class.html#_locked_json_read"><a title="oauth2client.multistore_file._MultiStore._locked_json_read" class="py-name" href="#" onclick="return doclink('link-63', '_locked_json_read', 'link-63');">_locked_json_read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">      <tt id="link-64" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-54', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'Credential data store could not be loaded. '</tt> </tt>
-<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">                  <tt class="py-string">'Will ignore and overwrite.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> </tt>
-<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line"> </tt>
-<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">    <tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line">      <tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_data</tt><tt class="py-op">[</tt><tt class="py-string">'file_version'</tt><tt class="py-op">]</tt> </tt>
-<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
-<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">      <tt id="link-55" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-64', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'Credential data store could not be loaded. '</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line">                  <tt class="py-string">'Will ignore and overwrite.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line"> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">    <tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">      <tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_data</tt><tt class="py-op">[</tt><tt class="py-string">'file_version'</tt><tt class="py-op">]</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">      <tt id="link-65" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-55', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'Missing version for credential data store. It may be '</tt> </tt>
-<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line">                  <tt class="py-string">'corrupt or an old version. Overwriting.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">version</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
-<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-56" class="py-name" targets="Class oauth2client.multistore_file.NewerCredentialStoreError=oauth2client.multistore_file.NewerCredentialStoreError-class.html"><a title="oauth2client.multistore_file.NewerCredentialStoreError" class="py-name" href="#" onclick="return doclink('link-56', 'NewerCredentialStoreError', 'link-56');">NewerCredentialStoreError</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">          <tt class="py-string">'Credential file has file_version of %d. '</tt> </tt>
-<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line">          <tt class="py-string">'Only file_version of 1 is supported.'</tt> <tt class="py-op">%</tt> <tt class="py-name">version</tt><tt class="py-op">)</tt> </tt>
-<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"> </tt>
-<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line">    <tt id="link-57" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-57', 'credentials', 'link-33');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">      <tt id="link-58" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-58', 'credentials', 'link-33');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">raw_data</tt><tt class="py-op">[</tt><tt class="py-string">'data'</tt><tt class="py-op">]</tt> </tt>
-<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt class="py-name">TypeError</tt><tt class="py-op">,</tt> <tt class="py-name">KeyError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">      <tt class="py-keyword">pass</tt> </tt>
-<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line"> </tt>
-<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">cred_entry</tt> <tt class="py-keyword">in</tt> <tt id="link-59" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials" class="py-name" href="#" onclick="return doclink('link-59', 'credentials', 'link-33');">credentials</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">credential</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._decode_credential_from_json()=oauth2client.multistore_file._MultiStore-class.html#_decode_credential_from_json"><a title="oauth2client.multistore_file._MultiStore._decode_credential_from_json" class="py-name" href="#" onclick="return doclink('link-60', '_decode_credential_from_json', 'link-60');">_decode_credential_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">cred_entry</tt><tt class="py-op">)</tt> </tt>
-<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">credential</tt> </tt>
-<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
-<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">        <tt class="py-comment"># If something goes wrong loading a credential, just ignore it</tt> </tt>
-<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">        <tt id="link-61" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-65', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'Missing version for credential data store. It may be '</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">                  <tt class="py-string">'corrupt or an old version. Overwriting.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">version</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-66" class="py-name" targets="Class oauth2client.multistore_file.NewerCredentialStoreError=oauth2client.multistore_file.NewerCredentialStoreError-class.html"><a title="oauth2client.multistore_file.NewerCredentialStoreError" class="py-name" href="#" onclick="return doclink('link-66', 'NewerCredentialStoreError', 'link-66');">NewerCredentialStoreError</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">          <tt class="py-string">'Credential file has file_version of %d. '</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line">          <tt class="py-string">'Only file_version of 1 is supported.'</tt> <tt class="py-op">%</tt> <tt class="py-name">version</tt><tt class="py-op">)</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line"> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">    <tt id="link-67" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-67', 'credentials', 'link-43');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">      <tt id="link-68" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-68', 'credentials', 'link-43');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">raw_data</tt><tt class="py-op">[</tt><tt class="py-string">'data'</tt><tt class="py-op">]</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt class="py-name">TypeError</tt><tt class="py-op">,</tt> <tt class="py-name">KeyError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line">      <tt class="py-keyword">pass</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line"> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">cred_entry</tt> <tt class="py-keyword">in</tt> <tt id="link-69" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-69', 'credentials', 'link-43');">credentials</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">credential</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._decode_credential_from_json()=oauth2client.multistore_file._MultiStore-class.html#_decode_credential_from_json"><a title="oauth2client.multistore_file._MultiStore._decode_credential_from_json" class="py-name" href="#" onclick="return doclink('link-70', '_decode_credential_from_json', 'link-70');">_decode_credential_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">cred_entry</tt><tt class="py-op">)</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">credential</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">        <tt class="py-comment"># If something goes wrong loading a credential, just ignore it</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">        <tt id="link-71" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
 oauth2client.gce.logger
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-61', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Error decoding credential, skipping'</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._decode_credential_from_json"></a><div id="_MultiStore._decode_credential_from_json-def"><a name="L285"></a><tt class="py-lineno">285</tt> <a class="py-toggle" href="#" id="_MultiStore._decode_credential_from_json-toggle" onclick="return toggle('_MultiStore._decode_credential_from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_decode_credential_from_json">_decode_credential_from_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cred_entry</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._decode_credential_from_json-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._decode_credential_from_json-expanded"><a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">    <tt class="py-docstring">"""Load a credential from our JSON serialization.</tt> </tt>
-<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line"><tt class="py-docstring">      cred_entry: A dict entry from the data member of our format</tt> </tt>
-<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line"><tt class="py-docstring">      (key, cred) where the key is the key tuple and the cred is the</tt> </tt>
-<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line"><tt class="py-docstring">        OAuth2Credential object.</tt> </tt>
-<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">    <tt class="py-name">raw_key</tt> <tt class="py-op">=</tt> <tt class="py-name">cred_entry</tt><tt class="py-op">[</tt><tt class="py-string">'key'</tt><tt class="py-op">]</tt> </tt>
-<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">    <tt class="py-name">client_id</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_key</tt><tt class="py-op">[</tt><tt class="py-string">'clientId'</tt><tt class="py-op">]</tt> </tt>
-<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">    <tt class="py-name">user_agent</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_key</tt><tt class="py-op">[</tt><tt class="py-string">'userAgent'</tt><tt class="py-op">]</tt> </tt>
-<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">    <tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_key</tt><tt class="py-op">[</tt><tt class="py-string">'scope'</tt><tt class="py-op">]</tt> </tt>
-<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">    <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> <tt class="py-name">user_agent</tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
-<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">    <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line">    <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-62', 'Credentials', 'link-6');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
-oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-63', 'new_from_json', 'link-63');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">cred_entry</tt><tt class="py-op">[</tt><tt class="py-string">'credential'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">credential</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._write"></a><div id="_MultiStore._write-def"><a name="L304"></a><tt class="py-lineno">304</tt> <a class="py-toggle" href="#" id="_MultiStore._write-toggle" onclick="return toggle('_MultiStore._write');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_write">_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._write-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._write-expanded"><a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line">    <tt class="py-docstring">"""Write the cached data back out.</tt> </tt>
-<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line"><tt class="py-docstring">    The multistore must be locked.</tt> </tt>
-<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">    <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'file_version'</tt><tt class="py-op">:</tt> <tt class="py-number">1</tt><tt class="py-op">}</tt> </tt>
-<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line">    <tt class="py-name">raw_creds</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">    <tt class="py-name">raw_data</tt><tt class="py-op">[</tt><tt class="py-string">'data'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_creds</tt> </tt>
-<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">cred_key</tt><tt class="py-op">,</tt> <tt class="py-name">cred</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line">      <tt class="py-name">raw_key</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">          <tt class="py-string">'clientId'</tt><tt class="py-op">:</tt> <tt class="py-name">cred_key</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">          <tt class="py-string">'userAgent'</tt><tt class="py-op">:</tt> <tt class="py-name">cred_key</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">          <tt class="py-string">'scope'</tt><tt class="py-op">:</tt> <tt class="py-name">cred_key</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
-<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">          <tt class="py-op">}</tt> </tt>
-<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line">      <tt class="py-name">raw_cred</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-64', 'loads', 'link-64');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">cred</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-71', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Error decoding credential, skipping'</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._decode_credential_from_json"></a><div id="_MultiStore._decode_credential_from_json-def"><a name="L329"></a><tt class="py-lineno">329</tt> <a class="py-toggle" href="#" id="_MultiStore._decode_credential_from_json-toggle" onclick="return toggle('_MultiStore._decode_credential_from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_decode_credential_from_json">_decode_credential_from_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cred_entry</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._decode_credential_from_json-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._decode_credential_from_json-expanded"><a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line">    <tt class="py-docstring">"""Load a credential from our JSON serialization.</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line"><tt class="py-docstring">      cred_entry: A dict entry from the data member of our format</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line"><tt class="py-docstring">      (key, cred) where the key is the key tuple and the cred is the</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line"><tt class="py-docstring">        OAuth2Credential object.</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line">    <tt class="py-name">raw_key</tt> <tt class="py-op">=</tt> <tt class="py-name">cred_entry</tt><tt class="py-op">[</tt><tt class="py-string">'key'</tt><tt class="py-op">]</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">    <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-72" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-72', 'util', 'link-8');">util</a></tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="oauth2client.util.dict_to_tuple_key" class="py-name" href="#" onclick="return doclink('link-73', 'dict_to_tuple_key', 'link-32');">dict_to_tuple_key</a></tt><tt class="py-op">(</tt><tt class="py-name">raw_key</tt><tt class="py-op">)</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">    <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">    <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-74', 'Credentials', 'link-6');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-75" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
+oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-75', 'new_from_json', 'link-75');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">cred_entry</tt><tt class="py-op">[</tt><tt class="py-string">'credential'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">credential</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._write"></a><div id="_MultiStore._write-def"><a name="L345"></a><tt class="py-lineno">345</tt> <a class="py-toggle" href="#" id="_MultiStore._write-toggle" onclick="return toggle('_MultiStore._write');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_write">_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._write-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._write-expanded"><a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">    <tt class="py-docstring">"""Write the cached data back out.</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line"><tt class="py-docstring">    The multistore must be locked.</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line">    <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'file_version'</tt><tt class="py-op">:</tt> <tt class="py-number">1</tt><tt class="py-op">}</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">    <tt class="py-name">raw_creds</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line">    <tt class="py-name">raw_data</tt><tt class="py-op">[</tt><tt class="py-string">'data'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_creds</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">cred_key</tt><tt class="py-op">,</tt> <tt class="py-name">cred</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method apiclient.push.Headers.items()=apiclient.push.Headers-class.html#items"><a title="apiclient.push.Headers.items" class="py-name" href="#" onclick="return doclink('link-76', 'items', 'link-76');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line">      <tt class="py-name">raw_key</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">cred_key</tt><tt class="py-op">)</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line">      <tt class="py-name">raw_cred</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-77', 'loads', 'link-77');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">cred</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
 apiclient.http.MediaFileUpload.to_json
 apiclient.http.MediaIoBaseUpload.to_json
 apiclient.http.MediaUpload.to_json
 oauth2client.client.Credentials.to_json
-oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-65', 'to_json', 'link-65');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line">      <tt class="py-name">raw_creds</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'key'</tt><tt class="py-op">:</tt> <tt class="py-name">raw_key</tt><tt class="py-op">,</tt> <tt class="py-string">'credential'</tt><tt class="py-op">:</tt> <tt class="py-name">raw_cred</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._locked_json_write()=oauth2client.multistore_file._MultiStore-class.html#_locked_json_write"><a title="oauth2client.multistore_file._MultiStore._locked_json_write" class="py-name" href="#" onclick="return doclink('link-66', '_locked_json_write', 'link-66');">_locked_json_write</a></tt><tt class="py-op">(</tt><tt class="py-name">raw_data</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._get_credential"></a><div id="_MultiStore._get_credential-def"><a name="L322"></a><tt class="py-lineno">322</tt> <a class="py-toggle" href="#" id="_MultiStore._get_credential-toggle" onclick="return toggle('_MultiStore._get_credential');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_get_credential">_get_credential</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._get_credential-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._get_credential-expanded"><a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">    <tt class="py-docstring">"""Get a credential from the multistore.</tt> </tt>
-<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line"><tt class="py-docstring">    The multistore must be locked.</tt> </tt>
-<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line"><tt class="py-docstring">      client_id: The client_id for the credential</tt> </tt>
-<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line"><tt class="py-docstring">      user_agent: The user agent for the credential</tt> </tt>
-<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line"><tt class="py-docstring">      scope: A string for the scope(s) being requested</tt> </tt>
-<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line"><tt class="py-docstring">      The credential specified or None if not present</tt> </tt>
-<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line">    <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> <tt class="py-name">user_agent</tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
-<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line"> </tt>
-<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
+oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-78', 'to_json', 'link-78');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">      <tt class="py-name">raw_creds</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'key'</tt><tt class="py-op">:</tt> <tt class="py-name">raw_key</tt><tt class="py-op">,</tt> <tt class="py-string">'credential'</tt><tt class="py-op">:</tt> <tt class="py-name">raw_cred</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._locked_json_write()=oauth2client.multistore_file._MultiStore-class.html#_locked_json_write"><a title="oauth2client.multistore_file._MultiStore._locked_json_write" class="py-name" href="#" onclick="return doclink('link-79', '_locked_json_write', 'link-79');">_locked_json_write</a></tt><tt class="py-op">(</tt><tt class="py-name">raw_data</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._get_credential"></a><div id="_MultiStore._get_credential-def"><a name="L359"></a><tt class="py-lineno">359</tt> <a class="py-toggle" href="#" id="_MultiStore._get_credential-toggle" onclick="return toggle('_MultiStore._get_credential');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_get_credential">_get_credential</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._get_credential-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._get_credential-expanded"><a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line">    <tt class="py-docstring">"""Get a credential from the multistore.</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line"><tt class="py-docstring">    The multistore must be locked.</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line"><tt class="py-docstring">      key: The key used to retrieve the credential</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line"><tt class="py-docstring">      The credential specified or None if not present</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
 oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-67', 'get', 'link-67');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._update_credential"></a><div id="_MultiStore._update_credential-def"><a name="L339"></a><tt class="py-lineno">339</tt> <a class="py-toggle" href="#" id="_MultiStore._update_credential-toggle" onclick="return toggle('_MultiStore._update_credential');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_update_credential">_update_credential</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cred</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._update_credential-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._update_credential-expanded"><a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">    <tt class="py-docstring">"""Update a credential and write the multistore.</tt> </tt>
-<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line"><tt class="py-docstring">    This must be called when the multistore is locked.</tt> </tt>
-<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line"><tt class="py-docstring">      cred: The OAuth2Credential to update/set</tt> </tt>
-<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line"><tt class="py-docstring">      scope: The scope(s) that this credential covers</tt> </tt>
-<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line">    <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">cred</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> <tt class="py-name">cred</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
-<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cred</tt> </tt>
-<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="oauth2client.multistore_file._MultiStore._write" class="py-name" href="#" onclick="return doclink('link-68', '_write', 'link-43');">_write</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._delete_credential"></a><div id="_MultiStore._delete_credential-def"><a name="L352"></a><tt class="py-lineno">352</tt> <a class="py-toggle" href="#" id="_MultiStore._delete_credential-toggle" onclick="return toggle('_MultiStore._delete_credential');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_delete_credential">_delete_credential</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._delete_credential-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._delete_credential-expanded"><a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">    <tt class="py-docstring">"""Delete a credential and write the multistore.</tt> </tt>
-<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line"><tt class="py-docstring">    This must be called when the multistore is locked.</tt> </tt>
-<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line"><tt class="py-docstring">      client_id: The client_id for the credential</tt> </tt>
-<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line"><tt class="py-docstring">      user_agent: The user agent for the credential</tt> </tt>
-<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line"><tt class="py-docstring">      scope: The scope(s) that this credential covers</tt> </tt>
-<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">    <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> <tt class="py-name">user_agent</tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
-<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line">      <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
-<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt>
-<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">      <tt class="py-keyword">pass</tt> </tt>
-<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="oauth2client.multistore_file._MultiStore._write" class="py-name" href="#" onclick="return doclink('link-69', '_write', 'link-43');">_write</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line"> </tt>
-<a name="_MultiStore._get_storage"></a><div id="_MultiStore._get_storage-def"><a name="L369"></a><tt class="py-lineno">369</tt> <a class="py-toggle" href="#" id="_MultiStore._get_storage-toggle" onclick="return toggle('_MultiStore._get_storage');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_get_storage">_get_storage</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._get_storage-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._get_storage-expanded"><a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line">    <tt class="py-docstring">"""Get a Storage object to get/set a credential.</tt> </tt>
-<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line"><tt class="py-docstring">    This Storage is a 'view' into the multistore.</tt> </tt>
-<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line"><tt class="py-docstring">      client_id: The client_id for the credential</tt> </tt>
-<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line"><tt class="py-docstring">      user_agent: The user agent for the credential</tt> </tt>
-<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line"><tt class="py-docstring">      scope: A string for the scope(s) being requested</tt> </tt>
-<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line"><tt class="py-docstring">      A Storage object that can be used to get/set this cred</tt> </tt>
-<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Class oauth2client.multistore_file._MultiStore._Storage=oauth2client.multistore_file._MultiStore._Storage-class.html"><a title="oauth2client.multistore_file._MultiStore._Storage" class="py-name" href="#" onclick="return doclink('link-70', '_Storage', 'link-70');">_Storage</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">client_id</tt><tt class="py-op">,</tt> <tt class="py-name">user_agent</tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-80', 'get', 'link-80');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._update_credential"></a><div id="_MultiStore._update_credential-def"><a name="L372"></a><tt class="py-lineno">372</tt> <a class="py-toggle" href="#" id="_MultiStore._update_credential-toggle" onclick="return toggle('_MultiStore._update_credential');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_update_credential">_update_credential</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">cred</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._update_credential-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._update_credential-expanded"><a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">    <tt class="py-docstring">"""Update a credential and write the multistore.</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line"><tt class="py-docstring">    This must be called when the multistore is locked.</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line"><tt class="py-docstring">      key: The key used to retrieve the credential</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line"><tt class="py-docstring">      cred: The OAuth2Credential to update/set</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cred</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="oauth2client.multistore_file._MultiStore._write" class="py-name" href="#" onclick="return doclink('link-81', '_write', 'link-53');">_write</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._delete_credential"></a><div id="_MultiStore._delete_credential-def"><a name="L384"></a><tt class="py-lineno">384</tt> <a class="py-toggle" href="#" id="_MultiStore._delete_credential-toggle" onclick="return toggle('_MultiStore._delete_credential');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_delete_credential">_delete_credential</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._delete_credential-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._delete_credential-expanded"><a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">    <tt class="py-docstring">"""Delete a credential and write the multistore.</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line"><tt class="py-docstring">    This must be called when the multistore is locked.</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line"><tt class="py-docstring">      key: The key used to retrieve the credential</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">      <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">      <tt class="py-keyword">pass</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="oauth2client.multistore_file._MultiStore._write" class="py-name" href="#" onclick="return doclink('link-82', '_write', 'link-53');">_write</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line"> </tt>
+<a name="_MultiStore._get_storage"></a><div id="_MultiStore._get_storage-def"><a name="L398"></a><tt class="py-lineno">398</tt> <a class="py-toggle" href="#" id="_MultiStore._get_storage-toggle" onclick="return toggle('_MultiStore._get_storage');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_get_storage">_get_storage</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._get_storage-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._get_storage-expanded"><a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line">    <tt class="py-docstring">"""Get a Storage object to get/set a credential.</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line"><tt class="py-docstring">    This Storage is a 'view' into the multistore.</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line"><tt class="py-docstring">      key: The key used to retrieve the credential</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line"><tt class="py-docstring">      A Storage object that can be used to get/set this cred</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name" targets="Class oauth2client.multistore_file._MultiStore._Storage=oauth2client.multistore_file._MultiStore._Storage-class.html"><a title="oauth2client.multistore_file._MultiStore._Storage" class="py-name" href="#" onclick="return doclink('link-83', '_Storage', 'link-83');">_Storage</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line"> </tt><script type="text/javascript">
 <!--
 expandto(location.href);
 // -->
@@ -538,7 +571,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:46 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.multistore_file.Error-class.html b/docs/epy/oauth2client.multistore_file.Error-class.html
index 509a87f..cafc3fa 100644
--- a/docs/epy/oauth2client.multistore_file.Error-class.html
+++ b/docs/epy/oauth2client.multistore_file.Error-class.html
@@ -56,9 +56,9 @@
 <h1 class="epydoc">Class Error</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#Error">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_error_4" name="class_hierarchy_for_error_4">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
-<area shape="rect" href="oauth2client.multistore_file.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<area shape="rect" id="node3" href="oauth2client.multistore_file.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
 </map>
   <img src="class_hierarchy_for_error_4.gif" alt='' usemap="#class_hierarchy_for_error_4" ismap="ismap" class="graph-without-title" />
 </center>
@@ -166,7 +166,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:45 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.multistore_file.NewerCredentialStoreError-class.html b/docs/epy/oauth2client.multistore_file.NewerCredentialStoreError-class.html
index 6dc6190..c368600 100644
--- a/docs/epy/oauth2client.multistore_file.NewerCredentialStoreError-class.html
+++ b/docs/epy/oauth2client.multistore_file.NewerCredentialStoreError-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class NewerCredentialStoreError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#NewerCredentialStoreError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_newercrede" name="class_hierarchy_for_newercrede">
-<area shape="rect" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,5,181,32"/>
-<area shape="rect" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,61,167,88"/>
-<area shape="rect" href="oauth2client.multistore_file.Error-class.html" title="Error" alt="" coords="69,117,117,144"/>
-<area shape="rect" href="oauth2client.multistore_file.NewerCredentialStoreError-class.html" title="NewerCredentialStoreError" alt="" coords="205,5,379,32"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<area shape="rect" id="node3" href="oauth2client.multistore_file.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<area shape="rect" id="node4" href="oauth2client.multistore_file.NewerCredentialStoreError-class.html" title="NewerCredentialStoreError" alt="" coords="205,6,384,34"/>
 </map>
   <img src="class_hierarchy_for_newercrede.gif" alt='' usemap="#class_hierarchy_for_newercrede" ismap="ismap" class="graph-without-title" />
 </center>
@@ -167,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:45 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.multistore_file._MultiStore-class.html b/docs/epy/oauth2client.multistore_file._MultiStore-class.html
index 0756d7f..1bdf78b 100644
--- a/docs/epy/oauth2client.multistore_file._MultiStore-class.html
+++ b/docs/epy/oauth2client.multistore_file._MultiStore-class.html
@@ -56,7 +56,7 @@
 <h1 class="epydoc">Class _MultiStore</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_MultiStore">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for__multistor" name="class_hierarchy_for__multistor">
-<area shape="rect" href="oauth2client.multistore_file._MultiStore-class.html" title="_MultiStore" alt="" coords="5,5,93,32"/>
+<area shape="rect" id="node1" href="oauth2client.multistore_file._MultiStore-class.html" title="_MultiStore" alt="" coords="5,6,93,34"/>
 </map>
   <img src="class_hierarchy_for__multistor.gif" alt='' usemap="#class_hierarchy_for__multistor" ismap="ismap" class="graph-without-title" />
 </center>
@@ -274,9 +274,7 @@
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
           <td><span class="summary-sig"><a href="oauth2client.multistore_file._MultiStore-class.html#_get_credential" class="summary-sig-name" onclick="show_private();">_get_credential</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">client_id</span>,
-        <span class="summary-sig-arg">user_agent</span>,
-        <span class="summary-sig-arg">scope</span>)</span><br />
+        <span class="summary-sig-arg">key</span>)</span><br />
       Get a credential from the multistore.</td>
           <td align="right" valign="top">
             <span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_MultiStore._get_credential">source&nbsp;code</a></span>
@@ -294,8 +292,8 @@
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
           <td><span class="summary-sig"><a href="oauth2client.multistore_file._MultiStore-class.html#_update_credential" class="summary-sig-name" onclick="show_private();">_update_credential</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">cred</span>,
-        <span class="summary-sig-arg">scope</span>)</span><br />
+        <span class="summary-sig-arg">key</span>,
+        <span class="summary-sig-arg">cred</span>)</span><br />
       Update a credential and write the multistore.</td>
           <td align="right" valign="top">
             <span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_MultiStore._update_credential">source&nbsp;code</a></span>
@@ -313,9 +311,7 @@
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
           <td><span class="summary-sig"><a href="oauth2client.multistore_file._MultiStore-class.html#_delete_credential" class="summary-sig-name" onclick="show_private();">_delete_credential</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">client_id</span>,
-        <span class="summary-sig-arg">user_agent</span>,
-        <span class="summary-sig-arg">scope</span>)</span><br />
+        <span class="summary-sig-arg">key</span>)</span><br />
       Delete a credential and write the multistore.</td>
           <td align="right" valign="top">
             <span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_MultiStore._delete_credential">source&nbsp;code</a></span>
@@ -333,9 +329,7 @@
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
           <td><span class="summary-sig"><a href="oauth2client.multistore_file._MultiStore-class.html#_get_storage" class="summary-sig-name" onclick="show_private();">_get_storage</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">client_id</span>,
-        <span class="summary-sig-arg">user_agent</span>,
-        <span class="summary-sig-arg">scope</span>)</span><br />
+        <span class="summary-sig-arg">key</span>)</span><br />
       Get a Storage object to get/set a credential.</td>
           <td align="right" valign="top">
             <span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_MultiStore._get_storage">source&nbsp;code</a></span>
@@ -612,9 +606,7 @@
   <table width="100%" cellpadding="0" cellspacing="0" border="0">
   <tr valign="top"><td>
   <h3 class="epydoc"><span class="sig"><span class="sig-name">_get_credential</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">client_id</span>,
-        <span class="sig-arg">user_agent</span>,
-        <span class="sig-arg">scope</span>)</span>
+        <span class="sig-arg">key</span>)</span>
   </h3>
   </td><td align="right" valign="top"
     ><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_MultiStore._get_credential">source&nbsp;code</a></span>&nbsp;
@@ -627,9 +619,7 @@
 The multistore must be locked.
 
 Args:
-  client_id: The client_id for the credential
-  user_agent: The user agent for the credential
-  scope: A string for the scope(s) being requested
+  key: The key used to retrieve the credential
 
 Returns:
   The credential specified or None if not present
@@ -647,8 +637,8 @@
   <table width="100%" cellpadding="0" cellspacing="0" border="0">
   <tr valign="top"><td>
   <h3 class="epydoc"><span class="sig"><span class="sig-name">_update_credential</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">cred</span>,
-        <span class="sig-arg">scope</span>)</span>
+        <span class="sig-arg">key</span>,
+        <span class="sig-arg">cred</span>)</span>
   </h3>
   </td><td align="right" valign="top"
     ><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_MultiStore._update_credential">source&nbsp;code</a></span>&nbsp;
@@ -661,8 +651,8 @@
 This must be called when the multistore is locked.
 
 Args:
+  key: The key used to retrieve the credential
   cred: The OAuth2Credential to update/set
-  scope: The scope(s) that this credential covers
 
 </pre>
   <dl class="fields">
@@ -677,9 +667,7 @@
   <table width="100%" cellpadding="0" cellspacing="0" border="0">
   <tr valign="top"><td>
   <h3 class="epydoc"><span class="sig"><span class="sig-name">_delete_credential</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">client_id</span>,
-        <span class="sig-arg">user_agent</span>,
-        <span class="sig-arg">scope</span>)</span>
+        <span class="sig-arg">key</span>)</span>
   </h3>
   </td><td align="right" valign="top"
     ><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_MultiStore._delete_credential">source&nbsp;code</a></span>&nbsp;
@@ -692,9 +680,7 @@
 This must be called when the multistore is locked.
 
 Args:
-  client_id: The client_id for the credential
-  user_agent: The user agent for the credential
-  scope: The scope(s) that this credential covers
+  key: The key used to retrieve the credential
 
 </pre>
   <dl class="fields">
@@ -709,9 +695,7 @@
   <table width="100%" cellpadding="0" cellspacing="0" border="0">
   <tr valign="top"><td>
   <h3 class="epydoc"><span class="sig"><span class="sig-name">_get_storage</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">client_id</span>,
-        <span class="sig-arg">user_agent</span>,
-        <span class="sig-arg">scope</span>)</span>
+        <span class="sig-arg">key</span>)</span>
   </h3>
   </td><td align="right" valign="top"
     ><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_MultiStore._get_storage">source&nbsp;code</a></span>&nbsp;
@@ -724,9 +708,7 @@
 This Storage is a 'view' into the multistore.
 
 Args:
-  client_id: The client_id for the credential
-  user_agent: The user agent for the credential
-  scope: A string for the scope(s) being requested
+  key: The key used to retrieve the credential
 
 Returns:
   A Storage object that can be used to get/set this cred
@@ -760,7 +742,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:45 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.multistore_file._MultiStore._Storage-class.html b/docs/epy/oauth2client.multistore_file._MultiStore._Storage-class.html
index de3639f..37d3707 100644
--- a/docs/epy/oauth2client.multistore_file._MultiStore._Storage-class.html
+++ b/docs/epy/oauth2client.multistore_file._MultiStore._Storage-class.html
@@ -57,8 +57,8 @@
 <h1 class="epydoc">Class _Storage</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_MultiStore._Storage">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for__storage" name="class_hierarchy_for__storage">
-<area shape="rect" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="5,5,107,32"/>
-<area shape="rect" href="oauth2client.multistore_file._MultiStore._Storage-class.html" title="_Storage" alt="" coords="131,5,203,32"/>
+<area shape="rect" id="node1" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="5,6,107,34"/>
+<area shape="rect" id="node2" href="oauth2client.multistore_file._MultiStore._Storage-class.html" title="_Storage" alt="" coords="131,6,205,34"/>
 </map>
   <img src="class_hierarchy_for__storage.gif" alt='' usemap="#class_hierarchy_for__storage" ismap="ismap" class="graph-without-title" />
 </center>
@@ -94,10 +94,8 @@
         <tr>
           <td><span class="summary-sig"><a href="oauth2client.multistore_file._MultiStore._Storage-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
         <span class="summary-sig-arg">multistore</span>,
-        <span class="summary-sig-arg">client_id</span>,
-        <span class="summary-sig-arg">user_agent</span>,
-        <span class="summary-sig-arg">scope</span>)</span><br />
-      x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+        <span class="summary-sig-arg">key</span>)</span><br />
+      x.__init__(...) initializes x; see help(type(x)) for signature</td>
           <td align="right" valign="top">
             <span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_MultiStore._Storage.__init__">source&nbsp;code</a></span>
             
@@ -269,9 +267,7 @@
   <tr valign="top"><td>
   <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
         <span class="sig-arg">multistore</span>,
-        <span class="sig-arg">client_id</span>,
-        <span class="sig-arg">user_agent</span>,
-        <span class="sig-arg">scope</span>)</span>
+        <span class="sig-arg">key</span>)</span>
     <br /><em class="fname">(Constructor)</em>
   </h3>
   </td><td align="right" valign="top"
@@ -280,7 +276,7 @@
   </tr></table>
   
   <pre class="literalblock">
-x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+x.__init__(...) initializes x; see help(type(x)) for signature
 
 </pre>
   <dl class="fields">
@@ -461,7 +457,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:46 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.tools-module.html b/docs/epy/oauth2client.tools-module.html
index 3d2dc3d..e914f8a 100644
--- a/docs/epy/oauth2client.tools-module.html
+++ b/docs/epy/oauth2client.tools-module.html
@@ -269,7 +269,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:32 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.tools-pysrc.html b/docs/epy/oauth2client.tools-pysrc.html
index de3d694..a2f4536 100644
--- a/docs/epy/oauth2client.tools-pysrc.html
+++ b/docs/epy/oauth2client.tools-pysrc.html
@@ -142,16 +142,16 @@
 <a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">    <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'?'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
 <a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">    <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">query</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
 <a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">    <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">server</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-11', 'query_params', 'link-10');">query_params</a></tt> <tt class="py-op">=</tt> <tt class="py-name">query</tt> </tt>
-<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">    <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">wfile</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"&lt;html&gt;&lt;head&gt;&lt;title&gt;Authentication Status&lt;/title&gt;&lt;/head&gt;"</tt><tt class="py-op">)</tt> </tt>
-<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">    <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">wfile</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"&lt;body&gt;&lt;p&gt;The authentication flow has completed.&lt;/p&gt;"</tt><tt class="py-op">)</tt> </tt>
-<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">    <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">wfile</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"&lt;/body&gt;&lt;/html&gt;"</tt><tt class="py-op">)</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">    <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">wfile</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method apiclient.push.Headers.write()=apiclient.push.Headers-class.html#write"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-12', 'write', 'link-12');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;html&gt;&lt;head&gt;&lt;title&gt;Authentication Status&lt;/title&gt;&lt;/head&gt;"</tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">    <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">wfile</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-13', 'write', 'link-12');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;body&gt;&lt;p&gt;The authentication flow has completed.&lt;/p&gt;"</tt><tt class="py-op">)</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">    <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">wfile</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-14', 'write', 'link-12');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;/body&gt;&lt;/html&gt;"</tt><tt class="py-op">)</tt> </tt>
 </div><a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"> </tt>
 <a name="ClientRedirectHandler.log_message"></a><div id="ClientRedirectHandler.log_message-def"><a name="L90"></a><tt class="py-lineno"> 90</tt> <a class="py-toggle" href="#" id="ClientRedirectHandler.log_message-toggle" onclick="return toggle('ClientRedirectHandler.log_message');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.tools.ClientRedirectHandler-class.html#log_message">log_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">format</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
 </div><div id="ClientRedirectHandler.log_message-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="ClientRedirectHandler.log_message-expanded"><a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">    <tt class="py-docstring">"""Do not log messages to stdout while running as command line program."""</tt> </tt>
 <a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
 </div></div><a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"> </tt>
 <a name="run"></a><div id="run-def"><a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"> </tt>
-<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-12', 'positional', 'link-12');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-15', 'positional', 'link-15');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
 <a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="run-toggle" onclick="return toggle('run');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.tools-module.html#run">run</a><tt class="py-op">(</tt><tt class="py-param">flow</tt><tt class="py-op">,</tt> <tt class="py-param">storage</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
 </div><div id="run-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="run-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">  <tt class="py-docstring">"""Core code for a command-line application.</tt> </tt>
 <a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
@@ -192,28 +192,28 @@
 <a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
 <a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-docstring">    Credentials, the obtained credential.</tt> </tt>
 <a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-13" class="py-name"><a title="apiclient.model.FLAGS
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-16" class="py-name"><a title="apiclient.model.FLAGS
 oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-13', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
+oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-16', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
 <a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">    <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
 <a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">    <tt class="py-name">port_number</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">port</tt> <tt class="py-keyword">in</tt> <tt id="link-14" class="py-name"><a title="apiclient.model.FLAGS
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">port</tt> <tt class="py-keyword">in</tt> <tt id="link-17" class="py-name"><a title="apiclient.model.FLAGS
 oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-14', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_host_port</tt><tt class="py-op">:</tt> </tt>
+oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-17', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_host_port</tt><tt class="py-op">:</tt> </tt>
 <a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">      <tt class="py-name">port_number</tt> <tt class="py-op">=</tt> <tt class="py-name">port</tt> </tt>
 <a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">        <tt class="py-name">httpd</tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name" targets="Class oauth2client.tools.ClientRedirectServer=oauth2client.tools.ClientRedirectServer-class.html"><a title="oauth2client.tools.ClientRedirectServer" class="py-name" href="#" onclick="return doclink('link-15', 'ClientRedirectServer', 'link-15');">ClientRedirectServer</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-16" class="py-name"><a title="apiclient.model.FLAGS
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">        <tt class="py-name">httpd</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name" targets="Class oauth2client.tools.ClientRedirectServer=oauth2client.tools.ClientRedirectServer-class.html"><a title="oauth2client.tools.ClientRedirectServer" class="py-name" href="#" onclick="return doclink('link-18', 'ClientRedirectServer', 'link-18');">ClientRedirectServer</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-19" class="py-name"><a title="apiclient.model.FLAGS
 oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-16', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_host_name</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">                                     <tt id="link-17" class="py-name" targets="Class oauth2client.tools.ClientRedirectHandler=oauth2client.tools.ClientRedirectHandler-class.html"><a title="oauth2client.tools.ClientRedirectHandler" class="py-name" href="#" onclick="return doclink('link-17', 'ClientRedirectHandler', 'link-17');">ClientRedirectHandler</a></tt><tt class="py-op">)</tt> </tt>
+oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-19', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_host_name</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">                                     <tt id="link-20" class="py-name" targets="Class oauth2client.tools.ClientRedirectHandler=oauth2client.tools.ClientRedirectHandler-class.html"><a title="oauth2client.tools.ClientRedirectHandler" class="py-name" href="#" onclick="return doclink('link-20', 'ClientRedirectHandler', 'link-20');">ClientRedirectHandler</a></tt><tt class="py-op">)</tt> </tt>
 <a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
 <a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
 <a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
 <a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">        <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
 <a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">        <tt class="py-keyword">break</tt> </tt>
-<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">    <tt id="link-18" class="py-name"><a title="apiclient.model.FLAGS
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">    <tt id="link-21" class="py-name"><a title="apiclient.model.FLAGS
 oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-18', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt> <tt class="py-op">=</tt> <tt class="py-name">success</tt> </tt>
+oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-21', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt> <tt class="py-op">=</tt> <tt class="py-name">success</tt> </tt>
 <a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">success</tt><tt class="py-op">:</tt> </tt>
 <a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">      <tt class="py-keyword">print</tt> <tt class="py-string">'Failed to start a local webserver listening on either port 8080'</tt> </tt>
 <a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">      <tt class="py-keyword">print</tt> <tt class="py-string">'or port 9090. Please check your firewall settings and locally'</tt> </tt>
@@ -223,24 +223,24 @@
 <a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">      <tt class="py-keyword">print</tt> <tt class="py-string">'authorization.'</tt> </tt>
 <a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">      <tt class="py-keyword">print</tt> </tt>
 <a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"> </tt>
-<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-19" class="py-name"><a title="apiclient.model.FLAGS
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-22" class="py-name"><a title="apiclient.model.FLAGS
 oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-19', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
-<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">    <tt class="py-name">oauth_callback</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://%s:%s/'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-20" class="py-name"><a title="apiclient.model.FLAGS
+oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-22', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">    <tt class="py-name">oauth_callback</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://%s:%s/'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-23" class="py-name"><a title="apiclient.model.FLAGS
 oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-20', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_host_name</tt><tt class="py-op">,</tt> <tt class="py-name">port_number</tt><tt class="py-op">)</tt> </tt>
+oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-23', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_host_name</tt><tt class="py-op">,</tt> <tt class="py-name">port_number</tt><tt class="py-op">)</tt> </tt>
 <a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">    <tt class="py-name">oauth_callback</tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="oauth2client.client.OOB_CALLBACK_URN" class="py-name" href="#" onclick="return doclink('link-21', 'OOB_CALLBACK_URN', 'link-5');">OOB_CALLBACK_URN</a></tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">    <tt class="py-name">oauth_callback</tt> <tt class="py-op">=</tt> <tt id="link-24" class="py-name"><a title="oauth2client.client.OOB_CALLBACK_URN" class="py-name" href="#" onclick="return doclink('link-24', 'OOB_CALLBACK_URN', 'link-5');">OOB_CALLBACK_URN</a></tt> </tt>
 <a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">  <tt class="py-name">flow</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">oauth_callback</tt> </tt>
-<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">  <tt id="link-22" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.authorize_url()=oauth2client.appengine.OAuth2Decorator-class.html#authorize_url"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-22', 'authorize_url', 'link-22');">authorize_url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url()=oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url"><a title="oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url" class="py-name" href="#" onclick="return doclink('link-23', 'step1_get_authorize_url', 'link-23');">step1_get_authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">  <tt id="link-25" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.authorize_url()=oauth2client.appengine.OAuth2Decorator-class.html#authorize_url"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-25', 'authorize_url', 'link-25');">authorize_url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url()=oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url"><a title="oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url" class="py-name" href="#" onclick="return doclink('link-26', 'step1_get_authorize_url', 'link-26');">step1_get_authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 <a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"> </tt>
-<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-24" class="py-name"><a title="apiclient.model.FLAGS
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-27" class="py-name"><a title="apiclient.model.FLAGS
 oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-24', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
-<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">    <tt class="py-name">webbrowser</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-25" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-25', 'authorize_url', 'link-22');">authorize_url</a></tt><tt class="py-op">,</tt> <tt class="py-name">new</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">autoraise</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-27', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">    <tt class="py-name">webbrowser</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-28" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-28', 'authorize_url', 'link-25');">authorize_url</a></tt><tt class="py-op">,</tt> <tt class="py-name">new</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">autoraise</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
 <a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">'Your browser has been opened to visit:'</tt> </tt>
 <a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> </tt>
-<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">'    '</tt> <tt class="py-op">+</tt> <tt id="link-26" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-26', 'authorize_url', 'link-22');">authorize_url</a></tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">'    '</tt> <tt class="py-op">+</tt> <tt id="link-29" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-29', 'authorize_url', 'link-25');">authorize_url</a></tt> </tt>
 <a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> </tt>
 <a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">'If your browser is on a different machine then exit and re-run this'</tt> </tt>
 <a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">'application with the command-line parameter '</tt> </tt>
@@ -250,18 +250,18 @@
 <a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
 <a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">'Go to the following link in your browser:'</tt> </tt>
 <a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> </tt>
-<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">'    '</tt> <tt class="py-op">+</tt> <tt id="link-27" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-27', 'authorize_url', 'link-22');">authorize_url</a></tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">'    '</tt> <tt class="py-op">+</tt> <tt id="link-30" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-30', 'authorize_url', 'link-25');">authorize_url</a></tt> </tt>
 <a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> </tt>
 <a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"> </tt>
 <a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">  <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-28" class="py-name"><a title="apiclient.model.FLAGS
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-31" class="py-name"><a title="apiclient.model.FLAGS
 oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-28', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
+oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-31', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
 <a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">    <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt class="py-name">handle_request</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'error'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-29', 'query_params', 'link-10');">query_params</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'error'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-32', 'query_params', 'link-10');">query_params</a></tt><tt class="py-op">:</tt> </tt>
 <a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">      <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-string">'Authentication request was rejected.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'code'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-30', 'query_params', 'link-10');">query_params</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">      <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-31', 'query_params', 'link-10');">query_params</a></tt><tt class="py-op">[</tt><tt class="py-string">'code'</tt><tt class="py-op">]</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'code'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-33', 'query_params', 'link-10');">query_params</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">      <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-34', 'query_params', 'link-10');">query_params</a></tt><tt class="py-op">[</tt><tt class="py-string">'code'</tt><tt class="py-op">]</tt> </tt>
 <a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
 <a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">      <tt class="py-keyword">print</tt> <tt class="py-string">'Failed to find "code" in the query parameters of the redirect.'</tt> </tt>
 <a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">      <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-string">'Try running with --noauth_local_webserver.'</tt><tt class="py-op">)</tt> </tt>
@@ -269,14 +269,14 @@
 <a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">    <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_input</tt><tt class="py-op">(</tt><tt class="py-string">'Enter verification code: '</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 <a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"> </tt>
 <a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">    <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step2_exchange()=oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-32', 'step2_exchange', 'link-32');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt id="link-33" class="py-name" targets="Module apiclient.http=apiclient.http-module.html,Method oauth2client.appengine.OAuth2Decorator.http()=oauth2client.appengine.OAuth2Decorator-class.html#http"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-33', 'http', 'link-33');">http</a></tt><tt class="py-op">=</tt><tt id="link-34" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-34', 'http', 'link-33');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">  <tt class="py-keyword">except</tt> <tt id="link-35" class="py-name"><a title="oauth2client.client.FlowExchangeError" class="py-name" href="#" onclick="return doclink('link-35', 'FlowExchangeError', 'link-2');">FlowExchangeError</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">    <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step2_exchange()=oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-35', 'step2_exchange', 'link-35');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt id="link-36" class="py-name" targets="Module apiclient.http=apiclient.http-module.html,Method oauth2client.appengine.OAuth2Decorator.http()=oauth2client.appengine.OAuth2Decorator-class.html#http"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-36', 'http', 'link-36');">http</a></tt><tt class="py-op">=</tt><tt id="link-37" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-37', 'http', 'link-36');">http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">  <tt class="py-keyword">except</tt> <tt id="link-38" class="py-name"><a title="oauth2client.client.FlowExchangeError" class="py-name" href="#" onclick="return doclink('link-38', 'FlowExchangeError', 'link-2');">FlowExchangeError</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
 <a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-string">'Authentication has failed: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
 <a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"> </tt>
-<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">  <tt class="py-name">storage</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method oauth2client.client.Storage.put()=oauth2client.client.Storage-class.html#put"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-36', 'put', 'link-36');">put</a></tt><tt class="py-op">(</tt><tt class="py-name">credential</tt><tt class="py-op">)</tt> </tt>
-<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">  <tt class="py-name">credential</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-37', 'set_store', 'link-37');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">storage</tt><tt class="py-op">)</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">  <tt class="py-name">storage</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method oauth2client.client.Storage.put()=oauth2client.client.Storage-class.html#put"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-39', 'put', 'link-39');">put</a></tt><tt class="py-op">(</tt><tt class="py-name">credential</tt><tt class="py-op">)</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">  <tt class="py-name">credential</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-40', 'set_store', 'link-40');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">storage</tt><tt class="py-op">)</tt> </tt>
 <a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">  <tt class="py-keyword">print</tt> <tt class="py-string">'Authentication successful.'</tt> </tt>
 <a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"> </tt>
 <a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">credential</tt> </tt>
@@ -310,7 +310,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:48 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.tools.ClientRedirectHandler-class.html b/docs/epy/oauth2client.tools.ClientRedirectHandler-class.html
index a8b3e1d..16f5236 100644
--- a/docs/epy/oauth2client.tools.ClientRedirectHandler-class.html
+++ b/docs/epy/oauth2client.tools.ClientRedirectHandler-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class ClientRedirectHandler</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.tools-pysrc.html#ClientRedirectHandler">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_clientredi" name="class_hierarchy_for_clientredi">
-<area shape="rect" href="javascript:void(0);" title="BaseHTTPServer.BaseHTTPRequestHandler" alt="" coords="5,5,283,32"/>
-<area shape="rect" href="javascript:void(0);" title="SocketServer.BaseRequestHandler" alt="" coords="307,5,531,32"/>
-<area shape="rect" href="javascript:void(0);" title="SocketServer.StreamRequestHandler" alt="" coords="555,5,789,32"/>
-<area shape="rect" href="oauth2client.tools.ClientRedirectHandler-class.html" title="ClientRedirectHandler" alt="" coords="813,5,960,32"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="BaseHTTPServer.BaseHTTPRequestHandler" alt="" coords="5,6,293,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="SocketServer.BaseRequestHandler" alt="" coords="317,6,547,34"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="SocketServer.StreamRequestHandler" alt="" coords="571,6,811,34"/>
+<area shape="rect" id="node4" href="oauth2client.tools.ClientRedirectHandler-class.html" title="ClientRedirectHandler" alt="" coords="835,6,984,34"/>
 </map>
   <img src="class_hierarchy_for_clientredi.gif" alt='' usemap="#class_hierarchy_for_clientredi" ismap="ismap" class="graph-without-title" />
 </center>
@@ -185,7 +185,9 @@
       <code>weekdayname</code>
       </p>
     <p class="indent-wrapped-lines"><b>Inherited from <code>SocketServer.StreamRequestHandler</code></b>:
+      <code>disable_nagle_algorithm</code>,
       <code>rbufsize</code>,
+      <code>timeout</code>,
       <code>wbufsize</code>
       </p>
     </td>
@@ -286,7 +288,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:46 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.tools.ClientRedirectServer-class.html b/docs/epy/oauth2client.tools.ClientRedirectServer-class.html
index efd4d9c..730ea79 100644
--- a/docs/epy/oauth2client.tools.ClientRedirectServer-class.html
+++ b/docs/epy/oauth2client.tools.ClientRedirectServer-class.html
@@ -56,10 +56,10 @@
 <h1 class="epydoc">Class ClientRedirectServer</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.tools-pysrc.html#ClientRedirectServer">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_clientredi_2" name="class_hierarchy_for_clientredi_2">
-<area shape="rect" href="javascript:void(0);" title="BaseHTTPServer.HTTPServer" alt="" coords="5,5,197,32"/>
-<area shape="rect" href="javascript:void(0);" title="SocketServer.BaseServer" alt="" coords="221,5,389,32"/>
-<area shape="rect" href="javascript:void(0);" title="SocketServer.TCPServer" alt="" coords="413,5,576,32"/>
-<area shape="rect" href="oauth2client.tools.ClientRedirectServer-class.html" title="ClientRedirectServer" alt="" coords="600,5,739,32"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="BaseHTTPServer.HTTPServer" alt="" coords="5,6,208,34"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="SocketServer.BaseServer" alt="" coords="232,6,405,34"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="SocketServer.TCPServer" alt="" coords="429,6,600,34"/>
+<area shape="rect" id="node4" href="oauth2client.tools.ClientRedirectServer-class.html" title="ClientRedirectServer" alt="" coords="624,6,765,34"/>
 </map>
   <img src="class_hierarchy_for_clientredi_2.gif" alt='' usemap="#class_hierarchy_for_clientredi_2" ismap="ismap" class="graph-without-title" />
 </center>
@@ -101,7 +101,8 @@
       <code>fileno</code>,
       <code>get_request</code>,
       <code>server_activate</code>,
-      <code>server_close</code>
+      <code>server_close</code>,
+      <code>shutdown_request</code>
       </p>
     <p class="indent-wrapped-lines"><b>Inherited from <code>SocketServer.BaseServer</code></b>:
       <code>finish_request</code>,
@@ -182,7 +183,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:16 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:46 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.util-module.html b/docs/epy/oauth2client.util-module.html
index de8ace2..4dec008 100644
--- a/docs/epy/oauth2client.util-module.html
+++ b/docs/epy/oauth2client.util-module.html
@@ -99,6 +99,40 @@
       
     </td>
   </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <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 />
+      Converts scope value to a string.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.util-pysrc.html#scopes_to_string">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <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 />
+      Converts a dictionary to a tuple that can be used as an immutable key.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.util-pysrc.html#dict_to_tuple_key">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
 </table>
 <!-- ==================== VARIABLES ==================== -->
 <a name="section-Variables"></a>
@@ -168,7 +202,7 @@
 A decorator to declare that only the first N arguments my be positional.
 
 This decorator makes it easy to support Python 3 style key-word only
-parameters.  For example, in Python 3 it is possible to write:
+parameters. For example, in Python 3 it is possible to write:
 
   def fn(pos1, *, kwonly1=None, kwonly1=None):
     ...
@@ -218,7 +252,7 @@
 respectively, if a declaration is violated.
 
 Args:
-  max_positional_arguments: Maximum number of positional arguments.  All
+  max_positional_arguments: Maximum number of positional arguments. All
     parameters after the this index must be keyword only.
 
 Returns:
@@ -235,6 +269,69 @@
   </dl>
 </td></tr></table>
 </div>
+<a name="scopes_to_string"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">scopes_to_string</span>(<span class="sig-arg">scopes</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="oauth2client.util-pysrc.html#scopes_to_string">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Converts scope value to a string.
+
+If scopes is a string then it is simply passed through. If scopes is an
+iterable then a string is returned that is all the individual scopes
+concatenated with spaces.
+
+Args:
+  scopes: string or iterable of strings, the scopes.
+
+Returns:
+  The scopes formatted as a single string.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="dict_to_tuple_key"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">dict_to_tuple_key</span>(<span class="sig-arg">dictionary</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="oauth2client.util-pysrc.html#dict_to_tuple_key">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Converts a dictionary to a tuple that can be used as an immutable key.
+
+The resulting key is always sorted so that logically equivalent dictionaries
+always produce an identical tuple for a key.
+
+Args:
+  dictionary: the dictionary to use as the key.
+
+Returns:
+  A tuple representing the dictionary in it's naturally sorted ordering.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
 <br />
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
@@ -259,7 +356,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:32 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.util-pysrc.html b/docs/epy/oauth2client.util-pysrc.html
index 71ad68e..531bba6 100644
--- a/docs/epy/oauth2client.util-pysrc.html
+++ b/docs/epy/oauth2client.util-pysrc.html
@@ -82,8 +82,9 @@
 <a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">gflags</tt> </tt>
 <a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">inspect</tt> </tt>
 <a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
-<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"> </tt>
-<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">types</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
@@ -91,100 +92,100 @@
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
 oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-0', 'logger', 'link-0');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
-<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"> </tt>
-<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable apiclient.model.FLAGS=apiclient.model-module.html#FLAGS,Variable oauth2client.tools.FLAGS=oauth2client.tools-module.html#FLAGS,Variable oauth2client.util.FLAGS=oauth2client.util-module.html#FLAGS"><a title="apiclient.model.FLAGS
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable apiclient.model.FLAGS=apiclient.model-module.html#FLAGS,Variable oauth2client.tools.FLAGS=oauth2client.tools-module.html#FLAGS,Variable oauth2client.util.FLAGS=oauth2client.util-module.html#FLAGS"><a title="apiclient.model.FLAGS
 oauth2client.tools.FLAGS
 oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-1', 'FLAGS', 'link-1');">FLAGS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">gflags</tt><tt class="py-op">.</tt><tt id="link-2" class="py-name"><a title="apiclient.model.FLAGS
 oauth2client.tools.FLAGS
 oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-2', 'FLAGS', 'link-1');">FLAGS</a></tt> </tt>
-<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"> </tt>
-<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-name">gflags</tt><tt class="py-op">.</tt><tt class="py-name">DEFINE_enum</tt><tt class="py-op">(</tt><tt class="py-string">'positional_parameters_enforcement'</tt><tt class="py-op">,</tt> <tt class="py-string">'WARNING'</tt><tt class="py-op">,</tt> </tt>
-<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">    <tt class="py-op">[</tt><tt class="py-string">'EXCEPTION'</tt><tt class="py-op">,</tt> <tt class="py-string">'WARNING'</tt><tt class="py-op">,</tt> <tt class="py-string">'IGNORE'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">    <tt class="py-string">'The action when an oauth2client.util.positional declaration is violated.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-name">gflags</tt><tt class="py-op">.</tt><tt class="py-name">DEFINE_enum</tt><tt class="py-op">(</tt><tt class="py-string">'positional_parameters_enforcement'</tt><tt class="py-op">,</tt> <tt class="py-string">'WARNING'</tt><tt class="py-op">,</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">    <tt class="py-op">[</tt><tt class="py-string">'EXCEPTION'</tt><tt class="py-op">,</tt> <tt class="py-string">'WARNING'</tt><tt class="py-op">,</tt> <tt class="py-string">'IGNORE'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">    <tt class="py-string">'The action when an oauth2client.util.positional declaration is violated.'</tt><tt class="py-op">)</tt> </tt>
 <a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"> </tt>
-<a name="positional"></a><div id="positional-def"><a name="L40"></a><tt class="py-lineno"> 40</tt> <a class="py-toggle" href="#" id="positional-toggle" onclick="return toggle('positional');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.util-module.html#positional">positional</a><tt class="py-op">(</tt><tt class="py-param">max_positional_args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="positional-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="positional-expanded"><a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">  <tt class="py-docstring">"""A decorator to declare that only the first N arguments my be positional.</tt> </tt>
-<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">  This decorator makes it easy to support Python 3 style key-word only</tt> </tt>
-<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">  parameters.  For example, in Python 3 it is possible to write:</tt> </tt>
-<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">    def fn(pos1, *, kwonly1=None, kwonly1=None):</tt> </tt>
-<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">      ...</tt> </tt>
-<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">  All named parameters after * must be a keyword:</tt> </tt>
-<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">    fn(10, 'kw1', 'kw2')  # Raises exception.</tt> </tt>
-<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">    fn(10, kwonly1='kw1')  # Ok.</tt> </tt>
-<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
-<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">    To define a function like above, do:</tt> </tt>
-<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">      @positional(1)</tt> </tt>
-<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">      def fn(pos1, kwonly1=None, kwonly2=None):</tt> </tt>
-<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">        ...</tt> </tt>
-<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">    If no default value is provided to a keyword argument, it becomes a required</tt> </tt>
-<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">    keyword argument:</tt> </tt>
-<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring">      @positional(0)</tt> </tt>
-<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-docstring">      def fn(required_kw):</tt> </tt>
-<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-docstring">        ...</tt> </tt>
-<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">    This must be called with the keyword parameter:</tt> </tt>
-<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">      fn()  # Raises exception.</tt> </tt>
-<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring">      fn(10)  # Raises exception.</tt> </tt>
-<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">      fn(required_kw=10)  # Ok.</tt> </tt>
-<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring">    When defining instance or class methods always remember to account for</tt> </tt>
-<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">    'self' and 'cls':</tt> </tt>
-<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">      class MyClass(object):</tt> </tt>
-<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring">        @positional(2)</tt> </tt>
-<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">        def my_method(self, pos1, kwonly1=None):</tt> </tt>
-<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring">          ...</tt> </tt>
-<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">        @classmethod</tt> </tt>
-<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">        @positional(2)</tt> </tt>
-<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring">        def my_method(cls, pos1, kwonly1=None):</tt> </tt>
-<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring">          ...</tt> </tt>
-<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring">  The positional decorator behavior is controlled by the</tt> </tt>
-<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">  --positional_parameters_enforcement flag. The flag may be set to 'EXCEPTION',</tt> </tt>
-<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">  'WARNING' or 'IGNORE' to raise an exception, log a warning, or do nothing,</tt> </tt>
-<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring">  respectively, if a declaration is violated.</tt> </tt>
-<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">    max_positional_arguments: Maximum number of positional arguments.  All</tt> </tt>
-<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">      parameters after the this index must be keyword only.</tt> </tt>
-<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">    A decorator that prevents using arguments after max_positional_args from</tt> </tt>
-<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">    being used as positional parameters.</tt> </tt>
-<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">  Raises:</tt> </tt>
-<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">    TypeError if a key-word only argument is provided as a positional parameter,</tt> </tt>
-<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">    but only if the --positional_parameters_enforcement flag is set to</tt> </tt>
-<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring">    'EXCEPTION'.</tt> </tt>
-<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">positional_decorator</tt><tt class="py-op">(</tt><tt class="py-param">wrapped</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">positional_wrapper</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">max_positional_args</tt><tt class="py-op">:</tt> </tt>
-<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">        <tt class="py-name">plural_s</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">max_positional_args</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
-<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">          <tt class="py-name">plural_s</tt> <tt class="py-op">=</tt> <tt class="py-string">'s'</tt> </tt>
-<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">        <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s() takes at most %d positional argument%s (%d given)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
-<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">            <tt class="py-name">wrapped</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> <tt class="py-name">max_positional_args</tt><tt class="py-op">,</tt> <tt class="py-name">plural_s</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-3" class="py-name"><a title="apiclient.model.FLAGS
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"> </tt>
+<a name="positional"></a><div id="positional-def"><a name="L41"></a><tt class="py-lineno"> 41</tt> <a class="py-toggle" href="#" id="positional-toggle" onclick="return toggle('positional');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.util-module.html#positional">positional</a><tt class="py-op">(</tt><tt class="py-param">max_positional_args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="positional-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="positional-expanded"><a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">  <tt class="py-docstring">"""A decorator to declare that only the first N arguments my be positional.</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">  This decorator makes it easy to support Python 3 style key-word only</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">  parameters. For example, in Python 3 it is possible to write:</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">    def fn(pos1, *, kwonly1=None, kwonly1=None):</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">      ...</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">  All named parameters after * must be a keyword:</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">    fn(10, 'kw1', 'kw2')  # Raises exception.</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">    fn(10, kwonly1='kw1')  # Ok.</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">    To define a function like above, do:</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">      @positional(1)</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">      def fn(pos1, kwonly1=None, kwonly2=None):</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">        ...</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">    If no default value is provided to a keyword argument, it becomes a required</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">    keyword argument:</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-docstring">      @positional(0)</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-docstring">      def fn(required_kw):</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring">        ...</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">    This must be called with the keyword parameter:</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring">      fn()  # Raises exception.</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">      fn(10)  # Raises exception.</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">      fn(required_kw=10)  # Ok.</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">    When defining instance or class methods always remember to account for</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">    'self' and 'cls':</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">      class MyClass(object):</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">        @positional(2)</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring">        def my_method(self, pos1, kwonly1=None):</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">          ...</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">        @classmethod</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring">        @positional(2)</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring">        def my_method(cls, pos1, kwonly1=None):</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring">          ...</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">  The positional decorator behavior is controlled by the</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">  --positional_parameters_enforcement flag. The flag may be set to 'EXCEPTION',</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring">  'WARNING' or 'IGNORE' to raise an exception, log a warning, or do nothing,</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring">  respectively, if a declaration is violated.</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">    max_positional_arguments: Maximum number of positional arguments. All</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring">      parameters after the this index must be keyword only.</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">    A decorator that prevents using arguments after max_positional_args from</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">    being used as positional parameters.</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">  Raises:</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">    TypeError if a key-word only argument is provided as a positional parameter,</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring">    but only if the --positional_parameters_enforcement flag is set to</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">    'EXCEPTION'.</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">positional_decorator</tt><tt class="py-op">(</tt><tt class="py-param">wrapped</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">positional_wrapper</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">max_positional_args</tt><tt class="py-op">:</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-name">plural_s</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">max_positional_args</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">          <tt class="py-name">plural_s</tt> <tt class="py-op">=</tt> <tt class="py-string">'s'</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s() takes at most %d positional argument%s (%d given)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">            <tt class="py-name">wrapped</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> <tt class="py-name">max_positional_args</tt><tt class="py-op">,</tt> <tt class="py-name">plural_s</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-3" class="py-name"><a title="apiclient.model.FLAGS
 oauth2client.tools.FLAGS
 oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-3', 'FLAGS', 'link-1');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">positional_parameters_enforcement</tt> <tt class="py-op">==</tt> <tt class="py-string">'EXCEPTION'</tt><tt class="py-op">:</tt> </tt>
-<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
-<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt id="link-4" class="py-name"><a title="apiclient.model.FLAGS
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt id="link-4" class="py-name"><a title="apiclient.model.FLAGS
 oauth2client.tools.FLAGS
 oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-4', 'FLAGS', 'link-1');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">positional_parameters_enforcement</tt> <tt class="py-op">==</tt> <tt class="py-string">'WARNING'</tt><tt class="py-op">:</tt> </tt>
-<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">          <tt id="link-5" class="py-name"><a title="apiclient.discovery.logger
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">          <tt id="link-5" class="py-name"><a title="apiclient.discovery.logger
 oauth2client.appengine.logger
 oauth2client.client.logger
 oauth2client.crypt.logger
@@ -192,17 +193,51 @@
 oauth2client.locked_file.logger
 oauth2client.multistore_file.logger
 oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-5', 'logger', 'link-0');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
-<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-comment"># IGNORE</tt> </tt>
-<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">          <tt class="py-keyword">pass</tt> </tt>
-<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">wrapped</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">positional_wrapper</tt> </tt>
-</div><a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"> </tt>
-<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">max_positional_args</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">positional_decorator</tt> </tt>
-<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">    <tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">defaults</tt> <tt class="py-op">=</tt> <tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">getargspec</tt><tt class="py-op">(</tt><tt class="py-name">max_positional_args</tt><tt class="py-op">)</tt> </tt>
-<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-6" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-6', 'positional', 'link-6');">positional</a></tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">defaults</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">(</tt><tt class="py-name">max_positional_args</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-comment"># IGNORE</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">          <tt class="py-keyword">pass</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">wrapped</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">positional_wrapper</tt> </tt>
+</div><a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">max_positional_args</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">positional_decorator</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">    <tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">defaults</tt> <tt class="py-op">=</tt> <tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">getargspec</tt><tt class="py-op">(</tt><tt class="py-name">max_positional_args</tt><tt class="py-op">)</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-6" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-6', 'positional', 'link-6');">positional</a></tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">defaults</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">(</tt><tt class="py-name">max_positional_args</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"> </tt>
+<a name="scopes_to_string"></a><div id="scopes_to_string-def"><a name="L131"></a><tt class="py-lineno">131</tt> <a class="py-toggle" href="#" id="scopes_to_string-toggle" onclick="return toggle('scopes_to_string');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.util-module.html#scopes_to_string">scopes_to_string</a><tt class="py-op">(</tt><tt class="py-param">scopes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="scopes_to_string-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="scopes_to_string-expanded"><a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">  <tt class="py-docstring">"""Converts scope value to a string.</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-docstring">  If scopes is a string then it is simply passed through. If scopes is an</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-docstring">  iterable then a string is returned that is all the individual scopes</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-docstring">  concatenated with spaces.</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-docstring">    scopes: string or iterable of strings, the scopes.</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-docstring">    The scopes formatted as a single string.</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">scopes</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">StringTypes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">scopes</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">scopes</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"> </tt>
+<a name="dict_to_tuple_key"></a><div id="dict_to_tuple_key-def"><a name="L150"></a><tt class="py-lineno">150</tt> <a class="py-toggle" href="#" id="dict_to_tuple_key-toggle" onclick="return toggle('dict_to_tuple_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.util-module.html#dict_to_tuple_key">dict_to_tuple_key</a><tt class="py-op">(</tt><tt class="py-param">dictionary</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="dict_to_tuple_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="dict_to_tuple_key-expanded"><a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">  <tt class="py-docstring">"""Converts a dictionary to a tuple that can be used as an immutable key.</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-docstring">  The resulting key is always sorted so that logically equivalent dictionaries</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-docstring">  always produce an identical tuple for a key.</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-docstring">    dictionary: the dictionary to use as the key.</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-docstring">    A tuple representing the dictionary in it's naturally sorted ordering.</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-name">sorted</tt><tt class="py-op">(</tt><tt class="py-name">dictionary</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Method apiclient.push.Headers.items()=apiclient.push.Headers-class.html#items"><a title="apiclient.push.Headers.items" class="py-name" href="#" onclick="return doclink('link-7', 'items', 'link-7');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"> </tt><script type="text/javascript">
 <!--
 expandto(location.href);
 // -->
@@ -232,7 +267,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:49 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.xsrfutil-module.html b/docs/epy/oauth2client.xsrfutil-module.html
index 7097ba4..8a34496 100644
--- a/docs/epy/oauth2client.xsrfutil-module.html
+++ b/docs/epy/oauth2client.xsrfutil-module.html
@@ -282,7 +282,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:11 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:32 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.xsrfutil-pysrc.html b/docs/epy/oauth2client.xsrfutil-pysrc.html
index b5ccf58..05ff704 100644
--- a/docs/epy/oauth2client.xsrfutil-pysrc.html
+++ b/docs/epy/oauth2client.xsrfutil-pysrc.html
@@ -196,7 +196,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:17 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:47 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/redirect.html b/docs/epy/redirect.html
index 78719ba..1296a93 100644
--- a/docs/epy/redirect.html
+++ b/docs/epy/redirect.html
@@ -7,7 +7,7 @@
 <body>
 <script type="text/javascript">
 <!--
-var pages = ["oauth2client.locked_file.CredentialsFileSymbolicLinkError-c", "oauth2client.appengine.OAuth2DecoratorFromClientSecrets-c", "oauth2client.multistore_file.NewerCredentialStoreError-c", "oauth2client.clientsecrets.InvalidClientSecretsError-c", "oauth2client.file.CredentialsFileSymbolicLinkError-c", "oauth2client.client.SignedJwtAssertionCredentials-c", "oauth2client.client.UnknownClientSecretsFlowError-c", "oauth2client.multistore_file._MultiStore._Storage-c", "oauth2client.appengine.InvalidClientSecretsError-c", "oauth2client.client.AccessTokenCredentialsError-c", "oauth2client.locked_file.AlreadyLockedException-c", "oauth2client.appengine.AppAssertionCredentials-c", "oauth2client.appengine.InvalidXsrfTokenError-c", "oauth2client.client.AccessTokenRefreshError-c", "apiclient.errors.UnacceptableMimeTypeError-c", "oauth2client.appengine.CredentialsProperty-c", "oauth2client.client.AccessTokenCredentials-c", "apiclient.errors.UnknownApiNameOrVersion-c", "oauth2client.appengine.SiteXsrfSecretKey-c", "oauth2client.client.AssertionCredentials-c", "oauth2client.django_orm.CredentialsField-c", "oauth2client.gce.AppAssertionCredentials-c", "oauth2client.multistore_file._MultiStore-c", "oauth2client.tools.ClientRedirectHandler-c", "google.appengine.ext.db.PropertiedClass-c", "oauth2client.appengine.CredentialsModel-c", "oauth2client.appengine.StorageByKeyName-c", "oauth2client.client.OAuth2WebServerFlow-c", "oauth2client.client.VerifyJwtTokenError-c", "oauth2client.tools.ClientRedirectServer-c", "apiclient.errors.InvalidChunkSizeError-c", "apiclient.errors.UnexpectedMethodError-c", "oauth2client.appengine.OAuth2Decorator-c", "apiclient.errors.MediaUploadSizeError-c", "apiclient.errors.ResumableUploadError-c", "oauth2client.client.FlowExchangeError-c", "oauth2client.client.OAuth2Credentials-c", "oauth2client.locked_file._PosixOpener-c", "apiclient.errors.UnexpectedBodyError-c", "apiclient.http.MediaDownloadProgress-c", "oauth2client.keyring_storage.Storage-c", "apiclient.model.ProtocolBufferModel-c", "oauth2client.appengine.FlowProperty-c", "oauth2client.crypt.AppIdentityError-c", "oauth2client.locked_file.LockedFile-c", "apiclient.http.MediaInMemoryUpload-c", "apiclient.http.MediaIoBaseDownload-c", "apiclient.http.MediaUploadProgress-c", "oauth2client.multistore_file.Error-c", "apiclient.errors.InvalidJsonError-c", "apiclient.http.RequestMockBuilder-c", "oauth2client.django_orm.FlowField-c", "apiclient.errors.UnknownLinkType-c", "apiclient.http.MediaIoBaseUpload-c", "apiclient.schema._SchemaToStruct-c", "oauth2client.clientsecrets.Error-c", "oauth2client.locked_file._Opener-c", "apiclient.http.BatchHttpRequest-c", "apiclient.http.HttpMockSequence-c", "oauth2client.client.Credentials-c", "oauth2client.client.MemoryCache-c", "oauth2client.django_orm.Storage-c", "apiclient.http.HttpRequestMock-c", "apiclient.http.MediaFileUpload-c", "oauth2client.keyring_storage-m", "oauth2client.multistore_file-m", "apiclient.errors.BatchError-c", "apiclient.http._StreamSlice-c", "oauth2client.client.Storage-c", "oauth2client.crypt.Verifier-c", "oauth2client.clientsecrets-m", "apiclient.errors.HttpError-c", "apiclient.http.HttpRequest-c", "apiclient.http.MediaUpload-c", "apiclient.model.MediaModel-c", "apiclient.model.BaseModel-c", "apiclient.model.JsonModel-c", "oauth2client.client.Error-c", "oauth2client.crypt.Signer-c", "oauth2client.file.Storage-c", "oauth2client.locked_file-m", "apiclient.model.RawModel-c", "apiclient.schema.Schemas-c", "oauth2client.client.Flow-c", "oauth2client.django_orm-m", "apiclient.http.HttpMock-c", "oauth2client.appengine-m", "apiclient.errors.Error-c", "oauth2client.xsrfutil-m", "apiclient.model.Model-c", "oauth2client.anyjson-m", "apiclient.discovery-m", "apiclient.mimeparse-m", "oauth2client.client-m", "oauth2client.crypt-m", "oauth2client.tools-m", "oauth2client.file-m", "oauth2client.util-m", "apiclient.errors-m", "apiclient.schema-m", "oauth2client.gce-m", "apiclient.model-m", "apiclient.http-m", "apiclient.ext-m", "oauth2client-m", "apiclient-m"];
+var pages = ["oauth2client.locked_file.CredentialsFileSymbolicLinkError-c", "oauth2client.appengine.OAuth2DecoratorFromClientSecrets-c", "oauth2client.multistore_file.NewerCredentialStoreError-c", "oauth2client.clientsecrets.InvalidClientSecretsError-c", "oauth2client.file.CredentialsFileSymbolicLinkError-c", "oauth2client.client.SignedJwtAssertionCredentials-c", "oauth2client.client.UnknownClientSecretsFlowError-c", "oauth2client.multistore_file._MultiStore._Storage-c", "oauth2client.appengine.InvalidClientSecretsError-c", "oauth2client.client.AccessTokenCredentialsError-c", "oauth2client.locked_file.AlreadyLockedException-c", "apiclient.push.InvalidSubscriptionRequestError-c", "oauth2client.appengine.AppAssertionCredentials-c", "oauth2client.appengine.CredentialsNDBProperty-c", "oauth2client.appengine.InvalidXsrfTokenError-c", "oauth2client.appengine.SiteXsrfSecretKeyNDB-c", "oauth2client.client.AccessTokenRefreshError-c", "apiclient.errors.UnacceptableMimeTypeError-c", "oauth2client.appengine.CredentialsNDBModel-c", "oauth2client.appengine.CredentialsProperty-c", "oauth2client.client.AccessTokenCredentials-c", "apiclient.errors.UnknownApiNameOrVersion-c", "oauth2client.appengine.SiteXsrfSecretKey-c", "oauth2client.client.AssertionCredentials-c", "oauth2client.django_orm.CredentialsField-c", "oauth2client.gce.AppAssertionCredentials-c", "oauth2client.multistore_file._MultiStore-c", "oauth2client.tools.ClientRedirectHandler-c", "oauth2client.appengine.CredentialsModel-c", "oauth2client.appengine.StorageByKeyName-c", "oauth2client.client.NonAsciiHeaderError-c", "oauth2client.client.OAuth2WebServerFlow-c", "oauth2client.client.VerifyJwtTokenError-c", "oauth2client.tools.ClientRedirectServer-c", "apiclient.errors.InvalidChunkSizeError-c", "apiclient.errors.UnexpectedMethodError-c", "oauth2client.appengine.FlowNDBProperty-c", "oauth2client.appengine.OAuth2Decorator-c", "apiclient.errors.MediaUploadSizeError-c", "apiclient.errors.ResumableUploadError-c", "oauth2client.client.FlowExchangeError-c", "oauth2client.client.OAuth2Credentials-c", "oauth2client.locked_file._PosixOpener-c", "apiclient.errors.UnexpectedBodyError-c", "apiclient.http.MediaDownloadProgress-c", "oauth2client.keyring_storage.Storage-c", "apiclient.model.ProtocolBufferModel-c", "oauth2client.appengine.FlowProperty-c", "oauth2client.crypt.AppIdentityError-c", "oauth2client.locked_file.LockedFile-c", "apiclient.http.MediaInMemoryUpload-c", "apiclient.http.MediaIoBaseDownload-c", "apiclient.http.MediaUploadProgress-c", "oauth2client.multistore_file.Error-c", "apiclient.errors.InvalidJsonError-c", "apiclient.http.RequestMockBuilder-c", "oauth2client.django_orm.FlowField-c", "apiclient.errors.UnknownFileType-c", "apiclient.errors.UnknownLinkType-c", "apiclient.http.MediaIoBaseUpload-c", "apiclient.schema._SchemaToStruct-c", "oauth2client.clientsecrets.Error-c", "oauth2client.locked_file._Opener-c", "apiclient.http.BatchHttpRequest-c", "apiclient.http.HttpMockSequence-c", "oauth2client.client.Credentials-c", "oauth2client.client.MemoryCache-c", "oauth2client.django_orm.Storage-c", "apiclient.http.HttpRequestMock-c", "apiclient.http.MediaFileUpload-c", "apiclient.push.WebhookChannel-c", "oauth2client.keyring_storage-m", "oauth2client.multistore_file-m", "apiclient.discovery.Resource-c", "apiclient.errors.BatchError-c", "apiclient.http._StreamSlice-c", "apiclient.push.Subscription-c", "oauth2client.client.Storage-c", "oauth2client.clientsecrets-m", "apiclient.errors.HttpError-c", "apiclient.http.HttpRequest-c", "apiclient.http.MediaUpload-c", "apiclient.model.MediaModel-c", "apiclient.model.BaseModel-c", "apiclient.model.JsonModel-c", "oauth2client.client.Error-c", "oauth2client.file.Storage-c", "oauth2client.locked_file-m", "apiclient.model.RawModel-c", "apiclient.schema.Schemas-c", "oauth2client.client.Flow-c", "oauth2client.django_orm-m", "apiclient.http.HttpMock-c", "oauth2client.appengine-m", "apiclient.errors.Error-c", "apiclient.push.Channel-c", "apiclient.push.Headers-c", "oauth2client.xsrfutil-m", "apiclient.model.Model-c", "oauth2client.anyjson-m", "apiclient.discovery-m", "apiclient.mimeparse-m", "oauth2client.client-m", "oauth2client.crypt-m", "oauth2client.tools-m", "oauth2client.file-m", "oauth2client.util-m", "apiclient.errors-m", "apiclient.schema-m", "oauth2client.gce-m", "apiclient.model-m", "apiclient.http-m", "apiclient.push-m", "apiclient.ext-m", "oauth2client-m", "apiclient-m"];
 var dottedName = get_anchor();
 if (dottedName) {
     var target = redirect_url(dottedName);
diff --git a/docs/epy/toc-apiclient.discovery-module.html b/docs/epy/toc-apiclient.discovery-module.html
index be5b52f..0bd25a7 100644
--- a/docs/epy/toc-apiclient.discovery-module.html
+++ b/docs/epy/toc-apiclient.discovery-module.html
@@ -12,7 +12,9 @@
       alink="#204080">
 <h1 class="toc">Module discovery</h1>
 <hr />
-  <h2 class="toc">Functions</h2>
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="apiclient.discovery.Resource-class.html"
+     >Resource</a><br />  <h2 class="toc">Functions</h2>
   <div class="private">
     <a target="mainFrame" href="apiclient.discovery-module.html#_add_query_parameter"
      >_add_query_parameter</a><br />  </div>
@@ -20,14 +22,13 @@
     <a target="mainFrame" href="apiclient.discovery-module.html#_cast"
      >_cast</a><br />  </div>
   <div class="private">
-    <a target="mainFrame" href="apiclient.discovery-module.html#_createResource"
-     >_createResource</a><br />  </div>
-  <div class="private">
     <a target="mainFrame" href="apiclient.discovery-module.html#_media_size_to_long"
      >_media_size_to_long</a><br />  </div>
     <a target="mainFrame" href="apiclient.discovery-module.html#build"
      >build</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#build_from_document"
-     >build_from_document</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#fix_method_name"
+     >build_from_document</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#createMethod"
+     >createMethod</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#createNextMethod"
+     >createNextMethod</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#fix_method_name"
      >fix_method_name</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#key2param"
      >key2param</a><br />  <h2 class="toc">Variables</h2>
     <a target="mainFrame" href="apiclient.discovery-module.html#DEFAULT_METHOD_DOC"
@@ -50,8 +51,8 @@
      >Schemas</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#URITEMPLATE"
      >URITEMPLATE</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#UnacceptableMimeTypeError"
      >UnacceptableMimeTypeError</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#UnknownApiNameOrVersion"
-     >UnknownApiNameOrVersion</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#UnknownLinkType"
-     >UnknownLinkType</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#VARNAME"
+     >UnknownApiNameOrVersion</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#UnknownFileType"
+     >UnknownFileType</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#VARNAME"
      >VARNAME</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#copy"
      >copy</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#httplib2"
      >httplib2</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#logger"
@@ -61,8 +62,7 @@
      >mimetypes</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#os"
      >os</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#parse_qsl"
      >parse_qsl</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#positional"
-     >positional</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#random"
-     >random</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#re"
+     >positional</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#re"
      >re</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#simplejson"
      >simplejson</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#uritemplate"
      >uritemplate</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#urllib"
diff --git a/docs/epy/toc-apiclient.errors-module.html b/docs/epy/toc-apiclient.errors-module.html
index deff83e..8981987 100644
--- a/docs/epy/toc-apiclient.errors-module.html
+++ b/docs/epy/toc-apiclient.errors-module.html
@@ -24,7 +24,8 @@
      >UnacceptableMimeTypeError</a><br />    <a target="mainFrame" href="apiclient.errors.UnexpectedBodyError-class.html"
      >UnexpectedBodyError</a><br />    <a target="mainFrame" href="apiclient.errors.UnexpectedMethodError-class.html"
      >UnexpectedMethodError</a><br />    <a target="mainFrame" href="apiclient.errors.UnknownApiNameOrVersion-class.html"
-     >UnknownApiNameOrVersion</a><br />    <a target="mainFrame" href="apiclient.errors.UnknownLinkType-class.html"
+     >UnknownApiNameOrVersion</a><br />    <a target="mainFrame" href="apiclient.errors.UnknownFileType-class.html"
+     >UnknownFileType</a><br />    <a target="mainFrame" href="apiclient.errors.UnknownLinkType-class.html"
      >UnknownLinkType</a><br /><hr />
 <span class="options">[<a href="javascript:void(0);" class="privatelink"
     onclick="toggle_private();">hide&nbsp;private</a>]</span>
diff --git a/docs/epy/toc-apiclient.push-module.html b/docs/epy/toc-apiclient.push-module.html
new file mode 100644
index 0000000..62aee50
--- /dev/null
+++ b/docs/epy/toc-apiclient.push-module.html
@@ -0,0 +1,45 @@
+<?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>push</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">
+<h1 class="toc">Module push</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="apiclient.push.Channel-class.html"
+     >Channel</a><br />    <a target="mainFrame" href="apiclient.push.Headers-class.html"
+     >Headers</a><br />    <a target="mainFrame" href="apiclient.push.InvalidSubscriptionRequestError-class.html"
+     >InvalidSubscriptionRequestError</a><br />    <a target="mainFrame" href="apiclient.push.Subscription-class.html"
+     >Subscription</a><br />    <a target="mainFrame" href="apiclient.push.WebhookChannel-class.html"
+     >WebhookChannel</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="apiclient.push-module.html#new_token"
+     >new_token</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="apiclient.push-module.html#CLIENT_TOKEN"
+     >CLIENT_TOKEN</a><br />    <a target="mainFrame" href="apiclient.push-module.html#EVENT_TYPE"
+     >EVENT_TYPE</a><br />    <a target="mainFrame" href="apiclient.push-module.html#SUBSCRIBE"
+     >SUBSCRIBE</a><br />    <a target="mainFrame" href="apiclient.push-module.html#SUBSCRIPTION_ID"
+     >SUBSCRIPTION_ID</a><br />    <a target="mainFrame" href="apiclient.push-module.html#TOPIC_ID"
+     >TOPIC_ID</a><br />    <a target="mainFrame" href="apiclient.push-module.html#TOPIC_URI"
+     >TOPIC_URI</a><br />    <a target="mainFrame" href="apiclient.push-module.html#UNSUBSCRIBE"
+     >UNSUBSCRIBE</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<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>
diff --git a/docs/epy/toc-everything.html b/docs/epy/toc-everything.html
index bf92d0b..f96a6f3 100644
--- a/docs/epy/toc-everything.html
+++ b/docs/epy/toc-everything.html
@@ -13,7 +13,8 @@
 <h1 class="toc">Everything</h1>
 <hr />
   <h2 class="toc">All Classes</h2>
-    <a target="mainFrame" href="apiclient.errors.BatchError-class.html"
+    <a target="mainFrame" href="apiclient.discovery.Resource-class.html"
+     >apiclient.discovery.Resource</a><br />    <a target="mainFrame" href="apiclient.errors.BatchError-class.html"
      >apiclient.errors.BatchError</a><br />    <a target="mainFrame" href="apiclient.errors.Error-class.html"
      >apiclient.errors.Error</a><br />    <a target="mainFrame" href="apiclient.errors.HttpError-class.html"
      >apiclient.errors.HttpError</a><br />    <a target="mainFrame" href="apiclient.errors.InvalidChunkSizeError-class.html"
@@ -24,7 +25,8 @@
      >apiclient.errors.UnacceptableMimeTypeError</a><br />    <a target="mainFrame" href="apiclient.errors.UnexpectedBodyError-class.html"
      >apiclient.errors.UnexpectedBodyError</a><br />    <a target="mainFrame" href="apiclient.errors.UnexpectedMethodError-class.html"
      >apiclient.errors.UnexpectedMethodError</a><br />    <a target="mainFrame" href="apiclient.errors.UnknownApiNameOrVersion-class.html"
-     >apiclient.errors.UnknownApiNameOrVersion</a><br />    <a target="mainFrame" href="apiclient.errors.UnknownLinkType-class.html"
+     >apiclient.errors.UnknownApiNameOrVersion</a><br />    <a target="mainFrame" href="apiclient.errors.UnknownFileType-class.html"
+     >apiclient.errors.UnknownFileType</a><br />    <a target="mainFrame" href="apiclient.errors.UnknownLinkType-class.html"
      >apiclient.errors.UnknownLinkType</a><br />    <a target="mainFrame" href="apiclient.http.BatchHttpRequest-class.html"
      >apiclient.http.BatchHttpRequest</a><br />    <a target="mainFrame" href="apiclient.http.HttpMock-class.html"
      >apiclient.http.HttpMock</a><br />    <a target="mainFrame" href="apiclient.http.HttpMockSequence-class.html"
@@ -47,21 +49,29 @@
      >apiclient.model.MediaModel</a><br />    <a target="mainFrame" href="apiclient.model.Model-class.html"
      >apiclient.model.Model</a><br />    <a target="mainFrame" href="apiclient.model.ProtocolBufferModel-class.html"
      >apiclient.model.ProtocolBufferModel</a><br />    <a target="mainFrame" href="apiclient.model.RawModel-class.html"
-     >apiclient.model.RawModel</a><br />    <a target="mainFrame" href="apiclient.schema.Schemas-class.html"
+     >apiclient.model.RawModel</a><br />    <a target="mainFrame" href="apiclient.push.Channel-class.html"
+     >apiclient.push.Channel</a><br />    <a target="mainFrame" href="apiclient.push.Headers-class.html"
+     >apiclient.push.Headers</a><br />    <a target="mainFrame" href="apiclient.push.InvalidSubscriptionRequestError-class.html"
+     >apiclient.push.InvalidSubscriptionRequestError</a><br />    <a target="mainFrame" href="apiclient.push.Subscription-class.html"
+     >apiclient.push.Subscription</a><br />    <a target="mainFrame" href="apiclient.push.WebhookChannel-class.html"
+     >apiclient.push.WebhookChannel</a><br />    <a target="mainFrame" href="apiclient.schema.Schemas-class.html"
      >apiclient.schema.Schemas</a><br />  <div class="private">
     <a target="mainFrame" href="apiclient.schema._SchemaToStruct-class.html"
      >apiclient.schema._SchemaToStruct</a><br />  </div>
-    <a target="mainFrame" href="google.appengine.ext.db.PropertiedClass-class.html"
-     >google.appengine.ext.db.PropertiedClass</a><br />    <a target="mainFrame" href="oauth2client.appengine.AppAssertionCredentials-class.html"
+    <a target="mainFrame" href="oauth2client.appengine.AppAssertionCredentials-class.html"
      >oauth2client.appengine.AppAssertionCredentials</a><br />    <a target="mainFrame" href="oauth2client.appengine.CredentialsModel-class.html"
-     >oauth2client.appengine.CredentialsModel</a><br />    <a target="mainFrame" href="oauth2client.appengine.CredentialsProperty-class.html"
-     >oauth2client.appengine.CredentialsProperty</a><br />    <a target="mainFrame" href="oauth2client.appengine.FlowProperty-class.html"
+     >oauth2client.appengine.CredentialsModel</a><br />    <a target="mainFrame" href="oauth2client.appengine.CredentialsNDBModel-class.html"
+     >oauth2client.appengine.CredentialsNDBModel</a><br />    <a target="mainFrame" href="oauth2client.appengine.CredentialsNDBProperty-class.html"
+     >oauth2client.appengine.CredentialsNDBProperty</a><br />    <a target="mainFrame" href="oauth2client.appengine.CredentialsProperty-class.html"
+     >oauth2client.appengine.CredentialsProperty</a><br />    <a target="mainFrame" href="oauth2client.appengine.FlowNDBProperty-class.html"
+     >oauth2client.appengine.FlowNDBProperty</a><br />    <a target="mainFrame" href="oauth2client.appengine.FlowProperty-class.html"
      >oauth2client.appengine.FlowProperty</a><br />    <a target="mainFrame" href="oauth2client.appengine.InvalidClientSecretsError-class.html"
      >oauth2client.appengine.InvalidClientSecretsError</a><br />    <a target="mainFrame" href="oauth2client.appengine.InvalidXsrfTokenError-class.html"
      >oauth2client.appengine.InvalidXsrfTokenError</a><br />    <a target="mainFrame" href="oauth2client.appengine.OAuth2Decorator-class.html"
      >oauth2client.appengine.OAuth2Decorator</a><br />    <a target="mainFrame" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html"
      >oauth2client.appengine.OAuth2DecoratorFromClientSecrets</a><br />    <a target="mainFrame" href="oauth2client.appengine.SiteXsrfSecretKey-class.html"
-     >oauth2client.appengine.SiteXsrfSecretKey</a><br />    <a target="mainFrame" href="oauth2client.appengine.StorageByKeyName-class.html"
+     >oauth2client.appengine.SiteXsrfSecretKey</a><br />    <a target="mainFrame" href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html"
+     >oauth2client.appengine.SiteXsrfSecretKeyNDB</a><br />    <a target="mainFrame" href="oauth2client.appengine.StorageByKeyName-class.html"
      >oauth2client.appengine.StorageByKeyName</a><br />    <a target="mainFrame" href="oauth2client.client.AccessTokenCredentials-class.html"
      >oauth2client.client.AccessTokenCredentials</a><br />    <a target="mainFrame" href="oauth2client.client.AccessTokenCredentialsError-class.html"
      >oauth2client.client.AccessTokenCredentialsError</a><br />    <a target="mainFrame" href="oauth2client.client.AccessTokenRefreshError-class.html"
@@ -71,7 +81,8 @@
      >oauth2client.client.Error</a><br />    <a target="mainFrame" href="oauth2client.client.Flow-class.html"
      >oauth2client.client.Flow</a><br />    <a target="mainFrame" href="oauth2client.client.FlowExchangeError-class.html"
      >oauth2client.client.FlowExchangeError</a><br />    <a target="mainFrame" href="oauth2client.client.MemoryCache-class.html"
-     >oauth2client.client.MemoryCache</a><br />    <a target="mainFrame" href="oauth2client.client.OAuth2Credentials-class.html"
+     >oauth2client.client.MemoryCache</a><br />    <a target="mainFrame" href="oauth2client.client.NonAsciiHeaderError-class.html"
+     >oauth2client.client.NonAsciiHeaderError</a><br />    <a target="mainFrame" href="oauth2client.client.OAuth2Credentials-class.html"
      >oauth2client.client.OAuth2Credentials</a><br />    <a target="mainFrame" href="oauth2client.client.OAuth2WebServerFlow-class.html"
      >oauth2client.client.OAuth2WebServerFlow</a><br />    <a target="mainFrame" href="oauth2client.client.SignedJwtAssertionCredentials-class.html"
      >oauth2client.client.SignedJwtAssertionCredentials</a><br />    <a target="mainFrame" href="oauth2client.client.Storage-class.html"
@@ -80,9 +91,7 @@
      >oauth2client.client.VerifyJwtTokenError</a><br />    <a target="mainFrame" href="oauth2client.clientsecrets.Error-class.html"
      >oauth2client.clientsecrets.Error</a><br />    <a target="mainFrame" href="oauth2client.clientsecrets.InvalidClientSecretsError-class.html"
      >oauth2client.clientsecrets.InvalidClientSecretsError</a><br />    <a target="mainFrame" href="oauth2client.crypt.AppIdentityError-class.html"
-     >oauth2client.crypt.AppIdentityError</a><br />    <a target="mainFrame" href="oauth2client.crypt.Signer-class.html"
-     >oauth2client.crypt.Signer</a><br />    <a target="mainFrame" href="oauth2client.crypt.Verifier-class.html"
-     >oauth2client.crypt.Verifier</a><br />    <a target="mainFrame" href="oauth2client.django_orm.CredentialsField-class.html"
+     >oauth2client.crypt.AppIdentityError</a><br />    <a target="mainFrame" href="oauth2client.django_orm.CredentialsField-class.html"
      >oauth2client.django_orm.CredentialsField</a><br />    <a target="mainFrame" href="oauth2client.django_orm.FlowField-class.html"
      >oauth2client.django_orm.FlowField</a><br />    <a target="mainFrame" href="oauth2client.django_orm.Storage-class.html"
      >oauth2client.django_orm.Storage</a><br />    <a target="mainFrame" href="oauth2client.file.CredentialsFileSymbolicLinkError-class.html"
@@ -120,14 +129,13 @@
     <a target="mainFrame" href="apiclient.discovery-module.html#_cast"
      >apiclient.discovery._cast</a><br />  </div>
   <div class="private">
-    <a target="mainFrame" href="apiclient.discovery-module.html#_createResource"
-     >apiclient.discovery._createResource</a><br />  </div>
-  <div class="private">
     <a target="mainFrame" href="apiclient.discovery-module.html#_media_size_to_long"
      >apiclient.discovery._media_size_to_long</a><br />  </div>
     <a target="mainFrame" href="apiclient.discovery-module.html#build"
      >apiclient.discovery.build</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#build_from_document"
-     >apiclient.discovery.build_from_document</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#fix_method_name"
+     >apiclient.discovery.build_from_document</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#createMethod"
+     >apiclient.discovery.createMethod</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#createNextMethod"
+     >apiclient.discovery.createNextMethod</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#fix_method_name"
      >apiclient.discovery.fix_method_name</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#key2param"
      >apiclient.discovery.key2param</a><br />    <a target="mainFrame" href="apiclient.http-module.html#set_user_agent"
      >apiclient.http.set_user_agent</a><br />    <a target="mainFrame" href="apiclient.http-module.html#tunnel_patch"
@@ -144,7 +152,8 @@
     <a target="mainFrame" href="apiclient.model-module.html#_abstract"
      >apiclient.model._abstract</a><br />  </div>
     <a target="mainFrame" href="apiclient.model-module.html#makepatch"
-     >apiclient.model.makepatch</a><br />  <div class="private">
+     >apiclient.model.makepatch</a><br />    <a target="mainFrame" href="apiclient.push-module.html#new_token"
+     >apiclient.push.new_token</a><br />  <div class="private">
     <a target="mainFrame" href="oauth2client.appengine-module.html#_build_state_value"
      >oauth2client.appengine._build_state_value</a><br />  </div>
   <div class="private">
@@ -170,7 +179,8 @@
   <div class="private">
     <a target="mainFrame" href="oauth2client.client-module.html#_urlsafe_b64decode"
      >oauth2client.client._urlsafe_b64decode</a><br />  </div>
-    <a target="mainFrame" href="oauth2client.client-module.html#credentials_from_clientsecrets_and_code"
+    <a target="mainFrame" href="oauth2client.client-module.html#clean_headers"
+     >oauth2client.client.clean_headers</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#credentials_from_clientsecrets_and_code"
      >oauth2client.client.credentials_from_clientsecrets_and_code</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#credentials_from_code"
      >oauth2client.client.credentials_from_code</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#flow_from_clientsecrets"
      >oauth2client.client.flow_from_clientsecrets</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#verify_id_token"
@@ -196,9 +206,17 @@
      >oauth2client.crypt.make_signed_jwt</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#verify_signed_jwt_with_certs"
      >oauth2client.crypt.verify_signed_jwt_with_certs</a><br />    <a target="mainFrame" href="oauth2client.locked_file-module.html#validate_file"
      >oauth2client.locked_file.validate_file</a><br />    <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_credential_storage"
-     >oauth2client.multistore_file.get_credential_storage</a><br />    <a target="mainFrame" href="oauth2client.tools-module.html#run"
-     >oauth2client.tools.run</a><br />    <a target="mainFrame" href="oauth2client.util-module.html#positional"
-     >oauth2client.util.positional</a><br />    <a target="mainFrame" href="oauth2client.xsrfutil-module.html#generate_token"
+     >oauth2client.multistore_file.get_credential_storage</a><br />    <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_credential_storage_custom_key"
+     >oauth2client.multistore_file.get_credential_storage_custom_key</a><br />    <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_credential_storage_custom_string_key"
+     >oauth2client.multistore_file.get_credential_storage_custom_string_key</a><br />    <a target="mainFrame" href="oauth2client.tools-module.html#run"
+     >oauth2client.tools.run</a><br />  <div class="private">
+    <a target="mainFrame" href="oauth2client.util-module.html#dict_to_tuple_key"
+     >oauth2client.util.dict_to_tuple_key</a><br />  </div>
+    <a target="mainFrame" href="oauth2client.util-module.html#positional"
+     >oauth2client.util.positional</a><br />  <div class="private">
+    <a target="mainFrame" href="oauth2client.util-module.html#scopes_to_string"
+     >oauth2client.util.scopes_to_string</a><br />  </div>
+    <a target="mainFrame" href="oauth2client.xsrfutil-module.html#generate_token"
      >oauth2client.xsrfutil.generate_token</a><br />    <a target="mainFrame" href="oauth2client.xsrfutil-module.html#validate_token"
      >oauth2client.xsrfutil.validate_token</a><br />  <h2 class="toc">All Variables</h2>
     <a target="mainFrame" href="apiclient.discovery-module.html#DEFAULT_METHOD_DOC"
@@ -221,8 +239,8 @@
      >apiclient.discovery.Schemas</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#URITEMPLATE"
      >apiclient.discovery.URITEMPLATE</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#UnacceptableMimeTypeError"
      >apiclient.discovery.UnacceptableMimeTypeError</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#UnknownApiNameOrVersion"
-     >apiclient.discovery.UnknownApiNameOrVersion</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#UnknownLinkType"
-     >apiclient.discovery.UnknownLinkType</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#VARNAME"
+     >apiclient.discovery.UnknownApiNameOrVersion</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#UnknownFileType"
+     >apiclient.discovery.UnknownFileType</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#VARNAME"
      >apiclient.discovery.VARNAME</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#copy"
      >apiclient.discovery.copy</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#httplib2"
      >apiclient.discovery.httplib2</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#logger"
@@ -232,8 +250,7 @@
      >apiclient.discovery.mimetypes</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#os"
      >apiclient.discovery.os</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#parse_qsl"
      >apiclient.discovery.parse_qsl</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#positional"
-     >apiclient.discovery.positional</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#random"
-     >apiclient.discovery.random</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#re"
+     >apiclient.discovery.positional</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#re"
      >apiclient.discovery.re</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#simplejson"
      >apiclient.discovery.simplejson</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#uritemplate"
      >apiclient.discovery.uritemplate</a><br />    <a target="mainFrame" href="apiclient.discovery-module.html#urllib"
@@ -243,14 +260,22 @@
      >apiclient.http.MAX_URI_LENGTH</a><br />    <a target="mainFrame" href="apiclient.mimeparse-module.html#__credits__"
      >apiclient.mimeparse.__credits__</a><br />    <a target="mainFrame" href="apiclient.mimeparse-module.html#__email__"
      >apiclient.mimeparse.__email__</a><br />    <a target="mainFrame" href="apiclient.model-module.html#FLAGS"
-     >apiclient.model.FLAGS</a><br />    <a target="mainFrame" href="oauth2client.appengine-module.html#OAUTH2CLIENT_NAMESPACE"
+     >apiclient.model.FLAGS</a><br />    <a target="mainFrame" href="apiclient.push-module.html#CLIENT_TOKEN"
+     >apiclient.push.CLIENT_TOKEN</a><br />    <a target="mainFrame" href="apiclient.push-module.html#EVENT_TYPE"
+     >apiclient.push.EVENT_TYPE</a><br />    <a target="mainFrame" href="apiclient.push-module.html#SUBSCRIBE"
+     >apiclient.push.SUBSCRIBE</a><br />    <a target="mainFrame" href="apiclient.push-module.html#SUBSCRIPTION_ID"
+     >apiclient.push.SUBSCRIPTION_ID</a><br />    <a target="mainFrame" href="apiclient.push-module.html#TOPIC_ID"
+     >apiclient.push.TOPIC_ID</a><br />    <a target="mainFrame" href="apiclient.push-module.html#TOPIC_URI"
+     >apiclient.push.TOPIC_URI</a><br />    <a target="mainFrame" href="apiclient.push-module.html#UNSUBSCRIBE"
+     >apiclient.push.UNSUBSCRIBE</a><br />    <a target="mainFrame" href="oauth2client.appengine-module.html#OAUTH2CLIENT_NAMESPACE"
      >oauth2client.appengine.OAUTH2CLIENT_NAMESPACE</a><br />    <a target="mainFrame" href="oauth2client.appengine-module.html#XSRF_MEMCACHE_ID"
      >oauth2client.appengine.XSRF_MEMCACHE_ID</a><br />    <a target="mainFrame" href="oauth2client.appengine-module.html#logger"
      >oauth2client.appengine.logger</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#EXPIRY_FORMAT"
-     >oauth2client.client.EXPIRY_FORMAT</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#HAS_OPENSSL"
-     >oauth2client.client.HAS_OPENSSL</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#ID_TOKEN_VERIFICATON_CERTS"
+     >oauth2client.client.EXPIRY_FORMAT</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#HAS_CRYPTO"
+     >oauth2client.client.HAS_CRYPTO</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#ID_TOKEN_VERIFICATON_CERTS"
      >oauth2client.client.ID_TOKEN_VERIFICATON_CERTS</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#OOB_CALLBACK_URN"
-     >oauth2client.client.OOB_CALLBACK_URN</a><br />  <div class="private">
+     >oauth2client.client.OOB_CALLBACK_URN</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#REFRESH_STATUS_CODES"
+     >oauth2client.client.REFRESH_STATUS_CODES</a><br />  <div class="private">
     <a target="mainFrame" href="oauth2client.client-module.html#_cached_http"
      >oauth2client.client._cached_http</a><br />  </div>
     <a target="mainFrame" href="oauth2client.client-module.html#logger"
@@ -260,7 +285,13 @@
      >oauth2client.clientsecrets.VALID_CLIENT</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#AUTH_TOKEN_LIFETIME_SECS"
      >oauth2client.crypt.AUTH_TOKEN_LIFETIME_SECS</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#CLOCK_SKEW_SECS"
      >oauth2client.crypt.CLOCK_SKEW_SECS</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#MAX_TOKEN_LIFETIME_SECS"
-     >oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#logger"
+     >oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#OpenSSLSigner"
+     >oauth2client.crypt.OpenSSLSigner</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#OpenSSLVerifier"
+     >oauth2client.crypt.OpenSSLVerifier</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#PyCryptoSigner"
+     >oauth2client.crypt.PyCryptoSigner</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#PyCryptoVerifier"
+     >oauth2client.crypt.PyCryptoVerifier</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#Signer"
+     >oauth2client.crypt.Signer</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#Verifier"
+     >oauth2client.crypt.Verifier</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#logger"
      >oauth2client.crypt.logger</a><br />    <a target="mainFrame" href="oauth2client.gce-module.html#META"
      >oauth2client.gce.META</a><br />    <a target="mainFrame" href="oauth2client.gce-module.html#logger"
      >oauth2client.gce.logger</a><br />  <div class="private">
diff --git a/docs/epy/toc-oauth2client.appengine-module.html b/docs/epy/toc-oauth2client.appengine-module.html
index 1d68b1d..89f005b 100644
--- a/docs/epy/toc-oauth2client.appengine-module.html
+++ b/docs/epy/toc-oauth2client.appengine-module.html
@@ -15,14 +15,18 @@
   <h2 class="toc">Classes</h2>
     <a target="mainFrame" href="oauth2client.appengine.AppAssertionCredentials-class.html"
      >AppAssertionCredentials</a><br />    <a target="mainFrame" href="oauth2client.appengine.CredentialsModel-class.html"
-     >CredentialsModel</a><br />    <a target="mainFrame" href="oauth2client.appengine.CredentialsProperty-class.html"
-     >CredentialsProperty</a><br />    <a target="mainFrame" href="oauth2client.appengine.FlowProperty-class.html"
+     >CredentialsModel</a><br />    <a target="mainFrame" href="oauth2client.appengine.CredentialsNDBModel-class.html"
+     >CredentialsNDBModel</a><br />    <a target="mainFrame" href="oauth2client.appengine.CredentialsNDBProperty-class.html"
+     >CredentialsNDBProperty</a><br />    <a target="mainFrame" href="oauth2client.appengine.CredentialsProperty-class.html"
+     >CredentialsProperty</a><br />    <a target="mainFrame" href="oauth2client.appengine.FlowNDBProperty-class.html"
+     >FlowNDBProperty</a><br />    <a target="mainFrame" href="oauth2client.appengine.FlowProperty-class.html"
      >FlowProperty</a><br />    <a target="mainFrame" href="oauth2client.appengine.InvalidClientSecretsError-class.html"
      >InvalidClientSecretsError</a><br />    <a target="mainFrame" href="oauth2client.appengine.InvalidXsrfTokenError-class.html"
      >InvalidXsrfTokenError</a><br />    <a target="mainFrame" href="oauth2client.appengine.OAuth2Decorator-class.html"
      >OAuth2Decorator</a><br />    <a target="mainFrame" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html"
      >OAuth2DecoratorFromClientSecrets</a><br />    <a target="mainFrame" href="oauth2client.appengine.SiteXsrfSecretKey-class.html"
-     >SiteXsrfSecretKey</a><br />    <a target="mainFrame" href="oauth2client.appengine.StorageByKeyName-class.html"
+     >SiteXsrfSecretKey</a><br />    <a target="mainFrame" href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html"
+     >SiteXsrfSecretKeyNDB</a><br />    <a target="mainFrame" href="oauth2client.appengine.StorageByKeyName-class.html"
      >StorageByKeyName</a><br />  <h2 class="toc">Functions</h2>
   <div class="private">
     <a target="mainFrame" href="oauth2client.appengine-module.html#_build_state_value"
diff --git a/docs/epy/toc-oauth2client.client-module.html b/docs/epy/toc-oauth2client.client-module.html
index b6dd090..235f7e3 100644
--- a/docs/epy/toc-oauth2client.client-module.html
+++ b/docs/epy/toc-oauth2client.client-module.html
@@ -22,7 +22,8 @@
      >Error</a><br />    <a target="mainFrame" href="oauth2client.client.Flow-class.html"
      >Flow</a><br />    <a target="mainFrame" href="oauth2client.client.FlowExchangeError-class.html"
      >FlowExchangeError</a><br />    <a target="mainFrame" href="oauth2client.client.MemoryCache-class.html"
-     >MemoryCache</a><br />    <a target="mainFrame" href="oauth2client.client.OAuth2Credentials-class.html"
+     >MemoryCache</a><br />    <a target="mainFrame" href="oauth2client.client.NonAsciiHeaderError-class.html"
+     >NonAsciiHeaderError</a><br />    <a target="mainFrame" href="oauth2client.client.OAuth2Credentials-class.html"
      >OAuth2Credentials</a><br />    <a target="mainFrame" href="oauth2client.client.OAuth2WebServerFlow-class.html"
      >OAuth2WebServerFlow</a><br />    <a target="mainFrame" href="oauth2client.client.SignedJwtAssertionCredentials-class.html"
      >SignedJwtAssertionCredentials</a><br />    <a target="mainFrame" href="oauth2client.client.Storage-class.html"
@@ -41,16 +42,18 @@
   <div class="private">
     <a target="mainFrame" href="oauth2client.client-module.html#_urlsafe_b64decode"
      >_urlsafe_b64decode</a><br />  </div>
-    <a target="mainFrame" href="oauth2client.client-module.html#credentials_from_clientsecrets_and_code"
+    <a target="mainFrame" href="oauth2client.client-module.html#clean_headers"
+     >clean_headers</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#credentials_from_clientsecrets_and_code"
      >credentials_from_clientsecrets_and_code</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#credentials_from_code"
      >credentials_from_code</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#flow_from_clientsecrets"
      >flow_from_clientsecrets</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#verify_id_token"
      >verify_id_token</a><br />  <h2 class="toc">Variables</h2>
     <a target="mainFrame" href="oauth2client.client-module.html#EXPIRY_FORMAT"
-     >EXPIRY_FORMAT</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#HAS_OPENSSL"
-     >HAS_OPENSSL</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#ID_TOKEN_VERIFICATON_CERTS"
+     >EXPIRY_FORMAT</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#HAS_CRYPTO"
+     >HAS_CRYPTO</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#ID_TOKEN_VERIFICATON_CERTS"
      >ID_TOKEN_VERIFICATON_CERTS</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#OOB_CALLBACK_URN"
-     >OOB_CALLBACK_URN</a><br />  <div class="private">
+     >OOB_CALLBACK_URN</a><br />    <a target="mainFrame" href="oauth2client.client-module.html#REFRESH_STATUS_CODES"
+     >REFRESH_STATUS_CODES</a><br />  <div class="private">
     <a target="mainFrame" href="oauth2client.client-module.html#_cached_http"
      >_cached_http</a><br />  </div>
     <a target="mainFrame" href="oauth2client.client-module.html#logger"
diff --git a/docs/epy/toc-oauth2client.crypt-module.html b/docs/epy/toc-oauth2client.crypt-module.html
index b610c53..38fc4e9 100644
--- a/docs/epy/toc-oauth2client.crypt-module.html
+++ b/docs/epy/toc-oauth2client.crypt-module.html
@@ -14,9 +14,7 @@
 <hr />
   <h2 class="toc">Classes</h2>
     <a target="mainFrame" href="oauth2client.crypt.AppIdentityError-class.html"
-     >AppIdentityError</a><br />    <a target="mainFrame" href="oauth2client.crypt.Signer-class.html"
-     >Signer</a><br />    <a target="mainFrame" href="oauth2client.crypt.Verifier-class.html"
-     >Verifier</a><br />  <h2 class="toc">Functions</h2>
+     >AppIdentityError</a><br />  <h2 class="toc">Functions</h2>
   <div class="private">
     <a target="mainFrame" href="oauth2client.crypt-module.html#_json_encode"
      >_json_encode</a><br />  </div>
@@ -32,7 +30,13 @@
     <a target="mainFrame" href="oauth2client.crypt-module.html#AUTH_TOKEN_LIFETIME_SECS"
      >AUTH_TOKEN_LIFETIME_SECS</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#CLOCK_SKEW_SECS"
      >CLOCK_SKEW_SECS</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#MAX_TOKEN_LIFETIME_SECS"
-     >MAX_TOKEN_LIFETIME_SECS</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#logger"
+     >MAX_TOKEN_LIFETIME_SECS</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#OpenSSLSigner"
+     >OpenSSLSigner</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#OpenSSLVerifier"
+     >OpenSSLVerifier</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#PyCryptoSigner"
+     >PyCryptoSigner</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#PyCryptoVerifier"
+     >PyCryptoVerifier</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#Signer"
+     >Signer</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#Verifier"
+     >Verifier</a><br />    <a target="mainFrame" href="oauth2client.crypt-module.html#logger"
      >logger</a><br /><hr />
 <span class="options">[<a href="javascript:void(0);" class="privatelink"
     onclick="toggle_private();">hide&nbsp;private</a>]</span>
diff --git a/docs/epy/toc-oauth2client.multistore_file-module.html b/docs/epy/toc-oauth2client.multistore_file-module.html
index 91593db..c139da8 100644
--- a/docs/epy/toc-oauth2client.multistore_file-module.html
+++ b/docs/epy/toc-oauth2client.multistore_file-module.html
@@ -20,7 +20,9 @@
      >_MultiStore</a><br />  </div>
   <h2 class="toc">Functions</h2>
     <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_credential_storage"
-     >get_credential_storage</a><br />  <h2 class="toc">Variables</h2>
+     >get_credential_storage</a><br />    <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_credential_storage_custom_key"
+     >get_credential_storage_custom_key</a><br />    <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_credential_storage_custom_string_key"
+     >get_credential_storage_custom_string_key</a><br />  <h2 class="toc">Variables</h2>
   <div class="private">
     <a target="mainFrame" href="oauth2client.multistore_file-module.html#_multistores"
      >_multistores</a><br />  </div>
diff --git a/docs/epy/toc-oauth2client.util-module.html b/docs/epy/toc-oauth2client.util-module.html
index 26721b8..df65386 100644
--- a/docs/epy/toc-oauth2client.util-module.html
+++ b/docs/epy/toc-oauth2client.util-module.html
@@ -13,8 +13,14 @@
 <h1 class="toc">Module util</h1>
 <hr />
   <h2 class="toc">Functions</h2>
+  <div class="private">
+    <a target="mainFrame" href="oauth2client.util-module.html#dict_to_tuple_key"
+     >dict_to_tuple_key</a><br />  </div>
     <a target="mainFrame" href="oauth2client.util-module.html#positional"
-     >positional</a><br />  <h2 class="toc">Variables</h2>
+     >positional</a><br />  <div class="private">
+    <a target="mainFrame" href="oauth2client.util-module.html#scopes_to_string"
+     >scopes_to_string</a><br />  </div>
+  <h2 class="toc">Variables</h2>
   <div class="private">
     <a target="mainFrame" href="oauth2client.util-module.html#FLAGS"
      >FLAGS</a><br />  </div>
diff --git a/docs/epy/toc.html b/docs/epy/toc.html
index 439dd73..0237028 100644
--- a/docs/epy/toc.html
+++ b/docs/epy/toc.html
@@ -22,7 +22,8 @@
      onclick="setFrame('toc-apiclient.ext-module.html','apiclient.ext-module.html');"     >apiclient.ext</a><br />    <a target="moduleFrame" href="toc-apiclient.http-module.html"
      onclick="setFrame('toc-apiclient.http-module.html','apiclient.http-module.html');"     >apiclient.http</a><br />    <a target="moduleFrame" href="toc-apiclient.mimeparse-module.html"
      onclick="setFrame('toc-apiclient.mimeparse-module.html','apiclient.mimeparse-module.html');"     >apiclient.mimeparse</a><br />    <a target="moduleFrame" href="toc-apiclient.model-module.html"
-     onclick="setFrame('toc-apiclient.model-module.html','apiclient.model-module.html');"     >apiclient.model</a><br />    <a target="moduleFrame" href="toc-apiclient.schema-module.html"
+     onclick="setFrame('toc-apiclient.model-module.html','apiclient.model-module.html');"     >apiclient.model</a><br />    <a target="moduleFrame" href="toc-apiclient.push-module.html"
+     onclick="setFrame('toc-apiclient.push-module.html','apiclient.push-module.html');"     >apiclient.push</a><br />    <a target="moduleFrame" href="toc-apiclient.schema-module.html"
      onclick="setFrame('toc-apiclient.schema-module.html','apiclient.schema-module.html');"     >apiclient.schema</a><br />    <a target="moduleFrame" href="toc-oauth2client-module.html"
      onclick="setFrame('toc-oauth2client-module.html','oauth2client-module.html');"     >oauth2client</a><br />    <a target="moduleFrame" href="toc-oauth2client.anyjson-module.html"
      onclick="setFrame('toc-oauth2client.anyjson-module.html','oauth2client.anyjson-module.html');"     >oauth2client.anyjson</a><br />    <a target="moduleFrame" href="toc-oauth2client.appengine-module.html"